Openvswitch
Введение
Данная статья написана и проверена для операционной системы Альт Сервер ветки P10.
С высокой долей вероятности описанные здесь способы будут работать и в более старших версиях дистрибутивов ОС "Альт".
Общие настройка
Включить сервис
systemctl enable --now openwsvitch
Настройки физических интерфейсов через etcnet на примере ens19
cat /etc/net/ifaces/ens19/options
BOOTPROTO=static TYPE=eth NM_CONTROLLED=no DISABLED=no CONFIG_WIRELESS=no SYSTEMD_BOOTPROTO=static CONFIG_IPV4=yes SYSTEMD_CONTROLLED=no ON_BOOT=yes
Остальные файлы в каталоге интерфейса (/etc/net/ifaces/ens19) должны отсутствовать
Далее в Alt Linux можно настроить Openvswitch либо посредством ovs-vsctl либо через конфигурационные файлы etcnet.
Оба способа описаны ниже. Предпочтительным является способ через etcnet, т.к. в таком случае сохраняются читабельные конфигурационные файлы в тексте.
Настройка через ovs-vsctl
Проверить конфигурацию
ovs-vsctl show
Очистить конфигурацию
ovs-vsctl emer-reset
Добавить мост
ovs-vsctl add-br vmbr0
Прикрепляем к мосту vmbr0 физический сетевой интерфейс ens20
ovs-vsctl add-port vmbr0 ens20 trunks=100,200,999
Если необходимо создать мост vmbr0 поверх физических интерфейсов ens19, ens20, ens21 и при этом транковые порты должны быть только на ens19, а физические порты ens20 и ens21 должны работать на виланах, соответственно, 100 и 200
ovs-vsctl add-port vmbr0 ens19 trunks=100,200,999 ovs-vsctl add-port vmbr0 ens20 tag=100 ovs-vsctl add-port vmbr0 ens21 tag=200
Если нужно удалить физический сетевой интерфейсens20 из моста vmbr0
ovs-vsctl del-port vmbr0 ens20
Чтобы создать интерфейс vlan999 (не физический) и привязать его к мосту vmbr0 и трафику с тегом 999 (для управления хостом)
ovs-vsctl add-port vmbr0 vlan999 tag=999 -- set Interface vlan999 type=internal
Далее интерфейс vlan999 настраивается аналогично физическому интерфейсу
cat /etc/net/ifaces/vlan999/options
BOOTPROTO=static TYPE=eth NM_CONTROLLED=no DISABLED=no CONFIG_WIRELESS=no SYSTEMD_BOOTPROTO=static CONFIG_IPV4=yes SYSTEMD_CONTROLLED=no ON_BOOT=yes
cat /etc/net/ifaces/vlan999/ipv4address
10.10.10.2/24
Настройка через etcnet
Подготовка физических интерфейсов
cd /etc/net/ifaces/
ls ens19 options
cat ens19/options BOOTPROTO=static TYPE=eth NM_CONTROLLED=no DISABLED=no CONFIG_WIRELESS=no SYSTEMD_BOOTPROTO=static CONFIG_IPV4=yes SYSTEMD_CONTROLLED=no ON_BOOT=yes
ls ens20 options
cat ens20/options BOOTPROTO=static TYPE=eth NM_CONTROLLED=no DISABLED=no CONFIG_WIRELESS=no SYSTEMD_BOOTPROTO=static CONFIG_IPV4=yes SYSTEMD_CONTROLLED=no ON_BOOT=yes
Должны быть только эти файлы и только такое содержимое в них.
Количество самих интерфейсов и их названия могут отличаться.
Дальнейшие примеры будут строиться на базе физических интерфейсов
ens19 и ens20
Создаём конфигурацию для поднятия моста vmbr0 поверх ens20 средствами etcnet
Далее будет использоваться синтаксис heredoc для более удобного конфигурирования через копирование текста мышью из браузера в эмулятор терминала
Создаём мост vmbr0 поверх физического интерфейса ens20 с выводом трафика с виланов 100, 200, 999 через сетевой интерфейс ens20 во внешнюю сеть.
cd /etc/net/ifaces/
mkdir vmbr0
cat << 'EOF' > vmbr0/options TYPE=ovsbr CONFIG_WIRELESS=no BOOTPROTO=static CONFIG_IPV4=yes ON_BOOT=yes HOST="ens20" OVS_REMOVE=yes EOF
cat << 'EOF' > vmbr0/ifup-post ovs-vsctl set port ens20 trunks=100,200,999 EOF
chmod +x vmbr0/ifup-post
systemctl restart network
Проверка
ovs-vsctl show
должна вернуть что-то типа
968569fe-451b-4b42-b191-65700538b36b Bridge vmbr0 Port ens20 trunks: [100, 200, 999] Interface ens20 Port vmbr0 Interface vmbr0 type: internal ovs_version: "2.17.8"
Создаём конфигурацию для поднятия vlan интерфейса vlan999 с id=999 поверх моста vmbr0 средствами etcnet
cd /etc/net/ifaces/
mkdir vlan999
cat << 'EOF' > vlan999/options TYPE=ovsport CONFIG_WIRELESS=no BOOTPROTO=static CONFIG_IPV4=yes BRIDGE=vmbr0 VID=999 EOF
echo '10.10.10.2/24' > vlan999/ipv4address
systemctl restart network
Проверка
ovs-vsctl show
должна вернуть что-то типа
968569fe-451b-4b42-b191-65700538b36b Bridge vmbr0 Port vlan999 tag: 999 Interface vlan999 type: internal Port vmbr0 Interface vmbr0 type: internal Port ens20 trunks: [100, 200, 999] Interface ens20 ovs_version: "2.17.8"
Проверяем все сетевые интерфейсы
ip a ... физический интерфейс ens20. Особое внимание на state UP ... 3: ens20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master ovs-system state UP group default qlen 1000 link/ether 7a:ba:31:39:f3:47 brd ff:ff:ff:ff:ff:ff altname enp0s20 inet6 fe80::78ba:31ff:fe39:f347/64 scope link valid_lft forever preferred_lft forever ... интерфейс ovs-system, который создаётся посредством openvswitch. state не имеет значения ... 18: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 7e:d8:51:8b:62:59 brd ff:ff:ff:ff:ff:ff ... мост vmbr0. state UNKNOWN -- это нормально ... 19: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000 link/ether c6:f3:66:f8:cf:4f brd ff:ff:ff:ff:ff:ff inet6 fe80::c4f3:66ff:fef8:cf4f/64 scope link valid_lft forever preferred_lft forever ... vlan интерфейс vlan999. state UNKNOWN -- это нормально. inet 10.10.10.2/24 -- это настроенный на нём статический ip-адрес ... 20: vlan999: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000 link/ether fa:52:f6:ff:05:87 brd ff:ff:ff:ff:ff:ff inet 10.10.10.2/24 scope global vlan999 valid_lft forever preferred_lft forever inet6 fe80::f852:f6ff:feff:587/64 scope link valid_lft forever preferred_lft forever