Iptables

使用 iptables 轉發流量而不暴露真實 IP/埠

  • August 27, 2020

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

我的應用程序使用 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。

我也嘗試使用 REDIRECT,但由於某種原因根本不起作用。客戶端無法連接。

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

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

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

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

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

我只是 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 選項導致這種情況),但不確定是否需要 interface-i eth0選項

來源參考

引用自:https://serverfault.com/questions/1030746