Iptables DNAT 单端口

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 进程失败了。我假设这里有冲突,但我不确定是什么。有什么建议吗?谢谢!

更新:以下是我制定的允许通过 ssh 连接进行 rsync 的规则。我的输入策略设置为丢弃。其他策略设置为接受。

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

答案1

您的 DNAT 和 MASQUERADE 规则缺少接口规范。如果没有这些,它们会尝试在全部交通堵塞,两个方向都是如此,这不是你想要的。

DNAT 规则应指定-i enp2s1连接到达的入站接口(例如);通常这是面向 WAN/Internet 的接口。而 SNAT 或 MASQUERADE 规则应指定-o enp2s1流量离开的出站接口(例如);同样,这通常是面向 WAN/Internet 的接口。

相关内容