我已在 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