Mon but était de mettre en marche la configuration réseau suivant sous Ubuntu 18.04 (bionic) en utilisant un pont et de ports Open vSwitch.

Le port eth0 est connecté à un port trunk.

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

Netplan est l'utilitaire par défaut sous on Ubuntu 18.04 (bionic) pour la configuration réseau.

Malheureusement Netplan ne configure pas les ponts et ports Open vSwitch comme ifupdown le fait.

En fait on a les possibilités suivantes:

  1. Installer ifupdown qui configure les address IP et Open vSwitch totalement. On peut éventuellement installer resolvconf pour la configuration du serveur DNS.
  2. Configurer les interfaces en utilisant ovs-vsctl et configurer les réglages IP avec Netplan.
  3. Configurer les interfaces en utilisant ovs-vsctl et configurer les réglages IP avec systemd-networkd.

ifupdown

La route classique et d'installer ifupdown pour la configuration IP et éventuellement resolvconf pour configurer le serveur DNS.

Installer les packages.

apt-get install ifupdown openvswitch-switch resolvconf

Editer /etc/network/interfaces.

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

Note: Comme README.Debian for openvswitch-switch mention, et Ubuntu bug #1448254 décrit (workaround proposé) n'écrit pas auto br0 dans le fichier /etc/network/interfaces, mais cela a fonctionné pour moi sous bionic.

Netplan

Netplan ne gére pas Open vSwitch.

On doit mettre en marche Open vSwitch avant la configuration IP.

Il est simple de gérer Netplan avec Ansible, car la configuration réseau peut être stocker dans des variables d'inventaire group ou hôte dans le format YAML.

Installer Open vSwitch.

apt-get install openvswitch-switch

Configurer Open vSwitch.

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

Créer la configuration Netplan.

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

Appliquer la configuration.

sudo netplan generate
sudo netplan apply

systemd-networkd

Systemd-networkd ne gere pas Open vSwitch.

On doit mettre en marche Open vSwitch avant la configuration IP.

Installer and configurer Open vSwitch d'une façon similaire comme en cas de Netplan.

/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

Redémarrer systemd-networkd.

sudo systemctl restart systemd-networkd