我正在尝试在 UDP 上设置端口转发从port 12345
到port 54321
使用以下内容:
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
destination 中port 12345
获取数据包port 54321
?
我知道怎么做了!
你需要在 NAT 上使用 REDIRECT!但是在此之前,您必须从 conntrack 中删除与此连接对应的条目!像下面这样的东西