使用 iptables 的本地端口转发不起作用

使用 iptables 的本地端口转发不起作用

我正在使用以下命令将传入流量从端口 30 转发到端口 1234。但它不起作用。在 Wireshark 中也没有发现定向到端口 1234 的数据包的踪迹。

sudo iptables -t nat -I PREROUTING --src 0/0 --dst 127.0.0.1 -p tcp --dport 30 -j REDIRECT --to-ports 1234。

答案1

数据包不同端口的本地转发不经过PREROUTING链。它们遵循 OUTPUT 链。将链从 PREROUTING 更改为 OUTPUT 有效。

sudo iptables -t nat -A OUTPUT -p tcp --dport 30 -j REDIRECT --to-port 1234

有关 iptables NAT 过滤器的更多详细信息,请参见此处:
https://www.karlrupp.net/en/computer/nat_tutorial

答案2

检查是否已启用

sudo iptables -t nat -L

如果有任何条目,请使用以下命令删除它们:

sudo iptables -F -t nat

尝试不使用 src dest 标志:

sudo iptables -t nat -A PREROUTING -p tcp --dport 30 -j REDIRECT --to-ports 1234

再次检查是否启用

sudo iptables -t nat -L

删除默认排队到“OUTPUT”路由的链式条目非常重要。

相关内容