Рейтинг:1

Как преобразовать номера исходных портов UDP с помощью Iptables

флаг jp

У меня есть приложение UDP, которое отправляет пакеты с номерами входящих исходных портов, равными номерам портов назначения с обеих сторон связи. В документации также говорится, что это приложение не будет работать, если задействована трансляция сетевых адресов и портов (NAPT). Я убедился, что это действительно так, а также что NAT, сохраняющий номера портов назначения И ИСТОЧНИКА, работает правильно, иногда его называют «статическим режимом NAT». Однако я пытаюсь заставить это приложение работать с использованием NAPT, иногда также называемого «скрытым режимом NAT». Я думал, что это будет возможно с использованием iptables следующим образом, на стороне сервера Ubuntu, получая измененные номера исходных кодов UDP:

hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 1 -p udp --dport 12000 -j SNAT --to-source :12000
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 2 -p udp --dport 12001 -j SNAT --to-source :12001
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 3 -p udp --dport 12002 -j SNAT --to-source :12002
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 4 -p udp --dport 12003 -j SNAT --to-source :12003
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 5 -p udp --dport 12004 -j SNAT --to-source :12004

Когда я запускаю приложение, tcpdump показывает, что это не работает. Также iptables -L команды показывают, что правила явно не используются:

hercules@pjjs12:~$ sudo iptables -vxnL -t nat --номера строк
Цепочка PREROUTING (политика ACCEPT 0 пакетов, 0 байт)
num pkts bytes target prot opt ​​in out source target         

Цепочка INPUT (политика ACCEPT 0 пакетов, 0 байтов)
num pkts bytes target prot opt ​​in out source target         

Цепочка OUTPUT (политика ACCEPT 0 пакетов, 0 байт)
num pkts bytes target prot opt ​​in out source target         

Цепочка POSTROUTING (политика ACCEPT 0 пакетов, 0 байт)
num pkts bytes target prot opt ​​in out source target         
1 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12000 to::12000
2 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12001 to::12001
3 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12002 to::12002
4 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12003 to::12003
5 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12004 to::12004
hercules@pjjs12:~$ sudo iptables -vxnL --номера строк
Цепочка INPUT (политика ACCEPT 542660 пакетов, 30600115 байт)
num pkts bytes target prot opt ​​in out source target         

Цепочка FORWARD (политика ACCEPT 1838 пакетов, 100767 байт)
num pkts bytes target prot opt ​​in out source target         

Цепочка OUTPUT (политика ACCEPT 562972 пакетов, 888057717 байт)
num pkts bytes target prot opt ​​in out source target         
геркулес@pjjs12:~$ 

Я должен признать, что это моя первая попытка использовать iptables поэтому я совсем не уверен, возможно ли это, или я упускаю из виду действительно основные вещи. Помощь в этом будет принята с благодарностью.

Спасибо,

Питер

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.