3

У меня есть приложение прослушивания порта 7162 для ловушек SNMP. Ловушки прибывают на порт 162, поэтому у меня есть этот редирект в моем iptables:

-A PREROUTING -p udp -m udp --dport 162 -j REDIRECT --to-ports 7162

Нужно ли также явно разрешить входящие подключения к порту 162 с

-A INPUT -p udp -m state --state NEW -m udp --dport 162 -j ACCEPT

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

1 ответ1

1

Первое правило должно быть достаточно - если вы как-то не ограничиваете доступ к порту 7162 в цепочке INPUT .

Фактически, ваш UDP-пакет не должен даже проходить через цепочку INPUT с целевым портом 162, по крайней мере, в соответствии со следующей диаграммой: https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter- пакет-flow.svg

Кроме того, ваше правило INPUT кажется слишком сложным. UDP - это протокол без сохранения состояния, поэтому вы имеете дело с некоторыми формами состояний внутри сетевого фильтра. Я даже не нашел надлежащей документации о том, что означают эти состояния при использовании с UDP.

Попробуйте отслеживать оба порта с помощью программы tcpdump наличие подсказок (примечание: если вы отбросите какие-либо пакеты в PREROUTING , tcpdump не увидит их он может видеть только входящий пакет через порт 162, даже прослушивание по обратной связи не будет показывать перенаправление).

Изменить: Вы не пытаетесь правила с подключениями в пределах одной машины, верно? PREROUTING не просматривается только для локальных соединений.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .