GNU/Linux >> Tutoriels Linux >  >> Linux

Gérer les connexions réseau à partir de la ligne de commande Linux avec nmcli

La commande nmcli vous permet d'exploiter la puissance de l'outil NetworkManager directement à partir de la ligne de commande Linux. Il fait partie intégrante du package NetworkManager qui utilise une interface de programmeur d'application (API) pour accéder aux fonctionnalités de NetworkManager.

nmcli a été publié en 2010 et remplace d'autres modes de configuration des interfaces et des connexions réseau, tels que ifconfig. Parce qu'il s'agit d'un outil d'interface de ligne de commande (CLI) conçu pour être utilisé dans des fenêtres de terminal et des scripts, il est idéal pour les administrateurs système travaillant sur des systèmes sans interface utilisateur graphique (GUI).

syntaxe ncmli

La commande nmcli accepte les options qui modifient le comportement de nmcli, sections qui indiquent à nmcli quelles fonctionnalités vous souhaitez utiliser, et les actions qui lui disent ce que vous voulez qu'il fasse :

$ nmcli <options> <section> <action>

En savoir plus sur les administrateurs système

  • Activer le blog Sysadmin
  • L'entreprise automatisée :un guide pour gérer l'informatique avec l'automatisation
  • Livre électronique :Automatisation Ansible pour les administrateurs système
  • Témoignages du terrain :guide de l'administrateur système sur l'automatisation informatique
  • eBook :Un guide de Kubernetes pour les SRE et les administrateurs système
  • Derniers articles sur l'administrateur système

