检查其他防火墙软件的状态避免有干扰
# 检查 firewalld 状态
systemctl status firewalld
# 检查 ufw 状态
sudo ufw status
如果开了多个就关闭他们只开一个。这里就使用iptables。
按照hook的位置查看规则:
iptables -L INPUT -n -v
iptables -L OUPUT -n -v
iptables -L PREROUTING -n -v
iptables -L POSTROUTING -n -v
按照不同链查询规则:
iptables -L -n -v -t raw
iptables -L -n -v -t mangle
iptables -L -n -v -t nat
iptables -L -n -v -t filter
参数解释:
-L
:列出规则。-n
:以数字形式显示 IP 地址和端口号,而不是解析成主机名和服务名。-v
:显示详细信息。-t
:指定要查看的表。
这里主要是看你的数据包走了那些规则,详细信息里有每条规则匹配了多少个数据包,你发一次对比的观察一下,就差不多能发现都匹配了那些规则。
然后,可以尝试删除或者禁用这些规则的方式看是否可以正常通信。到这里基本就能找到是那条规则影响了。
实在是不行还可以开启日志,但是开启日志一定要有条件,不加条件会导致系统特别慢。而且日志特别多看起来还是挺麻烦的。
iptables -A INPUT -p TCP -s 192.168.2.10 -j LOG