Aller au contenu

Configurer le réseau avec NetworkManager

Mise à jour :

Dans le guide précédent, je vous ai présenté Netplan, un outil de configuration réseau moderne qui agit comme une interface entre l’utilisateur et les services comme systemd-networkd ou NetworkManager. Mais que se cache-t-il derrière ce fameux renderer appelé NetworkManager ? Voyons maintenant ensemble comment fonctionne ce gestionnaire de réseau utilisé par défaut dans la plupart des distributions Linux orientées poste de travail, comme Ubuntu Desktop, Fedora, openSUSE, Linux Mint, ou encore Pop!_OS.

NetworkManager a été conçu pour simplifier la gestion des connexions réseau, surtout dans des environnements où la connectivité change souvent — pensez au Wi-Fi, aux VPN ou aux connexions filaires dans les ordinateurs portables.

Contrairement aux outils plus bas-niveau comme systemd-networkd, il propose une gestion dynamique et automatisée, souvent accompagnée d’une interface graphique intuitive. Cela en fait un choix privilégié pour les utilisateurs de bureau, mais aussi pour certains serveurs nécessitant une flexibilité réseau avancée.

Dans ce guide, je vais vous montrer comment tirer parti de NetworkManager pour configurer efficacement vos interfaces réseau : que ce soit en DHCP, avec des adresses IP statiques, pour connecter un poste à un réseau Wi-Fi, ou encore pour des cas plus complexes comme la création de ponts réseau ou de liens agrégés (bonding). Nous verrons également les outils de gestion disponibles (nmcli, nmtui), comment éditer les fichiers de configuration, et comment diagnostiquer les éventuels problèmes de connectivité.

Vous êtes prêt ? Alors passons à l’exploration de NetworkManager.

Vérification des services réseau actifs

Avant de plonger dans la configuration de NetworkManager, il est essentiel de s’assurer que c’est bien lui qui gère le réseau sur votre machine. Dans beaucoup de distributions Linux, ce rôle peut être assuré par d’autres services comme Netplan. Un seul doit être actif pour éviter les conflits.

Pour voir quels services réseau sont actifs sur votre système, vous pouvez utiliser la commande suivante :

Terminal window
if systemctl is-active --quiet NetworkManager; then
echo "NetworkManager gère le réseau"
elif systemctl is-active --quiet systemd-networkd; then
echo "systemd-networkd gère le réseau"
elif [ -d /etc/netplan ]; then
echo "Netplan est probablement utilisé comme frontend"
else
echo "Aucun gestionnaire de réseau connu n'est actif"
fi

Cette commande vérifie si NetworkManager ou systemd-networkd sont actifs. Si aucun des deux n’est trouvé, elle vérifie si le répertoire /etc/netplan existe, ce qui indiquerait que Netplan est utilisé comme frontend. Si aucun gestionnaire de réseau n’est actif, elle l’indique aussi.

Exemple de sortie :

Terminal window
NetworkManager gère le réseau

Si vous voyez NetworkManager ou ifupdown dans la sortie, il est recommandé de les désactiver pour éviter les conflits. Vous pouvez le faire avec les commandes suivantes :

Terminal window
sudo systemctl disable --now NetworkManager
sudo apt remove ifupdown

Fonctionnement de NetworkManager

NetworkManager est bien plus qu’un simple outil de configuration. Il fonctionne comme un gestionnaire centralisé des connexions réseau, capable d’orchestrer automatiquement les interfaces, de prioriser les réseaux disponibles et de gérer divers types de connectivité. Son architecture modulaire permet une grande flexibilité tout en restant accessible aux utilisateurs, qu’ils soient en ligne de commande ou dans un environnement graphique.

Un démon au cœur du système

Au centre de NetworkManager, on trouve un démon système, appelé simplement NetworkManager. Ce démon tourne en arrière-plan et interagit en permanence avec les interfaces réseau, les configurations système, les événements matériels (comme le branchement d’un câble Ethernet ou la détection d’un réseau Wi-Fi), et même des services externes comme les VPN ou DNS.

Il surveille aussi les changements d’état du réseau et peut automatiquement choisir la meilleure connexion disponible, par exemple en basculant d’un Wi-Fi instable vers une connexion Ethernet fiable.

Interfaces disponibles : nmcli, nmtui et GUI

