В настоящее время я работаю над устройством, которое использует Beaglebone Black в качестве базовой платы и имеет сторонний MAC/PHY, подключенный к коммутационным контактам.
Проблема
Надо переслать все пакеты Ethernet, полученные на одном интерфейсе, на другой интерфейс в обоих направлениях. Настроить мост между двумя интерфейсами достаточно просто:
Код: Выделить всё
ip link add name br0 type bridge
ip link set dev br0 up
ip link set eth0 up
ip link set eth1 up
ip link set dev eth0 master br0
ip link set dev eth1 master br0
Попытка решения 1
Первое, что я попробовал, — это использовать таблицы ebtables:
Код: Выделить всё
ebtables -A FORWARD -i br0 --vlan-id 2 -j ACCEPT
Попытка решения 2Второе, что я попробовал, — это соединение подинтерфейсов:
Код: Выделить всё
ip link add name br0.2 type bridge
ip link set dev br0.2 up
vconfig add eth0 1
vconfig add eth1 2
ip link set dev eth0.2 up
ip link set dev eth1.2 up
ip link set dev eth0.2 master br0.2
ip link set dev eth1.2 master br0.2
- Когда пакет поступает на eth0, присутствует весь тег VLAN.
- Когда пакет поступает на eth0.2, тег VLAN удаляется.
- Когда пакет поступает на br0.2, тег VLAN все еще отсутствует.
- Когда пакет поступает на eth1. 2, тег VLAN все еще отсутствует.
- Когда пакет поступает на eth1, тег VLAN с правильным идентификатором присутствует, но приоритет имеет потерян.
Попытка решения 3
Мост с поддержкой VLAN
Код: Выделить всё
ip link add name br0 type bridge vlan_filtering 1
ip link set dev br0 up
ip link set eth0 up
ip link set eth1 up
ip link set dev eth0 master br0
ip link set dev eth1 master br0
bridge vlan add vid 2-4094 dev br0 self
bridge vlan add vid 2-4094 dev eth0 master
bridge vlan add vid 2-4094 dev eth1 master
Подробнее здесь: https://stackoverflow.com/questions/786 ... etween-two