ITSkillsCenter
Blog

Configurer le réseau avec NetworkManager et nmcli sur RHEL 10

12 min de lecture

📍 Article principal : RHCSA EX200 v10 : la voie d’entrée Linux entreprise

Sur Red Hat Enterprise Linux 10, la configuration réseau a définitivement abandonné les anciens fichiers ifcfg-* du répertoire /etc/sysconfig/network-scripts/. NetworkManager devient le seul gestionnaire pris en charge, le format keyfile stocké dans /etc/NetworkManager/system-connections/ remplace tout le reste, et la commande nmcli est l’outil de référence pour scripter le réseau. Ce tutoriel guide pas à pas dans la configuration d’une station d’entraînement RHCSA, depuis la première vérification jusqu’au bond de cartes en passant par la maîtrise de firewalld.

Prérequis avant de commencer

  • Un système RHEL 10, Rocky Linux 10 ou AlmaLinux 10 fonctionnel.
  • Un accès sudo ou root.
  • Une carte réseau active. En machine virtuelle, deux cartes facilitent les exercices de bridge et bond.
  • Niveau attendu : intermédiaire. Temps estimé : 70 minutes pour parcourir l’ensemble des étapes.

Étape 1 — Vérifier l’état actuel du réseau

Avant d’engager la moindre modification, il faut savoir d’où l’on part. Trois commandes donnent l’image complète : la liste des interfaces, la liste des connexions NetworkManager et l’état de la résolution DNS. Ces commandes ne modifient rien et constituent la première chose à exécuter sur un poste inconnu.

ip -c addr
nmcli connection show
nmcli device status
resolvectl status   # Optionnel : utile uniquement si systemd-resolved est activé

La sortie de nmcli connection show liste les profils enregistrés, qu’ils soient actifs ou non. Une connexion active apparaît avec un device associé ; une connexion configurée mais pas activée n’a pas de device. La sortie de nmcli device status liste l’autre versant : pour chaque interface physique ou virtuelle, on voit son état (connected, disconnected, unmanaged) et le profil utilisé. Les interfaces marquées unmanaged ne sont pas pilotées par NetworkManager — typiquement lo et certaines interfaces de virtualisation.

Étape 2 — Comprendre les profils keyfile

Sur RHEL 10, NetworkManager stocke chaque connexion sous forme de fichier .nmconnection dans /etc/NetworkManager/system-connections/. Ces fichiers utilisent un format INI standard, lisible et éditable manuellement avec vim ou nano en cas de besoin. Comprendre leur structure aide à diagnostiquer un profil qui ne s’active pas et à reprendre le contrôle quand la commande nmcli ne suffit plus.

sudo ls -l /etc/NetworkManager/system-connections/
sudo cat /etc/NetworkManager/system-connections/enp1s0.nmconnection

La sortie typique montre des sections [connection], [ipv4], [ipv6] et [ethernet]. Les permissions du fichier doivent être 0600 (lisible et modifiable uniquement par root) parce qu’il peut contenir des secrets — clés WPA, mots de passe VPN. Si l’on voit des permissions plus larges, NetworkManager refuse de charger le profil et émet un avertissement dans le journal. La commande chmod 600 sur le fichier corrige immédiatement la situation.

Étape 3 — Créer un profil ethernet avec nmcli

La création d’une nouvelle connexion ethernet en DHCP se résume à une seule commande, mais la syntaxe verbeuse de nmcli exige de l’attention. On nomme le profil, on indique le type, on associe l’interface physique et NetworkManager génère le fichier .nmconnection automatiquement.

sudo nmcli connection add \
    type ethernet \
    con-name lan-dhcp \
    ifname enp1s0 \
    autoconnect yes \
    ipv4.method auto \
    ipv6.method auto

sudo nmcli connection up lan-dhcp
nmcli connection show lan-dhcp | head -30

La commande connection add ne fait que créer le profil ; sans le connection up qui suit, l’interface ne reçoit pas d’adresse. La sortie attendue de connection up termine par Connection successfully activated avec un identifiant entre crochets. Si la sortie indique Error: Connection activation failed, c’est que le câble est débranché ou que le DHCP ne répond pas — vérifier physiquement le lien avec ethtool enp1s0 | grep "Link detected".

Étape 4 — Configurer une adresse IP statique

Le candidat RHCSA est régulièrement amené à fixer l’IP d’un serveur. La méthode propre passe par la modification du profil existant plutôt que sa recréation, ce qui préserve le nom et les autres attributs.

sudo nmcli connection modify lan-dhcp \
    ipv4.method manual \
    ipv4.addresses 192.168.10.20/24 \
    ipv4.gateway 192.168.10.1 \
    ipv4.dns "1.1.1.1 9.9.9.9" \
    ipv4.dns-search local

sudo nmcli connection up lan-dhcp
ip -c addr show enp1s0
ip -c route

