Я работал над запуском 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), а также подключена настоящая сетевая карта. К этому мосту можно подключить больше виртуальных машин, весь их трафик будет идти в сеть через физический сетевой адаптер, который вы подключили к мосту.