NetworkManager (Français)
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.
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.
- 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 non trouvée pour plus d'informations.
Interfaces supplémentaires
- nm-connection-editor pour une interface utilisateur graphique,
-
network-manager-applet pour une applet de la barre d'état système (
nm-applet
).
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 :
- networkmanager-openconnect pour OpenConnect
- networkmanager-openvpn pour OpenVPN
- networkmanager-pptp pour PPTP Client
- networkmanager-strongswan pour strongSwan
- networkmanager-vpnc
- networkmanager-fortisslvpn-gitAUR[broken link: package not found]
- networkmanager-iodine-gitAUR
- networkmanager-libreswanAUR
- networkmanager-l2tp
- networkmanager-ssh-gitAUR
- network-manager-sstp
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 commandenmcli 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 fichierWired connection 2.nmconnection
correspondant .
N'oubliez pas de recharger le fichier de configuration avecnmcli 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
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
--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
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#Set the hostname.
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 :
-
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. -
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 groupenetwork
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[broken link: package not found] 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#Autostart).
$ 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 (un alias CNAME de redirect.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
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
- 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.
/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.
- 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 comprisdnsmasq.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
- Si vous utilisez NetworkManager's dnsmasq or systemd-resolved plugin ou openresolv subscribers, ne spécifiez pas d'adresses de bouclage avec l'option
servers=
, car cela peut interrompre la résolution DNS. - Les serveurs spécifiés ne sont pas envoyés à systemd-resolved, les serveurs DNS de la connexion sont utilisés à la place.
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).
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.
- 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
main.systemd-resolved=false
, afin que NetworkManager n'envoie pas la configuration DNS à systemd-resolved.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
- Ne définissez pas
main.rc-manager=resolvconf
lorsque vous utilisez systemd-resolved, assurez-vous plutôt de créer correctement le lien symbolique /etc/resolv.conf ou de configurer NetworkManager pour utiliser systemd-resolved explicitement. - Assurez-vous que le paquet systemd-resolvconf n'est pas installé lorsque systemd-resolved n'est pas utilisé. Si
systemd-resolved.service
n'est pas démarré, il cassera tous les logiciels de réseau (pas seulement NetworkManager) qui utilisent 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)
É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é.
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
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
- 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#Using a NetworkManager dispatcher :
/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
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#Using a NetworkManager dispatcher.
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
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.
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.
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 -p /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 restart 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.
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 :
- 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". - Sélectionnez la connexion avec laquelle vous voulez travailler et cliquez sur le bouton "Modifier".
- Cochez les cases "Connecter automatiquement" et "Disponible pour tous les utilisateurs".
- 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
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
- 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[dead link 2024-10-12 ⓘ], 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.
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 ; }
Où 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 #Configurer les permissions de PolicyKit.
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 :
- Installez wireless-regdb
- Décommentez le code pays correct dans
/etc/conf.d/wireless-regdom
. - 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.