NetworkManager (Français)

From ArchWiki
État de la traduction: Cet article est la version francophone de NetworkManager. Date de la dernière traduction: 2022-04-30. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

NetworkManager est un programme permettant de détecter et de configurer les systèmes pour qu'ils se connectent automatiquement aux réseaux. La fonction de NetworkManager peut être utile pour les réseaux sans fil et câblés. Pour les réseaux sans fil, NetworkManager préfère les réseaux sans fil connus et a la capacité de passer au réseau le plus fiable. Les applications adaptées à NetworkManager peuvent passer du mode en ligne au mode hors ligne. NetworkManager préfère également les connexions câblées aux connexions sans fil, prend en charge les connexions par modem et certains types de VPN. NetworkManager a été développé à l'origine par Red Hat et est maintenant hébergé par le projet GNOME.

Attention: Par défaut, les secrets (par exemple, les mots de passe WiFi) sont accessibles à l'utilisateur root dans le système de fichiers et aux utilisateurs ayant accès aux paramètres via l'interface graphique (par exemple, nm-applet). consultez #Mots de passe Wi-Fi chiffrés.

Installation

NetworkManager peut être installé avec le paquet networkmanager, qui contient un daemon, une interface en ligne de commande (nmcli) et une interface basée sur curses (nmtui).

Activer NetworkManager

Après l'installation, démarrez et activez NetworkManager.service. Une fois le daemon NetworkManager démarré, il se connectera automatiquement à toutes les "connexions système" disponibles qui ont déjà été configurées. Toute "connexion utilisateur" ou connexion non configurée devra être configurée et connectée par nmcli ou une applet.

Note:
  • Vous devez vous assurer qu'aucun autre service souhaitant configurer le réseau n'est en cours d'exécution ; en effet, plusieurs services réseau entreront en conflit. Vous pouvez trouver une liste des services en cours d'exécution avec systemctl --type=service et ensuite arrêtez-les. Consultez #Configuration pour activer le service NetworkManager.
  • Si systemd-resolved n'est pas démarré, un message d'erreur commencera à inonder vos journaux. Consultez #Unit dbus-org.freedesktop.resolve1.service not found pour plus d'informations.

Interfaces supplémentaires

Prise en charge du haut débit mobile

NetworkManager utilise ModemManager pour prendre en charge les connexions mobiles à large bande.

Installez modemmanager et usb_modeswitch. Ensuite, activez et démarrez ModemManager.service.

Redémarrez si besoin NetworkManager.service pour qu'il détecte ModemManager. Après l'avoir redémarré, rebranchez le modem et il devrait être reconnu.

Ajoutez des connexions à partir d'une interface (par exemple, nm-connection-editor) et sélectionnez le haut débit mobile comme type de connexion. Après avoir sélectionné votre FAI et votre plan de facturation, les APN et d'autres paramètres devraient être remplis automatiquement en utilisant les informations de mobile-broadband-provider-info.

Prise en charge de PPPoE / DSL

Installez Le paquet rp-pppoe pour prendre en charge les connexions PPPoE / DSL. Pour ajouter réellement une connexion PPPoE, utilisez nm-connection-editor et ajoutez une nouvelle connexion DSL/PPPoE.

Prise en charge du VPN

NetworkManager depuis la version 1.16 a un support natif pour WireGuard, tout ce dont il a besoin est le module noyau wireguard. Lisez le post du blog WireGuard dans NetworkManager pour plus de détails.

La prise en charge des autres types de VPN est basée sur un système de plug-in. Ils sont fournis dans les paquets suivants :

Attention: Il y a beaucoup de bugs liés à la prise en charge du VPN. Vérifiez que les options des processus daemon définies via l'interface graphique sont correctes et vérifiez-les à chaque version de paquet.
Note: Pour que la résolution DNS fonctionne parfaitement lors de l'utilisation du VPN, vous devez configurer le transfert conditionnel.

Utilisation

NetworkManager est fourni avec nmcli(1) et nmtui(1).

Exemples avec nmcli

Liste des réseaux Wi-Fi à proximité :

$ nmcli device wifi list

Se connecter à un réseau Wi-Fi :

$ nmcli device wifi connect SSID_ou_BSSID password password

Se connecter à un réseau Wi-Fi caché :

$ nmcli device wifi connect SSID_ou_BSSID password password hidden yes

Se connecter à un réseau Wi-Fi sur l'interface wlan1 :

$ nmcli device wifi connect SSID_ou_BSSID password password ifname wlan1 profile_name

Déconnecter une interface :

$ nmcli device disconnect ifname eth0

Obtenir une liste des connexions avec leurs noms, UUIDs, types et périphériques :

$ nmcli connection show

