У меня есть 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 на физическом адаптере.