我正在使用以下命令将传入流量从端口 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”路由的链式条目非常重要。