Le réseau sous Linux

Notez que tout ce qui suit s’applique au moins à mes machines sous Debian 12 et 13. Je ne sais pas comment cela s’applique précisément sur d’autres distributions. Il semble que cela ne soit pas si différent.
Passons les fondamentaux
On passe la partie qui explique ce qu’est une adresse IP, ou encore comment configurer manuellement, avec une interface graphique ou par la ligne de commande une addresse IP statique ou dynamique… Tout ceci se trouve en grande quantité sur Internet.
Ce qui m’intéresse aujourd’hui est pourquoi aucun tuto ne me raconte la même chose ?
Plusieurs outils
Dans une distribution Linux, en fait, il n’existe pas une seule façon de configurer le réseau. Plusieurs outils co-existent (c’est à dire sont installés et fonctionnent en même temps). Voici les services de gestion du réseau qui me semblent les plus communs:
- ifupdown, configuré avec le célèbre fichier /etc/network/interfaces
- NetworkManager, configurable par une interface graphique, ou par l’outil nmcli
- systemd-networkd, fourni par le contreversé systemd, successeur d’init-V
Quand je dis que ces services co-existent, c’est qu’une interface réseau peut être configurée par un service alors qu’une autre interface est configurée par une autre interface. C’est un élément très important, et donc à bien intégrer.
ifupdown
C’est, il me semble, le système le plus ancien. Il se configure avec le fichier /etc/network/interfaces, dont voici un exemple.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug enp0s25
iface enp0s25 inet dhcp
ifquery, ifup et ifdown sont les trois commandes permettant d’agir avec la configuration réseau.
NetworkManager
Probablement le service le plus intéressant pour les machines de type poste de travail (ordinateur portable par exemple). Car l’interface graphique fait souvent appel à NetworkManager. Donc la connexion au WiFi de la box, à travers la GUI, utilise probablement Network Manager.
Pour voir les devices gérés par NetworkManager:
$ nmcli connection show
NAME UUID TYPE DEVICE
Phantom6 ed57c2db-e771-4552-9916-f9502a8a3d38 wifi wlp2s0
lo 0770c5d1-db14-4274-8b3d-f85804bee32f loopback lo
docker0 5c9f2b19-b90e-4418-a504-f85ae1b383fa bridge docker0
EnGenius1 49ade968-78e6-4bea-8530-51b121c1297a wifi --
wg0 52cc6dd9-e5aa-47a0-8bd2-e906b3ff8729 wireguard --
On peut activer et désactiver une connexion avec nmcli connection up wg0 et nmcli connection down wg0.
Systemd-networkd
Le prérequis de ce service est que SystemD soit installé. La commande permettant d’interagir avec lui est networkctl.
Les fichiers de configuration sont situés dans /usr/lib/systemd/network (système), /run/systemd/network (volatile) et /etc/systemd/network (local).
Sources et documentations
Quelques pages qui m’ont aidé à comprendre un peu mieux la gestion du réseau sous une distribution Debian :
Quelques pages de manuel, documentation officielle, de ces gestionnaires de réseau :
- system-networkd: https://man.archlinux.org/man/systemd-networkd.8
- system-networkd: https://man.archlinux.org/man/systemd.network.5
- system-networkd: https://man.archlinux.org/man/systemd.netdev.5
- ifupdown: https://manpages.debian.org/trixie/ifupdown-ng-compat/interfaces.5.en.html
- NetworkManager: https://manpages.org/nmcli