Il y a huit sections, chacune liée à un ensemble spécifique d'actions réseau :

  • Aide fournit de l'aide sur les commandes et l'utilisation de ncmcli.
  • Général récupère le statut et la configuration globale de NetworkManager.
  • Mise en réseau fournit des commandes pour interroger l'état d'une connexion réseau et activer ou désactiver les connexions.
  • Radio fournit des commandes pour interroger l'état d'une connexion réseau Wi-Fi et activer ou désactiver les connexions.
  • Surveiller fournit des commandes pour surveiller l'activité de NetworkManager et observer les changements d'état des connexions réseau.
  • Connexion fournit des commandes pour activer et désactiver les interfaces réseau, ajouter de nouvelles connexions et supprimer des connexions existantes.
  • Appareil est principalement utilisé pour modifier les paramètres associés à un appareil (par exemple, le nom de l'interface) ou pour connecter un appareil à l'aide d'une connexion existante.
  • Secret enregistre nmcli en tant qu'agent secret NetworkManager à l'écoute des messages secrets. Ceci est très rarement nécessaire car nmcli le fait automatiquement lors de la connexion aux réseaux.

Exemples simples

Dans un premier temps, vérifiez que NetworkManager est en cours d'exécution et que nmcli peut communiquer avec :

$ nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled

La reconnaissance est souvent la première partie de l'administration d'un système. Pour répertorier tous les profils de connexion réseau en mémoire et sur disque :

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

Cette commande utilise le show action de la connection rubrique.

La machine de test utilisée pour cet exemple exécute Ubuntu 20.04. Trois adaptateurs réseau sont installés :enp0s3 , enp0s8 , et enp0s9 .

Gestion des connexions

Il est important de comprendre la nomenclature de nmcli. Une connexion réseau est quelque chose qui contient toutes les informations sur une connexion. Vous pouvez le considérer comme une configuration réseau . Une connexion encapsule toutes les informations relatives à une connexion, y compris la couche de liaison de données et les informations d'adressage IP. C'est la couche 2 et la couche 3 dans le modèle de réseau OSI.

Lorsque vous configurez la mise en réseau sous Linux, vous configurez généralement des connexions qui se lieront éventuellement aux périphériques réseau, qui sont les interfaces réseau installées sur un ordinateur. Lorsqu'une connexion est utilisée par un appareil, la connexion est dite active ou vers le haut . Le contraire d'actif est inactif ou vers le bas .

Ajout de connexions réseau

La commande ncmli vous permet de créer rapidement des connexions réseau et de spécifier des éléments de leur configuration en même temps. Pour ajouter une nouvelle connexion en utilisant la connexion filaire 2, enp0s8 , vous devez utiliser sudo :

$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.

Le type demande une connexion Ethernet, et l'option ifname L'option (nom de l'interface) spécifie le périphérique d'interface réseau que vous souhaitez que la connexion utilise.

Vérifiez ce qui s'est passé :

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  --  

Votre nouvelle connexion, ethernet-enp0s8 , a été créé. Son identifiant universel unique (UUID) a été attribué et le type de connexion est Ethernet. Activez-le avec le up commande suivie du nom de la connexion (ou de l'UUID) :

$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

Vérifiez à nouveau vos connexions actives :

$ nmcli connection show --active
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

Votre nouvelle connexion, ethernet-enp0s8 , est maintenant actif et lié au enp0s8 périphérique d'interface réseau.

Régler les connexions

La commande ncmli facilite l'ajustement des paramètres des connexions existantes. Vous souhaitez peut-être basculer une interface réseau du protocole DHCP (Dynamic Host Configuration Protocol) vers une adresse IP statique.

Supposons que vous ayez besoin d'une adresse IP fixe de 192.168.4.26 pour votre nouvelle connexion. Pour y parvenir, vous devez émettre deux commandes. Un pour définir l'adresse IP et un pour définir la méthode de connexion d'obtention d'une adresse IP sur manual :

$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manual

N'oubliez pas de spécifier le masque de sous-réseau. Sur ce réseau de test, c'est 255.255.255.0 , ou /24 dans le routage inter-domaine sans classe (CIDR).

Pour que vos modifications prennent effet, vous devez rebondir la connexion en l'arrêtant et en la rétablissant. La première commande coupe la connexion et la seconde la rétablit :

$ nmcli connection down ethernet-enp0s8
Connection 'ethernet-enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

Si vous souhaitez configurer la connexion pour utiliser DHCP, utilisez auto au lieu de manual :

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Gestion des appareils

Les commandes dans le device section de la commande nmcli vous permet de gérer les interfaces réseau installées sur votre ordinateur.

Vérification de l'état de l'appareil

Pour vérifier rapidement l'état de toutes les interfaces réseau :

$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION        
enp0s3  ethernet  connected  Wired connection 1
enp0s8  ethernet  connected  ethernet-enp0s8    
enp0s9  ethernet  connected  Wired connection 3
lo      loopback  unmanaged  --  

Afficher les détails de l'appareil

Pour examiner les détails d'une interface réseau, utilisez le show action de l'device section. Si vous ne fournissez pas de nom d'appareil, les détails de tous les appareils sont récupérés et affichés. Vous pouvez faire défiler les pages vers le haut et vers le bas pour les consulter.

Jetez un œil à enp0s8 , l'appareil utilisé par votre nouvelle connexion. Vérifiez que l'adresse IP utilisée est l'adresse que vous avez précédemment demandée :

$ nmcli device show enp0s8
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:81:16:20
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ethernet-enp0s8
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.4.26/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.4.0/24, nh = 0.0.0.0, mt = 103
IP6.ADDRESS[1]:                         fe80::6d70:90de:cb83:4491/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 103
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

La réponse est assez détaillée. Il affiche entre autres :

  • Le nom de l'interface réseau , qui dans ce cas est enp0s8 , qui lui est assigné par udev.
  • Le type de connexion réseau , qui dans ce cas est une connexion Ethernet physique.
  • L'adresse MAC (Media Access Control) de l'appareil , qui identifie l'appareil sur le réseau.
  • L'unité de transmission maximale, qui correspond à la taille de la plus grande unité de données de protocole pouvant être transmise en une seule transaction. Tout ce qui est plus grand que cela est divisé en plusieurs paquets.
  • Cet appareil est actuellement connecté .
  • Le nom de la connexion utiliser cet appareil est ethernet-enp0s8 .
  • L'adresse IP de la connexion utilisant cet appareil. Comme demandé, il est défini sur 192.168.4.26/24 .

Les autres informations concernent les paramètres de routage et de passerelle par défaut qui ont été appliqués à cette connexion, selon le réseau auquel elle est connectée.

l'éditeur interactif de nmcli

Bien qu'il s'agisse d'un outil en ligne de commande, nmcli inclut un éditeur interactif élémentaire. Le edit l'action ouvrira l'éditeur interactif sur la connexion que vous spécifiez :

$ nmcli connection edit ethernet-enp0s8

Il affiche une petite quantité de texte d'aide, puis l'invite de commande nmcli :

===| nmcli interactive connection editor |===

Editing existing '802-3-ethernet' connection: 'ethernet-enp0s8'

Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>

Si vous tapez print et appuyez sur Entrée , nmcli listera toutes les propriétés associées à la connexion. Il existe de nombreuses propriétés. Vous pouvez faire défiler la liste de haut en bas :

===============================================================================
                 Connection profile details (ethernet-enp0s8)
===============================================================================
connection.id:                          ethernet-enp0s8
connection.uuid:                        09d26960-25a0-440f-8b20-c684d7adc2f5
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp0s8
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --

Changez votre connexion pour utiliser DHCP. Tapez goto ipv4 et appuyez sur Entrée :

nmcli> goto ipv4
You may edit the following properties: method, dns, dns-search, dns-options, dns-priority, addresses, gateway, routes, route-metric, route-table, routing-rules, ignore-auto-routes, ignore-auto-dns, dhcp-client-id, dhcp-iaid, dhcp-timeout, dhcp-send-hostname, dhcp-hostname, dhcp-fqdn, dhcp-hostname-flags, never-default, may-fail, dad-timeout
nmcli ipv4>

La propriété que vous souhaitez modifier est method . Tapez set method auto et appuyez sur Entrée :

nmcli ipv4> set method auto
Do you also want to clear 'ipv4.addresses'? [yes]:

Si vous souhaitez que la connexion purge l'adresse IP statique, appuyez sur Entrée . Pour le conserver, tapez no et appuyez sur Entrée . Vous pouvez le conserver si vous pensez pouvoir l'utiliser à nouveau à l'avenir. Même avec une adresse IP statique stockée, si method est réglé sur auto , il utilisera DHCP.

Tapez save pour enregistrer vos modifications :

nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.
nmcli ipv4>

Tapez quit pour quitter l'éditeur interactif nmcli. Si vous ne voulez pas quitter, tapez back pour revenir au niveau principal et continuer à utiliser l'éditeur.

Il y a bien plus à nmcli

Parcourez l'éditeur interactif et voyez combien de paramètres il y a et combien de propriétés chaque paramètre possède. L'éditeur interactif est un outil soigné, mais pour les one-liners astucieux ou pour utiliser nmcli dans les scripts, vous aurez besoin de la version de ligne de commande habituelle.

Maintenant que vous avez les bases en main, consultez la page de manuel nmcli pour voir ce qu'elle peut offrir d'autre.


Linux
  1. Travailler avec des flux de données sur la ligne de commande Linux

  2. Utilisation de Stratis pour gérer le stockage Linux à partir de la ligne de commande

  3. Utilisation de Google Drive à partir de la ligne de commande Linux

  4. Pass - Gérez vos mots de passe à partir de la ligne de commande Linux

  5. Migrer un serveur Linux depuis la ligne de commande

Gérez votre calendrier depuis le terminal Linux avec la commande konsolekalendar

Programmer le matériel à partir de la ligne de commande Linux

Résoudre un puzzle en ligne de commande Linux avec nudoku

Conseils pour lister les fichiers avec ls sur la ligne de commande Linux

Maîtrisez la ligne de commande Linux

Comment vérifier les statistiques du réseau Linux à partir de la ligne de commande