systemd : Le réseau avec systemd-networkd
Table des matières
Comme vous le savez, systemd est plus qu'un système d'init et de gestion des services !
systemd-networkd est un service de gestion du réseau qui fait partie de l'écosystème systemd. Il gère le paramétrage IPv4 et IPv6. C'est une alternative à NetworkManager ou à Netplan.
Pour faire fonctionner le réseau avec systemd, nous aurons besoin de :
systemd-networkd.service => Le service réseau
systemd-resolved.service => Le service de résolution de nom
A noter que systemd-resolved peut être utilisé sans systemd-networkd.
Cet article se concentre uniquement sur systemd-networkd.
On a détaillé systemd-resolved dans cet article : systemd : La résolution de nom avec systemd-resolved
Si on utilise systemd-networkd, il faut évidemment désactiver le service NetworkManager (ou autre gestionnaire réseau) !
Toutes les configurations réseau se trouvent dans /etc/systemd/network/.
Comme toute commande systemd, elle finit par ctl, et nous utiliserons networkctl.
Pour lister les interfaces, on peut donc utiliser :
Lorsque aucune interface n'est paramétrée, on a une sortie de ce style :
La commande networkctl list nous produit ceci une fois l'interface configurée :
A noter, la commande networkctl status permet d'afficher plus d'infos :
Après chaque modification, on doit redémarrer le service :
Sur la machine concernée, l'interface réseau s'appelle enp0s3.
Je vais créer le fichier /etc/systemd/network/enp0s3-ethernet.network.
Il est important que le fichier de configuration de l'interface réseau ait l'extension .network.
Pour les exemples simples ci-dessous, voici les valeurs utilisables dans notre fichier .network :
Dans le cas d'une configuration DHCP, si on ne souhaite pas récupérer les DNS (car on souhaite gérer avec systemd-resolved par exemple) on pourra indiquer dans la section DHCP :
Exemple avec une configuration DHCP :
Exemple avec une configuration statique :
Introduction
Comme vous le savez, systemd est plus qu'un système d'init et de gestion des services !
systemd-networkd est un service de gestion du réseau qui fait partie de l'écosystème systemd. Il gère le paramétrage IPv4 et IPv6. C'est une alternative à NetworkManager ou à Netplan.
Le réseau avec systemd-networkd
Concepts
Pour faire fonctionner le réseau avec systemd, nous aurons besoin de :
systemd-networkd.service => Le service réseau
systemd-resolved.service => Le service de résolution de nom
A noter que systemd-resolved peut être utilisé sans systemd-networkd.
Cet article se concentre uniquement sur systemd-networkd.
On a détaillé systemd-resolved dans cet article : systemd : La résolution de nom avec systemd-resolved
Si on utilise systemd-networkd, il faut évidemment désactiver le service NetworkManager (ou autre gestionnaire réseau) !
Toutes les configurations réseau se trouvent dans /etc/systemd/network/.
Comme toute commande systemd, elle finit par ctl, et nous utiliserons networkctl.
Pour lister les interfaces, on peut donc utiliser :
Code BASH :
networkctl list
Lorsque aucune interface n'est paramétrée, on a une sortie de ce style :
Code BASH :
# networkctl list IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 enp0s3 ether routable unmanaged
La commande networkctl list nous produit ceci une fois l'interface configurée :
Code BASH :
# networkctl list IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 enp0s3 ether routable configuring
A noter, la commande networkctl status permet d'afficher plus d'infos :
Code BASH :
# networkctl status ● State: routable Address: 192.168.21.195 on enp0s3 fe80::f858:6feb:af9b:43c9 on enp0s3 Gateway: 192.168.21.254 (TP-LINK TECHNOLOGIES CO.,LTD.) on enp0s3 fe80::24ca:f9ff:fe9b:7f30 (TP-LINK TECHNOLOGIES CO.,LTD.) on enp0s3
Après chaque modification, on doit redémarrer le service :
Code BASH :
systemctl restart systemd-networkd
Fichier de configuration
Sur la machine concernée, l'interface réseau s'appelle enp0s3.
Je vais créer le fichier /etc/systemd/network/enp0s3-ethernet.network.
Il est important que le fichier de configuration de l'interface réseau ait l'extension .network.
Pour les exemples simples ci-dessous, voici les valeurs utilisables dans notre fichier .network :
Code :
[Match]
Name=Nom de l'interface
MACAddress=Adresse MAC de l'interface
[Link]
MACAddress=Changer l'adresse MAC
MTUBytes=Changer la valeur du MTU
[Network]
DHCP=ipv4 ou ipv6 (si non indiqué, vaut false, true = ipv4 et ipv6)
Address=IP fixe (si DHCP non actif, avec masque en notation CIDR)
Gateway=IP du routeur (si DHCP non actif)
DNS=IP du DNS (Cette ligne peut être utilisée 2 fois pour spécifier 2 DNS)
Dans le cas d'une configuration DHCP, si on ne souhaite pas récupérer les DNS (car on souhaite gérer avec systemd-resolved par exemple) on pourra indiquer dans la section DHCP :
Code TEXT :
[DHCPv4] UseDNS=false
Exemples simples IP Dynamique
Exemple avec une configuration DHCP :
Code BASH :
[Match] Name=enp0s3 [Network] DHCP=ipv4
Exemples simples IP Fixe
Exemple avec une configuration statique :
Code BASH :
[Match] Name=enp0s3 [Network] Address=192.168.21.240/24 Gateway=192.168.21.254 DNS=1.1.1.1