不久前,我在一位 Linux 大师的肩膀上观察,他发出了一个命令,以构建它们所需的附加命令的格式列出了所有 iptables 规则,但尽管我进行了所有的谷歌搜索和手册页搜索我无法弄清楚他做了什么。
例如,如果输出iptables -nL INPUT
是:
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 192.168.0.1 tcp dpt:80
我正在寻找的命令的输出类似于:
1 -A INPUT -i eth0 -p tcp --dport 80 -d 192.168.0.1 -j ACCEPT
我似乎记得这只是传递到标准iptables -L
命令中的另一个选项,但我可能是错的。有谁知道完成此任务的命令?
答案1
非常简单:
iptables -S
满足您的需求。
答案2
您可以使用iptables-save
命令获得类似的输出:
*nat
:PREROUTING ACCEPT [381:53396]
:INPUT ACCEPT [286:22260]
:OUTPUT ACCEPT [1462:92025]
:POSTROUTING ACCEPT [1450:91003]
-A POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
有数字和一些额外信息,但您可以通过编写类似以下内容来删除它们:
iptables-save | grep -v -e "^[*:#]" -e "COMMIT" | cat -n
和输出:
1 -A POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
2 -A POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -p udp -j MASQUERADE --to-ports 1024-65535