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


31

我有一个已配备防火墙的系统。防火墙包含1000多个iptables规则。这些规则之一是丢弃我不想丢弃的数据包。(我知道这一点是因为我确实做到了,iptables-save然后iptables -F应用程序开始工作。)有太多规则无法手动进行分类。我可以做些什么来告诉我哪个规则丢弃数据包吗?


1
fedorahosted.org/dropwatch将来也可能会有所帮助。
肖恩·高夫

要实时查看计数器更新,请使用<br/> <code>观看iptables -L -v -n </ code>
Chris Gibb

Answers:


19

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

我会考虑使用iptables -L -v -n | less来搜索规则。我会看港口;地址; 以及适用的界面规则。鉴于您有太多的规则,您可能运行的是封闭的防火墙,并且缺少流量的允许规则。

防火墙如何构建?查看构建器规则可能比构建规则更容易。


在问了这个问题后,我发现规则来自APF,并且能够解决该问题。不过,我喜欢TRACE的目标。那将是非常有效的。
肖恩·高夫

2
使用TRACE目标的示例在这里:serverfault.com/questions/122157/debugger-for-iptables/…
slm

14

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


很好,我希望有更好的东西,因为有1000条规则和1000个丢弃的数据包。
肖恩·高夫

用于sort按数据包计数器排序规则。
ninjalj 2011年

13

由于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

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



5
watch -n1 -d "iptables -vnxL | grep -v -e pkts -e Chain | sort -nk1 | tac | column -t"

请记住,这只会显示表格过滤器的内容

-t nat在iptables调用中添加(或除过滤器外使用的任何表),以检查那里的规则。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.