@auditor
Разработчик

Как корректно настроить kvm (libvirt) c ovs (openvswitch) на CentOS 7?

Задача состоит в том, чтобы запустить виртуальные сервера на хосте доступные в виртуальной локальной сети. То есть с хоста должен быть доступ по ip к гостевым ОС, гостевые ОС должны видеть друг друга и хост, а также все должны иметь выход в интернет. Подразумевается что гостевые ОС получают ip из DHCP внутри хоста (но похоже этого не происходит).

Я изучил достаточно мануалов (англ, рус) но при различных конфигурациях результат один и тот же.

Использую следующий алгоритм установки
yum update -y
yum -y install epel-release
cat /proc/cpuinfo | egrep "(vmx|svm)"
mkdir -p /kvm/{images,iso,vm}
yum -y install qemu-kvm libvirt virt-install qemu-img virt-top
vi /etc/sysctl.conf
> net.ipv4.ip_forward=1
sysctl -p /etc/sysctl.conf
systemctl enable libvirtd && systemctl start libvirtd
virsh net-destroy default
virsh net-autostart --disable default
virsh net-undefine default
virsh net-list
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl enable network.service
systemctl start network.service
yum localinstall /home/ovs/rpmbuild/RPMS/x86_64/openvswitch-2.5.9-1.x86_64.rpm
ovs-vsctl -V
systemctl enable openvswitch.service
systemctl start openvswitch.service
systemctl status openvswitch.service
ovs-vsctl add-br ovs-br0
ovs-vsctl add-port ovs-br0 enp6s0 && systemctl restart network.service
systemctl restart network.service
systemctl status network.service


Конфигурация сетевых устройств

ifcfg-enp6s0
TYPE=OVSPort
DEVICETYPE=ovs

DEVICE=enp6s0
NAME="enp6s0"
HWADDR="00:25:90:64:52:98"

ONBOOT=yes
HOTPLUG=no
#NETBOOT=yes
BOOTPROTO=none
ZONE=public

OVS_BRIDGE=ovs-br0

ifcfg-ovs-br0
TYPE=OVSBridge
DEVICETYPE=ovs

DEVICE="ovs-br0"

BOOTPROTO=none
ONBOOT="yes"
HOTPLUG=no
ZONE=public
IPV6INIT=no
IPV6_AUTOCONF=no

BOOTPROTO=static
IPADDR="XXX.XXX.247.78"
NETMASK="255.255.255.0"
GATEWAY="XXX.XXX.247.1"


Остальные конфигурации по дефолту

Запуск гостевой ОС
virt-install --name test4 --memory 6144 --virt-type=kvm --autostart --vcpus 5 --os-variant=centos7.0 --cdrom /kvm/iso/CentOS-7-x86_64-Minimal-1611.iso --network network=ovs-network,model=virtio --graphics vnc,password=wera34 --disk path=/kvm/vm_a/test4.qcow2,size=50,bus=virtio,format=qcow2 --boot cdrom,hd,menu=on


ifconfig
enp6s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:25:90:64:52:98  txqueuelen 1000  (Ethernet)
        RX packets 1246684  bytes 901306695 (859.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 443026  bytes 49554746 (47.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xfbce0000-fbd00000

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 16  bytes 4078 (3.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16  bytes 4078 (3.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ovs-br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet XXX.XXX.247.78  netmask 255.255.255.0  broadcast XXX.XXX.247.255
        ether 00:25:90:64:52:98  txqueuelen 1000  (Ethernet)
        RX packets 1229399  bytes 877958427 (837.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 440429  bytes 45588952 (43.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether fe:54:00:cf:8c:9e  txqueuelen 1000  (Ethernet)
        RX packets 201  bytes 20062 (19.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 352962  bytes 22905957 (21.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

В данном случае vnet0 это устройство гостевой OC, в мануалах здесь выводится ip, но его нет.
Также в данном примере не видно (был отключен ipv6, для эксперимента), ipv6 у vnet0 выводится, а ipv4 нет.

Подскажите в чём может быть проблема?
  • Вопрос задан
  • 371 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Drno
Не претендую на правильность, но мой вариант
Хост система - cenos, на ней KVM
Внутри KVM уже настроен свой роутер (микротик) он в роли роутера
За микротиком уже сервера
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы