Мне нужно отразить все пакеты от порта 162 на другой (например, 1162) на локальном хосте.

Я знаю, что TEE может зеркально отражать пакеты, но по некоторому IP-адресу.

Может быть, возможно в одном правиле изменить также порт назначения, но я не могу найти рабочее решение.

Что-то вроде того:

iptables -t mangle -A PREROUTING -d 0.0.0.0:162 -j TEE --to-destination 0.0.0.0:1162

Но из руководства: Отправьте клонированный пакет на хост, доступный по указанному IP-адресу. Использование 0.0.0.0 (для пакетов IPv4) или :: (IPv6) недопустимо.

Спасибо за любую подсказку.

ОС:RedHat 6,9

1 ответ1

1

Кажется, что есть некоторые недоразумения:

Мне нужно отразить все пакеты от порта 162

ваше правило должно включать --sport 162 или --dport 162 если вы имели в виду «все пакеты, поступающие на порт 162»

- к месту назначения 0.0.0.0:1162

На самом деле 0.0.0.0 не соответствует localhost. Вы должны использовать 127.0.0.1 вместо этого.

Наконец, вы можете попробовать для трафика TCP:

iptables -t mangle -A PREROUTING -p TCP --dport 162 -j TEE --gateway 127.0.0.2
iptables -t nat -A PREROUTING -d 127.0.0.2 -p TCP --dport 162 -j DNAT  --to 127.0.0.1:1162

Первое правило копирует трафик на локальный хост 127.0.0.2:162. Второе правило перенаправляет трафик с 127.0.0.2:162 на 127.0.0.1:1162.

Обратите внимание, что в качестве традиционной переадресации портов, которая применяется к цепочке POSTROUTING, второе правило применяется к PREROUTING. Это связано с тем, что мы имеем дело с адресами локального хоста, поэтому цепочка POSTROUTING таблицы nat не пересекается пакетом.

Для трафика UDP:

iptables -t mangle -A PREROUTING -p UDP --dport 162 -j TEE --gateway 127.0.0.2
iptables -t nat -A PREROUTING -d 127.0.0.2 -p UDP --dport 162 -j DNAT  --to 127.0.0.1:1162

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