GNU/Linux >> Tutoriels Linux >  >> Linux

Démarrer avec NetworkManager sous Linux

La plupart des distributions Linux actuelles  utilisez NetworkManager pour créer et gérer les connexions réseau. Cela signifie que je dois le comprendre en tant qu'administrateur système. Dans une série d'articles, je partagerai ce que j'ai appris à ce jour et pourquoi je pense que NetworkManager est une amélioration par rapport aux options précédentes.

Red Hat a introduit NetworkManager en 2004 pour simplifier et automatiser la configuration et les connexions réseau, en particulier les connexions sans fil. L'intention était de soulager les utilisateurs de la tâche de configurer manuellement chaque nouveau réseau sans fil avant de l'utiliser. NetworkManager peut gérer les connexions réseau câblées sans fichiers de configuration d'interface, bien qu'il utilise des fichiers de connexion réseau pour les connexions sans fil.

Dans cet article, je vais passer en revue ce qu'est NetworkManager et comment l'utiliser pour afficher les connexions réseau et les périphériques pour les hôtes Linux. Je vais même résoudre quelques problèmes dans le processus.

Ce que NetworkManager remplace

NetworkManager remplace les outils de gestion de réseau précédents. La commande de configuration d'interface d'origine, ifconfig , et ses fichiers de configuration d'interface sont obsolètes. Vous pouvez le voir dans le ifconfig les pages de manuel, qui contiennent une note indiquant exactement cela.

L'ip la commande remplace ifconfig commande et effectue essentiellement les mêmes tâches. Les deux commandes coexistent depuis un certain temps maintenant, permettant aux administrateurs système d'utiliser l'une ou l'autre, ce qui maintient les scripts dépendants de ifconfig fonctionnel. Bien que ses pages de manuel ne l'indiquent pas encore, le ifconfig est obsolète, et NetworkManager l'a rendu ainsi dans la pratique.

Il est maintenant temps de réécrire ces scripts, car l'utilisation des commandes NetworkManager est la plus logique.

Comment fonctionne NetworkManager

NetworkManager est exécuté en tant que service systemd et est activé par défaut. NetworkManager fonctionne avec D-Bus pour détecter et configurer les interfaces réseau lorsqu'elles sont connectées à l'ordinateur Linux. Cette gestion plug-and-play des interfaces réseau facilite la connexion à de nouveaux réseaux, câblés et sans fil, pour l'utilisateur. Lorsque des interfaces réseau précédemment installées sont détectées au démarrage de Linux, elles sont traitées exactement comme un périphérique branché une fois que le système est déjà opérationnel. Traiter tous les appareils comme plug-and-play dans chaque instance facilite la gestion de ces appareils pour le système d'exploitation, car il n'y a qu'une seule base de code pour gérer les deux ensembles de circonstances.

Le démon udev crée une entrée pour chaque carte d'interface réseau (NIC) installée sur le système dans le fichier de règles réseau. D-Bus signale la présence d'un nouveau périphérique réseau, câblé ou sans fil, à NetworkManager. NetworkManager écoute ensuite le trafic sur le D-Bus et répond en créant une configuration pour ce nouveau périphérique. Une telle configuration est, par défaut, stockée uniquement dans la RAM et n'est pas permanente. Il doit être créé à chaque démarrage de l'ordinateur.

NetworkManager utilise les informations de D-Bus pour initialiser chaque NIC. Il recherche d'abord les fichiers de configuration qui fournissent une configuration statique plus permanente. Lorsqu'il est informé d'un nouveau périphérique, NetworkManager vérifie l'existence d'anciens fichiers de configuration d'interface réseau (ifcfg-* ) dans /etc/sysconfig/network-scripts . Le plugin ifcfg-rh permet l'utilisation de ces fichiers hérités pour la rétrocompatibilité.

Ensuite, NetworkManager recherche ses propres fichiers de connexion d'interface, situés dans /etc/NetworkManager/system-connections directory annuaire. La plupart des distributions, y compris Fedora, conservent leurs fichiers de connexion réseau dans /etc/NetworkManager/system-connections directory répertoire, en utilisant le nom du réseau comme nom de fichier.

