Linux sans magie #61 — nmcli : administrer les interfaces et les connexions en ligne de commande
Apprendre à lire les états, les profils et les propriétés avec nmcli, distinguer modifier, activer et réappliquer, et préparer un changement réseau sans couper SSH.
Sur une VM RHEL, un administrateur voit une adresse avec ip address. Il veut la corriger et découvre trois commandes proches : nmcli connection modify, nmcli device modify et nmcli connection up. Elles ne font pas la même chose. Une mauvaise opération peut interrompre la session SSH ; une modification de profil peut, au contraire, ne produire aucun changement immédiat.
Après le #60 consacré au modèle de NetworkManager, nous passons à son interface en ligne de commande : nmcli. L'objectif est de savoir quoi observer, quoi modifier, quand appliquer et comment vérifier, sans promettre qu'une commande universelle suffit pour tous les serveurs.
Ce que pilote réellement nmcli
nmcli est un client du service NetworkManager. Il ne remplace ni le noyau Linux ni la commande ip : il dialogue avec le gestionnaire qui suit des périphériques, conserve des profils et active des connexions sur les interfaces qu'il gère.
Profil enregistré Connexion active
(nmcli connection show) (nmcli connection show --active)
| |
+---- NetworkManager / activation ---+
|
Périphérique géré
(nmcli device status)
|
État du noyau
(ip address, ip route)
Un profil peut exister sans être actif. Une interface peut être visible avec ip mais marquée unmanaged par NetworkManager. Sur une machine gérée par systemd-networkd ou ifupdown, nmcli n'est pas nécessairement le bon outil de configuration.
Avant le lab : vérifier le contexte
Les commandes exécutables de ce laboratoire ne modifient pas le réseau. Elles conviennent à une machine sur laquelle NetworkManager fonctionne et où vous êtes autorisé à inspecter la configuration.
command -v nmcli
nmcli general status
nmcli device status
ip -br address
Si nmcli est absent ou si le service n'est pas disponible, n'installez pas ou ne démarrez pas NetworkManager pour « réparer » le réseau. Votre machine peut dépendre d'un autre gestionnaire.
La sortie de nmcli device status peut présenter connected, disconnected ou unmanaged. Ces états reflètent la vue du gestionnaire ; connected ne prouve pas qu'un service distant répond. Comparez avec ip, qui montre les adresses courantes dans l'espace de noms réseau de votre session.
1 — Trouver les profils et les connexions actives
nmcli connection show
nmcli connection show --active
Ces commandes répondent à deux questions distinctes : quels profils sont connus ? et lesquels sont activés maintenant ?
Exemple fictif :
NAME UUID TYPE DEVICE
Production 11111111-1111-4111-8111-111111111111 ethernet ens160
Secours 22222222-2222-4222-8222-222222222222 ethernet --
Le profil « Secours » est enregistré, mais ne possède ici aucune interface active. Il ne faut pas conclure qu'une deuxième carte réseau est forcément présente. Les UUID sont factices ; recopiez ceux de votre système uniquement dans des commandes de lecture.
Un nom de connexion est un libellé humain ; l'UUID identifie le profil sans ambiguïté. Cela évite de cibler le mauvais profil lorsque les conventions de nommage sont trompeuses.
2 — Lire les propriétés du bon profil
Une commande nmcli connection show suivie d'un identifiant affiche les propriétés d'un profil. Pour le cibler explicitement par UUID :
# EXEMPLE : remplacer par un UUID observé dans la liste des profils
nmcli connection show uuid <uuid-du-profil>
Pour réduire l'affichage aux propriétés qui nous intéressent, une sélection de champs est possible :
nmcli -g connection.id,connection.uuid,connection.interface-name,connection.autoconnect,ipv4.method,ipv4.addresses,ipv4.gateway connection show uuid <uuid-du-profil>
Cette dernière commande présente les réglages du profil, pas nécessairement les paramètres IP courants. Avec ipv4.method=auto, l'adresse réellement attribuée par DHCP peut être différente des champs statiques du profil.
La sortie intégrale d'un profil peut contenir des informations sensibles. Ne lancez pas --show-secrets dans un rapport de diagnostic et anonymisez les adresses et identifiants avant de partager une capture.
3 — Lire le périphérique et sa configuration appliquée
Pour consulter les informations que NetworkManager associe aux périphériques :
nmcli device show
ip -br address
ip route show
nmcli device show peut présenter notamment les adresses IP4.ADDRESS, les passerelles et des informations DNS correspondant à la configuration active. ip affiche l'état du noyau. La comparaison permet de repérer des écarts, mais ne prouve pas à elle seule quelle configuration survivra au redémarrage.
Pour un périphérique précis, utilisez son nom réellement relevé :
nmcli device show <nom-interface-verifie>
La différence entre profil, activation et état effectif explique pourquoi plusieurs administrateurs peuvent obtenir des résultats apparemment contradictoires en inspectant le même serveur.
4 — Le vocabulaire des commandes qui changent quelque chose
Voici la distinction opérationnelle essentielle :
| Commande | Cible | Effet général |
|---|---|---|
nmcli connection modify | Profil enregistré | Change des propriétés du profil ; pas forcément l'état actif immédiatement |
nmcli device modify | Périphérique actif | Demande une modification temporaire sans enregistrer le changement dans le profil |
nmcli device reapply | Périphérique actif | Tente de réappliquer des changements de profil sur le périphérique, lorsque cela est pris en charge |
nmcli connection up | Profil | Demande l'activation d'une connexion ; peut remplacer la connexion courante |
nmcli connection down | Connexion active | Demande sa désactivation ; peut couper le réseau |
nmcli device disconnect | Périphérique | Déconnecte le périphérique et peut interrompre l'administration distante |
Aucune de ces commandes n'est exécutée dans notre laboratoire. Leur syntaxe dépend des cibles et leurs conséquences peuvent toucher IP, les routes, DNS ou l'accès au serveur.
Une précision souvent oubliée : enregistrer un nouveau paramètre dans un profil ne garantit pas qu'il est déjà appliqué. Et device reapply ne sait pas nécessairement prendre en compte toute modification sur un lien actif ; une réactivation peut être requise, avec une interruption possible.
5 — Comprendre DHCP, adresse fixe et autoconnect
L'option ipv4.method d'un profil peut prendre notamment les valeurs auto, manual ou disabled. En mode manual, il faut prévoir une adresse et un préfixe cohérents ; la passerelle et le DNS demandent également une réflexion adaptée au service.
connection.autoconnect indique si NetworkManager peut activer automatiquement le profil quand les conditions le permettent. Ce n'est pas une garantie d'activation immédiate ni une manière de supplanter systématiquement un autre profil déjà actif.
Un gestionnaire peut aussi recevoir une configuration générée par Netplan ou un outil de provisionnement cloud. Dans ce cas, la modification directe d'un profil peut entrer en conflit avec une source plus haute dans la chaîne de configuration. Vérifiez son propriétaire avant toute écriture.
6 — Préparer une modification réelle sans couper SSH
Un changement d'adresse, de route ou de DNS sur l'interface utilisée par SSH est une opération de maintenance, pas un exercice à improviser en production.
Avant de modifier un profil, documentez :
- Le nom du périphérique, le profil actif et son UUID.
- Les adresses, routes et paramètres DNS avant l'intervention.
- La source réellement responsable du profil, notamment en présence de Netplan ou d'une image cloud.
- L'accès à une console indépendante de la connexion concernée.
- La procédure de vérification applicative et le mécanisme de retour arrière testé.
NetworkManager propose une fonctionnalité de checkpoint pouvant restaurer un état après expiration ou absence de confirmation. Son manuel montre un exemple avec nmcli device checkpoint. Elle peut aider à limiter une coupure accidentelle, mais elle ne garantit pas à elle seule le rétablissement de toutes les dépendances ni un accès distant fonctionnel. Il faut comprendre ses limites et tester la procédure dans l'environnement cible.
Les commandes suivantes sont uniquement des formes de référence, à ne pas copier ni exécuter sur une interface de production :
# FORMES DE COMMANDES MODIFIANT L'ÉTAT — NE PAS EXÉCUTER
nmcli connection modify uuid <uuid-du-profil> ipv4.method manual
nmcli device reapply <nom-interface>
nmcli connection up uuid <uuid-du-profil>
nmcli connection down uuid <uuid-du-profil>
Le premier exemple est volontairement incomplet : un passage à ipv4.method manual exige une configuration IPv4 cohérente. Son affichage illustre uniquement la classe de commandes, pas une procédure valable.
Serveur, Desktop, VM : même commande, contexte différent
Sur un poste de travail utilisant NetworkManager, nmcli, nmtui et l'interface graphique peuvent manipuler les mêmes profils. Sur un serveur RHEL ou dérivé, nmcli est courant. Sur Ubuntu, Netplan peut fournir des déclarations dont le renderer est NetworkManager ; sur d'autres installations, systemd-networkd configure directement l'interface.
| Contexte | Question avant d'utiliser nmcli |
|---|---|
| Serveur accessible seulement en SSH | Quelle connexion porte SSH et quelle console de secours existe ? |
| Desktop avec Wi-Fi | Un profil est-il actif, ou l'interface est-elle désactivée/non gérée ? |
| VM avec deux cartes | Quel profil et quel UUID correspondent à chaque carte ? |
| Ubuntu avec Netplan | Est-ce Netplan ou NetworkManager qui détient la source de configuration ? |
| Cloud provisionné automatiquement | Une configuration sera-t-elle régénérée au démarrage ? |
Ne déduisez jamais la méthode de configuration du seul nom de distribution. Les observations de nmcli device status et des connexions actives priment sur les habitudes.
Petit défi : établir une fiche réseau sans modification
Sur un hôte autorisé où NetworkManager est actif, exécutez :
nmcli general status
nmcli device status
nmcli connection show
nmcli connection show --active
nmcli device show
ip -br address
Pour une interface de votre choix, consignez : son nom, son état NetworkManager, le profil actif et son UUID, le mode IPv4 déclaré si vous avez pu le lire, puis les adresses que le noyau affiche.
Vérification : pouvez-vous distinguer une propriété de profil, une connexion active et un paramètre actuellement visible ? Si vous ne pouvez pas déterminer quelle source recréera la configuration après redémarrage, notez « non déterminé » et poursuivez l'enquête plutôt que de changer une interface au hasard.
Aucun nettoyage ni rollback n'est nécessaire pour ce lab en lecture seule.
Sécurité et limites du diagnostic
nmcli dépend de NetworkManager. Il ne décrit pas à lui seul toute la pile réseau : interfaces non gérées, espaces de noms, règles de routage et pare-feu peuvent nécessiter d'autres outils. Certaines commandes d'inspection affichent des informations d'infrastructure ou des profils sensibles.
Un statut connected ne démontre pas la joignabilité d'un serveur distant. Et une commande qui réussit n'établit pas que la modification survivra au redémarrage ou à une réactivation du profil.
La première compétence de l'administrateur n'est donc pas d'appliquer vite une commande, mais de sélectionner la bonne cible et de prévoir comment vérifier ce qui a réellement changé.
Références officielles
- nmcli — NetworkManager Reference Manual
- Exemples officiels nmcli, dont checkpoint et restauration
- Profils et propriétés NetworkManager — nm-settings-nmcli
- NetworkManager — présentation du service
- ip-address(8) — état des adresses du noyau
Conclusion
Avec nmcli, il faut distinguer lire un profil, modifier ses propriétés, agir temporairement sur un périphérique et activer une connexion. Chaque opération répond à un objectif différent, même si les commandes se ressemblent.
Avant d'utiliser connection modify, device reapply ou connection up, identifiez la configuration qui fait autorité et protégez l'accès SSH. Dans le #62, nous retrouverons ces mêmes profils avec nmtui et les interfaces graphiques, afin de comprendre ce qui change — l'interface utilisateur — et ce qui reste identique : NetworkManager et ses connexions.
