Iptables
使用 iptables 轉發流量而不暴露真實 IP/埠
我想用 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
選項