Généralités système Linux

systemd : Le réseau avec systemd-networkd

Table des matières

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  



Cette page a été vue 25469 fois