NetworkManager propose plusieurs manières d’interagir avec lui, ce qui le rend très polyvalent :

  • nmcli : c’est l’outil en ligne de commande. Très complet, il permet de tout faire : créer, modifier, supprimer, activer ou désactiver des connexions, voir l’état des interfaces, etc. Idéal pour les administrateurs en terminal ou pour les scripts.
  • nmtui : interface semi-graphique en mode texte. Moins puissante que nmcli, mais très pratique pour une configuration rapide sans passer par des lignes de commande complexes.
  • Interface graphique : pour les environnements de bureau (GNOME, KDE…), NetworkManager s’intègre directement via des applets ou des paramètres système. C’est l’interface préférée des utilisateurs non techniques.

Intégration avec D-Bus

L’un des atouts techniques de NetworkManager est son intégration avec D-Bus, un système de communication interprocessus sous Linux. Grâce à cela, des applications tierces peuvent interagir avec NetworkManager de manière sécurisée et centralisée, ce qui facilite par exemple l’intégration des clients VPN ou des applications de gestion de réseau comme ConnMan ou Wicd.

Services annexes : DNS, résolveurs et plus

Par défaut, NetworkManager peut aussi gérer des services annexes liés au réseau :

  • DNS : il configure automatiquement les serveurs DNS via des fichiers comme /etc/resolv.conf, souvent en coordination avec systemd-resolved.
  • VPN : il intègre des greffons pour divers types de VPN (OpenVPN, WireGuard, IPSec…).
  • Hotspot Wi-Fi : il peut transformer une interface Wi-Fi en point d’accès.

En résumé, NetworkManager n’est pas qu’un outil pratique : c’est une brique essentielle de la gestion réseau sur les postes Linux modernes. Dans le prochain chapitre, je vous montre comment vérifier s’il est installé, l’activer et commencer à l’utiliser selon votre distribution.

Installation et activation de NetworkManager

Avant de pouvoir configurer vos connexions réseau avec NetworkManager, il faut s’assurer qu’il est bien installé et actif sur votre système. Sur certaines distributions comme Ubuntu Desktop, Fedora ou Linux Mint, il est présent par défaut. Mais si vous êtes sur un système plus minimaliste ou orienté serveur, comme Debian netinstall ou Arch Linux, vous devrez peut-être l’installer manuellement.

Vérifier si NetworkManager est installé

La première étape consiste à vérifier si le service NetworkManager est disponible sur votre système :

Terminal window
systemctl status NetworkManager

Si le service est installé, vous verrez une ligne contenant Active: active (running). Sinon, vous devrez l’installer.

Installer NetworkManager selon la distribution

Voici comment installer NetworkManager sur les distributions les plus courantes :

Ppur Ubuntu / Debian :

Terminal window
sudo apt update
sudo apt install network-manager

Pour Fedora / RHEL / CentOS :

Terminal window
sudo dnf install NetworkManager

Pour Arch Linux / Manjaro :

Terminal window
sudo pacman -S networkmanager

Pour openSUSE :

Terminal window
sudo zypper install NetworkManager

Une fois installé, il est essentiel d’activer et de démarrer le service.

Activer et démarrer le service

Pour vous assurer que NetworkManager démarre automatiquement à chaque démarrage, utilisez :

Terminal window
sudo systemctl enable NetworkManager

Puis démarrez le service immédiatement :

Terminal window
sudo systemctl start NetworkManager

Vérifier le bon fonctionnement

Une fois installé, vous pouvez tester l’état du réseau avec la commande :

Terminal window
nmcli device status
DEVICE TYPE STATE CONNECTION
wlp4s0 wifi disconnected --
br0 bridge unmanaged --
virbr0 bridge unmanaged --
enp2s0 ethernet unmanaged --
enp3s0 ethernet unmanaged --
lo loopback unmanaged --
br-int openvswitch unmanaged --
ovs-system openvswitch unmanaged --
p2p-dev-wlp4s0 wifi-p2p unmanaged --

Cela vous donnera un aperçu de toutes les interfaces détectées, leur état (connecté, déconnecté), et le type de connexion associée (Ethernet, Wi-Fi, etc.).

Ici vous pouvez voir que l’interface wlp4s0 est déconnectée, tandis que enp2s0 et enp3s0 sont marquées comme non gérées. Cela signifie que NetworkManager n’a pas la main sur ces interfaces, probablement parce qu’elles sont gérées par un autre service comme Netplan. Si vous souhaitez que NetworkManager prenne le contrôle de ces interfaces, vous devrez les configurer pour qu’elles soient gérées par lui. Cela se fait généralement en modifiant les fichiers de configuration de Netplan.