Par exemple, mon ordinateur portable System76 Oryx Pro utilisait à l'origine POP!_OS . Je l'ai remplacé par Fedora, qui est actuellement à la version 35, et chaque connexion sans fil que j'ai établie avec lui a un fichier dans /etc/NetworkManager/system-connections directory . Ceux-ci conservent un enregistrement de l'identifiant SSID (Service Set Identifier) ​​et des mots de passe sans fil pour chaque réseau. Le serveur DHCP (Dynamic Host Configuration Protocol) du routeur sans fil fournit le reste des données de configuration réseau pour ces connexions sans fil. Pour des raisons de sécurité, ces fichiers contenant des mots de passe, ils ne sont accessibles en lecture/écriture que par l'utilisateur root, tout comme les fichiers de compte système /etc/passwd et /etc/shadow .

Le répertoire /etc/NetworkManager/system-connections directory sur cet ordinateur portable contenait des fichiers pour le réseau câblé ainsi que chacun des réseaux sans fil avec lesquels je me suis connecté. La structure de ces fichiers est différente de l'ancien ifcfg fichiers, mais ils sont au format texte brut ASCII et sont lisibles et facilement compréhensibles.

Ce processus est sensible à la séquence. Le premier ensemble de fichiers de configuration trouvé est utilisé. Si aucun fichier de configuration n'est trouvé, NetworkManager génère une configuration à l'aide des données d'un serveur DHCP. Si un fichier de configuration d'interface n'existe pas, le branchement d'un nouveau périphérique ou la connexion à un nouveau réseau sans fil amène udev à informer NetworkManager du nouveau périphérique ou de la nouvelle connexion sans fil. Dans Fedora jusqu'à la version 28, NetworkManager crée le nouveau fichier de configuration d'interface. À partir de Fedora 29 et supérieur, NetworkManager crée uniquement la connexion et ne crée pas de fichier de configuration d'interface.

Si aucun fichier de configuration ou serveur DHCP n'est trouvé, aucune connexion réseau n'est possible.

Affichage de la configuration de l'interface

Le programme d'interface de ligne de commande de NetworkManager, nmcli, fournit plusieurs options pour déterminer l'état actuel de tout matériel d'interface réseau installé sur l'hôte ainsi que les connexions actuellement actives. Le programme nmcli peut gérer la mise en réseau sur n'importe quel hôte, qu'il utilise une interface utilisateur graphique (GUI) ou non, il peut donc également gérer des hôtes distants via une connexion shell sécurisée (SSH). Il fonctionne à la fois sur les connexions filaires et sans fil.

Je vais commencer par quelques informations de base sur l'utilisation de l'outil nmcli. J'utilise un système Fedora que j'ai configuré en tant que routeur, car un exemple avec plusieurs interfaces réseau sera plus intéressant qu'un simple hôte de poste de travail avec une seule interface.

Je vais commencer par la commande la plus simple, nmcli sans options. Cette commande simple affiche des informations similaires à ifconfig désormais obsolète commande, y compris le nom et le modèle de la carte réseau, l'adresse MAC (Media Access Control) et l'adresse IP (protocole Internet), et quelle carte réseau est configurée comme passerelle par défaut. Il montre également la configuration DNS pour chaque interface.

La commande nmcli nécessite des privilèges d'administrateur. La plupart des distributions recommandent d'utiliser sudo mais je viens de passer à la root utilisateur.

$ su -
# nmcli
enp4s0 :connecté à enp4s0
        "Realtek RTL8111/8168/8411"
        ethernet (r8169), 84:16:F9:04 :  /64
        route6 ::/0

enp1s0 :connecté à enp1s0
        "Realtek RTL8111/8168/8411"
        Ethernet (r8169), 84:16:F9 :03:E9:89, hw, mtu 1500
        inet4 192.168.10.1/24
        route4 192.168.10.0/24
        inet6 fe80::8616:f9ff:fe03:e989/64
        route6 fe80::/64

enp2s0 :connecté à enp2s0
        "Realtek RTL8111/8168/8411"
        ethernet (r8169), 84:16:F9:03 :FD :85, hw, mtu 1 500
        inet4 192.168.0.254/24
        route4 192.168.0.0/24
        inet 6 fe80::8616:f9ff:fe03:fd85/64
        route6 fe80::/64

