温馨提示×

怎样测试CentOS iptables规则

小樊
32
2026-08-03 00:50:22
栏目: 智能运维

在 CentOS 上测试 iptables 规则是否生效,可以按下面几个层次来做:查看规则 → 本地验证 → 远程测试 → 日志/抓包验证。下面以 CentOS 7 为例说明(CentOS 6 类似,CentOS 8 以后默认是 nftables,但 iptables 命令仍可兼容)。


一、确认 iptables 是否正在运行

1️⃣ 查看 iptables 服务状态

systemctl status iptables

如果没启动:

systemctl start iptables
systemctl enable iptables

⚠️ CentOS 7 有时默认用的是 firewalld,要先确认是否关闭:

systemctl status firewalld

如果启用,建议关闭(否则规则可能不生效):

systemctl stop firewalld
systemctl disable firewalld

二、查看当前 iptables 规则

1️⃣ 查看所有规则(推荐)

iptables -L -n -v

常用参数说明:

  • -L:列出规则
  • -n:不做 DNS 解析(更快)
  • -v:显示流量统计(方便测试)

2️⃣ 查看指定表(如 filter / nat)

iptables -t filter -L -n -v
iptables -t nat -L -n -v

三、测试规则是否生效(本地验证)

示例:只允许 22 端口(SSH)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

1️⃣ 查看规则是否匹配

iptables -L INPUT -n -v

如果看到 pktsbytes 在变化,说明规则被命中。


四、远程测试(最常用)

✅ 测试端口是否开放 / 被拦截

1️⃣ 在另一台机器测试

telnet 服务器IP 80

nc -vz 服务器IP 80
  • ✅ 能连:规则未拦截
  • ❌ 连不上 / 超时:规则生效

2️⃣ 测试 ICMP(ping)

iptables -A INPUT -p icmp -j DROP

然后在另一台机器:

ping 服务器IP

五、添加日志规则(强烈推荐)

1️⃣ 添加日志规则

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

2️⃣ 查看日志

tail -f /var/log/messages

或(CentOS 7):

journalctl -f

如果看到类似:

IPTABLES-DROP-80: IN=eth0 OUT= ...

说明规则命中 ✅


六、抓包验证(终极手段)

yum install -y tcpdump
tcpdump -i eth0 port 80
  • 能看到包 → iptables 未拦截
  • 看不到包 → 可能规则已拦截

七、保存 iptables 规则(否则重启丢失)

CentOS 6 / 7

service iptables save

iptables-save > /etc/sysconfig/iptables

八、常见测试场景速查表

测试目的 方法
是否拦截端口 nc -vz IP PORT
是否拦截 ping ping IP
规则是否命中 iptables -L -n -v
是否记录日志 LOG + /var/log/messages
是否真的丢包 tcpdump

九、补充:CentOS 8+ 注意事项

CentOS 8 默认使用 nftables,iptables 是兼容层:

iptables -L

如果规则不生效,建议:

systemctl stop firewalld
systemctl disable firewalld

如果你愿意,可以把 你的 iptables 规则贴出来,我可以帮你逐条分析是否写错、是否顺序有问题。

0