Outils de gestion : nmcli, nmtui et GUI

Pour interagir avec NetworkManager, vous disposez de plusieurs outils, adaptés à différents contextes : que vous soyez en mode texte, sur un terminal distant ou dans un environnement graphique. Dans ce chapitre, je vous présente les trois moyens principaux de gestion : nmcli, nmtui et l’interface graphique intégrée à votre bureau.

nmcli : la ligne de commande puissante

nmcli est l’outil officiel en ligne de commande de NetworkManager. C’est celui que j’utilise le plus souvent, surtout en administration système à distance ou dans des scripts d’automatisation.

Voici les commandes de base à connaître :

  • Lister les interfaces réseau et leur état :

    Terminal window
    nmcli device status
  • Afficher les connexions enregistrées :

    Terminal window
    nmcli connection show
  • Afficher les connexions disponibles (Wi-Fi) :

    Terminal window
    nmcli device wifi list
  • Activer une interface réseau :

    Terminal window
    nmcli device connect enp2s0
  • Activer une connexion enregistrée :

    Terminal window
    nmcli connection up nom-de-la-connexion
  • Supprimer une connexion :

    Terminal window
    nmcli connection delete nom-de-la-connexion

nmtui : une interface texte simple et intuitive

Pour ceux qui préfèrent une interface semi-graphique, nmtui est une très bonne alternative. Elle fonctionne dans le terminal, avec une navigation au clavier très fluide. Elle permet :

  • De configurer de nouvelles connexions,
  • De modifier des connexions existantes,
  • De choisir une connexion active à utiliser par défaut.

Pour lancer l’interface :

Terminal window
nmtui

C’est particulièrement utile lorsque vous êtes dans une console sans interface graphique, ou pour guider un utilisateur non technique.

Interface graphique : GNOME, KDE, XFCE…

Si vous êtes sur un système de bureau, comme Ubuntu Desktop, Fedora Workstation ou KDE Neon, vous disposez très probablement d’une interface graphique intégrée à votre environnement :

  • GNOME : via le menu « Réseaux » dans les paramètres système.
  • KDE : via le widget « Connexions réseau » dans la barre des tâches.
  • XFCE, MATE, Cinnamon : généralement via le nm-applet dans la zone de notification.

Ces interfaces utilisent toutes NetworkManager en arrière-plan. Vous pouvez y créer des connexions Wi-Fi, configurer des adresses IP statiques, ajouter des VPN, et même gérer les proxys.

Bon à savoir : si vous n’avez pas l’applet dans votre zone de notification, vous pouvez le lancer manuellement :

Terminal window
nm-applet &

Grâce à ces outils, vous pouvez gérer entièrement votre configuration réseau avec NetworkManager, que vous soyez dans un terminal SSH ou sur un bureau graphique. Dans le prochain chapitre, nous allons plonger dans les fichiers de configuration utilisés par NetworkManager.

Fichiers de configuration de NetworkManager

Même si NetworkManager est conçu pour être piloté dynamiquement via nmcli, nmtui ou une interface graphique, il s’appuie en coulisses sur des fichiers de configuration. Comprendre où ils se trouvent et comment ils fonctionnent peut vous aider à mieux contrôler le comportement de vos connexions, à corriger des erreurs ou à déployer une configuration standardisée sur plusieurs machines.

Le fichier principal : NetworkManager.conf

Le fichier global de configuration de NetworkManager est situé ici :

Terminal window
/etc/NetworkManager/NetworkManager.conf

Ce fichier est au format INI, avec des sections comme [main], [ifupdown], [keyfile]… Il permet de définir :

  • Le comportement global de NetworkManager,
  • Les plugins utilisés (comme ifupdown, keyfile, etc.),
  • Si certaines interfaces doivent être gérées ou non.

Exemple basique :