eno1 :indisponible
        "Intel I219-V"
        ethernet ( e1000e), 04:D9:F5:1C:D5:C5, hw, mtu 1500

lo :non géré
        "lo"
        loopback (inconnu), 00:00 :00:00:00:00, sw, mtu 65536

Configuration DNS :
       serveurs :192.168.0.52 8.8.8.8 8.8.4.4
        interface :enp4s0

        serveurs :192.168.0.52 8.8.8.8
        interface :enp1s0

        serveurs :192.168.0.52 8.8.8.8
        interface :enp2s0

Utilisez la commande nmcli device show pour obtenir des informations complètes sur les périphériques connus et nmcli connection show pour obtenir un aperçu des profils de connexion actifs. Consultez les pages de manuel nmcli(1) et nmcli-examples(7) pour des détails d'utilisation complets. Vous pouvez également émettre la commande d'aide, nmcli -h , en tant qu'utilisateur root pour afficher le nmcli de base de niveau supérieur commandes :

# nmcli -h
Utilisation :nmcli [OPTIONS] OBJET { COMMANDE | help }

OPTIONS
  -a, --ask                                demander les paramètres manquants
  -c, --colors auto|yes|no                s'il faut utiliser des couleurs dans la sortie
-e, --escape yes|no                      échapper les séparateurs de colonnes dans les valeurs
  -f, --fields |all|common      spécifier les champs à afficher
  -g, --get- valeurs |tous|raccourci  commun pour -m tabular -t -f
  -h, --help                               imprimer cette aide
  -m, --mode tabular|multiline             mode de sortie
-O, --overView Mode d'aperçu
-P, --Pretty Pretty Sortie
-S, --Show-Secrets permet d'afficher les mots de passe
-T, de la sortie TERSE État général et opérations de NetworkManager
  n[etworking]    contrôle global du réseau
  r[adio]         Commutateurs radio NetworkManager
  c[onnection]    Connexions de NetworkManager
  d[evice]        appareils gérés par NetworkManager
  a[gent]         Agent secret NetworkManager ou agent polkit
  m[monitor]       surveiller les modifications apportées à NetworkManager

Notez que les objets peuvent être épelés ou abrégés jusqu'au premier caractère. Ces objets sont tous uniques, donc seul le premier caractère est requis pour spécifier un seul objet.

Essayez nmcli g pour afficher l'état général.

# nmcli g
ÉTAT      CONNECTIVITÉ  WIFI-HW  WIFI     WWAN-HW  WWAN    
connecté  full          activé  activé  activé  activé

Cette sortie ne montre pas grand-chose. Je sais également que l'hôte, dans ce cas, n'a pas de matériel WiFi, c'est donc un résultat trompeur. Vous ne devez pas utiliser le nmcli g commande pour cette raison. Les meilleures commandes d'objet sont c [connexion] et d [evice], qui sont ceux que j'utilise le plus souvent.

 # NMCLI C 
Nom Uuid Type Dispositif
ENP4S0 B325FD44-30B3-C744-3FC9-E154B78E8C82 Ethernet ENP4S0
ENP1S0 C0AB6B8C-0AC-A1B4-1C47-EFE4B2D1191F Ethernet ENP1S0
ENP2S0 8C6FD7B1-AB62-A383-5B96-46E083E04BB1 Ethernet ENP2S0
ENP0SS20F0U7 0F5427BB-F8B1-5D51-8F74-AC246B0B00C5 Ethernet -
ENP1S0 ABF4C85B-57CC-4484-4FA9-B4A71689C359 Ethernet -

# NMCLI D
Connexion d'état de type d'appareil
ENP4S0 Ethernet connecté ENP4S0
ENP1S0 Ethernet connecté ENP1S0
ENP2S0 Ethernet connecté ENP2S0
ENO1 Ethernet indisponible - lo      bouclage  non géré    --        

Il y a beaucoup d'informations vraiment intéressantes ici. Notez que les deux dernières entrées utilisant le c La commande d'objet n'a aucune entrée dans la colonne de l'appareil. Ce résultat peut signifier soit qu'ils ne sont pas actifs ou qu'ils n'existent pas, soit qu'il y a une ou plusieurs erreurs de configuration.

