Open vSwitch
Обзор
Ссылки по теме:
- Используем OpenVPN vSwitch для разделения виртуалок между VLAN
- Open vSwitch (OVS) commands for troubleshooting
Network Manager - это сетевой менеджер, который управляет сетевой конфигурацией. Он имеет интеграцию с Open vSwitch (nm-opervswitch), но на Ubuntu 20.04 она не работает по умолчанию. Вероятно есть способ ее настроить, но я его не нашел. Я пробовал конфигурировать Open vSwitch его собственными средствами, но Network Manager не видит интерфейс моста созданного в Open vSwitch и соответственно при перемещении физического интерфейса в мост Open vSwitch ваша машина вообще теряет связь с локальной сетью. У меня нет второго интерфейса, поэтому мне пришлось перейти на сетевой менеджер systemd-networkd.
Netplan - это сетевой конфигуратор, который может генерировать конфигурации для сетевых менеджеров systemd-networkd и Network Manager, а также может переключать систему на нужный сетевой менеджер. Когда Netplan переключен на systemd-networkd, то через него можно конфигурировать Open vSwitch. Можно также создать мост в Open vSwitch и определить его в netplan как обычный интерфейс. Сетевой менеджер systemd-networkd читает свою конфигурацию из каталога /etc/systemd/networkd, но netplan туда ничего не пишет. Вероятно он передает конфигурацию systemd-networkd иным способом.
Ubuntu 20.04
# установка
apt install openvswitch-switch
# проверка статуса основного сервиса
systemctl status ovs-vswitchd
# вывод текущей конфигурации, рекомендуется выполнять после каждого действия, чтобы понимать что происходит
ovs-vsctl show
# создание моста ovs0
ovs-vsctl add-br ovs0
# добавление физического порта в мост ovs0
# по умолчанию этот порт становится транковым и пропускает все VLAN, но это можно изменить
ovs-vsctl add-port ovs0 enp4s0
# добавление внутреннего порта в мост ovs0
# -- используется для разделения команд
ovs-vsctl add-port ovs0 p01 -- set interface p01 type=internal
# переключение на systemd-networkd
# переименовываем файл для рендеринга в Network Manager, так чтобы netplan его не нашел
cd /etc/netplan
mv 01-network-manager-all.yaml 01-network-manager-all.yaml.bak
# создаем файл конфигурации для рендеринга в systemd-networkd
nano /etc/netplan/00-networkd-all.yaml
--------------------------------
# Netplan
network:
version: 2
renderer: networkd
ethernets:
enp4s0: {}
ovs0:
dhcp4: yes
--------------------------------
# генерация и применение конфигурации netplan
netplan generate
netplan apply
# далее необходимо перегрузиться, чтобы система полностью перешла на нужный сетевой менеджер
Хост получает IP из локальной сети по DHCP на интерфейсе моста ovs0. Физический интерфейс должен быть определен с пустой конфигурацией.
Подключение виртуальных машин
Виртуальные машины необходимо подключать к интерфейсу внутреннего порта p01, тогда они будут видеть и локальную сеть и хост на котором они запущены. Все виртуальные машины можно привязывать к одному внутреннему порту. Создавать внутренние порты под каждую ВМ не обязательно.