Activer une connexion (c'est-à-dire se connecter à un réseau avec un profil existant) :

$ nmcli connection up name_or_uuid

Supprimer une connexion :

$ nmcli connection delete name_or_uuid

Consulter la liste des périphériques réseau et leur état :

$ nmcli device

Désactiver le Wi-Fi :

$ nmcli radio wifi off

Modifier une connexion

Pour une liste complète des paramètres, consultez nm-settings(5).

Tout d'abord, vous devez obtenir la liste des connexions :

$ nmcli connection
NAME UUID TYPE DEVICE
Connexion filaire 2 e7054040-a421-3bef-965d-bb7d60b7cecf ethernet enp5s0
Wired connection 1 997f2782-f0fc-301d-bfba-15421a2735d8 ethernet enp0s25
MY-HOME-WIFI-5G 92a0f7b3-2eba-49ab-a899-24d83978f308 wifi --

Vous pouvez ici utiliser la première colonne comme connection-id utilisé plus tard. Dans cet exemple, nous choisissons Wired connection 2 comme identifiant de connexion.

Vous avez trois méthodes pour configurer une connexion Wired connection 2 après qu'elle ait été créée :

L'éditeur interactif nmcli
nmcli connection edit 'Wired connection 2'.
Usage is well documented from the editor.
L'interface en ligne de commande nmcli
nmcli connection modify 'Wired connection 2' setting.property value. Consultez nmcli(1) pour son utilisation. Par exemple, vous pouvez changer sa métrique de route IPv4 à 200 en utilisant la commande nmcli connection modify 'Wired connection 2' ipv4.route-metric 200.

Pour supprimer un paramètre, passez-lui un champ vide ("") comme ceci :

nmcli connection modify 'Wired connection 2' setting.property ""
Fichier de connexion
Dans le répertoire /etc/NetworkManager/system-connections/, modifiez le fichier Wired connection 2.nmconnection correspondant .
N'oubliez pas de recharger le fichier de configuration avec nmcli connection reload.

Interfaces

Pour configurer et avoir un accès facile à NetworkManager, la plupart des utilisateurs voudront installer une applet. Cette interface graphique réside généralement dans la barre d'état système (ou la zone de notification) et permet la sélection du réseau et la configuration de NetworkManager. Divers environnements de bureau ont leur propre applet. Sinon, vous pouvez utiliser #nm-applet.

GNOME

GNOME possède un outil intégré, accessible à partir des paramètres du réseau.

KDE Plasma

Installez le paquet plasma-nm. Ensuite, ajoutez-le à la barre des tâches de KDE via le menu Options du panneau > Ajouter des widgets > Réseaux.

nm-applet

network-manager-applet est une interface GTK 3 qui fonctionne sous les environnements Xorg avec une barre d'état système («systray»).

Pour stocker les secrets de connexion, installez et configurez GNOME/Keyring.

Soyez conscient qu'après avoir coché la case Mettre à la disposition des autres utilisateurs pour une connexion, NetworkManager stocke le mot de passe en texte simple, bien que le fichier correspondant ne soit accessible qu'à root (ou aux autres utilisateurs via nm-applet). Consultez #Mots de passe Wi-Fi chiffrés.

Afin d'exécuter nm-applet sans systray, vous pouvez utiliser trayer ou stalonetray. Par exemple, vous pouvez ajouter un script comme celui-ci dans votre chemin :

nmgui
#!/bin/sh
nm-applet 2>&1 > /dev/null &
stalonetray 2>&1 > /dev/null
killall nm-applet

Lorsque vous fermez la fenêtre stalonetray, elle ferme également nm-applet, de sorte qu'aucune mémoire supplémentaire n'est utilisée une fois que vous avez terminé les paramètres réseau.

L'applet peut afficher des notifications pour des événements tels que la connexion ou la déconnexion d'un réseau WiFi. Pour que ces notifications s'affichent, assurez-vous qu'un serveur de notification est installé - consultez Desktop notifications. Si vous utilisez l'applet sans serveur de notification, vous risquez de retrouver certains messages dans stdout/stderr, et l'applet risque de se bloquer. Consultez [1].

Afin d'exécuter nm-applet avec ces notifications désactivées, démarrez l'applet avec la commande suivante :

$ nm-applet --no-agent
Astuce: nm-applet peut être lancée automatiquement avec un autostart desktop file, pour ajouter l'option --no-agent modifiez la ligne Exec à cet endroit, c'est-à-dire
Exec=nm-applet --no-agent
Attention: Sur i3, si nm-applet est lancé avec l'option --no-agent, il n'est pas possible de se connecter à un nouveau réseau WiFi chiffré en cliquant sur la liste des éléments car aucune fenêtre de dialogue de saisie de mot de passe ne s'affiche. Le journal affichera no secrets: No agents were available for this request.

Appindicateur

Depuis la version 1.18.0, la prise en charge d'Appindicator est disponible dans le paquet officiel network-manager-applet. Pour utiliser nm-applet dans un environnement Appindicator, démarrez l'applet avec la commande suivante :

$ nm-applet --indicator

networkmanager-dmenu

Il existe également networkmanager-dmenu-gitAUR qui est un petit script permettant de gérer les connexions NetworkManager avec dmenu ou rofi au lieu de nm-applet. Il fournit toutes les fonctionnalités essentielles telles que la connexion à des connexions NetworkManager wifi ou filaires existantes, la connexion à de nouvelles connexions wifi, la demande de phrase de passe si nécessaire, la connexion à des connexions VPN existantes, l'activation/désactivation du réseau, le lancement de l'interface graphique nm-connection-editor, la connexion à des réseaux Bluetooth.

Configuration

NetworkManager nécessite quelques étapes supplémentaires pour pouvoir fonctionner correctement. Assurez-vous que vous avez configuré /etc/hosts comme décrit dans la section Network configuration (Français)#Définir le nom d'hôte.

NetworkManager a un fichier de configuration global : /etc/NetworkManager/NetworkManager.conf. Des fichiers de configuration supplémentaires peuvent être placés dans /etc/NetworkManager/conf.d/. En général, aucune configuration n'est nécessaire pour les valeurs par défaut globales.

Après avoir modifié un fichier de configuration, les changements peuvent être appliqués en exécutant :

# nmcli general reload

NetworkManager-wait-online

L'activation de NetworkManager.service active également NetworkManager-wait-online.service, qui est un service système à action unique qui attend que le réseau soit configuré. Ce dernier a WantedBy=network-online.target, donc il ne se terminera que lorsque network-online.target lui-même sera activé ou déclenché par une autre unité. Consultez également Systemd (Français)#Exécution des services après le démarrage du réseau.

Par défaut, NetworkManager-wait-online.service attend la fin du démarrage de NetworkManager, plutôt que d'attendre spécifiquement la connectivité réseau (consultez nm-online(1)). Si NetworkManager-wait-online.service se termine avant que le réseau ne soit réellement opérationnel, ce qui entraîne l'échec des services au démarrage, étendez l'unité pour supprimer le -s de la ligne ExecStart :

[Service]
ExecStart=
ExecStart=/usr/bin/nm-online -q

Sachez que cela peut causer d'autres problèmes.

Dans certains cas, le service n'arrivera toujours pas à démarrer correctement au démarrage parce que le délai d'attente est trop court. Éditez le service pour modifier NM_ONLINE_TIMEOUT de 60 à une valeur plus élevée.

Configurer les permissions de PolicyKit

Par défaut, tous les utilisateurs des sessions locales actives sont autorisés à modifier la plupart des paramètres réseau sans mot de passe. Consultez General troubleshooting (Français)#Permissions de session pour vérifier votre type de session. Dans la plupart des cas, tout devrait fonctionner sans problème.

Certaines actions (comme la modification du nom d'hôte du système) nécessitent un mot de passe administrateur. Dans ce cas, vous devez vous ajouter au groupe wheel et exécuter un Agent d'authentification Polkit qui vous demandera votre mot de passe.

Pour les sessions à distance (par exemple, headless VNC), vous avez plusieurs options pour obtenir les privilèges nécessaires à l'utilisation de NetworkManager :

  1. Ajoutez vous au groupe wheel. Vous devrez saisir votre mot de passe pour chaque action. Notez que d'autres autorisations peuvent être accordées à votre compte utilisateur, comme la possibilité d'utiliser sudo sans saisir le mot de passe root.
  2. Ajoutez vous au groupe network et créez /etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules avec le contenu suivant :
    polkit.addRule(function(action, subject) {
      si (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) {
        return polkit.Result.YES ;
      }
    }) ;
    
    Tous les utilisateurs du groupe network pourront ajouter et supprimer des réseaux sans mot de passe (ce qui signifie que vous n'avez pas besoin d'exécuter un agent d'authentification Polkit, donc cette option fonctionnera également dans les sessions SSH).

Paramètres du proxy

NetworkManager ne gère pas directement les paramètres de proxy, mais si vous utilisez GNOME ou KDE, vous pouvez utiliser proxydriverAUR qui gère les paramètres de proxy en utilisant les informations de NetworkManager.

Pour que proxydriver puisse modifier les paramètres du proxy, vous devez exécuter cette commande, dans le cadre du processus de démarrage de GNOME (consultez GNOME (Français)#Démarrage automatique).

$ xhost +si:localuser:username

Consultez également l'article concernant les paramètres du proxy.

Vérification de la connectivité

NetworkManager peut essayer d'atteindre un serveur web après s'être connecté à un réseau afin de déterminer s'il est par exemple derrière un portail captif. L'hôte par défaut (configuré dans /usr/lib/NetworkManager/conf.d/20-connectivity.conf) est ping.archlinux.org. Pour utiliser un autre serveur Web ou pour désactiver la vérification de la connectivité, créez /etc/NetworkManager/conf.d/20-connectivity.conf, consultez NetworkManager.conf(5) § CONNECTIVITY SECTION. Vous trouverez ci-dessous un exemple d'utilisation des serveurs GNOME (il ne nécessite pas l'utilisation de GNOME) :

/etc/NetworkManager/conf.d/20-connectivity.conf
[connectivity]
uri=http://nmcheck.gnome.org/check_network_status.txt

Pour désactiver la vérification de la connectivité de NetworkManager, utilisez la configuration suivante. Cela peut être utile lorsque vous êtes connecté à un VPN qui bloque les vérifications de connectivité.

/etc/NetworkManager/conf.d/20-connectivity.conf
[connectivity] 
enabled=false
Note: Bien que les vérifications automatiques de connectivité constituent une fuite potentielle de confidentialité, l'URL de connectivité par défaut d'Arch Linux s'engage à n'enregistrer aucun accès. Vérifiez [2] [3].

Portails captifs

Pour ceux qui se trouvent derrière un portail captif, le gestionnaire de bureau peut ouvrir automatiquement une fenêtre demandant des informations d'identification. Si votre bureau ne le fait pas, vous pouvez utiliser le paquet capnet-assist (cependant, il a actuellement un script de répartition NetworkManager cassé). Sinon, vous pouvez créer un script de répartition NetworkManager avec le contenu suivant :

/etc/NetworkManager/dispatcher.d/90-open_captive_portal
#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs shows a login webpage on walled garden networks.
# See NetworkManager(8) for further documentation of the dispatcher events.

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

if [ -x "/usr/bin/logger" ]; then
    logger="/usr/bin/logger -s -t captive-portal"
else
    logger=":"
fi

wait_for_process() {
    PNAME=$1
    while [ -z "$(/usr/bin/pgrep $PNAME)" ]; do
        sleep 3;
    done
}

#launch the browser, but on boot we need to wait that nm-applet starts
start_browser() {
    local user="$1"
    local display="$2"

    export DISPLAY="$display"
    wait_for_process nm-applet

    export XAUTHORITY="/home/$user/.Xauthority"

    $logger "Running browser as '$user' with display '$display' to login in captive portal"
    sudo -u "$user" --preserve-env=DISPLAY,XAUTHORITY -H xdg-open http://capnet.elementary.io 2>&1 > /dev/null
}

# Run the right scripts
case "$2" in
    connectivity-change)
    $logger -p user.debug "dispatcher script triggered on connectivity change: $CONNECTIVITY_STATE"
    if [ "$CONNECTIVITY_STATE" = "PORTAL" ]; then
        # Match last column of who's output with ' :[at least one digit] '
        who | awk '$NF ~ /\(:[0-9]+\)/ { print $1 " " substr($NF, 2, length($NF)-2) };' | \
        while read user display; do
            start_browser $user $display || $logger -p user.err "Failed for user: '$user' display: '$display'"
        done
    fi
    ;;
    *)
    # In a down phase
    exit 0
    ;;
esac

Redémarrez NetworkManager.service ou redémarrez totalement pour que cela commence à fonctionner. Une fois que vous l'aurez fait, le script du répartiteur devrait ouvrir une fenêtre de connexion dès qu'il aura détecté que vous êtes derrière un portail captif.

Une autre solution est captive-browser-gitAUR basée sur Google Chrome.

Client DHCP

Par défaut, NetworkManager utilise son client DHCP interne. Le plugin DHCPv4 interne est basé sur la bibliothèque n-dhcp4 de nettools, tandis que le plugin DHCPv6 interne est fait à partir du code basé sur systemd-networkd.

Pour utiliser un client DHCP différent, installez l'une des alternatives :

Pour changer le client DHCP, définissez l'option main.dhcp=dhcp_client_name avec un fichier de configuration dans /etc/NetworkManager/conf.d/. Par exemple :

/etc/NetworkManager/conf.d/dhcp-client.conf
[main]
dhcp=dhclient
Note:
  • NetworkManager ne prend pas en charge l'utilisation de dhcpcd pour IPv6. Consultez le rapport n°5 de NetworkManager. Si dhcpcd est défini comme client DHCP, NetworkManager utilisera le client DHCP interne pour DHCPv6.
  • N'activez pas les unités systemd livrées avec les paquets dhclient et dhcpcd. Elles entreront en conflit avec NetworkManager, consultez la note dans #Installation pour plus de détails.

Gestion des DNS

La gestion DNS de NetworkManager est décrite dans la page wiki du projet GNOME-Projects/NetworkManager/DNS.

Mise en cache du DNS et transfert conditionnel

NetworkManager dispose d'un plugin pour activer la mise en cache du DNS et la redirection conditionnelle (previously appelé "split DNS" dans la documentation de NetworkManager) en utilisant dnsmasq ou systemd-resolved. L'avantage de cette configuration est que les recherches DNS sont mises en cache, ce qui réduit les temps de résolution, et que les recherches DNS des hôtes VPN sont acheminées vers les serveurs DNS du VPN concerné. Ceci est particulièrement utile si vous êtes connecté à plus d'un VPN.

Note: Si /etc/resolv.conf est un lien symbolique vers /run/systemd/resolve/stub-resolv.conf, /run/systemd/resolve/resolv.conf,/lib/systemd/resolv.conf ou /usr/lib/systemd/resolv.conf, NetworkManager choisira automatiquement systemd-resolved. Pour utiliser dnsmasq, vous devez d'abord supprimer ce lien symbolique, puis redémarrer NetworkManager.
dnsmasq

Assurez-vous que dnsmasq a été installé. Définissez ensuite main.dns=dnsmasq avec un fichier de configuration dans /etc/NetworkManager/conf.d/ :

/etc/NetworkManager/conf.d/dns.conf
[main]
dns=dnsmasq

Exécutez maintenant nmcli general reload en tant que root. NetworkManager démarrera automatiquement dnsmasq et ajoutera 127.0.0.1 à /etc/resolv.conf. Les serveurs DNS originaux se trouvent dans /run/NetworkManager/no-stub-resolv.conf. Vous pouvez vérifier que dnsmasq est utilisé en effectuant deux fois la même recherche DNS avec drill example.com et en vérifiant les temps de serveur et de requête.

Note:
  • Vous n'avez pas besoin de démarrer dnsmasq.service ou de modifier /etc/dnsmasq.conf. NetworkManager démarrera dnsmasq sans utiliser le service systemd et sans lire le(s) fichier(s) de configuration par défaut de dnsmasq.
  • L'instance de dnsmasq démarrée par NetworkManager sera liée à 127.0.0.1:53, vous ne pouvez pas exécuter un autre logiciel (y compris dnsmasq.service) sur la même adresse et le même port.
Configuration personnalisée de dnsmasq

Des configurations personnalisées peuvent être créées pour dnsmasq en créant des fichiers de configuration dans /etc/NetworkManager/dnsmasq.d/. Par exemple, pour modifier la taille du cache DNS (qui est stocké en RAM) :

/etc/NetworkManager/dnsmasq.d/cache.conf
cache-size=1000

Vous pouvez vérifier la syntaxe du fichier de configuration avec :

$ dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d

Consultez dnsmasq(8) pour connaître toutes les options disponibles.

IPv6

L'activation de dnsmasq dans NetworkManager peut interrompre les recherches DNS en IPv6 uniquement (c'est-à-dire drill -6 [hostname]) qui fonctionneraient autrement. Afin de résoudre ce problème, la création du fichier suivant configurera dnsmasq pour qu'il écoute également le loopback IPv6 :

