Вопрос или проблема
Я создал на роутере OpenWRT интерфейс с тегом vlan id 1. На одном сервере у меня есть несколько контейнеров lxc, и я хочу, чтобы некоторые из них использовали этот vlan (id 1). Я создал мост:
ip link add name br1 type bridge
ip link set br1 type bridge vlan_filtering 1
ip link set enp7s0.1 up
ip link set br1 up
ip addr add 192.168.179.2 dev br1
добавить тег VLAN
bridge vlan del dev enp7s0.1 vid 1
bridge vlan add dev enp7s0.1 vid 1
bridge vlan del dev br1 vid 1 self
bridge vlan add dev br1 vid 1 self
bridge vlan add dev veth1001_17Yt vid 1
Вот результат:
bridge vlan sh
port vlan-id
enp7s0 1 PVID Egress Untagged
wlan0 1 PVID Egress Untagged
br0 1 PVID Egress Untagged
vnet0 1 PVID Egress Untagged
veth1001_LoZK 1 PVID Egress Untagged
veth1001_4Kss 1 PVID Egress Untagged
veth1001_ZF7k 1 PVID Egress Untagged
veth1001_FuzI 1 PVID Egress Untagged
veth1001_1C5W 1 PVID Egress Untagged
veth1001_W2FM 1 PVID Egress Untagged
veth1001_YsU5 1 PVID Egress Untagged
veth1001_823Q 1 PVID Egress Untagged
veth1001_Uf5S 1 PVID Egress Untagged
veth1001_R5zN 1 PVID Egress Untagged
veth1001_9gyW 1 PVID Egress Untagged
lxcbr0 1 PVID Egress Untagged
enp7s0.1 1
br1 1
veth1001_17Yt 1
С компьютера, используя мост, я пытаюсь пинговать IP контейнера lxc (использующего vlan tag 1)
ping 192.168.179.3
PING 192.168.179.3 (192.168.179.3) 56(84) байтов данных.
Не работает!
Но если я отключаю фильтрацию vlan…
ip link set dev br1 type bridge vlan_filtering 0
работает
ping 192.168.179.3
PING 192.168.179.3 (192.168.179.3) 56(84) байтов данных.
64 байта от 192.168.179.3: icmp_seq=1 ttl=63 время=8.75 ms
64 байта от 192.168.179.3: icmp_seq=2 ttl=63 время=6.88 ms
но кажется, теги VLAN не используются
tcpdump -i br1 -e vlan
tcpdump: подробный вывод подавлен, используйте -v[v]... для полного декодирования протокола
прослушивание на br1, тип связи EN10MB (Ethernet), длина снимка 262144 байта
^C
захвачено пакетов: 0
пакетов получено фильтром: 0
пакетов отброшено ядром: 0
Что я упускаю?
Ответ или решение
Для решения вашей проблемы с VLAN, которая связана с использованием bridge и фильтрацией, рассмотрим процесс настройки, а также возможные проблемы и способы их устранения.
Теория
VLAN (Virtual Local Area Network) позволяет сегментировать сеть на подмножества, что предоставляет большую гибкость и управление трафиком. В вашем случае, вы настроили интерфейс на роутере OpenWRT с тегированием VLAN ID 1 и хотите, чтобы LXC контейнеры на сервере использовали эту же VLAN.
Ключевая проблема заключается в понимании того, как работает VLAN-фильтрация на сетевых мостах (bridge). VLAN-фильтрация позволяет контролировать, через какие порты могут проходить трафики с определенными VLAN ID. Это достигается за счёт связывания отдельных VLAN ID с определенными портами на мосте.
Пример
В приведенной вами конфигурации, вы создаете мост br1
, включаете VLAN-фильтрацию и ассоциируете различные интерфейсы с VLAN ID 1. Однако, возможно, вы упустили некоторые нюансы:
-
Настройка фильтрации VLAN: Вы настроили VLAN-фильтрацию для
br1
, но не настроили PVID для самих портов на мосте. PVID (Port VLAN ID) отвечает за трафик без тегов и нужен для правильной обработки как тегированного, так и нетегированного трафика. -
Правильные разрешения для трафика: Ваша конфигурация должна включать правила обработки для входящего и исходящего трафика, чтобы позволить им маршрутизироваться через мост.
-
Тегирование и Untagged трафик: Убедитесь, что трафик из контейнеров и всех задействованных интерфейсов соответствует ожидаемым VLAN правилам.
Применение
Попробуем подойти к решению задачи.
-
Проверьте конфигурацию VLAN: Какие именно интерфейсы имеют PVID, и где они настроены как Untagged. Для успешной работы с VLAN и bridge важно, чтобы каждый порт принимал и передавал трафик в соответствии с ожидаемыми настройками.
-
Настройте PVID: Убедитесь, что интерфейсы в мосту (как
enp7s0.1
, так иveth
парные интерфейсы) корректно настроены:
bridge vlan add dev enp7s0.1 vid 1 pvid untagged
bridge vlan add dev veth1001_17Yt vid 1 pvid untagged
Это гарантирует, что весь не тегированный трафик будет ассоциироваться с VLAN ID 1.
-
Следите за маршрутизацией: Убедитесь, что маршрутизация между различными элементами правильно настроена. Если какое-либо устройство (например, LXC-конейнер) находится в изолированном сетевом пространстве, нужно убедиться, что bridge может корректно обрабатывать его трафик.
-
Диагностика и тестирование: Используйте различные утилиты, такие как
tcpdump
, для мониторинга и отладки сетевого трафика наbr1
, чтобы убедиться, что он соответствует вашей сетевой политике:
tcpdump -i br1 -e vlan
Заключение
Если при выключении VLAN фильтрации ping и сеть работают, это означает, что проблема именно в конфигурации VLAN. Вам необходимо настроить VLAN-фильтрение для всех порта, включая установку PVID для обработки нетегированного трафика. Таким образом, можно будет обеспечить слаженную работу всех элементов инфраструктуры без отключения VLAN фильтрации.