libvirtd - Заставляем vps использовать существующий мост

libvirtd - Заставляем vps использовать существующий мост

Я работал над запуском KVM на CentOS 6.4 и столкнулся с загвоздкой. После прочтения нескольких онлайн-документов о настройке моста для подключения vps и ручных попыток внести необходимые изменения я наконец наткнулся наЭта статьякоторый демонстрирует автоматический способ сделать это:

virsh iface-bridge eth1 br0

Теперь, когда я это делаю, brctl showя получаю следующее:

bridge name     bridge id               STP enabled     interfaces
br0             8000.001b78bb915a       yes             eth1

Пока все выглядит хорошо. В конфигурации моего домена у меня следующая сетевая конструкция:

<interface type='network'>
  <mac address='52:54:00:a3:dd:2c'/>
  <source network='br0'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

Однако при попытке запустить домен я постоянно получаю следующую ошибку:

error: Failed to start domain service-a-2
error: Network not found: no network with matching name 'br0'

После дополнительных поисков я обнаружил, что могу вывести список сетей, доступных гипервизору, выполнив следующую команду:

$ ->  virsh net-list --all

Но в моем случае он пуст. Поэтому я нашелЭта статьякоторый демонстрирует, как настроить использование существующего моста, поэтому моя конфигурация выглядит так:

<network>
  <name>br0</name>
  <forward mode="bridge"/>
  <bridge name="br0" />
</network>

Я добавил его в гипервизор с помощью virsh net-define /tmp/br0.xml. Затем я запустил сеть и свой домен, но теперь, когда я даю ifconfigкоманду, я вижу запись vnet0:

vnet0     Link encap:Ethernet  HWaddr FE:54:00:A3:DD:2C
inet6 addr: fe80::fc54:ff:fea3:dd2c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Что не имеет смысла, разве домен не должен использовать существующий мост br0? Создается ли новый туннель vnetX(?) для каждого vps, запущенного гипервизором?

решение1

Это имеет абсолютный смысл. То, что происходит, когда вы настраиваете мост, является фиктивным устройством моста, к которому ничего не подключено ( brctl showни один сетевой адаптер не будет указан под ним).

Когда вы подключаете мост к физическому интерфейсу, он будет отображаться как один из интерфейсов, подключенных к мосту, и через который фактически будет проходить реальный трафик, но это только один интерфейс моста. Когда вы запускаете виртуальную машину, она подключается к устройству tap, которое также должно быть подключено к коммутатору, чтобы коммутатор мог иметь два интерфейса и перемещать трафик между ними. Просто представьте себе мост как сетевой коммутатор, куда подключена виртуальная машина (tap — это устройство vnet0), а также подключена реальная сетевая карта. К этому мосту можно подключить больше виртуальных машин, весь их трафик будет идти в сеть через физическую сетевую карту, которую вы подключили к мосту.

Связанный контент