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.