特定端口的转发

特定端口的转发

我尝试将特定 ip:port 转发到 Linux 计算机上的特定 ip:port。我使用以下命令使用 iptables:

iptables -t nat -A OUTPUT -p tcp -d 10.0.2.5 --dport 80 -j DNAT --to-destination 69.31.21.42:80

10.0.2.5 是我选择的任意地址,用于查看命令是否有效,而 69.31.21.42 是公共网站的地址。然后我验证了转发是否有效:我运行nmap -p 80 10.0.2.5并获得了肯定的结果。到目前为止非常好。但是,我随后尝试运行nmap -p 81 10.0.2.5,也获得了肯定的结果。这不是我所期望的,因为我希望仅转发端口 80。我运行iptables -t nat -L并注意到,确实,整个 10.0.2.5 主机都映射到 69.31.21.42:80:

Chain OUTPUT (policy ACCEPT)
target     prot opt source     destination
DNAT       tcp  --  anywhere   ip-10-0-2-5.ec2.internal  tcp dpt:http to:69.31.21.42:80

我的 iptables 命令缺少什么?为什么不工作--dport

答案1

您需要使用POSTROUTING链条来做您想做的事情。

iptables -t nat -A POSTROUTING -p tcp -d 10.0.2.5 --dport 80 -j SNAT --to 69.31.21.42:80

手动 iptables

and POSTROUTING (for altering packets as they  are  about  to  go
                  out)

答案2

首先请注意,无法将 TCP IP:Port 转发到另一个 IP:Port。这只能通过 UDP 实现,并且有一个单独的 Perl 脚本可用于此目的。

是的,您可以将 IP 直接转发到另一台机器,而不是特定的端口。

相关内容