ссылки:
1 2 3 4 5 6 7 8 9 10 |
http://www.openvswitch.org/ https://docs.openvswitch.org/en/latest/howto/libvirt/ https://libvirt.org/drvlxc.html https://libvirt.org/drvqemu.html https://www.linux-kvm.org/page/Main_Page https://xakep.ru/2017/09/04/open-vswitch/ https://habr.com/ru/post/242741/ https://xakep.ru/2012/11/19/59656/ https://docs.openvswitch.org/en/latest/howto/libvirt/ https://russianblogs.com/article/5481757540/ |
Установка необходимых пакетов:
1 2 3 4 |
# ставим на Debian 10 apt install openvswitch-switch - ставим openvswitch (ovs) apt install qemu-kvm libvirt-clients libvirt-daemon-system - устанавливаем libvirt |
openvswitch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
обычное использование без vlan: ovs-vsctl show - показывает информацию по свитчу, проверяем работу и заодно узнаем какая у нас версия ovs ovs-vsctl add-br br0 - добавляем свитч с именем br0 ovs-vsctl add-port br0 eth0 - добавляем интерфейс eth0 в свитч br0 пример с vlan: ovs-vsctl add-br ovs0 - добавляем свитч openvswitch с именем br0 ovs-vsctl add-port ovs0 eth0 - добавляем интерфейс eth0 в свитч ovs0 ovs-vsctl set port eth0 vlan_mode=native-untagged tag=2 trunks=2,3,4 - вешаем trunk на интерфейс eth0 ovs-vsctl add-port ovs0 ovs0-vlan2 tag=2 -- set Interface ovs0-vlan2 type=internal - добавляем порт и вешаем access (tag=2) на интерфейс ovs0-vlan2 ovs-vsctl add-port ovs0 ovs0-vlan4 tag=4 -- set Interface ovs0-vlan4 type=internal - добавляем порт и вешаем access (tag=4) на интерфейс ovs0-vlan2 ovs-vsctl add-port ovs0 ovs0-vlan3 tag=3 -- set Interface ovs0-vlan3 type=internal - добавляем порт и вешаем access (tag=3) на интерфейс ovs0-vlan2 ovs-vsctl set port ovsbr0 tag=29 удаление портов и коммутатора: ovs-vsctl del-port ovs0-vlan2 - удалить порт (ovs0-vlan2) из коммутатора ovs-vsctl del-br ovs0 - удалить коммутатор ovs0 |
Примеры настройки сети:
1 2 3 4 5 6 7 8 9 10 11 12 |
dhcp client: dhclient ovs0-vlan3 - получить настройки по dhcp для интерфейса ovs0-vlan3 static ifconfig: ifconfig ovs0-vlan2 inet 10.254.254.1/24 up - настраиваем ip 10.254.254.1/24 и запускаем интерфейс ifconfig ovs0-vlan4 up - просто запускаем интерфейс без настройки ip static ip: ip a - показать доступные устройства ip address add 192.168.66.10/24 dev eth0 - задаем адрес ipv4 ip link set up eth0 - запускаем интерфейс |
Собственно пытаемся работать:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
virsh --c lxc:// - подключаемся к консоли управления lxc контейнерами create /root/lxc0.xml - создаем контейнер из шаблона lxc0.xml create /root/lxc1.xml - создаем контейнер из шаблона lxc1.xml list - показать доступные контейнеры console lxc0 - подключаемся к контейнеру lxc0 (CTRL+] - отключится контейнера) ip a - показать доступные устройства ip address add 192.168.66.10/24 dev eth0 - задаем адрес ipv4 ip link set up eth0 - запускаем интерфейс ip a - показать доступные устройства ip address add 192.168.66.11/24 dev eth0 - задаем адрес ipv4 ip link set up eth0 - запускаем интерфейс |
Шаблон для контейнера(lxc0.xml)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<domain type='lxc'> <name>lxc0</name> <memory>131072</memory> <os> <type>exe</type> <init>/sbin/init</init> </os> <vcpu>1</vcpu> <clock offset='utc'/> <devices> <interface type='bridge'> <source bridge='br0'/> <targert dev='lxc0if'/> <virtualport type='openvswitch'/> </interface> <console type='pty'/> </devices> </domain> |
Шаблон для контейнера(lxc1.xml)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<domain type='lxc'> <name>lxc1</name> <memory>131072</memory> <os> <type>exe</type> <init>/sbin/init</init> </os> <vcpu>1</vcpu> <clock offset='utc'/> <devices> <interface type='bridge'> <source bridge='br0'/> <targert dev='lxc1if'/> <virtualport type='openvswitch'/> </interface> <console type='pty'/> </devices> </domain> |
OpenFlow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
По умолчанию openvswitch работает как обычный свитч (нету vlan) ovs-vsctl set-fail-mode br0 secure - включаем режим работы умного свитча (Задействуем протокол OpenFlow) Гоняем трафик между двумя портами ovs-ofctl add-flow br0 in_port=1,action=output=2 ovs-ofctl add-flow br0 in_port=2,action=output=1 ovs-ofctl dump-flows br0 - проверяем что мы там настроили ovs-vsctl set-fail-mode br0 standalone - вернуть настройки в обычный режим (br0 снова будет как обычный свитч) # еще ovs-ofctl -O OpenFlow13 dump-flows ovsbr0 ovs-ofctl -O OpenFlow13 dump-ports ovsbr0 |