/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf
listen-address=::1

En outre, dnsmasq ne donne pas non plus la priorité aux DNS IPv6 en amont. Malheureusement, NetworkManager ne le fait pas (Bug remonté chez Ubuntu). Une solution de contournement serait de désactiver le DNS IPv4 dans la configuration de NetworkManager, en supposant qu'il en existe une.

DNSSEC

L'instance dnsmasq lancée par NetworkManager par défaut ne validera pas DNSSEC puisqu'elle est lancée avec l'option --proxy-dnssec. Elle fera confiance aux informations DNSSEC qu'elle obtient du serveur DNS en amont.

Pour que dnsmasq valide correctement les DNSSEC, ce qui casse la résolution DNS avec les serveurs de noms qui ne les prennent pas en charge, créez le fichier de configuration suivant :

/etc/NetworkManager/dnsmasq.d/dnssec.conf
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
systemd-resolved

NetworkManager peut utiliser systemd-resolved comme résolveur et cache DNS. Assurez-vous que systemd-resolved est correctement configuré et que systemd-resolved.service est démarré avant de l'utiliser.

systemd-resolved sera utilisé automatiquement si /etc/resolv.conf est un symlink vers /run/systemd/resolve/stub-resolv.conf, /run/systemd/resolve/resolv.conf ou /usr/lib/systemd/resolv.conf.

Vous pouvez l'activer explicitement en définissant main.dns=systemd-resolved avec un fichier de configuration dans /etc/NetworkManager/conf.d/ :

/etc/NetworkManager/conf.d/dns.conf
[main]
dns=systemd-resolved
Résolveur DNS avec un client openresolv

Si openresolv a un client pour votre résolveur DNS local, configurez le client et configurez NetworkManager pour utiliser openresolv.

Parce que NetworkManager annonce une seule "interface" à resolvconf, il n'est pas possible d'implémenter le transfert conditionnel entre deux connexions NetworkManager. Consultez le rapport n°153 de NetworkManager.

Ce problème peut être partiellement atténué si vous définissez private_interfaces="*" dans /etc/resolvconf.conf [4]. Toutes les requêtes pour des domaines qui ne sont pas dans la liste des domaines de recherche ne seront pas transférées. Elles seront traitées selon la configuration du résolveur local, par exemple, transférées vers un autre serveur DNS ou résolues récursivement à partir de la racine DNS.

Serveurs DNS personnalisés

Définition de serveurs DNS globaux personnalisés

Pour définir des serveurs DNS pour toutes les connexions, spécifiez-les dans NetworkManager.conf(5) en utilisant la syntaxe servers=serveripaddress1,serveripaddress2,serveripaddress3 dans une section nommée [global-dns-domain-*]. Par exemple :

/etc/NetworkManager/conf.d/dns-servers.conf
[global-dns-domain-*]
servers=::1,127.0.0.1
Note:
Configuration de serveurs DNS personnalisés dans une connexion
Configuration des serveurs DNS personnalisés dans une connexion (GUI)

La configuration dépend du type de l'interface utilisée ; le processus implique généralement un clic droit sur l'applet, l'édition (ou la création) d'un profil, puis la sélection du type DHCP comme Automatique (spécifier les adresses). Les adresses DNS doivent être saisies et se présentent généralement sous cette forme : 127.0.0.1, DNS-server-one, ....

Configuration des serveurs DNS personnalisés dans une connexion (nmcli / fichier de connexion)

Pour configurer des serveurs DNS par connexion, vous pouvez utiliser le champ dns (et les dns-search et dns-options associés) dans les paramètres de connexion.

Si method est défini sur auto (lorsque vous utilisez DHCP), vous devez définir ignore-auto-dns sur yes.

/etc/resolv.conf

Le mode de gestion de NetworkManager /etc/resolv.conf est configuré avec le paramètre main.rc-manager. networkmanager lui attribue la valeur symlink au lieu de la valeur par défaut en amont auto. Ce paramètre et ses valeurs sont documentés dans la page de manuel NetworkManager.conf(5).

Astuce: L'utilisation d'openresolv permet à NetworkManager de coexister avec d'autres logiciels supportant resolvconf ou, par exemple, d'exécuter un cache DNS local et un résolveur split-DNS pour lequel openresolv a un subscriber. Notez que le transfert conditionnel n'est pas encore entièrement pris en charge lorsque vous utilisez NetworkManager avec openresolv.

NetworkManager offre également des crochets via des scripts dits "dispatcher" qui peuvent être utilisés pour modifier le fichier /etc/resolv.conf après des changements de réseau. Consultez #Services réseau avec le répartiteur NetworkManager et NetworkManager(8) pour plus d'informations.

Note:
  • Si NetworkManager est configuré pour utiliser dnsmasq ou systemd-resolved, les adresses de bouclage appropriées seront écrites dans /etc/resolv.conf.
  • Le fichier resolv.conf que NetworkManager écrit ou écrirait dans /etc/resolv.conf se trouve à /run/NetworkManager/resolv.conf.
  • Un fichier resolv.conf contenant les serveurs de noms et les domaines de recherche acquis se trouve à /run/NetworkManager/no-stub-resolv.conf.
