Debian
iptables DNAT 單埠
我正在嘗試通過 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 enp2s1
DNAT 規則應指定連接到達的入站介面(例如);通常這是面向 WAN/Internet 的介面。SNAT 或 MASQUERADE 規則應指定-o enp2s1
流量離開的出站介面(例如);同樣,這通常是面向 WAN/Internet 的介面。