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

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, запущенного гипервизором?

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

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