/etc/resolv.conf indépendant

Pour empêcher NetworkManager de toucher à /etc/resolv.conf, définissez main.dns=none avec un fichier de configuration dans /etc/NetworkManager/conf.d/ :

/etc/NetworkManager/conf.d/dns.conf
[main]
dns=none
Astuce: Vous pouvez également définir main.systemd-resolved=false, afin que NetworkManager n'envoie pas la configuration DNS à systemd-resolved.
Note: Voir #Mise en cache du DNS et transfert conditionnel, pour configurer NetworkManager en utilisant d'autres backends DNS comme dnsmasq et systemd-resolved, au lieu d'utiliser main.dns=none.

Après cela, /etc/resolv.conf peut être un lien symbolique cassé que vous devrez supprimer. Il suffit alors de créer un nouveau fichier /etc/resolv.conf.

Utilisez openresolv
Note: NetworkManager ne prend pas en charge l'utilisation de l'interface resolvconf de systemd-resolved (resolvectl(1) § COMPATIBILITY WITH RESOLVCONF(8)) qui est fournie par systemd-resolvconf.

Pour configurer NetworkManager afin d'utiliser openresolv, définissez main.rc-manager=resolvconf avec un fichier de configuration dans /etc/NetworkManager/conf.d/ :

/etc/NetworkManager/conf.d/rc-manager.conf
[main]
rc-manager=resolvconf

Pare-feu

Vous pouvez assigner une zone firewalld en fonction de votre connexion actuelle. Par exemple, un pare-feu restrictif lorsque vous êtes au travail, et un autre moins restrictif lorsque vous êtes à la maison.

Cela peut également être fait avec le répartiteur NetworkManager.

Services réseau avec le répartiteur NetworkManager

Il existe un certain nombre de services réseau que vous ne voudrez pas voir fonctionner avant que NetworkManager ne fasse apparaître une interface. NetworkManager a la capacité de démarrer les services lorsque vous vous connectez à un réseau et de les arrêter lorsque vous vous déconnectez (par exemple, lorsque vous utilisez NFS, SMB et NTPd).

Pour activer cette fonctionnalité, activez et démarrez NetworkManager-dispatcher.service.

Une fois le service activé, des scripts peuvent être ajoutés au répertoire /etc/NetworkManager/dispatcher.d.

Les scripts doivent appartenir à root, sinon le dispatcher ne les exécutera pas. Pour plus de sécurité, définissez la propriété du groupe à root également :

# chown root:root /etc/NetworkManager/dispatcher.d/10-script.sh

Assurez-vous que le fichier est exécutable.

Les scripts seront exécutés dans l'ordre alphabétique au moment de la connexion, et dans l'ordre alphabétique inverse au moment de la déconnexion. Pour s'assurer de l'ordre dans lequel ils seront exécutés, il est courant d'utiliser des caractères numériques avant le nom du script (par exemple, 10-portmap ou 30-netfs). (ce qui assure que le portmapper est en place avant que les montages NFS soient tentés).

Les scripts recevront les arguments suivants :

  • Nom de l'interface: e.g. eth0
  • Action : up, down, vpn-up, vpn-down, ... (consultez NetworkManager(8) pour la liste complète)
Attention: Si vous vous connectez à des réseaux étrangers ou publics, faites attention aux services que vous lancez et aux serveurs auxquels vous pensez qu'ils seront disponibles pour se connecter. Vous pourriez créer une faille de sécurité en démarrant les mauvais services alors que vous êtes connecté à un réseau public.

Éviter le délai d'attente du répartiteur

Si ce qui précède fonctionne, alors cette section n'est pas pertinente. Cependant, il existe un problème général lié à l'exécution de scripts de répartiteur qui prennent plus de temps à être exécutés. Initialement, un délai d'attente interne de trois secondes seulement était utilisé. Si le script appelé n'était pas terminé à temps, il était tué. Plus tard, le délai d'attente a été étendu à environ 20 secondes (consultez le Bugtracker pour plus d'informations). Si le délai d'attente pose toujours problème, une solution consiste à utiliser un fichier de substitution pour NetworkManager-dispatcher.service pour qu'il reste actif après la sortie :

/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf
[Service]
RemainAfterExit=yes

Maintenant, démarrez et activez le service NetworkManager-dispatcher modifié.

Attention: L'ajout de la ligne RemainAfterExit empêchera le répartiteur de se fermer. Malheureusement, le répartiteur doit se fermer avant de pouvoir exécuter vos scripts à nouveau. Avec cette ligne, le distributeur ne s'arrêtera pas, mais il ne se fermera pas non plus, ce qui signifie que les scripts ne seront exécutés qu'une fois par démarrage. Par conséquent, n'ajoutez pas cette ligne à moins que le délai d'attente ne cause définitivement un problème.

Exemples de répartiteurs

Monter un répertoire distant avec sshfs

Comme le script est exécuté dans un environnement très restrictif, vous devez exporter SSH_AUTH_SOCK afin de vous connecter à votre agent SSH. Il existe différentes façons de procéder, consultez ce message pour plus d'informations. L'exemple ci-dessous fonctionne avec GNOME Keyring, et vous demandera le mot de passe s'il n'est pas déjà déverrouillé. Si NetworkManager se connecte automatiquement à la connexion, il est probable que gnome-keyring n'ait pas encore démarré et que l'exportation échoue (d'où le sleep). Le UUID à faire correspondre peut être trouvé avec la commande nmcli connection status ou nmcli connection list.

#!/bin/sh
USER='username'
REMOTE='user@host:/remote/path'
LOCAL='/local/path'

interface=$1 status=$2
if [ "$CONNECTION_UUID" = "uuid" ]; then
  case $status in
    up)
      # sleep 10
      SSH_AUTH_SOCK=$(find /tmp -maxdepth 1 -type s -user "$USER" -name 'ssh')
      export SSH_AUTH_SOCK
      su "$USER" -c "sshfs $REMOTE $LOCAL"
      ;;
    down)
      fusermount -u "$LOCAL"
      ;;
  esac
fi

Montage de partages SMB

Certains partages SMB ne sont disponibles que sur certains réseaux ou emplacements (par exemple, à la maison). Vous pouvez utiliser le répartiteur pour monter uniquement les partages SMB qui sont présents à votre emplacement actuel.

Le script suivant vérifiera si nous sommes connectés à un réseau spécifique et montera les partages en conséquence :

/etc/NetworkManager/dispatcher.d/30-mount-smb.sh
#!/bin/sh

# Find the connection UUID with "nmcli connection show" in terminal.
# All NetworkManager connection types are supported: wireless, VPN, wired...
if [ "$2" = "up" ]; then
  if [ "$CONNECTION_UUID" = "uuid" ]; then
    mount /your/mount/point & 
    # add more shares as needed
  fi
fi

Le script suivant démontera tous les partages SMB avant une déconnexion initiée par logiciel d'un réseau spécifique :

/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh
#!/bin/sh

if [ "$CONNECTION_UUID" = "uuid" ]; then
  umount -a -l -t cifs
fi
Note: Veillez à ce que ce script soit situé dans le sous-répertoire pre-down.d comme indiqué ci-dessus, sinon il démontera tous les partages lors de tout changement d'état de connexion.

Le script suivant tentera de démonter tous les partages SMB suite à une déconnexion inattendue d'un réseau spécifique :

/etc/NetworkManager/dispatcher.d/40-umount-smb.sh
#!/bin/sh

if [ "$CONNECTION_UUID" = "uuid" ] ; then
  if [ "$2" = "down" ] ; then
    umount -a -l -t cifs
  fi
fi
Note:
  • Depuis NetworkManager 0.9.8, les événements pre-down et down ne sont pas exécutés lors de l'arrêt ou du redémarrage, consultez ce rapport de bug pour plus d'informations.
  • Les scripts umount précédents sont toujours susceptibles de laisser les applications accédant au montage en suspens.

Une alternative est d'utiliser le script consulté dans NFS (Français)#Utilisation d'un répartiteur NetworkManager :

/etc/NetworkManager/dispatcher.d/30-smb.sh
#!/bin/sh

# Find the connection UUID with "nmcli con show" in terminal.
# All NetworkManager connection types are supported: wireless, VPN, wired...
WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9"

if [ "$CONNECTION_UUID" = "$WANTED_CON_UUID" ]; then
    
    # Script parameter $1: NetworkManager connection name, not used
    # Script parameter $2: dispatched event
    
    case "$2" in
        "up")
            mount -a -t cifs
            ;;
        "down"|"pre-down"|"vpn-pre-down")
            umount -l -a -t cifs >/dev/null
            ;;
    esac
fi
Note: Ce script ignore les montages avec l'option noauto, supprimez cette option de montage ou utilisez auto pour permettre au répartiteur de gérer ces montages.

Créez un lien symbolique dans /etc/NetworkManager/dispatcher.d/pre-down/ pour attraper les événements pre-down :

# ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh

Montage des partages NFS

Consultez NFS#Utilisation d'un répartiteur NetworkManager.

Utiliser le distributeur pour basculer automatiquement le sans fil en fonction du câble LAN branché

L'idée est d'activer le Wi-Fi uniquement lorsque le câble LAN est débranché (par exemple, lors du détachement du dock d'un ordinateur portable), et que le Wi-Fi soit automatiquement désactivé, une fois le câble LAN rebranché.

Créez le script dispatcher suivant [5], en remplaçant LAN_interface par le vôtre.

Notez qu'il existe une sécurité intégrée pour le cas où l'interface LAN a été connectée lors de la dernière mise sous tension de l'ordinateur, puis déconnectée alors que l'ordinateur était éteint. Dans ce cas, la radio serait toujours éteinte lorsque l'ordinateur est rallumé et avec une interface LAN déconnectée, vous n'auriez pas de réseau.

/etc/NetworkManager/dispatcher.d/wlan_auto_toggle.sh
#!/bin/sh

if [ "$1" = "LAN_interface" ] ; then
    case "$2" in
        up)
            nmcli radio wifi off
            ; ;
        down)
            nmcli radio wifi on
            ; ;
    esac
elif [ "$(nmcli -g GENERAL.STATE device show LAN_interface)" = "20 (indisponible)" ] ; then
    nmcli radio wifi on
fi
Note: Vous pouvez obtenir une liste des interfaces en utilisant nmcli. Les interfaces Ethernet (LAN) commencent par en, par exemple enp0s5

Utiliser le dispatcher pour se connecter à un VPN après l'établissement d'une connexion réseau

Dans cet exemple, nous voulons nous connecter automatiquement à une connexion VPN préalablement définie après nous être connectés à un réseau Wi-Fi spécifique. La première chose à faire est de créer le script dispatcher qui définit ce qu'il faut faire après que nous soyons connectés au réseau.

Note: Ce script nécessite wireless_tools afin d'utiliser iwgetid.
/etc/NetworkManager/dispatcher.d/vpn-up
#!/bin/sh
VPN_NAME="name of VPN connection defined in NetworkManager"
ESSID="Wi-Fi network ESSID (not connection name)"

interface=$1 status=$2
case $status in
  up|vpn-down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      nmcli connection up id "$VPN_NAME"
    fi
    ;;
  down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      if nmcli connection show --active | grep "$VPN_NAME"; then
        nmcli connection down id "$VPN_NAME"
      fi
    fi
    ;;
esac

Si vous souhaitez tenter de vous connecter automatiquement au VPN pour tous les réseaux Wi-Fi, vous pouvez utiliser la définition suivante de l'ESSID : ESSID=$(iwgetid -r). N'oubliez pas de définir les autorisations du script en adéquation.

La tentative de connexion avec le script ci-dessus peut encore échouer avec NetworkManager-dispatcher.service se plaignant de l'absence de secrets VPN valides, à cause de la façon dont les secrets VPN sont stockés. Heureusement, il existe différentes options pour donner au script ci-dessus l'accès à votre mot de passe VPN.

1 : L'une d'entre elles nécessite l'édition du fichier de configuration de la connexion VPN pour que NetworkManager stocke les secrets par lui-même plutôt que dans un trousseau qui sera inaccessible pour root : ouvrez /etc/NetworkManager/system-connections/name of your VPN connection et changez les password-flags et secret-flags de 1 à 0.

Si cela ne suffit pas, vous devrez peut-être créer un fichier de mots de passe dans un emplacement sûr, avec les mêmes autorisations et le même propriétaire que le script du répartiteur, contenant les éléments suivants :

/path/to/passwd-file
vpn.secrets.password:YOUR_PASSWORD

Le script doit être modifié en conséquence, afin qu'il récupère le mot de passe dans le fichier :

/etc/NetworkManager/dispatcher.d/vpn-up
#!/bin/sh
VPN_NAME="name of VPN connection defined in NetworkManager"
ESSID="Wi-Fi network ESSID (not connection name)"

interface=$1 status=$2
case $status in
  up|vpn-down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      nmcli connection up id "$VPN_NAME" passwd-file /path/to/passwd-file
    fi
    ;;
  down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      if nmcli connection show --active | grep "$VPN_NAME"; then
        nmcli connection down id "$VPN_NAME"
      fi
    fi
    ;;
esac

2 : Alternativement, changez les password-flags et mettez le mot de passe directement dans le fichier de configuration en ajoutant la section vpn-secrets :

 [vpn]
 ....
 password-flags=0
 
 [vpn-secrets]
 mot de passe=votre_mot_de_passe.
Note: Il peut maintenant être nécessaire de rouvrir l'éditeur de connexion NetworkManager et de sauvegarder à nouveau les mots de passe/secrets VPN.

Utiliser dispatcher pour désactiver IPv6 sur les connexions de fournisseurs VPN

De nombreux fournisseurs de VPN commerciaux ne prennent en charge que l'IPv4. Cela signifie que tout le trafic IPv6 contourne le VPN et le rend pratiquement inutile. Pour éviter cela, dispatcher peut être utilisé pour désactiver tout le trafic IPv6 pendant la durée d'une connexion VPN.

/etc/NetworkManager/dispatcher.d/10-vpn-ipv6
#!/bin/sh

case "$2" dans
	vpn-up)
		echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
		; ;
	vpn-down)
		echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6
		; ;
esac

OpenNTPD

Consultez OpenNTPD#Using NetworkManager dispatcher.

Configurer dynamiquement les serveurs NTP reçus via DHCP avec systemd-timesyncd

Lors de l'itinérance entre différents réseaux (par exemple, la LAN d'une entreprise, le WiFi à la maison, divers autres WiFi de temps en temps), vous pourriez vouloir définir le(s) serveur(s) NTP utilisé(s) par timesyncd à ceux fournis par DHCP. Cependant, NetworkManager lui-même n'est pas capable de communiquer avec systemd-timesyncd pour définir le(s) serveur(s) NTP.

Le répartiteur peut contourner ce problème.

Créez le répertoire «overlay» (de recouvrement) pour votre configuration systemd-timesyncd /etc/systemd/timesyncd.conf.d s'il n'existe pas déjà. A l'intérieur de /etc/NetworkManager/dispatcher.d, mettez ce qui suit :

/etc/NetworkManager/dispatcher.d/10-update-timesyncd
#!/bin/sh

[ -z "$CONNECTION_UUID" ] && exit 0
INTERFACE="$1"
ACTION="$2"

case $ACTION in
up | dhcp4-change | dhcp6-change)
	[ -n "$DHCP4_NTP_SERVERS" ] || exit
	mkdir /etc/systemd/timesyncd.conf.d
	cat <<-THE_END >"/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
		[Time]
		NTP=$DHCP4_NTP_SERVERS
	THE_END
	systemctl restart systemd-timesyncd.service
	;;
down)
	rm -f "/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
	systemctl stop systemd-timesyncd.service
	;;
esac

Chaque fois que NetworkManager établit une nouvelle connexion réseau (ACTION=up) ou obtient une mise à jour pour une connexion existante (ACTION=dhcp4-change ou ACTION=dhcp6-change) et que les données de connexion fournies contiennent des informations sur le ou les serveurs NTP (DHCP4_NTP_SERVERS), un fichier de configuration de superposition spécifique à la connexion est écrit dans /etc/systemd/timesyncd. conf.d, contenant le ou les serveurs NTP fournis. Lorsqu'une connexion est supprimée (ACTION=down), le fichier de recouvrement spécifique à la connexion est supprimé. Après chaque modification de la configuration de systemd-timesyncd, ce service est redémarré pour prendre en compte la configuration mise à jour. L'utilisation de fichiers de configuration spécifiques à la connexion est intentionnelle afin que lorsque deux ou plusieurs connexions sont gérées par NetworkManager en parallèle, les différents noms de serveurs NTP dans la configuration ne soient pas écrasés car les actions up, dhcp4-change, dhcp6-change et down pourraient intervenir dans un ordre arbitraire.

Test

Les applets NetworkManager sont conçus pour se charger lors de la connexion, donc aucune autre configuration ne devrait être nécessaire pour la plupart des utilisateurs. Si vous avez déjà désactivé vos anciens paramètres réseau et vous êtes déconnecté de votre réseau, vous pouvez maintenant tester si NetworkManager fonctionnera. Démarrez d'abord NetworkManager.service.

Certains applets vous fourniront un fichier .desktop afin que l'applet NetworkManager puisse être chargé via le menu de l'application. Si ce n'est pas le cas, vous devrez soit découvrir la commande à utiliser, soit vous déconnecter et vous reconnecter pour lancer l'applet. Une fois l'applet lancée, elle commencera probablement à interroger les connexions réseau pour une auto-configuration avec un serveur DHCP.

Pour démarrer l'applet GNOME dans des gestionnaires de fenêtres non conformes à xdg comme awesome :

nm-applet --sm-disable &.

