iptables 双向 nat udp 配置用于多个源

iptables 双向 nat udp 配置用于多个源

我有以下设置,所有 udp 数据包:

客户端 (42.123.124.125) -> (42.123.0.125) nat_server (192.168.2.2) -> (192.168.2.5) udp_service

nat_server 必须通过公共 IP 接收来自客户端的传入 udp,并通过专用网络将数据包重定向到 udp_service。然后,它必须将来自 udp_service 的所有响应重定向回客户端。

客户端协商连接到特定端口(4244),然后在其随机 udp 端口​​上接收数据。

该流程可以用 tcpdump 来描述。协商:

15:03:48.630928 IP 42.123.124.125.38541 > nat_server.4244: UDP, length 4         
15:03:48.630953 IP nat_server.38541 > 192.168.2.5.4244: UDP, length 4           
15:03:48.680698 IP 192.168.2.5.43434 > nat_server.38541: UDP, length 4          
15:03:48.680707 IP nat_server > 42.123.124.125.38541: UDP, length 4        

数据流:

15:03:48.680741 IP 192.168.2.5.43434 > nat_server.38541: UDP, length 16           
15:03:48.680743 IP nat_server.43434 > 42.123.124.125.38541: UDP, length 16    

端口 38541 和 43434 在整个连接过程中保持不变。我设法通过以下 iptables 配置来实现这一点:

iptables -t nat -A PREROUTING -s 42.123.124.125 -p udp -j DNAT --to-destination 192.168.2.5:4244
iptables -t nat -A PREROUTING -s 192.168.2.5 -p udp -j DNAT --to-destination 42.123.124.125
iptables -t nat -A POSTROUTING -j MASQUERADE

当有许多客户端时,我如何实现相同的行为?因此,我希望使用一个范围(例如 42.123.124.0/24),而不是 42.123.124.125

相关内容