Конфигурация iptables bidirectional nat udp для нескольких источников

Конфигурация iptables bidirectional 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 должен получить входящий udp от клиента через публичный ip и перенаправить пакет в 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.125 я хотел бы использовать диапазон, например 42.123.124.0/24

Связанный контент