iptables DNAT单端口

我试图通过IPtables将单个端口redirect到本地服务器。 目前我有以下规则:

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 

当我有这些规则时,我的rsync进程的SSH失败。 我假设这里有一些冲突,但我不知道是什么。 有什么build议么? 谢谢!

更新:这里是我准备好允许通过SSH连接的rsync的规则。 我的input政策设置为放弃。 其他政策将被接受。

 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

这里是iptables-save的结果nat:

 *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规则缺less一个接口规范。 如果没有这些,他们会试图在所有的交通方面,双向的,这不是你想要的。

DNAT规则应该指定连接到达的入站接口(例如-i enp2s1 ) 一般这是面向WAN / Internet的接口。 而SNAT或MASQUERADE规则应该指定出站的出站接口(例如-o enp2s1 ) 这通常是面向广域网/互联网的界面。