configuração bidirecional nat udp iptables para múltiplas fontes

configuração bidirecional nat udp iptables para múltiplas fontes

Eu tenho a seguinte configuração, todos os pacotes UDP:

cliente (42.123.124.125) -> (42.123.0.125) nat_server (192.168.2.2) -> (192.168.2.5) udp_service

nat_server deve receber udp de entrada do cliente através de um IP público e redirecionar o pacote para o udp_service através de uma rede privada. Em seguida, ele deve redirecionar todas as respostas do udp_service de volta ao cliente.

O cliente negocia a conexão com uma porta específica (4244) e então recebe dados em sua porta udp aleatória.

O fluxo pode ser descrito com tcpdump. Negociação:

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        

Fluxo de dados:

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    

As portas 38541 e 43434 permanecem as mesmas durante toda a conexão. Consegui fazer isso com esta configuração do 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

Como posso conseguir o mesmo comportamento quando há muitos clientes? Então, em vez de 42.123.124.125, eu gostaria de usar um intervalo, por exemplo, 42.123.124.0/24

informação relacionada