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:12345
到192.168.0.1:54321
。
添加以上两个规则后,除来自 的数据包外,其他所有发往 的数据包192.168.0.1:12345
均会在 处接收。192.168.0.1:54321
192.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