在 CentOS 上使用 iptables 时,常见问题包括:规则不生效、服务无法访问、规则被 firewalld 覆盖、重启后丢失等。下面按排错思路 + 常用命令 + 常见场景来说明。
CentOS 7+ 默认使用 firewalld,iptables 可能只是后端。
systemctl status firewalld
如果 firewalld 在运行:
systemctl stop firewalld
systemctl disable firewalld
或改用:
firewall-cmd ...
which iptables
rpm -q iptables
如未安装:
yum install -y iptables iptables-services
systemctl enable iptables
systemctl start iptables
iptables -L -n -v
参数说明:
-L:列出规则-n:不解析域名(更快)-v:详细信息(命中计数)iptables -t nat -L -n -v
⚠️ iptables 是顺序匹配,第一条匹配即生效
iptables -L INPUT
如果是:
Chain INPUT (policy DROP)
需要显式放行。
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
ss -lntp | grep 80
检查:
loiptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT
iptables 规则默认不持久化。
保存规则:
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables
CentOS 7:
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables
iptables -L FORWARD
如需开启转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD ACCEPT
Docker 会自动写 iptables 规则。
查看:
iptables -L DOCKER
不要手动删 DOCKER 链,应通过:
docker network rm ...
iptables -I INPUT -p tcp --dport 80 -j LOG --log-prefix "IPTABLES-DROP: "
查看日志:
dmesg | grep IPTABLES
journalctl -k | grep IPTABLES
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
⚠️ 生产环境慎用
iptables -L -n -v 看规则如果你愿意,可以贴出:
iptables -L -n我可以直接帮你定位问题。