Administration réseau sous Linux
Sur un serveur Linux, la configuration réseau persistante dépend de la distribution et de l'outil utilisé. Netplan, NetworkManager, systemd-networkd : comment s'y retrouver et configurer proprement.
Administrer le réseau d'un serveur Linux ne se résume pas à taper ip addr add : cette commande modifie la configuration en mémoire, qui disparaît au redémarrage. La configuration persistante passe par un gestionnaire de réseau, et celui-ci varie selon la distribution et le type d'installation. Comprendre cette architecture évite de perdre l'accès à un serveur distant après un redémarrage.
Objectif : identifier le gestionnaire réseau d'un système, configurer une adresse statique, une agrégation de liens, un pont et le routage de façon persistante, et appliquer un filtrage de base.
Sur un serveur distant, une erreur de configuration réseau peut couper votre propre accès. Travaillez si possible depuis une console hors bande (iDRAC, iLO, console de l'hyperviseur) et utilisez les mécanismes d'essai avec retour automatique lorsqu'ils existent (netplan try).
Identifier le gestionnaire réseau en place
| Gestionnaire | Où le trouve-t-on ? | Fichiers de configuration |
|---|---|---|
| Netplan (génère la configuration) | Ubuntu Server et Desktop récents | /etc/netplan/*.yaml |
| systemd-networkd | Serveurs minimalistes, conteneurs, rendu Netplan par défaut sur Ubuntu Server | /etc/systemd/network/*.network |
| NetworkManager | RHEL, Rocky Linux, AlmaLinux, Fedora, postes de travail | profils gérés par nmcli (/etc/NetworkManager/system-connections/) |
| ifupdown | Debian (installation classique) | /etc/network/interfaces |
Pour savoir lequel est actif :
systemctl is-active NetworkManager systemd-networkd
ls /etc/netplan/ 2>/dev/null
cat /etc/network/interfaces 2>/dev/null
Règle fondamentale : une interface ne doit être gérée que par un seul outil. Deux gestionnaires concurrents produisent des configurations instables.
Configurer une adresse statique
Avec Netplan (Ubuntu)
# /etc/netplan/01-serveur.yaml
network:
version: 2
renderer: networkd
ethernets:
ens18:
dhcp4: false
addresses:
- 10.10.20.15/24
routes:
- to: default
via: 10.10.20.1
nameservers:
addresses: [10.10.20.53, 10.10.20.54]
search: [exemple.local]
sudo chmod 600 /etc/netplan/01-serveur.yaml
sudo netplan try # applique et revient en arrière sans confirmation sous 120 s
sudo netplan apply
La syntaxe routes: - to: default remplace l'ancienne clé gateway4, dépréciée dans les versions récentes de Netplan.
Avec NetworkManager (RHEL et dérivés)
nmcli connection show
sudo nmcli connection modify ens18 \
ipv4.method manual \
ipv4.addresses 10.10.20.15/24 \
ipv4.gateway 10.10.20.1 \
ipv4.dns "10.10.20.53 10.10.20.54" \
ipv4.dns-search exemple.local
sudo nmcli connection up ens18
Avec ifupdown (Debian)
# /etc/network/interfaces
auto ens18
iface ens18 inet static
address 10.10.20.15/24
gateway 10.10.20.1
dns-nameservers 10.10.20.53 10.10.20.54
La directive dns-nameservers n'est prise en compte que si le paquet resolvconf (ou équivalent) est installé ; sinon, configurez /etc/resolv.conf ou systemd-resolved.
La résolution DNS : systemd-resolved
De nombreuses distributions utilisent systemd-resolved : le fichier /etc/resolv.conf pointe alors vers un résolveur local (127.0.0.53). Pour connaître les serveurs réellement utilisés :
resolvectl status
resolvectl query www.exemple.fr
Agrégation de liens (bonding)
L'agrégation combine plusieurs interfaces physiques en une interface logique, pour la redondance et parfois le débit. Les modes les plus utilisés :
| Mode | Nom | Besoin côté commutateur | Usage |
|---|---|---|---|
| 1 | active-backup | Aucun | Redondance simple, très robuste |
| 4 | 802.3ad (LACP) | Configuration LACP sur le commutateur | Redondance et répartition de charge |
| 6 | balance-alb | Aucun | Répartition sans configuration du commutateur (limites selon les cas) |
Exemple Netplan en LACP :
network:
version: 2
ethernets:
eno1: {}
eno2: {}
bonds:
bond0:
interfaces: [eno1, eno2]
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
transmit-hash-policy: layer3+4
addresses: [10.10.20.15/24]
routes:
- to: default
via: 10.10.20.1
Côté commutateur, les deux ports doivent appartenir au même agrégat LACP. Voir EtherChannel : agrégation de liens.
cat /proc/net/bonding/bond0 # état des membres et de LACP
Ponts et VLAN
Un pont (bridge) relie plusieurs interfaces au niveau 2 : c'est la base de la virtualisation (KVM, Proxmox) et des conteneurs.
network:
version: 2
ethernets:
eno1: {}
vlans:
vlan20:
id: 20
link: eno1
bridges:
br-vlan20:
interfaces: [vlan20]
addresses: [10.10.20.15/24]
Activer le routage
Un serveur Linux peut router entre ses interfaces, mais le transfert de paquets est désactivé par défaut :
# /etc/sysctl.d/90-routage.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
sudo sysctl --system
ip route add 10.50.0.0/16 via 10.10.20.254 # route temporaire
Pour rendre une route statique persistante, ajoutez-la dans la configuration du gestionnaire (bloc routes: de Netplan, ipv4.routes avec nmcli).
Pare-feu de base avec nftables
nftables a remplacé iptables sur les distributions récentes (iptables y est souvent fourni sous forme de couche de compatibilité). Exemple de politique minimale pour un serveur web administré depuis un réseau dédié :
#!/usr/sbin/nft -f
# /etc/nftables.conf — exemple de laboratoire
flush ruleset
table inet filtre {
chain entree {
type filter hook input priority 0; policy drop;
ct state established,related accept
ct state invalid drop
iif lo accept
meta l4proto { icmp, ipv6-icmp } accept
tcp dport 22 ip saddr 10.10.99.0/24 accept
tcp dport { 80, 443 } accept
}
chain transfert {
type filter hook forward priority 0; policy drop;
}
}
sudo nft -c -f /etc/nftables.conf # vérifier la syntaxe sans appliquer
sudo systemctl enable --now nftables
Sur RHEL et dérivés, firewalld fournit une interface de plus haut niveau au-dessus de nftables :
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.99.0/24" service name="ssh" accept'
sudo firewall-cmd --reload
Ne mélangez pas firewalld et des règles nftables écrites à la main sur le même système.
Noms d'interfaces prévisibles
Les systèmes récents nomment les interfaces d'après leur emplacement matériel (eno1, ens18, enp3s0) plutôt que eth0, afin que les noms restent stables d'un démarrage à l'autre. Vérifiez toujours le nom réel avec ip link avant d'écrire une configuration.
Erreurs courantes
- Configurer avec
ipet croire la configuration persistante. - Deux gestionnaires pour la même interface (NetworkManager et ifupdown, par exemple).
- Permissions trop larges sur les fichiers Netplan : les versions récentes avertissent si le fichier est lisible par tous.
- Oublier
ip_forwardsur un serveur censé router ou faire du NAT. - Appliquer un pare-feu à distance sans règle autorisant sa propre session SSH.
Implications de sécurité
Désactivez les services réseau inutiles, faites écouter les services internes sur des adresses privées ou de bouclage, appliquez une politique de pare-feu par défaut restrictive et limitez l'administration SSH à un réseau dédié. Les paramètres sysctl permettent aussi de durcir la pile : désactivation des redirections ICMP acceptées (accept_redirects), activation du filtrage de chemin inverse (rp_filter) selon l'architecture. Voir Durcissement SSH et gestion des accès administratifs.
Conclusion
Identifiez d'abord le gestionnaire réseau, puis configurez exclusivement avec lui, en testant avec un mécanisme de retour arrière. Le reste — agrégation, ponts, routage, pare-feu — s'appuie sur les mêmes principes. Pour le diagnostic au quotidien, consultez Commandes réseau essentielles sous Linux.