[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=true

Ce réglage permet à NetworkManager de prendre le contrôle des interfaces définies dans /etc/network/interfaces, à condition que ce fichier soit encore utilisé.

Pour appliquer les changements :

Terminal window
sudo systemctl restart NetworkManager

Les connexions : /etc/NetworkManager/system-connections/

C’est ici que sont enregistrées les connexions réseau configurées avec nmcli, nmtui, ou l’interface graphique. Chaque fichier représente une connexion unique (par exemple : un réseau Wi-Fi, une interface Ethernet avec IP fixe, un VPN…).

Ces fichiers :

  • sont en format INI,
  • contiennent tous les paramètres IP, DNS, interface, identifiants Wi-Fi, etc.
  • ont des permissions strictes pour des raisons de sécurité.

Exemple de fichier de connexion pour une interface Ethernet statique (/etc/NetworkManager/system-connections/eth0.nmconnection) :

[connection]
id=eth0
uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
type=ethernet
interface-name=eth0
autoconnect=true
[ipv4]
method=manual
address1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;8.8.4.4;

Je vous déconselle de modifier ces fichiers manuellement, car NetworkManager peut les écraser. Utilisez plutôt nmcli ou nmtui pour les gérer.

Par défaut, NetworkManager gère aussi les serveurs DNS utilisés par le système, notamment via un service comme systemd-resolved.

Le fichier /etc/resolv.conf peut être un lien symbolique vers un fichier géré par NetworkManager ou systemd-resolved :

Terminal window
ls -l /etc/resolv.conf

Vous pouvez configurer le gestionnaire DNS dans NetworkManager.conf :

[main]
dns=systemd-resolved

Ou bien désactiver ce comportement si vous gérez manuellement les DNS.

Configuration réseau avec nmcli

Avec NetworkManager, configurer une interface réseau devient un processus clair, reproductible, et souvent interactif. Que ce soit pour une machine de bureau, un portable ou même un hôte en virtualisation, je vais vous montrer comment gérer différents types de connexions : DHCP, IP statique, Wi-Fi, bridge, et bonding. Toutes ces actions peuvent être réalisées avec nmcli, ce qui rend l’automatisation et les scripts très simples.

Configuration d’une adresse IP dynamique (DHCP)

La méthode la plus courante consiste à laisser un serveur DHCP attribuer une adresse IP automatiquement à l’interface :

Terminal window
nmcli connection add type ethernet ifname enp2s0 con-name enp2s0-dhcp autoconnect yes

Explication :

  • type ethernet : type d’interface.
  • ifname enp2s0 : nom de l’interface physique.
  • con-name enp2s0-dhcp : nom donné à la connexion.
  • autoconnect yes : la connexion est activée automatiquement au démarrage.

Vous pouvez ensuite l’activer avec :

Terminal window
nmcli connection up enp2s0-dhcp

Configuration d’une adresse IP statique

Pour les serveurs, ou lorsqu’une adresse IP fixe est requise :

Terminal window
nmcli connection add type ethernet ifname enp2s0 con-name enp2s0-static ip4 192.168.1.50/24 gw4 192.168.1.1
nmcli connection modify enp2s0-static ipv4.dns "8.8.8.8 1.1.1.1"
nmcli connection up enp2s0-static

Ce que fait cette configuration :

  • Attribue à l’interface enp2s0 l’adresse IP 192.168.1.50 avec un masque /24.
  • Définit la passerelle par défaut.
  • Configure deux serveurs DNS.

Configuration d’une connexion Wi-Fi

Pour vous connecter à un réseau Wi-Fi protégé avec mot de passe :

Terminal window
nmcli device wifi list
nmcli device wifi connect "MonSSID" password "motdepassewifi"

Cela crée automatiquement une connexion persistante et la connecte immédiatement.

Si le mot de passe est incorrect ou si la connexion échoue, un message d’erreur s’affiche directement dans le terminal.

Configuration d’un bridge réseau

Les bridges sont utiles en virtualisation (KVM, LXD, containers…). Voici comment en créer un :

Terminal window
nmcli connection add type bridge ifname br0 con-name br0
nmcli connection add type ethernet ifname enp3s0 master br0
nmcli connection modify br0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8"
nmcli connection up br0

Détail :

  • On crée un bridge br0.
  • On l’attache à l’interface physique enp3s0.
  • On configure une IP statique sur le bridge.

Configuration d’un bonding (agrégation de liens)

Pour augmenter la résilience ou le débit réseau, on peut agréger deux interfaces :

Terminal window
nmcli connection add type bond ifname bond0 con-name bond0 mode active-backup
nmcli connection add type ethernet ifname enp2s0 master bond0
nmcli connection add type ethernet ifname enp3s0 master bond0
nmcli connection modify bond0 ipv4.method manual ipv4.addresses 192.168.1.60/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8"
nmcli connection up bond0
  • Le mode active-backup signifie que seule une interface est utilisée, l’autre prenant le relais en cas de panne.

Débogage et dépannage

Même si NetworkManager est conçu pour automatiser la gestion du réseau, il peut arriver que les choses ne se passent pas comme prévu : une interface qui ne s’active pas, une connexion qui échoue, ou un Wi-Fi capricieux. Je vous propose ici les méthodes que j’utilise personnellement pour identifier et résoudre les problèmes les plus fréquents.

Vérifier l’état des interfaces et des connexions

La première commande à exécuter en cas de souci est :

Terminal window
nmcli device status

Elle affiche un aperçu immédiat de toutes les interfaces (Ethernet, Wi-Fi, etc.) et leur état : connected, disconnected, ou unmanaged. Si une interface est « unmanaged », cela signifie qu’elle n’est pas prise en charge par NetworkManager, souvent à cause d’un conflit de configuration (Netplan, interfaces, etc.).

Pour voir les connexions enregistrées :

Terminal window
nmcli connection show

Et pour connaître l’état actuel d’une connexion en particulier :

Terminal window
nmcli connection show <nom>

Activer ou désactiver une interface

Si une interface refuse de se connecter :

Terminal window
nmcli device disconnect enp2s0
nmcli device connect enp2s0

Cela a pour effet de réinitialiser l’interface, ce qui règle souvent les problèmes transitoires.

Rejouer ou relancer une connexion

Si une connexion a été modifiée ou si vous voulez forcer sa reconnexion :

Terminal window
nmcli connection up nom-de-la-connexion

Et pour la désactiver :

Terminal window
nmcli connection down nom-de-la-connexion

Inspecter les journaux système

Pour aller plus loin, utilisez journalctl pour voir les logs de NetworkManager :

Terminal window
sudo journalctl -u NetworkManager

Cela permet d’identifier précisément les erreurs : mot de passe Wi-Fi erroné, problème DHCP, interface absente, etc.

Si vous soupçonnez un souci au niveau DNS ou d’un plugin (VPN, résolveur…), ajoutez le filtre :

Terminal window
sudo journalctl -u NetworkManager | grep error

Redémarrer NetworkManager

Quand tout semble bloqué, redémarrer le service peut remettre les choses à plat :

Terminal window
sudo systemctl restart NetworkManager

Vérifier les adresses IP et la passerelle

Une commande simple mais efficace :

Terminal window
ip a

Elle vous montre les interfaces, leurs adresses IP, et leur état.

Pour voir la passerelle par défaut :

Terminal window
ip route

Diagnostiquer le DNS

Si la connexion est active mais que vous ne pouvez pas résoudre un nom de domaine :

  1. Vérifiez le fichier /etc/resolv.conf :

    Terminal window
    cat /etc/resolv.conf
  2. Testez une requête DNS :

    Terminal window
    dig google.fr

    ou

    Terminal window
    nslookup google.fr

Avec ces outils, vous êtes capable de résoudre 90 % des problèmes de connectivité sous Linux avec NetworkManager. La clé est d’y aller étape par étape : interface > connexion > journal > configuration.

Contrôle de connaissances

Avant de clore ce guide, je vous propose un petit examen interactif pour tester vos acquis sur la configuration réseau avec NetworkManager. Cet exercice est conçu pour vérifier si vous avez bien compris les concepts abordés : gestion des interfaces, configuration avec nmcli, dépannage, intégration avec Netplan, etc.

Ce quiz fait partie d’une série d’examens pratiques intégrés au site. Il vous présente une série de 10 questions aléatoires spécifiques à NetworkManager, avec un seuil de réussite fixé à 80% pour valider vos connaissances. Vous avez 5 minutes pour y répondre.

Pourquoi ce contrôle ?

Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.

💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.

Bonne chance ! 🚀

Conclusion

Vous voilà désormais équipé pour maîtriser NetworkManager dans vos environnements Linux, que ce soit sur un poste de travail, un serveur ou une machine virtuelle. De l’installation à la configuration avancée (Wi-Fi, bridge, bonding), en passant par le dépannage et l’intégration avec Netplan, vous avez tous les outils en main pour gérer efficacement vos interfaces réseau.

N’hésitez pas à revenir à ce guide en cas de doute, ou à expérimenter avec nmcli pour approfondir votre pratique. Et surtout, souvenez-vous : un réseau bien configuré, c’est un système stable et prêt à évoluer.