Les informations supplémentaires que nous obtenons en utilisant le d La commande d'objet n'affiche même pas le périphérique enp0s20f0u7. Il montre également le périphérique eno1 (un périphérique de la carte mère), qui n'a pas été affiché à l'aide du c commande d'objet.

Votre sortie devrait ressembler davantage à ceci, bien que le nom du périphérique soit différent, et cela dépendra de l'emplacement spécifique sur le bus PCI auquel la carte réseau est connectée.

 # NMCLI C 
Nom Uuid Type Dispositif
Connexion câblée 1 6E6F63B9-6D9E-3D13-A3CD-D54B4CA2C3D2 Ethernet ENP0SS3
# NMCLI D
Connexion d'état de type
enp0s3  ethernet  connecté  Connexion filaire 1
lo      bouclage  non géré  --                

Il semble que j'ai quelques anomalies à explorer. Tout d'abord, je veux savoir quel périphérique enp0s20f0u7 se trouve dans la liste de connexion. Étant donné que NetworkManager ne reconnaît pas ce périphérique dans la liste des périphériques, il existe probablement un fichier de configuration réseau dans /etc/sysconfig/network-scripts même si aucun périphérique matériel de ce type n'existe sur l'hôte. J'ai vérifié ce répertoire, trouvé le fichier de configuration de l'interface et affiché le contenu.

# ls -l
total 20
-rw-r--r-- 1 racine racine 352 Jan 2  2021 ifcfg-eno1
-rw-r--r-- 1 racine racine 419 5 janvier 2021 ifcfg-enp0s20f0u7
-rw-r--r-- 1 racine racine 381 11 janvier 2021 ifcfg-enp1s0
-rw-r--r-- 1 racine racine 507 juillet 27  2020 ifcfg-enp2s0
-rw-r--r-- 1 root root 453 27 juillet  2020 ifcfg-enp4s0

cat ifcfg-enp0s20f0u7
# Fichier de configuration d'interface pour ifcfg -enp0s20f0u7
# Ceci est un dongle Ethernet USB Gb
# Cette interface est pour les routeurs sans fil
# Correct à partir de 20210105
TYPE="Ethernet"
BOOTPROTO="statique"
NM_CONTROLLED="oui"
DEFROUTE="non"
NAME=enp0s20f0u7
UUID="fa2117dd-6c7a-44e0-9c9d-9c662716a352"
AU DÉMARRAGE ="oui"
HWADDR=8c:ae:4c:ff:8b:3a
IPADDR=192.168.10.1
PREFIX=24
DNS1=192.168.0.52
DNS2=8.8.8.8

Après avoir examiné ce fichier, je me suis rappelé que j'avais utilisé un dongle USB Gigabit pendant un certain temps car la carte réseau de la carte mère installée sur cet hôte avait apparemment échoué. C'était une solution rapide, et j'ai ensuite installé une nouvelle carte réseau sur le bus de la carte mère PCIe, afin de pouvoir supprimer ce fichier de configuration d'interface. Je ne l'ai pas supprimé, cependant; Je l'ai déplacé vers /root répertoire au cas où j'en aurais encore besoin.

Notez les commentaires que j'ai utilisés pour m'assurer que mon futur moi ou un autre administrateur système comprendrait pourquoi ce fichier existe.

La deuxième anomalie est la raison pour laquelle l'entrée pour enp1s0 apparaît deux fois. Cela ne peut se produire que lorsque le nom de la carte réseau est spécifié dans plusieurs fichiers de configuration d'interface. J'ai donc essayé les étapes suivantes, et bien sûr, enp1s0 apparaît par erreur dans le ifcfg-eno1 fichier de configuration ainsi que le ifcfg-enp1s0 fichier.

# grep enp1s0 *
ifcfg-eno1:NAME=enp1s0
ifcfg-enp1s0:# Fichier de configuration d'interface pour enp1s0 / 192.168.10.1
ifcfg-enp1s0:NAME=enp1s0

