在 CentOS 上使用 iptables 时,排错通常可以按「从外到内、从规则到系统」的思路进行。下面给你一套实用排错 checklist。
iptables -L -n -v
iptables -t nat -L -n -v
重点看:
DROP / REJECTCentOS 6:
service iptables status
CentOS 7+(如仍用 iptables):
systemctl status iptables
⚠️ CentOS 7 默认是
firewalld,如果没关,iptables 可能被覆盖
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
telnet ip port
# 或
nc -vz ip port
ss -lntp
netstat -lntp
确认:
0.0.0.0127.0.0.1在疑似 DROP 前加 LOG:
iptables -I INPUT 1 -p tcp --dport 80 -j LOG --log-prefix "IPTABLES-DROP: "
然后看日志:
dmesg | grep IPTABLES
# 或
tail -f /var/log/messages
iptables -P INPUT DROP
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
测试完再删:
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
CentOS 6:
service iptables save
CentOS 7(iptables-services):
iptables-save > /etc/sysconfig/iptables
如果你愿意,可以贴:
iptables -L -n 输出我可以直接帮你定位是哪条规则的问题。