Использование iptables для изменения порта назначения - PullRequest
19 голосов
/ 28 октября 2008

Можно ли изменить порт назначения пакета UDP с помощью iptables?

Я пытаюсь заставить агента SNMP отправлять прерывания на 1620 вместо 162. К сожалению, пока мне удалось изменить только порт источника:

iptables -t nat -A POSTROUTING -p udp --dport 162 -j SNAT --to: 1620

Ответы [ 6 ]

5 голосов
/ 13 ноября 2008

вы можете перенаправить 162 на 1620

iptables -t nat -A PREROUTING -p UDP --dport 162 -j REDIRECT --to-port 1620
5 голосов
/ 31 октября 2008

Это использование, по-видимому, не поддерживается. Взято из http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.txt:

6.3.7. Изменение адресата локально генерируемых соединений

Код NAT позволяет вставлять Правила DNAT в цепочке OUTPUT, но
это не полностью поддерживается в 2.4 (это можно, но для этого требуется новый
вариант конфигурации, некоторое тестирование, и немного кода, так что если кто-то заключает контракт Расти, чтобы написать это, я не ожидал бы этого в ближайшее время).

Текущее ограничение заключается в том, что вы можно изменить только пункт назначения на
локальный компьютер (например, `j DNAT --to 127.0.0.1 '), ни к какой другой машине, иначе ответы не будут быть переведенным правильно.

5 голосов
/ 28 октября 2008

Если вы знаете, на какую машину вы отправляете:

iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620
1 голос
/ 28 октября 2008

@ PiedPiper был прав. С помощью DNAT вы должны указать IP-адрес, но мы хотим только перенаправить порт, поэтому в этом случае может работать -j REDIRECT.

См. http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2

0 голосов
/ 28 октября 2008

Вы можете установить правило переадресации и затем повторно внедрить пакет с измененным портом.

Я делал это некоторое время назад в Mac OS X, но в Linux это тот же принцип: http://blog.dv8.ro/2006/08/using-divert-sockets-on-mac-os-x.html

Вам нужно создать очень простой прозрачный прокси.

0 голосов
/ 28 октября 2008

Вместо создания SNAT, попробуйте с DNAT. Исходный порт изменяется, поскольку SNAT означает SourceNAT, поэтому DNAT будет работать для вас.

...