главная - Статьи - Виртуализация
Создаем сетевой мост (bridge, br0). Например, для виртуальных машин KVM
Теги: Виртуальные машины Linux kvm
При установке kvm изначально создается виртуальная локальная сеть, из которой гостевые VM могут выходить "наружу", но с ними снаружи до настройки DST-NAT/FORWARD никто не сможет взаимодействовать. Если необходимо, чтобы виртуальные машины были доступны так же, как и обычные компьютеры, их можно подключить к сети черед мост (bridge). Предположим, есть хост Linux, на нем настроен KVM. На хосте есть два физических сетевых адаптеров, один из которых планируется отдать для подключения виртуальных машин к физической сети (LAN, WAN, не имеет значения).
Пусть есть два сетевых адаптера: eno1 и eno2.
eno2 - управляющий, ему будет назначен какой-то ip-адрес, через него хост настраивается.
eno1 - адаптер, подключенный к сети LAN, в которой будут доступны виртуальные машины.
При этом eno1 и eno2 могут быть подключены в одну и ту же сеть, не важно.
Создадим bridge br0, привязанный к адаптеру eno1.
На примере хоста KVM на CentOS 7.
Проверим, подгружен ли модуль bridge:
# modinfo bridge
Если не подгружен, можно подгрузить:
# modprobe --first-time bridge
Возможно, потребуется установить утилиты bridge:
# yum install bridge-utils
NetwokManager выключаем, он на практике только мешает на сервере:
# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
На всякий случай, копируем конфиг сетевого адаптера eno1 (у меня это были базовые, нетронутые настройки):
# cp /etc/sysconfig/network-scripts/ifcfg-eno1 /root/ifcfg-eno1.bak TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=eno1 UUID=3af09c3d-cf02-40a5-9bf0-c296d5a05c89 DEVICE=eno1 ONBOOT=no
Создаем конфиг бриджа br0:
# nano /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=none ONBOOT=yes DELAY=0
Совет: обратите внимание, что Bridge пишется в конфиге с большой буквы!
Изменяем конфиг eno1:
# nano /etc/sysconfig/network-scripts/ifcfg-eno1 TYPE=Ethernet BOOTPROTO=none IPV4_FAILURE_FATAL=no IPV6INIT=none IPV6_AUTOCONF=none IPV6_DEFROUTE=none IPV6_PEERDNS=none IPV6_PEERROUTES=none IPV6_FAILURE_FATAL=no NAME=eno1 UUID=3af09c3d-cf02-40a5-9bf0-c296d5a05c89 DEVICE=eno1 ONBOOT=yes NM_CONTROLLED=no BRIDGE=br0
Фактически полностью сохраняется конфиг, внизу появляется привязка к bridge br0.
Кто-то после этого делает service network restart, я все же хочу убедиться, что все будет ок и после перезагрузки, поэтому reboot. При этом не забывайте, что если вы что-то напутаете (например, если для eno1 у вас были какие-то правила iptables, или в конфиге ошибетесь), то лучше вам быть рядом с хостом и его физической клавиатурой.
После перезагрузки если все ок и в листинге ip link бридж br0 присутствует, можно приступать или к настройке KVM (на CentOS 7) или, если уже настроено, виртуальные машины можно подключать к сети через br0, например:
# virt-install --network bridge:br0 --name vm1 --description='Windows 7' --ram=1024 --vcpus=1 --disk path=/vms/vm1.iso,size=30,format=qcow2,bus=virtio --graphics vnc,password=12345 --cdrom /data/vms-iso/Windows-7-64-prof-from-orig-dvd.iso --boot cdrom,hd,menu=on
Все, мы создали выделенный сетевой мост br0 (на базе адаптера eno2) который не имея собственного IP адреса, подключает виртуальные машины к нужному сегменту реальной сети. При этом что бы ни случилось с трафиком VM, есть отдельный административный сетевой адаптер eno2.
Авторизуйтесь для добавления комментариев!