Tutoriel Linux

Modifier un profil avec nmcli sans perdre l’accès réseau

Débutant5 min de lecture

Modifier une adresse IP, une passerelle ou un DNS sur une machine distante tient sur une seule commande nmcli. Ces réglages sont enregistrés dans un profil NetworkManager, et la réactivation de ce profil peut couper la session SSH qui sert justement à taper la commande.

Avant de toucher au profil, identifiez celui qui porte la connexion active et gardez une seconde session ouverte ou la console de l’hyperviseur. Limitez chaque passe à un domaine de réglage, relisez la valeur modifiée, réactivez, puis contrôlez la route et le DNS avant de fermer la session de secours.

Câble Ethernet connecté à un mini-serveur Linux avec liaison de secours visible
Préparez une console ou une seconde liaison avant de réactiver un profil réseau.

Vérifier le gestionnaire et préparer un accès de secours

nmcli ne pilote que les connexions gérées par NetworkManager. Sur une machine administrée par systemd-networkd, ifupdown ou Netplan avec un autre backend, ces commandes n’ont aucun effet sur le réseau réel.

systemctl is-active NetworkManager
nmcli general status
nmcli connection show --active
ip route get 1.1.1.1

systemctl is-active doit renvoyer active et nmcli general status doit répondre sans erreur. ip route get 1.1.1.1 donne l’interface, la passerelle et l’adresse source utilisées pour joindre cette cible : notez ces trois valeurs, elles servent de référence après la réactivation.

Une seule session SSH ne suffit pas quand le profil à modifier transporte cette session : une coupure pendant la réactivation la termine et supprime le moyen de revenir en arrière. Gardez une seconde session ouverte ; sur une VM ou un serveur distant, la console de l’hyperviseur ou de l’hébergeur fournit ce deuxième accès.

Identifier le profil qui porte la connexion active

Listez les profils enregistrés, puis inspectez celui rattaché à l’interface active.

nmcli -f NAME,UUID,TYPE,DEVICE connection show
PROFILE='Connexion filaire 1'
nmcli -f connection.id,connection.uuid,connection.interface-name,ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns connection show "$PROFILE"
nmcli connection show --active

Remplacez Connexion filaire 1 par le nom relevé sur la machine, entre guillemets s’il contient des espaces. La variable PROFILE reste disponible pour les commandes suivantes dans le même terminal. La sortie indique si l’IPv4 vient de DHCP ou d’une configuration manuelle, avec l’adresse, la passerelle et les DNS actuellement associés au profil.

Comparez le champ DEVICE du profil avec la ligne active de nmcli connection show --active. Un profil Wi-Fi et un profil Ethernet coexistent souvent : modifier le profil inactif ne coupe pas la session en cours, mais ne change rien au chemin réseau visé.

Modifier une propriété et relire sa valeur

Commencez par une propriété sans effet sur l’adresse ou la route : cette étape confirme le nom du profil et les droits sudo sans exposer la session en cours. connection.autoconnect-priority convient, elle ne s’applique qu’au prochain choix de profil et ne réactive rien. Sur un profil qui ne transporte pas la session active, cette précaution est facultative : un échec n’y coupe rien.

sudo nmcli connection modify "$PROFILE" connection.autoconnect-priority 20
nmcli -f connection.id,connection.autoconnect-priority connection show "$PROFILE"

La seconde commande doit afficher 20. Notez la valeur d’origine avant de la modifier pour pouvoir la restaurer. Gardez chaque passe dans un seul domaine de réglage : priorité d’autoconnexion, DNS ou adressage. La relecture précède la réactivation ; si la vérification échoue ensuite, la cause reste limitée à cette passe.

Pour ignorer les DNS fournis par DHCP, le réglage est explicite :

sudo nmcli connection modify "$PROFILE" ipv4.ignore-auto-dns yes

Indiquez ensuite les résolveurs avec ipv4.dns, séparés par une espace et entre guillemets :

sudo nmcli connection modify "$PROFILE" ipv4.dns "1.1.1.1 1.0.0.1"
nmcli -f ipv4.ignore-auto-dns,ipv4.dns connection show "$PROFILE"

1.1.1.1 et 1.0.0.1 servent d’exemple. Si l’entreprise ou l’hébergeur impose ses résolveurs, gardez-les : ne les remplacez pas par des adresses publiques sans vérifier la politique du réseau. Une résolution cassée coupe l’accès plus sûrement qu’une route erronée.

Pour passer le profil en adressage manuel, une commande regroupe la méthode, l’adresse et la passerelle :

sudo nmcli connection modify "$PROFILE" ipv4.method manual ipv4.addresses 198.51.100.10/24 ipv4.gateway 198.51.100.1
nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway connection show "$PROFILE"

198.51.100.10/24 et 198.51.100.1 appartiennent à la plage réservée aux exemples : adaptez-les au plan d’adressage de la machine. Avant la bascule, notez l’adresse et la passerelle du bail DHCP affichées par ip route get : le retour arrière repasse ipv4.method à auto et réactive le profil.

La documentation officielle nmcli de NetworkManager liste les noms de propriétés et leur syntaxe selon la version installée.

Réactiver la connexion puis vérifier la route et le DNS

Les valeurs modifiées restent inertes tant que le profil n’est pas réactivé. nmcli connection up peut couper brièvement le trafic, SSH compris, même quand la commande est correcte.

sudo nmcli connection up id "$PROFILE"
nmcli connection show --active
ip route get 1.1.1.1
getent hosts example.com
resolvectl status

nmcli connection up doit se terminer sans erreur et le profil doit apparaître actif dans nmcli connection show --active. Comparez l’interface et la passerelle renvoyées par ip route get avec les valeurs notées au diagnostic.

getent hosts example.com teste la résolution avec les mécanismes configurés sur la machine. resolvectl status détaille les DNS actifs quand systemd-resolved gère la résolution ; si la commande n’existe pas sur votre distribution, vérifiez le résolveur réellement utilisé plutôt que de considérer le DNS comme validé.

Une route correcte avec un nom qui ne se résout plus désigne le DNS, pas la route. Le guide ip route sous Linux sépare la route, la passerelle et l’adresse source. Pour relire les adresses de l’interface, le guide ip addr sous Linux complète le contrôle.

Arrêter la procédure si un autre outil gère le réseau

Si le diagnostic du début montre un autre gestionnaire, ne réactivez aucun profil avec nmcli. Sur Ubuntu, des fichiers YAML peuvent être pilotés par Netplan avec un backend différent de NetworkManager : le test réversible Netplan convient à cette configuration.

La seconde session SSH et la console de secours limitent le risque de perte d’accès pendant la bascule, elles ne rendent pas une mauvaise cible inoffensive. Vérifiez que le profil, l’interface, la route et la résolution correspondent aux valeurs attendues avant de fermer la session de secours.