La méthode passe à manual, l’adresse est définie au format CIDR, la passerelle et les DNS suivent. Le connection up applique immédiatement les changements et libère l’éventuel bail DHCP précédent. La commande ip addr show doit afficher la nouvelle adresse en scope global, et ip route doit lister une route par défaut via la passerelle indiquée. Si la passerelle n’apparaît pas, c’est souvent que la valeur appartient à un sous-réseau différent de l’adresse — ce qui empêche le routage local.

Étape 5 — Configurer le hostname et les DNS système

Le hostname système se gère avec hostnamectl, intégré à systemd. Cette commande modifie /etc/hostname, met à jour le hostname courant sans reboot et propage la valeur aux composants qui s’appuient dessus.

sudo hostnamectl set-hostname srv-lab.lan
hostnamectl
cat /etc/hostname

La sortie de hostnamectl affiche le Static hostname, le Pretty hostname, le Icon name et la Chassis détectée. La valeur statique est celle qui apparaîtra dans les invites shell après une reconnexion. Sur RHEL 10, systemd-resolved n’est pas activé par défaut ; la résolution DNS reste pilotée par /etc/resolv.conf qui est régénéré par NetworkManager à partir du profil actif. Pour figer manuellement resolv.conf, on peut désactiver sa gestion automatique avec nmcli connection modify nom ipv4.ignore-auto-dns yes.

Étape 6 — Configurer un bridge et un bond

Pour les exercices RHCSA avancés et la production, NetworkManager sait créer des bridges et des bonds en pure ligne de commande. Un bridge regroupe plusieurs interfaces en un commutateur logiciel, utile pour la virtualisation ; un bond agrège plusieurs cartes physiques pour la haute disponibilité ou l’augmentation de débit.

# Création d'un bond round-robin
sudo nmcli connection add type bond con-name bond0 ifname bond0 \
    bond.options "mode=balance-rr,miimon=100"

# Sur NetworkManager 1.46+ (RHEL 10), la terminologie a évolué :
# slave-type → port-type, master → controller
sudo nmcli connection add type ethernet port-type bond \
    con-name bond0-port1 ifname enp2s0 controller bond0

sudo nmcli connection add type ethernet port-type bond \
    con-name bond0-port2 ifname enp3s0 controller bond0

sudo nmcli connection up bond0
cat /proc/net/bonding/bond0 | head -20

La commande de création de bond accepte les options entre guillemets : mode définit la politique d’agrégation, miimon active la surveillance du lien en millisecondes. Les modes les plus utilisés sont active-backup pour la haute disponibilité simple et 802.3ad pour l’agrégation négociée avec le commutateur. NetworkManager 1.46 a introduit la nouvelle terminologie port-type et controller à la place des anciens slave-type et master — l’ancien vocabulaire reste accepté avec un avertissement de dépréciation, mais il vaut mieux écrire les nouveaux profils dans la forme moderne. La sortie de /proc/net/bonding/bond0 liste l’état de chaque interface esclave et confirme l’agrégation effective.

Étape 7 — Activer, désactiver, supprimer une connexion

La gestion du cycle de vie passe par quelques commandes simples qu’il faut maîtriser jusqu’à l’automatisme. Toutes acceptent le nom de la connexion ou son UUID — la complétion bash via bash-completion simplifie grandement la frappe.

sudo nmcli connection up nom            # Active une connexion
sudo nmcli connection down nom          # Désactive sans supprimer
sudo nmcli connection delete nom        # Supprime le profil et le fichier
sudo nmcli device disconnect enp1s0     # Désactive l'interface, pas le profil
sudo nmcli radio wifi off               # Coupe la radio Wi-Fi globalement

La distinction entre connection down et device disconnect n’est pas anecdotique. connection down agit sur un profil identifié ; device disconnect agit sur une interface physique. Sur un poste avec plusieurs profils Wi-Fi enregistrés, down ne ferme que le profil en cours et NetworkManager peut basculer automatiquement sur un autre. device disconnect ferme l’interface et bloque toute reconnexion automatique jusqu’à un nouveau device connect.

Étape 8 — Utiliser nmtui pour les opérations rapides

Pour les utilisateurs qui préfèrent une interface texte interactive, nmtui propose les mêmes opérations que nmcli sous forme de menus ncurses. C’est un excellent secours quand on tâtonne ou que l’on travaille en console série sans copier-coller commode.

sudo nmtui
# Trois choix : Edit a connection, Activate a connection, Set system hostname

L’interface guide à travers la création ou la modification d’un profil avec validation des champs. Le menu Edit a connection propose tous les paramètres ligne par ligne, depuis la méthode IPv4 jusqu’aux DNS personnalisés. C’est l’outil recommandé le jour de l’examen quand on veut éviter une erreur de saisie sur une commande nmcli longue.

Étape 9 — Vérifier la persistance après redémarrage

Une configuration n’est valide que si elle survit à un reboot. Trois vérifications enchaînées confirment la persistance d’un profil.

sudo systemctl reboot
# Après reconnexion :
nmcli connection show --active
ip -c addr show enp1s0
ip -c route
ping -c 3 1.1.1.1

