Open vSwitch под Gentoo
Джентльмены,
Поставил Open vSwitch на свежеобновлённой Gentoo стабильной версии по статьям:
QEMU with Open vSwitch network
Open vSwitch: cоединяй и властвуй
Увы, заставить это чудо работать не удаётся. А именно, средствами ovs-vsctl не создаются в системе работоспособные устройства tap*
Просьба поделиться успешным опытом внедрения.
Первый сценарий:
Создаю свитч стандартным образом:
ovs-vsctl add-br vbr0 ovs-vsctl add-port vbr0 eth1 ovs-vsctl add-port vbr0 tap2 ovs-ofctl mod-port vbr0 vbr0 up ovs-ofctl mod-port vbr0 eth1 up
В результате:
# ovs-vsctl show 5d7e7234-3757-4275-be2c-6a5ea34b68d1 Bridge "vbr0" Port "eth1" Interface "eth1" Port "tap2" Interface "tap2" Port "vbr0" Interface "vbr0" type: internal
# ifconfig tap2 up tap2: ERROR while getting interface flags: No such device
В таком случае виртуалке QEMU даже не к чему цепляться - она просто не видит устройства tap2
Второй сценарий, где tap2 имеет уже тип internal:
ovs-vsctl add-br vbr0 ovs-vsctl add-port vbr0 eth1 ovs-vsctl add-port vbr0 tap2 -- set interface tap2 type=internal ovs-ofctl mod-port vbr0 vbr0 up ovs-ofctl mod-port vbr0 eth1 up
Результат:
# ovs-vsctl show 5d7e7234-3757-4275-be2c-6a5ea34b68d1 Bridge "vbr0" Port "tap2" Interface "tap2" type: internal Port "eth1" Interface "eth1" Port "vbr0" Interface "vbr0" type: internal
# ifconfig tap2 up
В этот раз устройство присутствует в системе:
# ifconfig tap2 tap2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 7e:6f:a1:6e:fd:30 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Стартую QEMU и получаю сообщение об ошибке:
qemu-kvm: -net tap,ifname=tap2,script=no: could not configure /dev/net/tun (tap2): Invalid argument qemu-kvm: -net tap,ifname=tap2,script=no: Device 'tap' could not be initialized
Проверены и перепроверены: параметры ядра, USE флаги QEMU. Поисковики упорно молчат по всем описанным проблемам.
При этом сам QEMU замечательно работает как на чистом бридже через созданные стандартными средствами устройства tap так и через VDE switch. По ряду причин оба решения не подходят для постоянного использования - нужен именно vSwich.
Подскажите, пожалуйста, где была допущена ошибка?
С уважением,
Денис.
- Для комментирования войдите или зарегистрируйтесь
Нашлось решение проблемы.
1. Была допущена ошибка в параметрах запуска виртуалки. Правильно так:
2. Виртуальные машины запускались из-под пользователя с ограниченными правами. Решить проблему удалось следующим образом:
Создать файл /etc/udev/rules.d/60-tun.rules со строкой:
И установкой Capabilities для работы с устройством /dev/net/tun
Подробности в статьях:
"Управляем привилегиями приложений с помощью Capabilities"
"could not configure /dev/net/tun: Operation not permitted"