Подтвердить что ты не робот

Использование iptables для изменения порта назначения

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

iptables -t nat -A PREROUTING -p UDP -dport 162 -j REDIRECT -to-port 1620

Ответ 3

Предполагая, что вы знаете, на какой компьютер вы отправляете:

iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620

Ответ 5

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

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

Вам в основном нужно создать простую прозрачную прокси.

Ответ 6

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