Si après reboot la connexion n’est pas active, l’option autoconnect yes manque dans le profil. On la rétablit avec nmcli connection modify nom connection.autoconnect yes. Si l’IP est correcte mais que ping échoue, la passerelle est mal configurée ou un problème de routage existe ailleurs sur le réseau — vérifier avec ip route get 1.1.1.1 qui indique exactement par quelle interface et passerelle un paquet sortirait.

Étape 10 — Configurer firewalld

RHEL 10 livre firewalld activé par défaut. Toute exposition de service exige une règle explicite. La commande firewall-cmd manipule les zones, services et ports en distinguant la configuration courante (runtime) et la configuration persistante.

sudo firewall-cmd --get-default-zone
sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

L’option --permanent écrit la règle dans la configuration persistante mais ne l’applique pas immédiatement ; --reload relit la configuration et applique les changements. Sans --permanent, la règle disparaît au reboot. Pour vérifier qu’une règle est active, firewall-cmd --list-all sans --permanent montre l’état runtime ; la même commande avec --permanent montre l’état après le prochain reload. Les deux valeurs doivent coïncider en régime stable.

Erreurs fréquentes

Erreur Cause Solution
L’interface revient en DHCP après reboot Profil autoconnect=no ou autre profil avec priorité supérieure nmcli connection modify nom connection.autoconnect yes et désactiver le profil concurrent.
nmcli retourne not authorized Tentative en utilisateur ordinaire sans sudo Préfixer par sudo. Toutes les modifications de profil exigent root.
DNS personnalisé écrasé par DHCP Option ignore-auto-dns non activée nmcli connection modify nom ipv4.ignore-auto-dns yes ipv4.dns "1.1.1.1" puis connection up.
Bond ne s’active pas Esclaves toujours connectés à un autre profil nmcli connection down sur les profils ethernet d’origine, puis up sur le bond.
Service web injoignable malgré firewall-cmd --add-service Oubli du --reload ou règle posée sans --permanent Toujours enchaîner --permanent --add-service puis --reload.

Adaptation aux liens à débit limité

Sur des liens internet lents, configurer chronyd pour synchroniser l’horloge sur un serveur NTP régional réduit la latence des handshakes TLS. La directive server pool.ntp.org iburst dans /etc/chrony.conf permet une mise en route rapide en quelques secondes au lieu de plusieurs minutes. Pour une infrastructure sujette aux microcoupures, augmenter la valeur de connection.gateway-ping-timeout à 30 secondes via nmcli évite les déconnexions intempestives sur fluctuations réseau passagères.

Tutoriels frères

Pour étoffer le tableau

Questions fréquentes

Peut-on encore utiliser les fichiers ifcfg-* sur RHEL 10 ?

Non, le support du format ifcfg a été retiré de RHEL 10. Les profils existants doivent être migrés au format keyfile, soit manuellement, soit en utilisant la commande native nmcli connection migrate qui convertit les profils ifcfg restants au format keyfile. Les nouvelles connexions créées avec nmcli écrivent directement en keyfile.

Comment scripter la création d’un profil ?

Tous les paramètres acceptés interactivement par nmcli peuvent être passés en arguments d’une seule commande. On peut ensuite enchaîner nmcli connection up pour activer la connexion, ce qui rend la séquence complète scriptable depuis Ansible ou un script Bash de provisioning.

Comment retirer rapidement toutes les connexions inactives ?

La commande nmcli -t -f UUID,STATE connection show | awk -F: '$2=="" {print $1}' | xargs -I{} sudo nmcli connection delete {} filtre les profils sans état actif et les supprime. À utiliser avec prudence sur un poste partagé : toute configuration mise en pause disparaît.

Le firewall bloque-t-il aussi le trafic sortant ?

Par défaut, firewalld en zone public autorise tout le trafic sortant. Pour bloquer en sortie, on bascule la zone en politique drop ou on utilise les rich rules qui supportent une direction direction=out. Cette configuration reste rare en pratique parce qu’elle casse de nombreux services système.

Comment vérifier qu’un port est ouvert depuis l’extérieur ?

Depuis une autre machine du réseau, nc -zv ip port ou nmap -p port ip testent l’accessibilité. Une réponse succeeded ou open confirme que la règle firewalld et la liaison du service sont correctes.

Que devient systemd-networkd sur RHEL 10 ?

Le binaire systemd-networkd existe dans la base mais n’est pas activé par défaut. RHEL 10 confirme NetworkManager comme unique gestionnaire pris en charge en production. Activer systemd-networkd en parallèle est techniquement possible mais sort du périmètre RHCSA et n’est pas couvert par le support Red Hat.

Sponsoriser ce contenu

Cet emplacement est à vous

Position premium en fin d'article — c'est l'instant où les lecteurs sont le plus engagés. Réservez cet espace pour votre marque, votre formation ou votre offre.

Recevoir nos tarifs
Publicité