Я слишком долго бился об этом и был бы очень признателен за второе мнение / проверку здравомыслия:
Интерфейс локальной сети eth1 соединен мостом с OpenVPN tap0 на br0 (192.168.2.1). Я хотел бы добавить subif eth1.100 в (мостовой) eth1 для гостевой VLAN, которая будет предоставлять доступ в Интернет только для подмножества LAN-боксов (192.168.22.0/24).
Похоже, это не так просто, как я думал, потому что любой тегированный трафик, очевидно, попадет на мост через интерфейс хоста. Следуя предложениям из этой ветки
Я попробовал установить «двойной мост» с eth1-> eth.0-> br0 и eth1-> eth.100-> br1, что остановило холодный трафик на моей существующей настройке br0.
Второй лучший вариант с 'ebtables -t broute -A BROUTING -i eth1 -p 802_1Q -j DROP' и только eth1.100 (без дополнительного моста) дает почти то же поведение, что и eth1.100, без записи в таблице BROUTING: Я могу пинговать subif с локального хоста, но эхо-запросы от клиентов внутри VLAN возвращаются с 50% -ным уровнем потерь и «Целевой хост недоступен».
Все это в Debian 9.1, vlan v. 1.9-3.2 и bridge-utils v. 1.5-13.
Отредактировано, чтобы предоставить более подробную информацию: очевидно, трафик VLAN попадает на мост, и я получаю "марсианский источник 192.168.22.1 от 192.168.22.100 на dev br0" для пингов от клиента 192.168.22.100 к eth1.100 (192.168.22.1). Насколько я понимаю приведенную выше команду ebtables, «drop» в таблице маршрутизации означает «кадр маршрута вместо моста». Так это здесь происходит? Если да, то почему эти пакеты следует считать «марсианскими»?
Результат 'brctl show':
название моста | идентификатор моста | STP включен | Интерфейсы
br0 | 8000.a0b3cce4c5a9 | нет | eth1 + tap0
Вывод ifconfig eth1:
flags = 4163 MTU 1500
эфир a0: b3: cc: e4: c5: a9 txqueuelen 1000 (Ethernet)
Вывод ifconfig eth1.100:
flags = 4163 MTU 1500
inet 192.168.22.1 маска сети 255.255.255.0 широковещательная передача 192.168.22.255
эфир a0: b3: cc: e4: c5: a9 txqueuelen 1000 (Ethernet)
Вывод ifconfig br0:
flags = 4163 MTU 1500
inet 192.168.2.1 маска сети 255.255.255.0 широковещательная передача 192.168.2.255
эфир a0: b3: cc: e4: c5: a9 txqueuelen 1000 (Ethernet)
iptables:
iptables -A INPUT -i eth1.100 -j ACCEPT
iptables -A ВЫХОД -o eth1.100 -j ПРИНЯТЬ
iptables -A FORWARD -i eth1.100 -o $ EXTERNAL_INTERFACE -j ACCEPT
iptables -A FORWARD -i $ EXTERNAL_INTERFACE -o eth1.100 -j ACCEPT