Pour les adresses IP statiques, vous devrez configurer NetworkManager pour les comprendre. Le processus consiste généralement à cliquer avec le bouton droit de la souris sur l'applet et à sélectionner quelque chose comme 'Edit Connections'.

Trucs et astuces

Mots de passe Wi-Fi chiffrés

Par défaut, NetworkManager stocke les mots de passe en texte clair dans les fichiers de connexion à /etc/NetworkManager/system-connections/. Pour imprimer les mots de passe stockés, utilisez la commande suivante :

# grep -r '^psk=' /etc/NetworkManager/system-connections/}}.

Les mots de passe sont accessibles à l'utilisateur root dans le système de fichiers et aux utilisateurs ayant accès aux paramètres via l'interface graphique (par exemple, nm-applet).

Il est préférable d'enregistrer les mots de passe sous forme chiffrée dans un trousseau de clés plutôt qu'en texte clair. L'inconvénient de l'utilisation d'un trousseau de clés est que les connexions doivent être configurées pour chaque utilisateur.

Utilisation du porte-clés GNOME

Le daemon du porte-clés doit être lancé et le porte-clés doit être déverrouillé pour que ce qui suit fonctionne.

De plus, NetworkManager doit être configuré pour ne pas stocker le mot de passe de tous les utilisateurs. En utilisant le network-manager-applet de GNOME, exécutez nm-connection-editor à partir d'un terminal, sélectionnez une connexion réseau, cliquez sur Edit, sélectionnez l'onglet Wifi-Security et cliquez sur l'icône de droite du mot de passe et cochez Store the password only for this user.

Utilisation du portefeuille KDE

En utilisant plasma-nm de KDE, cliquez sur l'applet, cliquez sur l'icône Settings en haut à droite, cliquez sur une connexion réseau, dans l'onglet General settings, décochez all users may connect to this network. Si l'option est cochée, les mots de passe seront toujours stockés en texte clair, même si un daemon de trousseau de clés est en cours d'exécution.

Si l'option était sélectionnée précédemment et que vous la décochez, vous devrez peut-être utiliser l'option reset pour faire disparaître le mot de passe du fichier. Sinon, supprimez d'abord la connexion et configurez-la à nouveau.

Partage de la connexion Internet par Wi-Fi

Vous pouvez partager votre connexion Internet (par exemple 3G ou filaire) en quelques clics. Veuillez noter qu'un pare-feu peut interférer avec le partage d'Internet.

Vous aurez besoin d'une carte Wi-Fi qui prend en charge le mode AP, consultez Software access point#Wi-Fi device must support AP mode pour plus de détails.

Installez le paquet dnsmasq pour pouvoir réellement partager la connexion. Notez que NetworkManager démarre sa propre instance de dnsmasq, indépendamment de dnsmasq.service, en tant que serveur DHCP. Consultez #dnsmasq pour les avertissements.

Créez la connexion partagée :

  • Cliquez sur l'applet et choisissez Create new wireless network.
  • Suivez l'assistant (choisissez WPA2 ou supérieur, assurez-vous d'utiliser un mot de passe d'au moins 8 caractères, les longueurs inférieures échoueront).
    • Choisissez soit Hotspot ou Ad-hoc comme mode Wi-Fi.

La connexion sera enregistrée et restera stockée pour la prochaine fois que vous en aurez besoin.

Note: Android ne prend pas en charge la connexion aux réseaux Ad-hoc. Pour partager une connexion avec Android, utilisez le mode infrastructure (c'est-à-dire réglez le mode Wi-Fi sur "Hotspot").

Partage d'une connexion Internet via Ethernet

Scénario : votre appareil dispose d'une connexion Internet par Wi-Fi et vous souhaitez partager la connexion Internet avec d'autres appareils par Ethernet.

Configuration requise :

  • Installez les paquets dnsmasq et nm-connection-editor pour pouvoir réellement partager la connexion. Notez que NetworkManager démarre sa propre instance de dnsmasq, indépendamment de dnsmasq.service, en tant que serveur DHCP. Consultez #dnsmasq pour les mises en garde.
  • Votre appareil connecté à Internet et les autres appareils sont connectés par un câble Ethernet approprié (cela signifie généralement un câble croisé ou un commutateur entre les deux).
  • Le partage d'Internet n'est pas bloqué par un pare-feu.

Étapes :

  • Lancez nm-connection-editor dans le terminal.
  • Ajoutez une nouvelle connexion Ethernet.
  • Donnez-lui un nom sensé. Par exemple "Internet partagé".
  • Allez dans "Paramètres IPv4".
  • Pour "Method :", sélectionnez "Shared to other computers".
  • Sauvegardez.

Maintenant vous devriez avoir une nouvelle option "Shared Internet" sous les connexions câblées dans NetworkManager.

Se connecter au réseau avec un secret au démarrage

Par défaut, NetworkManager ne se connectera pas aux réseaux nécessitant un secret automatiquement au démarrage. Cela est dû au fait qu'il verrouille ces connexions à l'utilisateur qui les établit par défaut, ne se connectant qu'après qu'il se soit connecté. Pour changer cela, faites ce qui suit :

  1. Cliquez du bouton droit de la souris sur l'icône nm-applet dans votre panneau et sélectionnez "Éditer les connexions", puis ouvrez l'onglet "Sans fil".
  2. Sélectionnez la connexion avec laquelle vous voulez travailler et cliquez sur le bouton "Modifier".
  3. Cochez les cases "Connecter automatiquement" et "Disponible pour tous les utilisateurs".
  4. En outre, assurez-vous que sous "Sécurité Wi-Fi", "Stocker le mot de passe pour tous les utilisateurs (non chiffré)" est sélectionné.

Déconnectez-vous et reconnectez-vous pour terminer.

OpenConnect avec mot de passe dans KWallet

Bien que vous puissiez saisir les deux valeurs au moment de la connexion, plasma-nm 0.9.3.2-1 et plus sont capables de récupérer le nom d'utilisateur et le mot de passe OpenConnect directement à partir de KWallet.

Ouvrez "KDE Wallet Manager" et recherchez votre connexion VPN OpenConnect sous "Network Management|Maps". Cliquez sur "Show values" et entrez vos informations d'identification dans la clé "VpnSecrets" dans ce formulaire (remplacez username et password en conséquence) :

form:main:username%SEP%username%SEP%form:main:password%SEP%password.

La prochaine fois que vous vous connecterez, le nom d'utilisateur et le mot de passe devraient apparaître dans la boîte de dialogue "Secrets VPN".

Ignorer des périphériques spécifiques

Parfois, on peut souhaiter que NetworkManager ignore des périphériques spécifiques et n'essaie pas de configurer des adresses et des routes pour eux. Vous pouvez rapidement et facilement ignorer les dispositifs par MAC ou nom d'interface en utilisant ce qui suit dans /etc/NetworkManager/conf.d/unmanaged.conf :

[keyfile]
unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0

Après avoir modifié le fichier, exécutez nmcli general reload en tant que root. Ensuite, vous devriez être en mesure de configurer les interfaces sans que NetworkManager ne modifie ce que vous avez défini.

Configuration de la randomisation des adresses MAC

Note: La désactivation de la randomisation de l'adresse MAC peut être nécessaire pour obtenir une connexion de liaison (stable) [6] et/ou des réseaux qui restreignent les périphériques en fonction de leur adresse MAC ou qui ont une capacité réseau limitée.

La randomisation de l'adresse MAC peut être utilisée pour améliorer la confidentialité en ne divulguant pas votre adresse MAC réelle au réseau.

NetworkManager prend en charge deux types de randomisation des adresses MAC : la randomisation pendant le balayage ou pour les connexions réseau. Les deux modes peuvent être configurés en modifiant /etc/NetworkManager/NetworkManager.conf ou en créant un fichier de configuration distinct dans /etc/NetworkManager/conf.d/, ce qui est recommandé car le fichier de configuration susmentionné peut être écrasé par NetworkManager.

La randomisation pendant l'analyse Wi-Fi est activée par défaut, mais elle peut être désactivée en ajoutant les lignes suivantes à /etc/NetworkManager/NetworkManager.conf ou à un fichier de configuration dédié sous /etc/NetworkManager/conf.d :

/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[périphérique]
wifi.scan-rand-mac-address=no

La randomisation MAC pour les connexions réseau peut être réglée sur différents modes pour les interfaces sans fil et Ethernet. Consultez le post du blog de GNOME pour plus de détails sur les différents modes.

En termes de randomisation MAC, les modes les plus importants sont stable et random. stable génère une adresse MAC aléatoire lorsque vous vous connectez à un nouveau réseau et associe les deux de manière permanente. Cela signifie que vous utiliserez la même adresse MAC chaque fois que vous vous connecterez à ce réseau. En revanche, random génère une nouvelle adresse MAC à chaque fois que vous vous connectez à un réseau, nouveau ou déjà connu. Vous pouvez configurer la randomisation MAC en ajoutant la configuration souhaitée sous /etc/NetworkManager/conf.d :

/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device-mac-randomization]
# "yes" est déjà la valeur par défaut pour le scan
wifi.scan-rand-mac-address=yes
 
