使用 iptables 轉送流量而不暴露真實 IP/端口

使用 iptables 轉送流量而不暴露真實 IP/端口

我想使用 iptables 轉送流量,而不向發送主機顯示不同的 ip/連接埠。

我的應用程式使用 TCP 偵聽主機 xx15.42、連接埠 23555。客戶端將連接到 xx15.42:5555。我希望將連接轉發到連接埠 23555,而不將該連接埠暴露給客戶端。

我已經嘗試過使用 DNAT:

iptables -t nat -A PREROUTING -p tcp --dport 5555 -j DNAT --to-destination x.x.15.42:23555

但對於客戶端來說,它會顯示他們正在連接到連接埠 23555。

我也嘗試過使用重定向,但由於某種原因根本不起作用。客戶端無法連線。

iptables -t nat -A PREROUTING -p tcp --dport 5555 -d x.x.15.42 -j REDIRECT --to-port 23555

如何轉送此流量,同時使其看起來像應用程式正在偵聽連接埠 5555?

答案1

所以我使用的第一個防火牆規則有效:

iptables -t nat -A PREROUTING -p tcp --dport 5555 -j DNAT --to-destination x.x.15.42:23555

唯一的問題確實是伺服器告訴客戶端連接到連接埠 23555,而不是像我想要的那樣連接到連接埠 5555。在伺服器部分進行更改可以解決問題。

答案2

我只是 iptables 的涉足者,所以你可以嘗試一下:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 5555 -j DNAT --to x.x.15.42:23555
iptables -A FORWARD -p tcp -d x.x.15.42 --dport 23555 -j ACCEPT

這兩行都是需要的(我認為這是由於缺少 FORWARD 選項導致的),儘管不確定介面選項是否-i eth0是必要的

來源參考

相關內容