如何显示iptables转发规则?

如何显示iptables转发规则?

我已在 EC2 实例上执行以下命令,将传入端口 80 流量转发到端口 8080:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

它没有输出任何内容,但当我看到转发实际上有效时。

我尝试在命令行中验证,但我不知道如何验证:

$ iptables --list
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

根据iptables --help,该-A选项需要一个链名称作为参数,所以在我的例子中,链名称是PREROUTING

还根据iptables --help

--list-rules -S [chain [rulenum]]
Print the rules in a chain or all chains

但我得到的是:

$ iptables -S PREROUTING
iptables: No chain/target/match by that name.
iptables -S REDIRECT
iptables: No chain/target/match by that name.

如何实际打印我创建的转发规则?

答案1

PREROUTING链位于 NAT 表 ( iptables -t nat) 中,因此您需要列出该表才能看到它

iptables -t nat -nvL

您可以将其推广到所有四个表

for table in filter mangle nat raw
do
    echo
    echo "Rules for table $table"
    echo
    iptables -t "$table" --line-numbers -nvL
done

相关内容