有没有办法iptables
更详细地查看规则?
我最近向一系列 IP 添加了伪装:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save
service iptables restart
这已经完成了我想要的功能,但是当我使用时:
iptables -L
我得到的输出与通常得到的输出相同:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
如何查看规则(包括我添加的规则)? (系统为CentOS 6)
答案1
当使用-L
,--list
选项列出当前防火墙规则时,您还需要指定相应的 Netfilter 表(filter
、nat
、mangle
或raw
之一security
)。因此,如果您为表添加了规则nat
,则应使用-t
,--table
选项显式指定该表:
iptables --table nat --list
或者使用选项简写形式:
iptables -t nat -L
如果不指定特定表,则该filter
表将用作默认表。
为了更快地获得结果,还可以包含-n
,--numeric
选项来打印数字 IP 地址而不是主机名,从而避免需要等待反向 DNS 查找。
-v
您可以通过包含,选项来获取更多信息--verbose
。
答案2
iptables
控制五个不同的表:filter
、nat
、mangle
和raw
。security
在给定的调用中,iptables
仅显示或修改这些表之一,由选项的参数指定-t
(默认为filter
)。要查看防火墙的完整状态,您需要iptables
依次调用每个表。
此外,为了获得规则的准确表示,您需要传递选项-v
。否则,输出中会省略一些重要的标准,例如过滤规则中的接口(例如,“接受所有内容”的规则和“接受环回接口上的所有内容”的规则只能用 来区分-v
)。
因此,要获得 netfilter 规则的完整演示,您需要
iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security
或者,您可以调用该iptables-save
程序,该程序以可解析的格式显示所有表中的所有规则iptables-restore
。这种格式对于人类来说也是相当可读的(它非常类似于iptables
对构建表的命令的一系列调用)。
答案3
iptables -S
对我有用。它似乎列出了所有活动规则,即使服务已关闭。
从手册页:
-S, --list-rules [链] 打印所选链中的所有规则。如果没有选择链,则像 iptables-save 一样打印所有链。与其他所有 iptables 命令一样,它适用于指定的表(过滤器是默认值)。
答案4
您可以使用:
# lsmod | grep ip_tables
ip_tables 13193 4 iptable_raw,iptable_mangle,iptable_nat,iptable_filter
查找所有表并显示表中的特定规则。