Open vSwitch és hálózati beállítások Ubuntu 18.04-en: netplan, ifupdown, systemd-networkd

Szerettem volna az alábbi hálózati beállításokat beállítani Ubuntu 18.04 (bionic) rendszeren Open vSwitch híd és portok használatával.

Az uplink az eth0-ra kötött trunk port.

VLAN Tagged Interface IP
trunk   eth0  
100 no vlan100 192.168.100.3
200 yes vlan200 192.168.200.4

Netplan az alapértelmezett eszköz Ubuntu 18.04-en (bionic) a hálózat beállításához.

Azonban a Netplan nem állítja be az Open vSwitch hidakat és portokat, mint ahogyan az ifupdown megteszi.

Alapvetően a következő lehetőségek vannak:

  1. Az ifupdown telepítése, ami az IP címeket és az Open vSwitch-et teljesen beállítja. Esetleg a resolvconf telepítése a DNS beállításokhoz.
  2. Az eszközök beállítása az ovs-vsctl használatával és az IP beállítások megadása Netplan-al.
  3. Az eszközök beállítása az ovs-vsctl használatával és az IP beállítások megadása systemd-networkd-vel.

ifupdown

A hagyományos út az ifupdown telepítése az IP beállításokhoz és esetleg a resolvconf telepítése a DNS beállításokhoz.

A csomagok telepítése.

apt-get install ifupdown openvswitch-switch resolvconf

Az /etc/network/interfaces szerkesztése.

auto br0
allow-ovs br0
iface br0 inet manual
  ovs_type OVSBridge
  ovs_ports eth0 vlan100 vlan200
  dns-nameservers 192.168.100.10
  dns-search example.com

allow-br0 eth0
iface eth0 inet manual
  ovs_bridge br0
  ovs_type OVSPort
  ovs_options vlan_mode=native-untagged tag=100

allow-br0 vlan100
iface vlan100 inet static
  address 192.168.100.3
  netmask 255.255.255.0
  gateway 192.168.100.1
  ovs_type OVSIntPort
  ovs_bridge br0
  ovs_options tag=100

allow-br0 vlan200
iface vlan200 inet static
  address 192.168.200.4
  netmask 255.255.255.0
  ovs_type OVSIntPort
  ovs_bridge br0
  ovs_options tag=200

Megjegyzés: Ahogy a README.Debian for openvswitch-switch említi, és az Ubuntu bug #1448254 leírja (javasolt kerülőmegoldás) az auto br0 ne kerüljön beállításra az /etc/network/interfaces állományban, habár nálam működött bionic rendszeren.

Netplan

A Netplan nem kezeli az Open vSwitch-et.

Az IP beállítások előtt be kell állítani az Open vSwitch-et.

Nagyon könnyű kezelni Ansible-el a Netplan-t, mert a hálózati beállítások inventory group és host változókban, YAML formátumban tárolhatók el.

Az Open vSwitch telepítése.

apt-get install openvswitch-switch

Az Open vSwitch beállítása.

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl set port eth0 tag=100 vlan_mode=native-untagged
ovs-vsctl add-port br0 vlan100 tag=100 -- set interface vlan100 type=internal
ovs-vsctl add-port br0 vlan200 tag=200 -- set interface vlan200 type=internal

A Netplan beállítások létrehozása.

network:
  version: 2
  renderer: networkd
  ethernets:
    vlan100:
      dhcp4: no
      addresses:
        - 192.168.100.3/24
      gateway4: 192.168.100.1
      nameservers:
        search: [example.com]
        addresses: [192.168.100.10]
    vlan200:
      dhcp4: no
      addresses:
        - 192.168.200.4/24

A beállítások alkalmazása.

sudo netplan generate
sudo netplan apply

systemd-networkd

A systemd-networkd nem kezeli az Open vSwitch-et.

Az IP beállítások előtt be kell állítani az Open vSwitch-et.

Az Open vSwitch-et a Netplan részben leírtaknak megfelelően kell telepíteni és beállítani.

/etc/systemd/network/10-eth0.network:

[Match]
Name=eth0

/etc/systemd/network/10-vlan100.network:

[Match]
Name=vlan1

[Network]
Address=192.168.100.3/24
Gateway=192.168.100.1
DNS=192.168.100.10

/etc/systemd/network/10-vlan200.network:

[Match]
Name=vlan11

[Network]
Address=192.168.200.4/24

A systemd-networkd újraindítása.

sudo systemctl restart systemd-networkd