# cat ifcfg-eno1
## Fichier de configuration d'interface pour eno1 / 192.168.10.1
## Cette interface est destinée aux routeurs sans fil
## Correct à partir de 20200727
TYPE="Ethernet"
BOOTPROTO="statique"
NM_CONTROLLED="oui"
DEFROUTE="non"
NAME=enp1s0
ONBOOT="oui"
HWADDR=04:d9:f5:1c:d5:c5
IPADDR=192.168.10.1
PREFIX=24
DNS1=192.168.0.52
DNS2=8.8. 8.8

J'ai changé le NAME en NAME=eno1 et redémarré NetworkManager. Les modifications apportées aux fichiers de configuration de l'interface ne sont pas activées tant que je n'ai pas redémarré NetworkManager. Les résultats de l'appareil et de la connexion ressemblent maintenant à ceci. Je n'utilise toujours pas la carte réseau intégrée, ce qui est probablement bien maintenant que j'ai supprimé le mauvais nom du ifcfg-eno1 fichier de configuration des interfaces. Cela nécessitera un temps d'arrêt pour ce routeur.

# systemctl restart NetworkManager
# nmcli d
DEVICE  TYPE      STATE        CONNEXION
enp4s0  ethernet  connecté    enp4s0    
enp1s0  ethernet  connecté    enp1s0    
enp2s0  enp  ethernet    connecté Eno1 Ethernet indisponible -
Loopback non gérée non gérée -
# NMCLI C
Nom UUID Type Dispositif
ENP4S0 B325FD44-30B3-C744-3FC9-E154B78E8C82 Ethernet ENP4S0
ENP1S0 C0AB6B8C-0ACEC-A1B4-1C47-EFE4B2D1191F Ethernet ENP1S0
ENP2S0 8C6FD7B1-AB62-A383-5B96-46E083E04BB1 Ethernet ENP2S0
ENO1 ABF4C85B-57CC-4484-4FA9-B4A71689C359 Ethernet -

Une autre option consiste à afficher uniquement les connexions actives. C'est une bonne option avec des résultats propres, mais elle peut également masquer d'autres problèmes si vous l'utilisez exclusivement.

 # NMCLI Connection Affichage 
Nom Uuid Type Dispositif
ENP4S0 B325FD44-30B3-C744-3FC9-E154B78E8C82 Ethernet ENP4S0B6B8C-0AC-A1B4-1C47-EFE4B2D1191F Ethernet ENP1S0
enp2s0  8c6fd7b1-ab62-a383-5b96-46e083e04bb1  ethernet  enp2s0

Après avoir changé le nom de l'appareil dans le ifcfg-eno1 fichier sur le bon, je soupçonne que la carte mère NIC, eno1, fonctionnera à nouveau. J'expérimenterai cela la prochaine fois que j'aurai une session de maintenance sur cet hôte.

N'est-ce pas plus intéressant qu'un hôte avec une seule carte réseau ? Et j'ai trouvé quelques problèmes dans le processus.

L'utilisation des outils NetworkManager pour gérer la mise en réseau est traitée dans le document Red Hat Enterprise Linux (RHEL) 8 "Configuration et gestion de la mise en réseau".

Réflexions finales

Je suis un fan de la philosophie "si ce n'est pas cassé, ne le répare pas". Cependant, même l'utilisation la plus simple de NetworkManager à partir de la ligne de commande, en affichant l'état actuel des périphériques et des connexions réseau, m'a montré deux anomalies dans mes configurations précédentes que j'avais manquées. Je suis maintenant fan de NetworkManager. Les anciens outils étaient bons, mais NetworkManager est meilleur; les informations supplémentaires qu'il fournit sont inestimables.

Dans la partie 2 de cette série, j'aborderai la gestion des interfaces réseau.


Linux
  1. Premiers pas avec les pare-feux Linux

  2. Comment avez-vous commencé avec Linux ?

  3. Comment démarrer avec Deepin Terminal sur Ubuntu Linux

  4. Démarrer avec Latex sous Linux

  5. Connexion de Linux Mint au réseau WiFi

Démarrer avec GNUPlot

Premiers pas avec GIT sous Linux

Premiers pas avec le système d'exploitation Linux

Tutoriel Podman - Premiers pas avec Podman

Network Manager sur Linux avec des exemples

Comment démarrer avec Arch Linux