Назад | Перейти на главную страницу

Как я могу заблокировать весь трафик к / от мостового интерфейса при разрешении DHCP?

У меня есть компьютер (на котором установлена ​​Fedora 20), который используется как «программный переключатель» для управления сетевым подключением некоторых внешних устройств. Таких устройств восемь; ПК имеет две 4-портовые карты Ethernet в дополнение к собственному Ethernet-соединению с внешним миром. По умолчанию восемь интерфейсов устройства перенаправляются на внешний интерфейс без фильтрации.

Желаемая функциональность - это возможность блокировать весь трафик к данному устройству и от него. В настоящее время мы делаем это, используя bridge link set dev <device> state 0, который устанавливает состояние моста устройства как «отключено». Однако, похоже, это также блокирует трафик DHCP с устройства. Сетевой DHCP-сервер доступен через внешний интерфейс, поэтому кажется, что мост блокирует этот трафик, а это означает, что если устройство пытается обновить свой IP-адрес, это не удается; это проблематично с точки зрения тестов, которые я пытаюсь выполнить на устройстве.

Я бы хотел заблокировать весь трафик кроме DHCP через мост для данного устройства. Похоже, что bridge команда не может этого сделать, поэтому я, вероятно, захочу оставить состояние моста как «пересылка» навсегда. Проведя небольшое исследование, кажется, что ebtables это инструмент, который мне нужен, но для его настройки, похоже, требуется больше знаний о DHCP и сети, чем у меня! Из прочтения нескольких ebtables руководств, я думаю, мне нужно разрешить трафик на портах 67 и 68 (я считаю, что это единственные порты, используемые для DHCP?) и заблокировать весь другой трафик.

Итак, мои вопросы:

  1. Можно ли настроить ebtables делать что хочу?
  2. Является ebtables лучший инструмент для работы и / или есть ли поверх него какие-либо слои абстракции, которые упростили бы настройку? (Я думал о ferm для iptables.)
  3. Если я иду в правильном направлении, как мне настроить ebtables заблокировать весь трафик бар DHCP?

Да, вам нужны ebtables для применения правил netfilter на мосту.

Правило соответствия ip с параметрами --ip-source-port и --ip-destination-port.

Вы должны настроить ebtables, чтобы разрешить нужный вам трафик, а затем явное отключение для любого другого трафика.

Порт клиента DHCP - UDP 68, порт сервера DHCP - UDP 67.

Я считаю, что правильный синтаксис и порядок команд будут следующими:

ebtables -I INPUT -i eth0 -o eth0 -p ip -j DROP
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-source-port 67 -j ACCEPT
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-source-port 68 -j ACCEPT
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-destination-port 67 -j ACCEPT
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-destination-port 68 -j ACCEPT
ebtables-save