Есть ли в Linux инструменты для определения чего-то похожего на маршрутизацию на основе политик, но на уровне Layer2? Обычный мост Linux использует MAC назначения, чтобы решить, на какой интерфейс отправлять фрейм. Можно ли изменить это поведение?
Допустим, у нас есть машина с несколькими интерфейсами - физическим, виртуальным, субинтерфейсами с тегами VLAN и т. Д. На один из них приходит кадр. Можем ли мы решить, на какой исходящий интерфейс будет доставлен кадр, в соответствии с такими параметрами, как тег VLAN в кадре, исходный MAC-адрес, исходный интерфейс, приоритет 802.1p и т. Д.?
Похоже, вы ищете ebtables
Программа ebtables - это инструмент фильтрации для межсетевого экрана на базе Linux. Он обеспечивает прозрачную фильтрацию сетевого трафика, проходящего через мост Linux. Возможности фильтрации ограничиваются фильтрацией канального уровня и некоторой базовой фильтрацией на более высоких сетевых уровнях. Также включены расширенное ведение журнала, MAC DNAT / SNAT и средства brouter.
Инструмент ebtables можно комбинировать с другими инструментами фильтрации Linux (iptables, ip6tables и arptables) для создания межсетевого экрана моста, который также может фильтровать эти более высокие сетевые уровни. Это обеспечивается архитектурой bridge-netfilter, которая является частью стандартного ядра Linux.