Selenith
Projets, mémos et infos diverses

Nommer ses interfaces réseau

Publié le 16/01/2024

Bon, aujourd'hui un article qui denonce grave. Avoir un serveur avec plus d'une interface réseau et ne pas les nommer correctement c'est vilain. Ne soit pas vilain (ou vilaine) et nomme tes interfaces réseaux. Et plus d'excuse pour ne pas le faire après avoir lu cet article, parce que tu vas voir comment configurer ça en 10 minutes avec systemd-networkd.

Image générée par IA (Bing) d'une façade de serveur avec moults cables réseaux branchés. Les boutons paraissent fondus

Image générée avec le Créateur d’image Bing pour le fun.

Prérequis

L'environnement de base

Nous allons voir comment faire ce type de configuration sur un serveur de type Debian 10, 11 ou 12 sans interface graphique.

Sous Debian, le réseau est géré par défaut par le service networking, tu peux le vérifier en tappant la commande :

systemctl status networking.service

Ca doit donner un truc comme ca :

Image du service networking en fonctionnement

La config par defaut

Le système de nommage par défaut doit donner quelque chose comme ceci avec la commande "ip link" :

Image du résultat de la commande ip link. Les interfaces ont des noms aléatoires

On ne va pas se mentir, ici impossible de savoir qu'est ce qui est branché à quoi sans un plan d'adressage noté quelque part.

Par défaut, le daemon systemd-networkd doit être présent mais désactivé.

Pour s'en assurer :

systemctl status systemd-networkd

Ce qui doit te donner :

Image du résultat de la commande systemctl status systemd-networkd. Le daemon est présent mais inactif

Nouvelle configuration

On va procéder en deux parties, d'abord activer les daemons nécessaires puis configurer les interfaces.

Activation de systemd-networkd

On va d'abord activer systemd-neworkd.

systemctl enable systemd-networkd

Ce qui nous donne :

Image du résultat de la commande systemctl enable systemd-networkd. Le daemon s'active.

Le daemon se lancera au boot mais il n'est pas encore démarré. Ca tombe bien, ca va te permettre de configurer les interfaces. A ce stade tes interfaces réseaux sont probablement configurées dans /etc/network/interfaces. Pour éviter les conflits de configuration, commente tout ce qui concerne tes interfaces, loopback compris.

Une fois terminé, tu devrais avoir un fichier qui ressemble à ceci :

# 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 enp0s3
#iface enp0s3 inet dhcp

Activation de systemd-resolved (optionnel)

Si tu as besoin que ta machine puisse configurer automatiquement l'adresse de son DNS via DHCP (on va y revenir plus bas) il va te falloir activer le daemon systemd-resolved.

apt install systemd-resolved

Sans cela seul l'autoconfig de l'IP fonctionnera via DHCP. Il te faudra donc configurer l'adresse du DNS de la machine à la main dans /etc/resov.conf.

Configuration des interfaces

Pour chaque interface il va y avoir 2 fichiers. Un pour définir le nom de l'interface et le deuxieme pour appliquer la config réseau que tu veux. Ces fichiers doivent se placer dans /etc/systemd/network/.

Pour chaque interface, tu vas devoir créer un fichier [nombre inferieur à 99]-[nom que tu veux].link puis un fichier [nombre inferieur à 99]-[nom que tu veux].network.

Exemple avec une interface "wan"

Le fichier de nommage /etc/systemd/network/10-wan.link :

[Match]
MACAddress=08:00:27:1f:0d:02

[Link]
Description=Interface vers box internet
Name=wan

Puis un fichier portant le même nom ".network". Il n'est pas obligatoire que le nom soit le même mais c'est plus cohérent.

Le contenu de /etc/systemd/network/10-wan.network pour une config automatique via DHCP :

[Match]
Name=wan

[Network]
DHCP=yes

DHCP=yes permet de requêter ton DHCP local (en general la box internet si c'est à la maison) afin de récuperer :

  • Une IP pour l'interface.
  • La gateway du sous réseau.
  • L'adresse du DNS associé.

Si tu veux que la partie DNS fonctionne avec ce type de config n'oublie pas d'installer le daemon systemd-resolved.

Exemple avec une interface "lan_serveurs"

Le fichier de nommage /etc/systemd/network/20-lan_serveurs.link :

[Match]
MACAddress=08:00:27:3c:d3:d9

[Link]
Description=Interface vers lan serveurs
Name=lan_serveurs

Le fichier /etc/systemd/network/20-lan_serveurs.network pour une config en IP statique:

[Match]
Name=lan_serveurs

[Network]
Address=10.8.0.15/24
Gateway=10.8.0.254/24 #optionnel
DNS=10.8.0.252 #optionnel

Chargement de la config

Pour valider tous les changements, il faut redémarrer la machine :

reboot

Résultat de la manip

Une fois toutes tes interfaces renommées et configurées, un "ip link" doit donner quelque chose comme ceci :

Résultat de la commande "ip link" qui affiche des jolies interfaces bien nommées

Et voila ! La c'est propre ! Et quand il faudra configurer le pare-feu de la machine, ça sera quand même plus simple 😎.

Aller plus loin

L'exellent article sur le wiki d'archlinux est assez complet et il y a pas mal d'exemples pour des configurations plus complexe.

Dans cet article tu peux aussi voir comment, à partir de cette configuration, il est possible de transformer une machine sous debian équipé de plusieurs interfaces réseau en switch manageable.