Canonical modernise /etc/network/* avec netplan

#linux #ubuntu #networking

posté à l'origine sur Medium le 23/07/2017

Ça y est, Canonical a annoncé que le paquet ifupdown permettant la gestion des interfaces réseaux via /etc/network/ serait vraiment déprécié en faveur de l’intéressant netplan dans Ubuntu ≥ 17.10

La configuration des interfaces réseaux peut se faire par nom, MAC, driver… et sera déclarative via du YAML.

netplan ajoute aussi une abstraction sympa entre la configuration des interfaces et l’outil qui s’en chargera (backend), c’est à dire qu’il sera possible de réutiliser nos configurations déclarer en YAML tout en changeant le backend de NetworkManager à networkd par exemple. Le résultat devrait être le même.

Date de la beta finale : September 28th 2017

Architecture et commandes netplan

Les commandes principales sont assez simples :


Netplan Architecture.


L’architecture n’est pas simpliste mais simple, ajoutant une couche d’abstraction très utile entre l’opérateur qui veut configurer son réseau et l’actuel outil qui va parler au Kernel. Ça pourra éviter quelques cauchemars après une utilisation trop intensive de NetworkManager et nmcli.

Une nouvelle syntaxe en YAML

Voici à quoi pourrait ressembler une configuration type en YAML pour netplan:

network:
  version: 2
  #renderer: NetworkManager
  ethernets:
    id0:
      match:
        macaddress: 00:11:22:33:44:55
      wakeonlan: true
      dhcp4: true
      addresses:
        - 192.168.14.2/24
        - 2001:1::1/64
    lom:
      # explicitly setting a backend (default would be networkd)
      renderer: network-manager
      match:
        driver: ixgbe
      # you are responsible for setting tight enough match rules
      # that only match one device if you use set-name
      set-name: lom1
      dhcp6: true
    switchports:
      match:
        name: enp2*
      mtu: 1280
  wifis:
    all-wlans:
      match: {}
      access-points:
        "Joe's home":
            # defaults to "managed" (client), key type to wpa-psk
            password: "s3kr1t"
    # this creates an AP on wlp1s0 using hostapd
    wlp1s0:
      access-points:
        "guest":
          mode: ap
          channel: 11
          # no WPA config implies default of open
  bridges:
    # renderer: NetworkManager    
    # the key name is the name for virtual (created) interfaces; 
    # no ‘match’ or ‘set-name’ attributes are allowed.
    br0:
      interfaces: [wlp1s0, switchports]
      dhcp4: true
  routes:
   - to: 0.0.0.0/0
     via: 11.0.0.1
     metric: 3
  nameservers:
    search: [foo.local, bar.local]
    addresses: [8.8.8.8]

Code source

Vous pouvez lire le code source et suivre l’évolution du projet sur launchpad. Je tâcherai de mettre à jour ce post suivant les annonces et évolutions de cet outil.


Sources :