iptables NAT REDIRECT

Вопрос или проблема

У меня есть сервер, который получает трафик syslog. Многие мои устройства могут отправлять трафик только на порт по умолчанию udp/514. Мой сервер syslog не может работать на портах <1024 и работает на 5000. У меня есть NAT PREROUTING REDIRECT на системе, и это работает отлично.

У меня есть несколько контроллеров Aruba, которые я хочу направить на другой порт. Я пытаюсь перенаправить пакеты с исходным адресом 10.5.5.0/24 на порт 5008. Вот полная конфигурация.

*mangle
:PREROUTING ACCEPT [53851:21198923]
:INPUT ACCEPT [53851:21198923]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1227:8988526]
:POSTROUTING ACCEPT [1227:8988526]
COMMIT
# Завершено в Thu Sep 30 14:52:43 2021
# Сгенерировано iptables-save v1.8.4 в Thu Sep 30 14:52:43 2021
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -s 10.5.5.0/24 -p udp -m udp --dport 514 -j REDIRECT --to-ports 5008
-A PREROUTING -p udp -m udp --dport 514 -j REDIRECT --to-ports 5000
COMMIT
# Завершено в Thu Sep 30 14:52:43 2021
# Сгенерировано iptables-save v1.8.4 в Thu Sep 30 14:52:43 2021
*filter
:INPUT ACCEPT [53852:21199096]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1234:8990186]
-A INPUT -s 10.0.0.0/8 -p udp -m udp --dport 514 -j ACCEPT
COMMIT

Перенаправление на udp/5000 работает отлично, но всё перенаправляется на 5000. Трафик Aruba с 10.5.5.0/24 не перенаправляется на udp/5008.

Если я выполняю команду:
iptables -t nat -L -n -v --line-number
. Это подтверждает, что ноль байт попадает на Линию 1, и всё попадает на Линию 2.

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

Syslog на UDP является однонаправленным и не имеет состояния, поэтому вы думаете, что это будет самый простой NAT в мире.

Кто-нибудь делал такую конфигурацию? Это всё на одной машине, и я просто пытаюсь отделить мои входящие сообщения Aruba syslog от всех остальных.

Спасибо!

Перенаправление порта 514 на 5000 и его работа на локальной машине

Если вы создаете правило iptables на вашем сервере syslog, используйте следующую команду:

iptables -t nat -A OUTPUT -o lo -p tcp --dport 514 -j REDIRECT --to-port 5000

или

iptables -A PREROUTING -t nat -i eth0<Incoming-interface> -p tcp --dport 514 -j REDIRECT --to-port 5000

Перенаправление входящего подключения на другой IP-адрес на определённом порту

Если вы пытаетесь выполнить пересылку портов на другой IP, а ваш сервер (я называю его firewall), который получает UDP/514, находится за клиентом и сервером Syslog, как в сценарии на моём github, вы должны выполнить пересылку порта iptables с тремя шагами:

Простой пример сценария:

 | client:10.5.5.0/24 | -->   | 10.5.5.1:enp0s8 firewall enp0s3:192.168.2.1 | --> | 192.168.2.2:enp0s3 Syslog |

1- Включите пересылку IP

sudo sysctl -w net.ipv4.ip_forward=1

2- PREROUTING для входящего трафика на firewall

sudo iptables -t nat -A PREROUTING -d 10.5.5.1 -i enp0s8  -p tcp --dport 514 -j DNAT --to-destination 192.168.2.2:5000 

3- POSTROUTING для исходящего трафика на сервер Syslog

sudo iptables -t nat -A POSTROUTING -o enp0s3 -p tcp --dport 514 -d 192.168.2.2 -j SNAT --to-source 192.168.2.1

Ответ или решение

Когда речь идет о конфигурации iptables для перенаправления трафика NAT REDIRECT, важно учитывать, как пакетные фильтры и правила NAT могут быть использованы для направления трафика от одного порта к другому. В вашем сценарии, задача заключается в том, чтобы распределять трафик syslog, поступающий на стандартный порт udp/514, на различные порты в зависимости от источника трафика.

Теория

iptables — это утилита командной строки для конфигурирования и поддержания таблиц правил фильтрации пакетов в ядре Linux. Одна из мощных возможностей iptables заключается в способности перенаправления, или NAT (сетевой трансляции адресов), который позволяет изменять адреса, указанные в заголовках IP, для магистрального маршрутизации пакетов с изменением исходного или назначенного адреса.

В контексте NAT, REDIRECT используется для перенаправления входящих подключений к другому локальному порту. Это полезно, когда необходимо, чтобы служба, которая не может принимать соединения через определенные порты, все же могла принимать их за счет перенаправления.

Пример

У вас есть сервер, который принимает syslog трафик, но не может слушать на портах меньше 1024 из-за ограничений Linux. Ваш сервер настроен для прослушивания порта 5000; однако устройства могут отправлять сообщения только на стандартный порт 514. Вы хотите перенаправить весь трафик с устройства на порт 514 к порту 5000, за исключением трафика от Aruba-контроллеров из сетевого диапазона 10.5.5.0/24, который должен направляться к порту 5008.

Ваша текущая конфигурация iptables выглядит следующим образом:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -s 10.5.5.0/24 -p udp -m udp --dport 514 -j REDIRECT --to-ports 5008
-A PREROUTING -p udp -m udp --dport 514 -j REDIRECT --to-ports 5000
COMMIT

Применение

Первая линия в конфигурации предусматривает перенаправление трафика к порту 5008 именно от адресов, принадлежащих диапазону 10.5.5.0/24. Вторая линия перенаправляет все остальные соединения к порту 5000. Однако ваша проблема заключается в том, что весь трафик перенаправляется только к порту 5000, и нет активности на первой строке.

Возможные причины и решения:

  1. Проверка порядка правил: Как вы правильно заметили, порядок правил crucial. Более специфическое правило должно идти до более общего, и у вас это соблюдено.

  2. Проверка соответствия правил: Убедитесь, что пакет удовлетворяет всем условиям первого правила. Обычно это происходит из-за того, что iptables имеет сложности с определением правила в том случае, если условия в нем сформулированы неправильно или есть другие правила на других уровнях, которые препятствуют работе данного правила.

  3. Ошибки в IP-адресации: Убедитесь, что ваши сетевые настройки соответствуют правилу. Проверьте, что устройства в диапазоне 10.5.5.0/24 действительно отправляют трафик через корректные сетевые пути и что диапазон перекрывается с тем, что вы ожидаете.

  4. Спецефика UDP: Поскольку UDP — это протокол без установления соединения, убедитесь, что NAT, который вы используете, применим для UDP, поскольку часто это не так просто, как в случае с TCP.

Для диагностики и исправления проблемы:

  • Проверьте ваши сетевые среды на предмет правильности маршрутов и отправку указанных пакетов от 10.5.5.0/24 к конкретным интерфейсам.
  • Используйте сетевые сканеры, такие как tcpdump или Wireshark, чтобы увидеть, какая часть правил не выполняется и почему.
  • Экспериментируйте с временным добавлением правил логирования в iptables для проверки того, попадают ли пакеты на соответствующие гайки правил.

Эти шаги должны помочь вам завершить настройку. Обеспечив, чтобы правила iptables были правильно сформулированы и применены, вы сможете разрешить ваш трафик на Aruba нацелить на соответствующий порт назначения.

Оцените материал
Добавить комментарий

Капча загружается...