Debian

iptables DNAT 單埠

  • January 16, 2016

我正在嘗試通過 IPtables 將單個埠重定向到本地伺服器。目前我有以下規則:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 55555 -j DNAT --to-destination 10.188.44.125:3306
iptables -t nat -A POSTROUTING -j MASQUERADE

當我制定了這些規則時,我的 ssh rsync 程序將失敗。我假設這裡有一些衝突,但我不確定是什麼。有什麼建議麼?謝謝!

更新:這是我制定的允許 rsync over ssh 連接的規則。我的輸入策略設置為丟棄。其他政策被設置為接受。

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -i lo -j ACCEPT

更新 2

以下是 nat 的 iptables-save 的結果:

*nat
:PREROUTING ACCEPT [8:468]
:INPUT ACCEPT [7:408]
:OUTPUT ACCEPT [2:134]
:POSTROUTING ACCEPT [0:0]
[0:0] -A PREROUTING -p tcp -m tcp --dport 53306 -j   DNAT --to-destination 10.183.42.125:3306
[2:134] -A POSTROUTING -j MASQUERADE
COMMIT

您的 DNAT 和 MASQUERADE 規則缺少介面規範。如果沒有這些,他們會嘗試處理雙向的所有流量,這不是您想要的。

-i enp2s1DNAT 規則應指定連接到達的入站介面(例如);通常這是面向 WAN/Internet 的介面。SNAT 或 MASQUERADE 規則應指定-o enp2s1流量離開的出站介面(例如);同樣,這通常是面向 WAN/Internet 的介面。

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