Linux 查看 iptables:全面指南与实用技巧
在 Linux 系统管理中,iptables 是用于配置 Linux 内核防火墙的核心工具,它通过规则链(Chain)和规则(Rule)来控制网络数据包的流向,从而实现网络安全、访问控制等功能,熟练掌握 iptables 的查看方法,是排查网络问题、验证防火墙策略的关键,本文将详细介绍如何使用不同命令查看 iptables 规则,并解析输出信息的含义,同时提供实用技巧。

基础查看命令:iptables -L
查看 iptables 规则最常用的命令是 iptables -L,-L 表示列出(List)所有规则链,默认情况下,该命令会显示所有链(INPUT、OUTPUT、FORWARD)的规则,并以数字格式(-n)显示 IP 地址和端口号,避免 DNS 解析带来的延迟。
执行以下命令:
sudo iptables -L -n -v
-n:以数字形式显示地址和端口,不进行 DNS 反向解析。-v:显示详细信息,如数据包计数、网络接口等。
输出结果通常包含以下列:
Chain:规则所属的链(如 INPUT、OUTPUT)。target:匹配数据包后的动作(如 ACCEPT、DROP、REJECT)。prot:协议类型(如 tcp、udp、icmp)。source:源 IP 地址。destination:目标 IP 地址。pkts/bytes:匹配的数据包数量和字节数。
通过 -v 参数,可以直观看到规则的命中次数(pkts),这对于调试高频访问的规则非常有帮助。
查看特定链的规则
如果只需要查看某个特定链的规则(如仅关注入站规则),可以使用 -S 或 --list-rules 参数,或直接指定链名称。
sudo iptables -L INPUT -n -v
该命令仅显示 INPUT 链的规则,适用于排查针对本地服务的访问控制问题。
iptables -S 命令以更简洁的格式显示规则,适合直接复制或用于脚本中:
sudo iptables -S INPUT
输出格式类似 -A INPUT -p tcp --dport 22 -j ACCEPT,表示向 INPUT 链添加(-A)一条允许 TCP 端口 22 的规则。

查看规则编号与链的默认策略
在修改或删除规则时,通常需要知道规则的编号,使用 --line-numbers 参数可以为规则添加编号:
sudo iptables -L INPUT --line-numbers -n
输出中每条规则前会显示序号,
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 DROP all -- 192.168.1.100 0.0.0.0/0
通过编号,可以精准执行删除操作(如 iptables -D INPUT 2)。
iptables -L 的最后几行会显示链的默认策略(policy),如 policy ACCEPT 或 policy DROP,默认策略决定了不匹配任何规则的数据包的处理方式,是防火墙设计的核心逻辑之一。
查看 NAT 和其他表的规则
iptables 默认包含三个表(table):filter(默认表,用于包过滤)、nat(网络地址转换)、mangle(修改数据包字段)和 raw(跟踪连接),默认情况下,iptables -L 仅显示 filter 表的规则,若需查看其他表,需使用 -t 参数:
查看 NAT 表的规则:
sudo iptables -t nat -L -n -v
NAT 表常用于配置端口转发或 SNAT(源地址转换),其规则链包括 PREROUTING、POSTROUTING 和 OUTPUT,通过查看这些链的规则,可以确认是否正确配置了端口映射或地址转换。
实时监控规则匹配情况
除了静态查看规则,iptables -L 的 -v 参数显示的 pkts 和 bytes 字段可以帮助分析规则的实际使用情况,若某条 DROP 规则的 pkts 值很高,说明大量数据包被拦截,可能需要进一步检查是否误封合法流量。

使用 watch 命令可以实时监控规则变化:
watch -n 1 "sudo iptables -L INPUT -n -v"
每隔 1 秒刷新一次规则列表,适用于观察临时规则或测试防火墙策略时的动态效果。
常见问题与技巧
-
规则过多时筛选输出:
使用grep过滤特定协议或端口,sudo iptables -L INPUT -n | grep "dpt:22"
-
查看自定义链:
若存在自定义链(如通过-N创建),可通过iptables -L查看其规则,并追踪被哪些主链调用(-v显示引用次数)。 -
备份与恢复规则:
在修改规则前,建议先备份:sudo iptables-save > /etc/iptables/rules.v4
恢复时使用:
sudo iptables-restore < /etc/iptables/rules.v4
查看 iptables 规则是 Linux 网络管理的基础技能,通过 iptables -L 及其衍生参数(如 -n、-v、--line-numbers),可以灵活获取不同表、链的详细信息,并结合规则编号、命中次数等数据实现精准调试,无论是排查网络故障还是优化防火墙策略,熟练掌握这些命令都能提升管理效率,在实际操作中,建议结合 iptables-save 和 iptables-restore 实现规则的持久化与备份,确保系统安全稳定运行。


















