CentOS 系统查看 iptables 配置完全指南
在 CentOS 服务器的日常管理和安全加固工作中,iptables 防火墙扮演着至关重要的角色,清晰地查看当前生效的防火墙规则是每位系统管理员必备的基础技能,本文将详细解析在 CentOS 系统中查看 iptables 配置的多种方法及其应用场景。
基础查看:列出所有规则链

最常用的命令是 iptables -L,此命令会列出 filter 表中(默认表)所有链(INPUT, FORWARD, OUTPUT)的规则:
sudo iptables -L
输出示例:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination 关键参数解析:
-L: 列出规则的核心选项。-v: 显示详细信息(如数据包计数、字节计数):sudo iptables -L -v-n: 禁用 IP 和端口的反向解析(显示原始数字,速度更快):sudo iptables -L -n--line-numbers: 显示规则的行号(对后续修改或删除规则至关重要):sudo iptables -L --line-numbers
查看原始规则格式
iptables -S 命令以原始、简洁的格式输出规则,这正是实际写入规则文件或直接用于恢复的格式,清晰反映规则间的顺序:
sudo iptables -S
输出示例:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 查看指定表或链的规则
iptables 默认操作 filter 表,如需查看其他表(如 nat, mangle, raw),使用 -t 参数:
# 查看 NAT 表规则 sudo iptables -t nat -L -n --line-numbers # 查看指定链 (如 INPUT 链) 规则 sudo iptables -L INPUT -n -v
查看持久化规则文件
CentOS 6 及更早版本通常使用 /etc/sysconfig/iptables 文件保存规则,重启后规则从此加载:
sudo cat /etc/sysconfig/iptables
在 CentOS 7 及更高版本中,若仍使用 iptables 而非 firewalld,服务状态命令可显示规则:
sudo systemctl status iptables # 查看服务状态及加载的规则概要
查看规则时的实用技巧

组合参数提高效率:
sudo iptables -L INPUT -v -n --line-numbers
此命令显示
INPUT链的规则,包含详细信息、禁用解析并显示行号。理解输出关键字段:
target: 规则匹配后执行的动作(ACCEPT,DROP,REJECT, 自定义链名等)。prot: 协议(tcp,udp,icmp,all)。opt: 特殊选项(常为空)。source&destination: 源/目标 IP 地址或网段。ports: 源端口(spt)或目标端口(dpt),通常在prot为tcp或udp时显示。
规则匹配顺序至关重要:
iptables从上到下逐条匹配规则,第一条匹配成功的规则将决定数据包的命运,后续规则不再检查,使用--line-numbers能清晰观察此流程。区分临时与持久化规则: 使用
iptables命令直接添加的规则是临时的,重启即失效。/etc/sysconfig/iptables文件(或iptables-save的输出)保存的是持久化规则,需通过service iptables save(CentOS 6) 或iptables-save > /etc/sysconfig/iptables(CentOS 7+) 命令保存当前规则。
重要注意事项
- 权限要求: 查看规则通常需要
root权限,务必使用sudo。 - CentOS 7+ 与 firewalld: CentOS 7 及更新版本默认使用
firewalld动态防火墙管理器,若系统启用了firewalld,则iptables规则由其动态管理,直接使用iptables命令查看规则可能只反映firewalld生成的底层规则,并非管理员手动配置的完整视图,如需传统iptables服务,需禁用firewalld并安装启用iptables-services。 - 规则复杂性: 大型环境中规则集可能非常复杂,包含大量自定义链和模块匹配,耐心分析每条规则的作用域和条件是理解整体策略的关键。
命令对比表
| 命令 | 主要用途 | 优势 | 常用场景 |
|---|---|---|---|
sudo iptables -L | 列出 filter 表所有链规则 | 默认易读 | 快速浏览当前规则 |
sudo iptables -L -v -n --line-numbers | 详细列出规则(含计数、数字IP、行号) | 信息全面,便于调试和修改 | 精确分析规则匹配情况 |
sudo iptables -S | 以原始命令格式输出规则 | 清晰反映规则结构,适合备份和恢复 | 规则迁移、脚本编写 |
sudo iptables -t <表名> -L | 查看指定表(如 nat, mangle)的规则 | 操作非默认表 | 处理端口转发、特殊包标记等 |
sudo cat /etc/sysconfig/iptables | 查看持久化规则文件内容(CentOS 6及传统配置方式) | 显示系统重启后加载的规则 | 确认永久规则配置 |
熟练掌握查看 iptables 配置的方法,是保障服务器网络安全、诊断网络问题、进行有效访问控制的基础,建议管理员定期检查规则,确保其符合预期的安全策略并有效运行,理解规则逻辑比单纯记住命令更重要,清晰的规则结构能极大提升运维效率与安全性。
