Когда виртуальной машине назначен мостовой интерфейс (поддерживающий VLAN) с VLAN-тегом на интерфейсе, и при этом этот VLAN также существует как VNET (тот же мост и тот же VLAN-тег), И при этом назначен виртуальной машине, а виртуальные машины распределены по разным хостам, то виртуальная машина с назначенным мостом напрямую получает весь трафик VLAN того хоста, на котором она запущена.
Тестовый случай:
3 хоста в кластере pve (LACP bond0 – дочерний интерфейс VLAN-aware моста vmbr0)
SDN-зона типа VLAN (мост vmbr0) с VNET, работающим на VLAN 1234, под названием test
3 виртуальные машины (test1, test2, test3) с одним интерфейсом каждая
Между test2 и test3 выполняется ping
На test1 запущен tcpdump
Случай 1:
Все ВМ запущены на одном хосте и используют смесь из vmbr0+VLAN1234 или VNET
Результат: проблем нет, независимо от конфигурации сетевых интерфейсов.
Каждая из них получает только свой трафик, независимо от того, назначен ли им VNET или vmbr0+VLAN1234 напрямую.
Случай 2:
Все ВМ распределены по кластеру и либо ВСЕ используют напрямую vmbr0+VLAN1234, либо ВСЕ используют VNET
Результат: проблем нет, ВМ получают только свой собственный трафик.
Случай 3:
Все ВМ распределены по кластеру
На одном хосте: test1 использует vmbr0+VLAN1234, а test3 использует VNET (если оба ВМ используют vmbr0+VLAN1234, этого не происходит)
На другом хосте: test2 использует VNET
Результат: ВМ test1, которая использует интерфейс моста+VLAN, видит echo request от test2 (другой хост) к test3 (тот же хост)
Это довольно неожиданное поведение, и я думаю, что это может быть багом. Как дальше действовать?
Тестовый случай:
3 хоста в кластере pve (LACP bond0 – дочерний интерфейс VLAN-aware моста vmbr0)
SDN-зона типа VLAN (мост vmbr0) с VNET, работающим на VLAN 1234, под названием test
3 виртуальные машины (test1, test2, test3) с одним интерфейсом каждая
Между test2 и test3 выполняется ping
На test1 запущен tcpdump
Случай 1:
Все ВМ запущены на одном хосте и используют смесь из vmbr0+VLAN1234 или VNET
Результат: проблем нет, независимо от конфигурации сетевых интерфейсов.
Каждая из них получает только свой трафик, независимо от того, назначен ли им VNET или vmbr0+VLAN1234 напрямую.
Случай 2:
Все ВМ распределены по кластеру и либо ВСЕ используют напрямую vmbr0+VLAN1234, либо ВСЕ используют VNET
Результат: проблем нет, ВМ получают только свой собственный трафик.
Случай 3:
Все ВМ распределены по кластеру
На одном хосте: test1 использует vmbr0+VLAN1234, а test3 использует VNET (если оба ВМ используют vmbr0+VLAN1234, этого не происходит)
На другом хосте: test2 использует VNET
Результат: ВМ test1, которая использует интерфейс моста+VLAN, видит echo request от test2 (другой хост) к test3 (тот же хост)
Это довольно неожиданное поведение, и я думаю, что это может быть багом. Как дальше действовать?
