CentOS, KVM, VLAN и мосты

Мне нужна помощь в проектировании сетей для виртуализированных гостей с использованием KVM. Моя машина работает под управлением CentOS 7 и имеет 2 сетевых адаптера. Я бы хотел добиться следующего

  • Один физический интерфейс (em1) должен использоваться только для доступа к хосту. Хост будет иметь довольно обычную конфигурацию с немаркированным трафиком и статическим IP-адресом.
  • Другой физический интерфейс (em2) принимает тегированный трафик для разных VLAN.
  • Виртуальные машины должны видеть трафик только для своей конкретной VLAN. Связь между гостями не требуется внутри KVM.
  • Я бы предпочел, чтобы трафик на виртуальном сетевом адаптере был немаркированным, чтобы убедиться, что гость не изменяет свою внутреннюю конфигурацию сетевого адаптера для имитации других сетей.
  • 1221] Ссылка на концептуальный рисунок

    Я новичок в libvirt и также не привык к Network Manager. Я искал документацию, но нашел противоречивую информацию, начиная с вопроса, можно ли настроить этот мост через сетевой менеджер. Я также читал о возможности позволить KVM выполнять переключение.

    Я был бы признателен либо за прямую помощь в настройке, либо за указатель на актуальную документацию, которая не использует (в CentOS 7) устаревшие инструменты или обходные пути для устранения проблем, устраненных к тому времени.

    Заранее благодарим.

3
задан 2 November 2015 в 17:52
1 ответ

То, что вы хотите, хоть и полезно, но делать не так просто. По сути, у вас есть 3 возможности:

  1. использовать стек Open vSwitch для виртуализации моста / коммутатора
  2. использовать выделенный программный мост для каждого vlan
  3. на последних ядрах можно использовать фильтр VLAN моста « возможность иметь один« умный »мост, чтобы управлять ими всеми

Решение №1 (вероятно) наиболее полное, но наиболее сложное в настройке.

Решение №2 - это то, что я использовал для лабораторных испытаний. Например, для VLAN 10 и 20 вы должны были создать аналогичную настройку:

eth0 (physical interface) -> eth0.10 (VLAN tagged) -> br10 (bridge with eth0.10 and the relative virtual qemu/kvm interface)
eth0 (physical interface) -> eth0.20 (VLAN tagged) -> br20 (bridge with eth0.20 and the relative virtual qemu/kvm interface)

Обратите внимание, что если вам нужно иметь нетегированный трафик также на помеченном мосту, вы должны применить следующее правило ebtables: ebtables -t broute -A BROUTING -i eth0 -p 802.1Q -j DROP Это правило необходимо из-за того, как сетевой стек Linux управляет входящими пакетами. Для получения дополнительной информации см. здесь , здесь и здесь

Решение №3 должно быть умным, но для него нужна поддержка ядра (и libvirt тоже). CentOS7 должен иметь достаточно свежую версию ядра, но я не знаю, готовы ли все остальные части программного обеспечения.

Решение №4 (бонусное): если вам не требуется связь гостя и хоста, дайте посмотри на драйвер macvtap. Хотя я им не пользуюсь, вы сможете настроить аналогичное решение:

eth0 (physical interface) -> eth0.10 (VLAN tagged) -> MAC vtap on eth0.10
eth0 (physical interface) -> eth0.20 (VLAN tagged) -> MAC vtap on eth0.20

Для меня невозможность связи от / к гостю / хосту является слишком большим ограничением, но ваши требования могут быть другими.

] Наконец, посмотрите здесь , это стоит прочитать.

3
ответ дан 3 December 2019 в 06:30

Теги

Похожие вопросы