[connection-mac-randomization]
# Randomiser le MAC pour chaque connexion ethernet
ethernet.cloned-mac-address=random
# Générer un MAC aléatoire pour chaque WiFi et associer les deux de façon permanente.
wifi.cloned-mac-address=stable

Consultez l'article suivant du blog de GNOME pour plus de détails.

Activer les extensions de confidentialité IPv6

Consultez IPv6#NetworkManager.

Configurer un DUID unique par connexion

L'identifiant unique DHCPv6 (DUID) est une valeur utilisée par le client DHCPv6 pour s'identifier auprès des serveurs DHCPv6. NetworkManager prend en charge 3 types de DUID :

  • DUID-UUID (RFC 6355) : généré à partir d'un Universally Unique IDentifier (UUID).
  • DUID-LL (RFC 3315) : généré à partir de l'adresse Link-Layer (soit l'adresse MAC).
  • DUID-LLT (RFC 3315) : généré à partir de l'adresse Link-Layer plus un timestamp.

Si le client DHCP du NetworkManager interne est utilisé (par défaut), il s'identifiera avec un DUID-UUID global et permanent généré à partir du machine-id (/etc/machine-id). Cela signifie que toutes les connexions partagent le même UUID, ce qui peut constituer une atteinte à la vie privée.

Heureusement, NetworkManager est capable de fournir des DUIDs uniques par connexion, dérivés du stable-id de la connexion et d'une clé unique par hôte. Vous pouvez activer cela en ajoutant la configuration suivante sous /etc/NetworkManager/conf.d :

/etc/NetworkManager/conf.d/duid.conf
[connexion]
ipv6.dhcp-duid=stable-uuid

Les valeurs stable-ll et stable-llt sont également prises en charge. Pour plus d'informations, lisez la description de dhcp-duid dans nm-settings(5) § ipv6 setting.

Travailler avec des connexions câblées

Par défaut, NetworkManager génère un profil de connexion pour chaque connexion Ethernet filaire qu'il trouve. Au moment où il génère la connexion, il ne sait pas s'il y aura d'autres adaptateurs Ethernet disponibles. Par conséquent, il appelle la première connexion filaire "Connexion filaire 1". Vous pouvez éviter de générer cette connexion en configurant no-auto-default. (consultez NetworkManager.conf(5)), ou en la supprimant tout simplement. NetworkManager se souviendra alors de ne plus générer de connexion pour cette interface.

Vous pouvez également modifier la connexion (et la persister sur le disque) ou la supprimer. NetworkManager ne générera pas à nouveau une nouvelle connexion. Ensuite, vous pouvez changer le nom en ce que vous voulez. Vous pouvez utiliser quelque chose comme nm-connection-editor pour cette tâche.

Utiliser iwd comme backend Wi-Fi

Note:
  • N'activez pas iwd.service ou ne configurez pas manuellement iwd. NetworkManager le lancera et le gérera lui-même.
  • Prenez en compte les problèmes connus avant de passer à iwd.

Pour activer le backend expérimental iwd, installez iwd puis créez le fichier de configuration suivant :

/etc/NetworkManager/conf.d/wifi_backend.conf
[device]
wifi.backend=iwd

Alternativement, vous pouvez installer networkmanager-iwdAUR, un paquet modifié configuré pour construire NetworkManager travaillant exclusivement avec iwd, avec la différence principale que iwd est requis et que wpa_supplicant peut être désinstallé après la construction.

Note: Il se peut que vous deviez convertir les profils réseau NetworkManager existants après être passé à iwd.

Exécution dans un espace de nom de réseau

Si vous souhaitez exécuter NetworkManager à l'intérieur d'un espace de noms réseau (par exemple, pour gérer un périphérique spécifique qui doit être utilisé par des applications sélectionnées), mettez le périphérique hors service avant de le déplacer vers l'espace de noms :

$ ip link set dev MY_DEVICE down
$ ip link set dev MY_DEVICE netns MY_NAMESPACE
$ ip netns exec MON_Espace_de_Nom. NetworkManager
...
$ ip netns exec MY_NAMESPACE killall NetworkManager

sinon NetworkManager échouera plus tard à établir la connexion avec une erreur device is strictly unmanaged.

Connexion automatique au VPN

NetworkManager peut être configuré pour se connecter automatiquement à un VPN lors de la connexion à l'Internet, sur une base par réseau. La connexion VPN elle-même peut être ajoutée dans l'interface NetworkManager de GNOME, mais pour qu'elle utilise automatiquement le VPN, il faut utiliser nmcli. D'autres interfaces peuvent ne pas avoir cette limitation.

Tout d'abord, assurez-vous de rendre la connexion VPN disponible pour tous les utilisateurs. Dans GNOME, il suffit de cocher une case dans l'onglet details. Sous l'onglet Identity, dans le champ du mot de passe, cliquez sur l'icône à droite dans le champ, et réglez-le sur Store the password for all users.

Trouvez ensuite l'UUID de la connexion VPN, et ajoutez-le à connection.secondaries de la connexion Internet :

# UUID=$(nmcli --get-values connection.uuid connection show name-of-VPN-connection)
# nmcli connection modify name-of-Internet-connection connection.secondaries "$UUID"

Maintenant, lorsque NetworkManager est redémarré et que vous vous connectez à la connexion Internet que vous avez configurée, vous devriez être automatiquement connecté au VPN.

Dépannage

Pas d'invite pour le mot de passe des réseaux Wi-Fi sécurisés

Lorsque vous essayez de vous connecter à un réseau Wi-Fi sécurisé, aucune demande de mot de passe ne s'affiche et aucune connexion n'est établie. Cela se produit lorsqu'aucun paquet de trousseau de clés n'est installé. Une solution simple consiste à installer gnome-keyring. Si vous souhaitez que les mots de passe soient stockés sous forme chiffrée, suivez GNOME Keyring pour configurer le gnome-keyring-daemon.

Gestion du réseau désactivée

Lorsque NetworkManager s'arrête mais que le fichier pid (état) n'est pas supprimé, vous consulterez un message Gestion réseau désactivée. Si cela se produit, supprimez le fichier manuellement :

# rm /var/lib/NetworkManager/NetworkManager.state

Problèmes avec le client DHCP interne

Si vous avez des problèmes pour obtenir une adresse IP en utilisant le client DHCP interne, envisagez d'utiliser un autre client DHCP, consultez #Client DHCP pour les instructions. Cette solution de contournement pourrait résoudre les problèmes des grands réseaux sans fil comme eduroam.

Problèmes DHCP avec dhclient

Si vous avez des problèmes pour obtenir une adresse IP via DHCP, essayez d'ajouter ce qui suit à votre /etc/dhclient.conf :

 interface "eth0" {
   send dhcp-client-identifier 01:aa:bb:cc:dd:ee:ff ;
 }

aa:bb:cc:dd:ee:ff est l'adresse MAC de cette NIC. L'adresse MAC peut être trouvée en utilisant la commande ip link show interface du paquet iproute2.

Modem 3G non détecté

Consultez Mobile broadband modem#NetworkManager.

Désactiver le WLAN sur les ordinateurs portables

Parfois, NetworkManager ne fonctionne pas lorsque vous désactivez votre adaptateur Wi-Fi avec un interrupteur sur votre ordinateur portable et que vous essayez de le réactiver par la suite. Ceci est souvent un problème avec rfkill. Pour vérifier si le pilote notifie rfkill de l'état de l'adaptateur sans fil, utilisez :

$ watch -n1 rfkill list all

Si un identifiant reste bloqué après avoir allumé l'adaptateur, vous pouvez essayer de le débloquer manuellement avec (où X est le numéro de l'identifiant fourni par la sortie ci-dessus) :

# rfkill event unblock X

Les paramètres d'adresse IP statique se transforment en DHCP

En raison d'un bogue non résolu, lors de la modification des connexions par défaut à une adresse IP statique, nm-applet peut ne pas stocker correctement le changement de configuration, et reviendra au DHCP automatique.

Pour contourner ce problème, vous devez modifier la connexion par défaut (par exemple "Auto eth0") dans nm-applet, changer le nom de la connexion (par exemple "my eth0"), décocher la case "Available to all users", modifier les paramètres de votre adresse IP statique comme vous le souhaitez, et cliquer sur Appliquer. Cela permettra d'enregistrer une nouvelle connexion avec le nom donné.

Ensuite, vous voudrez faire en sorte que la connexion par défaut ne se connecte pas automatiquement. Pour ce faire, exécutez nm-connection-editor. (not en tant que root). Dans l'éditeur de connexion, modifiez la connexion par défaut (par exemple "Auto eth0") et décochez "Connecter automatiquement". Cliquez sur Appliquer et fermez l'éditeur de connexion.

Impossible de modifier les connexions en tant qu'utilisateur normal

Consultez #Set up PolicyKit permissions.

