Open vSwitch

Материал из sysadm
Перейти к навигации Перейти к поиску

Обзор

Ссылки по теме:


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, тогда они будут видеть и локальную сеть и хост на котором они запущены. Все виртуальные машины можно привязывать к одному внутреннему порту. Создавать внутренние порты под каждую ВМ не обязательно.