我的系统已经安装了防火墙。防火墙由 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"