特定連接埠的轉發

特定連接埠的轉發

我嘗試將特定的 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:連接埠轉送到另一個 IP:連接埠。這只能透過 UDP 實現,並且有一個單獨的 Perl 腳本。

是的,您可以將 IP 直接轉送到另一台計算機,而不是特定連接埠。

相關內容