我一直在努力将IPTable规则从Ubuntu 10.04移植到Ubuntu 12.04。 问题是配额似乎被打破了。 以配额规则的这个非常简单的实例。
iptables -t mangle -A POSTROUTING -o eth0 -p tcp -m配额–quota 500000 -j ACCEPT
在Ubuntu 10.04上,当我们通过eth0传输字节时,这就是我们所看到的。
(root @ dev) – (〜)$ iptables -L -t mangle -v | grep配额
- 如何使多个IP绑定服务器上的传入和传出IP相同
- Server 2003通过MAC过滤移动设备
- 使CentOS 6.xa端口转发NAT设备
- 在Linux服务器的2个networking接口上设置MASQUERADE可以吗?
- 使用syslog-ng通信的Amazon EC2服务器
tcp – 任何地方的任何eth0配额:389148字节
(root @ dev) – (〜)$ iptables -L -t mangle -v | grep配额
667 348K ACCEPT tcp – 任意位置的任何eth0配额:152577字节
您可以看到配额正在下降,而使用的字节正在上升(第二列)。
但是,当我在Ubuntu 12.04上使用相同的规则时,会发生以下情况。
(root @ LU1) – (〜)$ iptables -L -t mangle -v | grep配额
14 2544 ACCEPT tcp – 任何地方任何地方的任何eth0配额:500000字节
(root @ LU1) – (〜)$ iptables -L -t mangle -v | grep配额
19 3188接受tcp – 任何地方的任何eth0配额:500000字节
使用的字节计数器正在增加,但配额不会下降。 然而,它正在计算它,如果配额用完了,它将继续下一个规则。 还有第二个问题,因为当您重新启动服务器,并且保存规则时,即使配额全部用完,配额再次被重置。
所以基本上有两个问题:即使我保存规则,配额不会明显下降,重启时会重置。
Ubuntu 12.04上的内核是3.2.0-44-generic lsmod输出: http ://sprunge.us/OfEc
有人可以向我解释发生了什么,行为之间的差异来自哪里? 或者甚至更好地提出解决scheme? 我真的坚持这一点,我会很感激你们任何一个可以给我。
挖掘内核更改时,我回答了自己的问题。
我偶然发现了这个提交。 我认为的一个错误是修补程序的实际意图行为。 我在最近的3.2内核上做了一个补丁来恢复这个提交,并且一切都可以正常工作。 我希望这可以节省别人几个小时的谷歌search。