0

我正在编写一个 bash 脚本来计算我的网络服务器中的流量:

WAN:eth1 -> GNU/Linux Server:eth0 -> Users GNU/Linux 服务器使用 squid, bind, QoS, mysql, lighttpd。

在 IP 超过既定配额后,将对该 IP(用户)应用新的 QoS 规则,也存在一个“标志”来决定何时将 IP 计数器恢复为零。

一些 IP 和子网在没有配额的情况下工作,其他组 ips/子网在超出配额后使用新的 QoS,现在我想在超出配额后使用第三组重定向。

当一个 IP 超过既定配额时,所有 http 流量都必须重定向到主机(在 GNU/Linux 上运行的 lighttpd)并丢弃为该 IP 生成的所有其他流量。在网络服务器中存在一个网页:“您超出了每日的流量报价,请等待“x”小时或致电您的提供商购买额外的导航包”或类似的东西。

是否可以使用链条,或者我该怎么做?我在互联网上找到的大多数主题都与阻止所有相关,并创建一个新的链来发布到互联网(不适合我)。和其他仅按 IP 重定向 IP,但是我如何创建一个“链”并将 IP 附加到必须重定向到的东西才能在轻松恢复该 IP 之后?

感谢您的帮助,并为我糟糕的英语感到抱歉:S。

4

2 回答 2

0

你在寻找这样的东西吗?

iptables -t nat -A PREROUTING -s 192.168.100.66 -p tcp --dport 80 -j REDIRECT --to-ports 80
iptables -I INPUT 1 -i lo -s 192.168.100.66 -j ACCEPT
iptables -I INPUT 2 -i eth1 -d 192.168.100.66 -j DROP

这会将数据包从端口 80 上的 192.168.100.66 重定向到环回接口上的本地 Web 服务器,允许该对话,然后拒绝所有其他路由到 WAN 接口上的 192.168.100.66 的数据包。

要将连接恢复正常,您需要删除这些防火墙条目:

iptables -t nat -D PREROUTING -s 192.168.100.66 -p tcp --dport 80 -j REDIRECT --to-ports 80
iptables -D INPUT -i lo -s 192.168.100.66 -j ACCEPT
iptables -D INPUT -i eth1 -d 192.168.100.66 -j DROP
于 2012-01-31T14:38:38.007 回答
0

请注意,iptables 本身(嗯,提供quota2的 xtables-addons 扩展集)已经可以执行配额匹配魔术,您可以通过 procfs (重新)设置值,并结合 REDIRECT,如@resmon6 所说:

-t nat -s user1addr -m quota2 --name user1 ! --quota 0 -j REDIRECT...
-t nat -s user2addr -m quota2 --name user2 ! --quota 0 -j REDIRECT...

语法现在可以说有点奇怪(0 只是初始值,并且独立于涉及否定的运行时配额测试!。刚刚注意到这一点,将来可能会有一个补丁来解开这个令人困惑的语法)。

于 2012-01-31T15:26:40.167 回答