Canonical modernise /etc/network/* avec netplan
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 generate
: Use /etc/netplan to generate the required configuration for the renderersnetplan apply
: Apply all configuration for the renderers, restarting them as necessarynetplan ifupdown-migrate
: Attempt to generate an equivalent configuration to what is specified in /etc/network/interfaces
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.
- https://git.launchpad.net/netplan/tree/src
- langages python3 et C
Sources :