Aller au contenu

Convertir une configuration réseau Debian ifupdown à netplan

Christophe TREMBLAY-GUILLOUX
Christophe TREMBLAY-GUILLOUXIngénieur système Linux

Depuis toujours, le système de configuration réseau sur Debian a été ifupdown. Depuis quelques temps, le système Netplan a fait son apparition et semble être utilisé de plus en plus. Je sais que beaucoup regrette ce changement forcé mais ce n'est pas l'objet de ce mémo.

bash
apt update
apt install netplan.io

Récupérez le nom et l'adresse MAC des interfaces:

bash
ip link

Ensuite, voici l'exemple chez OVHcloud avec une instance connectée à un VRACK en plus du réseau externe, mettez l'IPv6 attribuée si elle existe, les adresses MAC et les bons noms d'interface réseau :

/etc/netplan/50-cloud-init.yaml:

yaml
network:
version: 2
ethernets:
ens3:
accept-ra: false
addresses:
- 2001:xxx/56
dhcp4: true
match:
macaddress: xxx1
mtu: 1500
nameservers:
addresses:
- 213.186.33.99
search: []
routes:
- to: ::/0
via: 2001:xxx::1
set-name: ens3
ens7:
dhcp4: true
dhcp4-overrides:
use-routes: false
match:
macaddress: xxx2
set-name: ens7

3. Droits du fichier, activation de networkd et test

Section intitulée « 3. Droits du fichier, activation de networkd et test »

Corrigez les droits du fichier yaml (netplan refuse un fichier lisible par tous) :

bash
chmod 0600 /etc/netplan/50-cloud-init.yaml

Validez la syntaxe et générez la configuration networkd (sans rien appliquer) :

bash
netplan generate

Activez systemd-networkd avant le test. Sinon netplan try avertit que networkd n'est pas démarré, bascule en « hard restart » et son retour arrière automatique n'est pas fiable :

bash
systemctl enable --now systemd-networkd

Testez la configuration :

bash
netplan try

Il vous propose de l'appliquer : validez si vous n'avez pas perdu la connexion. Sinon, ne touchez à rien, il revient tout seul à l'ancienne configuration au bout du délai.

Vérifiez d'abord que networkd est bien activé au démarrage (sinon le réseau ne remontera pas au prochain reboot) :

bash
systemctl is-enabled systemd-networkd # doit répondre : enabled

Puis l'état des interfaces :

bash
netplan status --all
Online state: offline
DNS Addresses: 213.186.33.99
xxx
xxx
DNS Search: openstacklocal
● 1: lo ethernet UNKNOWN/UP (unmanaged)
MAC Address: 00:00:00:00:00:00
Addresses: 127.0.0.1/8
::1/128
● 2: ens3 ethernet UP (networkd: ens3)
MAC Address: xxx
Addresses: xxx/32 (dynamic, dhcp)
2001:xxx/56
fe80::xxx/64 (link)
Routes: default via xxx from xxx metric 100 (dhcp)
xxx from xxx metric 100 (dhcp, link)
213.186.33.99 via xxx from xxx metric 100 (dhcp)
2001:xxx::/56 metric 256
fe80::/64 metric 256
default via 2001:xxx::1 metric 1024 (static)
● 3: ens7 ethernet UP (networkd: ens7)
MAC Address: xxx
Addresses: xxx/16 (dynamic, dhcp)
fe80::xxx/64 (link)
Routes: xxx/16 from xxx metric 100 (link)
xxx from xxx metric 100 (dhcp, link)
xxx from xxx metric 100 (dhcp, link)
fe80::/64 metric 256
bash
apt purge ifupdown
apt purge resolvconf

6. (optionnel) Installer la prise en compte des résolveurs connus de systemd-networkd

Section intitulée « 6. (optionnel) Installer la prise en compte des résolveurs connus de systemd-networkd »

Si systemd-networkd n'est pas installé, le fichier /etc/resolv.conf est un fichier normal qui doit contenir le bon DNS à utiliser, exemple:

nameserver 213.186.33.99

Ce fichier ne sera donc pas mis à jour par ce qui peut être indiqué dans le netplan car on a été obligé d'enlever resolvconf qui ne sert plus à rien.

Donc on installe le nouveau package systemd-resolved qui s'occupe de faire pointer resolv.conf vers lui même et utilisera les DNS qu'il aura reçu de son côté:

bash
apt install systemd-resolved

Pour regarder la configuration DNS:

bash
networkctl status
● Interfaces: 1, 2, 3
State: routable
Online state: online
Address: xxx on ens3
xxx on ens7
2001:xxx on ens3
fe80::xxx on ens3
fe80::xxx on ens7
Gateway: xxx on ens3
2001:xxx::1 on ens3
DNS: 213.186.33.99
xxx
xxx