Iptables

iptables 埠轉發到具有不同埠的伺服器

  • October 11, 2020

我正在嘗試從一台伺服器埠轉發到另一台伺服器。我嘗試了許多 iptables 命令,但它們不起作用。難道我做錯了什麼?

這是我的設置:

  • VPS1:1.1.1.1

    • SMTP 埠:25
    • UFW:關閉
    • iptables 政策:接受所有
    • 主機名:郵箱.xxxxxx.com
    • 作業系統:Ubuntu 14.04
  • 郵件伺服器:2.2.2.2

    • SMTP NAT 埠:15324

我試過這些命令:

iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 2.2.2.2:15324
iptables -A FORWARD -d 2.2.2.2 -p tcp --dport 15324 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -t nat -nvL

鏈 PREROUTING(策略接受 459 個數據包,17802 字節)pkts 字節目標 prot opt in out source destination 19 1088 DNAT tcp – * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:2.2.2.2:15324

Chain POSTROUTING (policy ACCEPT 2 packet, 120 bytes) pkts bytes target prot opt in out source destination 39 2603 MASQUERADE all – * eth0 0.0.0.0/0 0.0.0.0/0

在外部 IP 上執行 telnet 到埠 25 後,我得到了這個。數據包計數發生變化,因此它得到了一些東西,但我不知道為什麼它沒有通過 PREROUTING

鏈 PREROUTING(策略接受 469 個數據包,18178 字節)pkts 字節目標 prot opt in out source destination 19 1088 DNAT tcp – * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:2.2.2.2:15324

Chain POSTROUTING (policy ACCEPT 3 packet, 180 bytes) pkts bytes target prot opt in out source destination 42 2812 MASQUERADE all – * eth0 0.0.0.0/0 0.0.0.0/0


嘗試 telnet 向我展示了這一點。

telnet 2.2.2.2 15324 Trying 2.2.2.2… 連接到 2.2.2.2。轉義字元是 ‘^]’。220 郵箱.xxxxxx.com ESMTP 嗨,我是郵箱郵箱(Ubuntu/Postfix;見https://mailinabox.email/

telnet mailbox.xxxxxx.com 25 Trying 1.1.1.1… telnet:無法連接到遠端主機:連接被拒絕

該死的。我在發布後一分鐘就修復了它。解決方案:

echo 1 > /proc/sys/net/ipv4/ip_forward

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