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:

  1. ifupdown, configuré avec le célèbre fichier /etc/network/interfaces
  2. NetworkManager, configurable par une interface graphique, ou par l’outil nmcli
  3. 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 :