主动 UDP 连接的 iptables 端口转发

主动 UDP 连接的 iptables 端口转发

port 12345我正在尝试使用port 54321以下命令在 UDP 上设置端口转发:

iptables -t nat -A PREROUTING -p udp -i eth0 -d 192.168.0.1  --dport 12345 -j DNAT --to 192.168.0.1:54321

iptables -A FORWARD -p udp -i eth0 -d 192.168.0.1 --dport 54321 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

这对于新连接来说很有效,但是对于当前活动的连接则不起作用。

为了澄清我的意思,假设在添加规则之前,有一个来自192.168.0.2:55555<---> 的活动连接192.168.0.1:12345,并且我试图将所有传入连接重定向192.168.0.1:12345192.168.0.1:54321

添加以上两个规则后,除来自 的数据包外,其他所有发往 的数据包192.168.0.1:12345均会在 处接收。192.168.0.1:54321192.168.0.2:55555

我猜连接状态在其中起了作用。我该如何解决这个问题,并让数据包从192.168.0.1:55555目的地port 12345传送到port 54321

答案1

我知道该怎么做了!

您需要在 NAT 上使用 REDIRECT!但是在此之前,您必须从 conntrack 中删除与此连接对应的条目!如下所示

conntrack -D -p udp -d  192.168.0.1 --dport=55555 

相关内容