2008-10-28 6 views
18

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

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

Iptables -t физ -A POSTROUTING -p УДП --dport 162 -j SNAT --to: 1620

ответ

4

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

6.3.7. Изменение назначения локально сгенерированного Connections

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

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

0

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

+0

получить DNAT на работу вам потребуется указать ip-адрес как -to-destination – PiedPiper 2008-10-28 11:06:26

+0

Это не будет большой проблемой в этом случае, но правило DNAT тоже не работает. Правило не попадает, и отправленные пакеты не изменяются. – 2008-10-28 11:11:45

+0

Вы не можете использовать DNAT в цепочке POSTROUTING. http://iptables-tutorial.frozentux.net/iptables-tutorial.html#DNATTARGET – borodimer 2008-10-28 17:11:38

4

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

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

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

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

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

5

вы могли бы перенаправить 162 до 1620

IPTables -t физ -A PREROUTING -p UDP --dport 162 -j REDIRECT --to-порт 1620