brctl переадресация пакетов на разнородные интерфейсы

У меня есть два беспорядочных нюхающих интерфейса на моей машине linux:
eth0 подключен к внешнему мосту VLAN
eth1 подключен к внутреннему мосту VLAN

с помощью eth0 я могу прослушать весь трафик в моей "внешней сети", используя eth1, я могу прослушать весь трафик в моей "внутренней сети"

Затем я создал мост с помощью brctl (br0) и добавил оба интерфейса к этому мосту.
Теперь я могу прослушивать все пакеты, обнаруженные на eth1 и eth2, напрямую от br0, избавляя меня от необходимости запускать два экземпляра snort.

Моя проблема в том, что теперь пакеты arp и multicast, которые отображаются на eth0, копируются на br0 и пересылаются на eth1.

Есть ли способ заставить оба этих интерфейса копировать все пакеты на br0, но никогда не позволять br0 пересылать какие-либо пакеты, а eth0 или eth1 отвечать на них?

1 ответ

Решение

В соответствии с его дизайном, мост Linux работает точно так же, как простой NWay Ethernet Switch. Он хранит свою собственную таблицу адресов ARP/MAC и пересылает пакеты в соответствии с этой таблицей. Таким образом, Multicast и ARP, как в обычном сетевом коммутаторе, выходят на каждый порт независимо от их источника.

Чтобы предотвратить это, вы должны настроить брандмауэр, не используя iptables, который заботится о Layer 3+ в модели OSI, но ebtables который заботится о трафике уровня 2.

Предполагая, что вы находитесь в дистрибутиве Debian/Debian, вы можете выполнить:

apt-get install ebtables

apt-get install arptables

Для дополнительной документации выполните:

man 8 ebtables

Вот краткий пример использования ebtables для многоадресной рассылки:

ebtables -A FORWARD -o eth0 --pkttype-type multicast -j DROP
ebtables -A OUTPUT -o eth0 --pkttype-type multicast -j DROP
ebtables -A FORWARD -o eth1 --pkttype-type multicast -j DROP
ebtables -A OUTPUT -o eth1 --pkttype-type multicast -j DROP

Как хорошая отправная точка для обучения ebtables, который на самом деле копирует iptables синтаксис, вот официальная документация: http://ebtables.sourceforge.net/documentation/docs.html

Другие вопросы по тегам