Назад | Перейти на главную страницу

Linux Bridge - несколько VLAN в vlan по умолчанию

У меня есть CentOS 6 Box (ядро 2.6.32-642.6.1.el6.x86_64), где работают 2 экземпляра KVM.

Я получаю две сети VLAN из центра обработки данных. К сожалению, они не будут объединять обе VLAN в одну VLAN. Мне нужно использовать обе сети VLAN одновременно на одних и тех же гостевых KVM.

VLAN по умолчанию не имеет тегов, а второй vlan имеет идентификатор 471.

В настоящее время я делаю это так:

bridge name     bridge id               STP enabled     interfaces
br0             8000.0cc47a7fed0a       no              eth1
                                                        kvm1100.0
br1             8000.0cc47a7fed0a       no              eth1.471
                                                        kvm1101.0

Это работает, как ожидалось. Я могу использовать немаркированную VLAN на экземпляре KVM 1100 и VLAN 471 на экземпляре KVM 1101.

Теперь я хочу, чтобы KVM 1101 мог использовать IP-адреса из нетегированной VLAN и из VLAN 471.

Итак, я добавил eth1.471 в br0, а затем также добавил kvm1101.0 в br0.

bridge name     bridge id               STP enabled     interfaces
br0             8000.0cc47a7fed0a       no              eth1
                                                        eth1.471
                                                        kvm1100.0
                                                        kvm1101.0

Это работает, и я могу получить доступ к обеим VLAN на обоих экземплярах. Работает так, как хотелось бы.

Но когда к br0 добавляется eth1.471, я вижу потерю пакетов во всей сети. Не только на этом сервере, это влияет на все. Когда я удаляю eth.471 из br0, потеря пакетов прекращается.

Похоже, это неправильный путь. Я пробовал разные вещи, но всегда получаю один и тот же результат.

Что мне не хватает? Как уже упоминалось, центр обработки данных не желает объединять обе сети VLAN в одну.

Это не вариант передать VLAN экземпляру KVM и настроить там VLAN + IP-адреса. Экземпляр KVM должен иметь возможность использовать оба vlan без дополнительной настройки.

Если вы хотите использовать два разных IP-адреса в разных IP-подсетях вашей виртуальной машины, вам понадобятся два разных интерфейса на вашей виртуальной машине. Другого пути просто нет, потому что так работает IP. Правило состоит в том, что у вас не может быть двух разных IP-подсетей, настроенных в одном широковещательном домене L2. Это также причина того, почему центр обработки данных отказывается объединять их в один.

Итак, вам необходимо иметь два виртуальных сетевых адаптера (kvm1100.0 и kvm1101.0), назначенный вашей виртуальной машине.

Однако, если вашей виртуальной машине необходимо прослушивать некоторые определенные порты на IP-адресе в вашей маркированной VLAN, вы можете использовать NAT:

ОС хоста настроила адрес в вашем помеченном vlan (br1 или eth1.471, мост здесь на самом деле не нужен). Затем в ОС хоста настроена переадресация портов, чтобы любое входящее соединение с eth1.471 IP-адрес интерфейса порт X перенаправляется на IP-адрес гостевой виртуальной машины в eth1 сеть.

Вы также можете использовать NAT для исходящего трафика от гостевой виртуальной машины, если хотите, чтобы некоторые места назначения использовали eth1.471 как исходящий интерфейс.

Когда вы соединяете eth1 с eth1.174, вы фактически создаете петлю топологии в сети центра обработки данных на своем интерфейсе, отсюда и потеря пакетов, и другие проблемы.

Возможное решение вашей проблемы - введение второго интерфейса к kvm1101 и добавление который KVM-интерфейс с br0, сохраняя br0 и br1 как отдельные мосты, привязанные к их соответствующим VLAN на физическом адаптере.