有没有办法找到哪个 iptables 规则负责丢弃数据包?

Sha*_*off 41 firewall iptables

我有一个带有防火墙的系统。防火墙由 1000 多个 iptables 规则组成。这些规则之一是丢弃我不想丢弃的数据包。(我知道这一点,因为我确实iptables-save遵循了iptables -F并且应用程序开始工作。)有太多规则需要手动排序。我可以做些什么来告诉我哪个规则正在丢弃数据包吗?

Bil*_*hor 23

您可以在链的早期添加一个 TRACE 规则来记录数据包遍历的每个规则。

我会考虑使用iptables -L -v -n | less让你搜索规则。我会看港口;地址; 和适用的接口规则。鉴于您有如此多的规则,您可能正在运行一个几乎封闭的防火墙,并且缺少流量的许可规则。

防火墙是怎么搭建的?查看构建器规则可能比查看构建规则更容易。

  • 使用 TRACE 目标的示例如下:http://serverfault.com/questions/122157/debugger-for-iptables/126079#126079。 (3认同)

Kyl*_*ndt 17

由于iptables -L -v -n有计数器,您可以执行以下操作。

iptables -L -v -n > Sample1
#Cause the packet that you suspect is being dropped by iptables
iptables -L -v -n > Sample2
diff Sample1 Sample2
Run Code Online (Sandbox Code Playgroud)

这样,您将只看到递增的规则。


nin*_*alj 15

运行iptables -L -v -n以查看每个表和每个规则的数据包和字节计数器。


小智 10

在我的公司中,我们使用watch -n 2 -d iptables -nvL,它显示请求之间的变化


sja*_*jas 6

watch -n1 -d "iptables -tfilter -vnxL | grep -vE 'pkts|Chain' | sort -nk1hr | column -t"
Run Code Online (Sandbox Code Playgroud)

请记住,这只会显示 table filter 的内容

如果你想要所有的表,试试这个:

watch -n1 -d "(iptables -tfilter -vnxL;iptables -tnat -vnxL;iptables -tmangle -vnxL;iptables -traw -vnxL;iptables -tsecurity -vnxL) | grep -vE 'pkts|Chain' | sort -nk1,1hr | column -t"
Run Code Online (Sandbox Code Playgroud)