温馨提示×

centos iptables怎么排错

小樊
48
2026-09-26 21:24:47
栏目: 智能运维

在 CentOS 上排查 iptables 问题,一般按“由浅入深”的思路来。下面给你一套实战排错流程,适用于 CentOS 6/7(CentOS 8 以后默认是 nftables,但 iptables 仍可兼容)。


一、先确认基础状态

1. 查看 iptables 是否运行

systemctl status iptables

或

service iptables status

CentOS 7 默认可能没装 iptables-service

安装:

yum install iptables-services
systemctl enable iptables
systemctl start iptables

2. 查看当前规则(最重要)

iptables -L -n -v

或看 NAT:

iptables -t nat -L -n -v

重点看:

  • 有没有 DROP / REJECT
  • 规则顺序是否正确(iptables 是自上而下匹配)
  • 是否有统计命中(pkts 列)

二、常见排错场景

✅ 场景 1:端口不通(如 80 / 22)

① 本机先看端口是否监听

ss -lntp
# 或
netstat -lntp

✅ 如果端口没监听,不是 iptables 的问题


② 看 iptables 是否拦了

iptables -L INPUT -n -v

常见错误:

iptables -A INPUT -j DROP

(放最后没问题,放前面就全拦)


③ 临时开放测试

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

如果这样能通,说明就是规则问题。


✅ 场景 2:SSH 被锁(非常常见)

千万别直接清空规则!

安全做法:

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

如果是云服务器:

  • 用 控制台 / VNC
  • 或 安全组 先放行

✅ 场景 3:规则重启后丢失

原因:没保存

保存规则:

service iptables save
# 或
iptables-save > /etc/sysconfig/iptables

CentOS 7:

systemctl restart iptables

✅ 场景 4:NAT / 端口转发不生效

查看 NAT 表:

iptables -t nat -L -n -v

示例(DNAT):

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80
iptables -t nat -A POSTROUTING -j MASQUERADE

还要开启转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

永久生效:

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

三、高级排错手段

1. 开启 LOG(非常有用)

iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "IPTABLES-DROP: "

看日志:

dmesg | grep IPTABLES
# 或
tail -f /var/log/messages

2. 看是否被 firewalld 干扰(CentOS 7)

systemctl status firewalld

如果同时用 iptables + firewalld,会冲突。

建议:

systemctl stop firewalld
systemctl disable firewalld

3. 确认是否被 SELinux 影响

getenforce

排查时可临时关闭:

setenforce 0

四、快速排错命令清单(可直接用)

iptables -L -n -v
iptables -t nat -L -n -v
iptables -F   # 谨慎!会清空
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
service iptables save

五、总结排错顺序(记住这 5 步)

  1. 服务是否监听
  2. iptables 是否拦截
  3. 规则顺序是否正确
  4. 是否保存 / 生效
  5. 是否被 firewalld / SELinux 干扰

如果你愿意,可以把:

  • CentOS 版本
  • iptables -L -n -v 输出
  • 具体“什么不通”

贴出来,我可以帮你直接定位是哪条规则的问题。

0 踩