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

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

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

答案1

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

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

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

答案2

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

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

答案3

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

答案4

watch -n1 -d "iptables -tfilter -vnxL | grep -vE 'pkts|Chain' | sort -nk1hr | column -t"

请记住,这只会显示表格的内容筛选

如果您需要所有表格,请尝试以下操作:

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"

相关内容