Oublier le réseau sans fil caché

Comme les réseaux cachés ne sont pas affichés dans la liste de sélection de la vue Sans fil, ils ne peuvent pas être oubliés (supprimés) avec l'interface graphique. Vous pouvez en supprimer un avec la commande suivante :

# rm /etc/NetworkManager/system-connections/SSID

Cela fonctionne également pour toute autre connexion.

Le VPN ne fonctionne pas dans GNOME

Lorsque vous configurez des connexions OpenConnect ou vpnc dans NetworkManager en utilisant GNOME, il arrive que vous ne consultiez jamais la boîte de dialogue et que l'erreur suivante apparaisse dans /var/log/errors.log :

localhost NetworkManager[399]: <error> [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request.

Ceci est dû au fait que l'applet NetworkManager de GNOME s'attend à ce que les scripts de dialogue se trouvent dans /usr/lib/gnome-shell, alors que les paquets de NetworkManager les placent dans /usr/lib/networkmanager. Comme correction "temporaire" (ce bogue existe depuis un certain temps maintenant), faites le(s) lien(s) symbolique(s) suivant(s) :

  • Pour OpenConnect : ln -s /usr/lib/networkmanager/nm-openconnect-auth-dialog /usr/lib/gnome-shell/
  • Pour le VPNC (c'est-à-dire le VPN Cisco) : ln -s /usr/lib/networkmanager/nm-vpnc-auth-dialog /usr/lib/gnome-shell/.

Il peut être nécessaire d'effectuer cette opération pour d'autres plugins VPN de NetworkManager, mais ce sont les deux plus courants.

Impossible de se connecter aux réseaux sans fil européens visibles

Les puces WLAN sont livrées avec un domaine réglementaire par défaut. Si votre point d'accès ne fonctionne pas dans ces limites, vous ne pourrez pas vous connecter au réseau. Il est facile de résoudre ce problème :

  1. Installez wireless-regdb
  2. Décommentez le code pays correct dans /etc/conf.d/wireless-regdom.
  3. Redémarrez le système, car le paramètre n'est lu qu'au démarrage.

La connexion automatique au VPN au démarrage ne fonctionne pas

Le problème se produit lorsque le système (c'est-à-dire NetworkManager s'exécutant en tant qu'utilisateur root) tente d'établir une connexion VPN, mais le mot de passe n'est pas accessible car il est stocké dans le trousseau GNOME d'un utilisateur particulier.

Une solution est de garder le mot de passe de votre VPN en clair, comme décrit dans l'étape (2.) de #Utiliser le dispatcher pour se connecter à un VPN après l'établissement d'une connexion réseau.

Vous n'avez plus besoin d'utiliser le répartiteur décrit à l'étape (1.) pour vous connecter automatiquement, si vous utilisez la nouvelle option "auto-connect VPN" de l'interface graphique nm-applet.

Goulot d'étranglement Systemd

Avec le temps, les fichiers journaux (/var/log/journal) peuvent devenir très volumineux. Cela peut avoir un impact important sur les performances de démarrage lors de l'utilisation de NetworkManager, consultez : Systemd (Français)#Le temps de démarrage augmente avec le temps.

Déconnexions régulières du réseau, latence et paquets perdus (WiFi)

NetworkManager effectue un scan toutes les 2 minutes.

Certains pilotes WiFi ont des problèmes lors de la recherche de stations de base lorsqu'ils sont connectés/associés. Les symptômes incluent des déconnexions/reconnexions VPN et des paquets perdus, des pages Web qui ne se chargent pas puis se rafraîchissent correctement.

L'exécution de journalctl -f en tant que root indiquera que cela se produit, des messages comme les suivants seront contenus dans les journaux à intervalles réguliers.

NetworkManager[410] : <info> (wlp3s0) : roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none))

Si le roaming n'est pas important, le comportement de balayage périodique peut être désactivé en verrouillant le BSSID du point d'accès dans le profil de connexion WiFi.

Impossible d'allumer le Wi-Fi avec un ordinateur portable Lenovo (IdeaPad, Legion, etc.)

Il y a un problème avec le module ideapad_laptop sur certains modèles Lenovo, le pilote Wi-Fi signalant à tort un blocage logiciel. La carte peut toujours être manipulée avec netctl, mais les gestionnaires comme NetworkManager ne fonctionnent pas. Vous pouvez vérifier que c'est bien là le problème en consultant la sortie de rfkill list après avoir basculé votre commutateur matériel et en consultant la persistance du blocage logiciel.

Décharger le module ideapad_laptop devrait résoudre ce problème. (attention : ceci peut désactiver le clavier et le touchpad de l'ordinateur portable aussi !).

Désactiver l'envoi du nom d'hôte

NetworkManager envoie par défaut le nom d'hôte au serveur DHCP. L'envoi du nom d'hôte ne peut être désactivé que par connexion et non globalement (Rapport n°584).

Pour désactiver l'envoi du nom d'hôte au serveur DHCP pour une connexion spécifique, ajoutez ce qui suit à votre fichier de connexion réseau :

/etc/NetworkManager/system-connections/your_connection_file
...
[ipv4]
dhcp-send-hostname=false
...
[ipv6]
dhcp-send-hostname=false
...

nm-applet disparaît dans i3wm

Si vous utilisez le xfce4-notifyd.service pour les notifications, éditez l'unité et ajoutez ce qui suit :

/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf
[Service]
Environnement="DISPLAY=:0.0"

Après avoir rechargé les daemons, redémarrez xfce4-notifyd.service. Quittez i3 et redémarrez-le. L'applet devrait apparaître dans la zone de notification.

Les icônes de la barre d'état système de nm-applet s'affichent mal

Actuellement, les icônes de la barre d'état système de nm-applet sont dessinées l'une sur l'autre, c'est-à-dire que l'icône indiquant la puissance du réseau sans fil peut s'afficher au-dessus de l'icône indiquant l'absence de connexion filaire. Il s'agit apparemment d'un bogue/problème de GTK3 : https://gitlab.gnome.org/GNOME/gtk/issues/1280 .

Une version corrigée de GTK3 existe dans AUR, qui apparemment corrige le bogue de l'icône de la barre d'état : gtk3-classicAUR.

Unité dbus-org.freedesktop.resolve1.service non trouvée

Si systemd-resolved.service n'est pas démarré, NetworkManager essaiera de le démarrer en utilisant D-Bus et échouera :

dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
dbus-daemon[991]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Unit dbus-org.freedesktop.resolve1.service not found.
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")

Ceci est dû au fait que NetworkManager essaiera d'envoyer les informations DNS à systemd-resolved sans tenir compte du paramètre main.dns= dans NetworkManager.conf(5). [7]

Ceci peut être désactivé avec un fichier de configuration dans /etc/NetworkManager/conf.d/ :

/etc/NetworkManager/conf.d/no-systemd-resolved.conf
[main]
systemd-resolved=false

Consultez FS#62138.

Les secrets étaient requis, mais non fournis

Si vous tentez de vous connecter à un réseau en utilisant nmcli device wifi connect SSID password password et que vous recevez l'erreur suivante :

Error: Connection activation failed: (7) Secrets were required, but not provided

Cette erreur peut avoir de nombreuses causes et vous devez lire le journal (filtrez-le avec -u NetworkManager). Par exemple, si NetworkManager a pris trop de temps pour établir la connexion, il croira que le mot de passe est incorrect :

NetworkManager[1372]: <warn>  [1643991888.3808] device (wlan0): Activation: (wifi) association took too long
NetworkManager[1372]: <info>  [1643991888.3809] device (wlan0): state change: config -> need-auth (reason 'none', sys-iface-state: 'managed')
NetworkManager[1372]: <warn>  [1643991888.3838] device (wlan0): Activation: (wifi) asking for new secrets

Vous pouvez essayer de supprimer le profil de connexion et d'en créer un nouveau :

$ nmcli connection delete SSID (supprimer le SSID)
$ nmcli device wifi connect SSID password mot de passe.

Vous pouvez également essayer de désactiver la randomisation des adresses MAC :

/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device]
wifi.scan-rand-mac-address=no

Connexion WPA Enterprise avec iwd

Si vous essayez de vous connecter à un réseau WPA Enterprise comme 'eduroam' avec NetworkManager avec le backend iwd, vous obtiendrez l'erreur suivante de NetworkManager :

 Connection 'eduroam' is not avialable on device wlan0 because profile is not compatible with device (802.1x connections must have IWD provisioning files)

Ceci est dû au fait que NetworkManager ne peut pas configurer un réseau WPA Enterprise. Vous devez donc le configurer en utilisant un fichier de configuration iwd /var/lib/iwd/essid.8021x comme décrit dans iwd#WPA Enterprise.

Échec de la demande de secrets VPN

Si vous obtenez cette erreur :

Failed to request VPN secrets #1 : No agents were available for this request.

C'est soit parce que le mot de passe est vide ou que vous devez configurer les permissions PolicyKit.

Voir aussi