IPTables 配额在 Ubuntu 12.04 上不起作用

IPTables 配额在 Ubuntu 12.04 上不起作用

我一直在努力将 IPTable 规则从 Ubuntu 10.04 移植到 Ubuntu 12.04。问题是配额似乎被破坏了。以这个非常简单的配额规则为例。

iptables -t mangle -A POSTROUTING -o eth0 -p tcp -m quote --quota 500000 -j ACCEPT

在 Ubuntu 10.04 上,这是我们通过 eth0 传输字节时所看到的内容。

(root@dev)-(〜)$ iptables -L -t mangle -v | grep配额

146 111K 接受 tcp -- 任何 eth0 任何位置任何位置配额:389148 字节

(root@dev)-(〜)$ iptables -L -t mangle -v | grep配额

667 348K 接受 tcp -- 任何 eth0 任何位置任何位置配额:152577 字节

您可以看到配额正在下降,而使用的字节数正在上升(第二列)。

但是,当我在 Ubuntu 12.04 上使用相同的规则时,发生了以下情况。

(root@LU1)-(~)$ iptables -L -t mangle -v | grep 配额

14 2544 接受 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

有人能向我解释发生了什么以及这种行为差异从何而来吗?或者甚至提出更好的解决方案?我真的被这个问题难住了,如果你们能给我一些帮助我将不胜感激。

答案1

在研究内核变化时,我回答了我自己的问题。

我偶然发现这次提交。我以为是 bug 的东西实际上是补丁程序的预期行为。我在最近的 3.2 内核上打了一个补丁来恢复这个提交,现在一切都恢复正常了。我希望这可以为其他人节省几个小时的谷歌搜索时间。

相关内容