Il comando nmcli ti consente di sfruttare la potenza dello strumento NetworkManager direttamente dalla riga di comando di Linux. È parte integrante del pacchetto NetworkManager che utilizza un'API (Application Programmer's Interface) per accedere alle funzionalità di NetworkManager.
nmcli è stato rilasciato nel 2010 e sostituisce altre modalità di configurazione delle interfacce e delle connessioni di rete, come ifconfig. Poiché si tratta di uno strumento di interfaccia a riga di comando (CLI) progettato per essere utilizzato in finestre di terminale e script, è ideale per gli amministratori di sistema che lavorano su sistemi senza un'interfaccia utente grafica (GUI).
sintassi ncmli
Il comando nmcli accetta opzioni che modificano il comportamento di nmcli, sezioni che dicono a nmcli quali delle sue capacità vuoi usare e azioni che gli dica cosa vuoi che faccia:
$ nmcli <options> <section> <action>
Altro sugli amministratori di sistema
- Abilita blog Sysadmin
- The Automated Enterprise:una guida alla gestione dell'IT con l'automazione
- eBook:Ansible Automation per SysAdmins
- Racconti dal campo:una guida per l'amministratore di sistema all'automazione IT
- eBook:una guida a Kubernetes per SRE e amministratori di sistema
- Ultimi articoli sull'amministratore di sistema
Sono presenti otto sezioni, ciascuna relativa a un insieme specifico di azioni di rete:
- Aiuto fornisce aiuto sui comandi e sull'utilizzo di ncmcli.
- Generale recupera lo stato di NetworkManager e la configurazione globale.
- Rete fornisce comandi per interrogare lo stato di una connessione di rete e abilitare o disabilitare le connessioni.
- Radio fornisce comandi per interrogare lo stato di una connessione di rete WiFi e abilitare o disabilitare le connessioni.
- Monitoraggio fornisce comandi per monitorare l'attività di NetworkManager e osservare i cambiamenti di stato delle connessioni di rete.
- Connessione fornisce comandi per attivare e disattivare le interfacce di rete, per aggiungere nuove connessioni e per eliminare le connessioni esistenti.
- Dispositivo viene utilizzato principalmente per modificare i parametri associati a un dispositivo (ad es. il nome dell'interfaccia) o per connettere un dispositivo utilizzando una connessione esistente.
- Segreto registra nmcli come agente segreto di NetworkManager in attesa di messaggi segreti. Questo è richiesto molto raramente perché nmcli lo fa automaticamente quando ci si connette alle reti.
Esempi semplici
Come primo controllo, verifica che NetworkManager sia in esecuzione e che nmcli possa comunicare con esso:
$ nmcli general
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
La ricognizione è spesso la prima parte dell'amministrazione di un sistema. Per elencare tutti i profili di connessione di rete in memoria e su disco:
$ 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
Questo comando usa show
azione dalla connection
sezione.
La macchina di prova utilizzata per questo esempio esegue Ubuntu 20.04. Ha tre adattatori di rete installati:enp0s3
, enp0s8
e enp0s9
.
Gestione della connessione
È importante comprendere la nomenclatura di nmcli. Una connessione di rete è qualcosa che contiene tutte le informazioni su una connessione. Puoi pensarla come una configurazione di rete . Una connessione incapsula tutte le informazioni relative a una connessione, incluso il livello di collegamento dati e le informazioni sull'indirizzo IP. Questo è il livello 2 e il livello 3 nel modello di rete OSI.
Quando si configura la rete su Linux, di solito si configurano connessioni che alla fine si legheranno ai dispositivi di rete, che sono le interfacce di rete installate in un computer. Quando una connessione viene utilizzata da un dispositivo, si dice che la connessione è attiva o su . L'opposto di attivo è inattivo o basso .
Aggiunta di connessioni di rete
Il comando ncmli consente di creare rapidamente connessioni di rete e di specificare contemporaneamente gli elementi della loro configurazione. Per aggiungere una nuova connessione utilizzando la connessione cablata 2, enp0s8
, devi usare sudo
:
$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.
Il type
l'opzione richiede una connessione Ethernet e il ifname
L'opzione (nome interfaccia) specifica il dispositivo di interfaccia di rete che si desidera utilizzare per la connessione.
Controlla cosa è successo:
$ 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 --
La tua nuova connessione, ethernet-enp0s8
, è stato creato. È stato assegnato il suo identificatore univoco universale (UUID) e il tipo di connessione è Ethernet. Rendilo attivo con il up
comando seguito dal nome della connessione (o dall'UUID):
$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
Controlla ancora una volta le tue connessioni attive:
$ 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
La tua nuova connessione, ethernet-enp0s8
, è ora attivo e legato a enp0s8
dispositivo di interfaccia di rete.
Regolazione delle connessioni
Il comando ncmli semplifica la regolazione dei parametri delle connessioni esistenti. Forse vuoi cambiare un'interfaccia di rete da DHCP (Dynamic Host Configuration Protocol) a un indirizzo IP statico.
Supponiamo di aver bisogno di un indirizzo IP fisso di 192.168.4.26
per la tua nuova connessione. Per ottenere ciò, è necessario emettere due comandi. Uno per impostare l'indirizzo IP e uno per impostare il metodo di connessione per ottenere un indirizzo IP su manual
:
$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manual
Ricordarsi di specificare la subnet mask. Su questa rete di prova, è 255.255.255.0
o /24
in Classless Inter-Domain Routing (CIDR).
Affinché le modifiche abbiano effetto, devi rimbalzare la connessione interrompendola e ripristinandola. Il primo comando interrompe la connessione e il secondo la ripristina:
$ 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)
Se vuoi impostare la connessione per usare DHCP, usa auto
invece di manual
:
$ nmcli connection modify ethernet-enp0s8 ipv4.method auto
Gestione del dispositivo
I comandi nel device
sezione del comando nmcli ti permette di gestire le interfacce di rete installate sul tuo computer.
Verifica dello stato del dispositivo
Per controllare velocemente lo stato di tutte le interfacce di rete:
$ 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 --
Mostra i dettagli del dispositivo
Per esaminare i dettagli di un'interfaccia di rete, usa show
azione dal device
sezione. Se non si fornisce un nome dispositivo, i dettagli di tutti i dispositivi vengono recuperati e visualizzati. Puoi scorrere e scorrere la pagina su e giù per esaminarli.
Dai un'occhiata a enp0s8
, il dispositivo utilizzato dalla nuova connessione. Verifica che l'indirizzo IP in uso sia l'indirizzo che hai richiesto in precedenza:
$ 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 risposta è abbastanza dettagliata. Tra le altre cose, mostra:
- Il nome dell'interfaccia di rete , che in questo caso è
enp0s8
, che gli è assegnato da udev. - Il tipo di connessione di rete , che in questo caso è una connessione Ethernet fisica.
- L'indirizzo MAC (Media Access Control) del dispositivo , che identifica il dispositivo sulla rete.
- L'unità di trasmissione massima, che è la dimensione dell'unità di dati del protocollo più grande che può essere trasmessa in una singola transazione. Qualsiasi cosa più grande di questa viene suddivisa in più pacchetti.
- Questo dispositivo è attualmente connesso .
- Il nome della connessione l'utilizzo di questo dispositivo è
ethernet-enp0s8
. - L'indirizzo IP della connessione utilizzando questo dispositivo. Come richiesto, è impostato su
192.168.4.26/24
.
Le altre informazioni si riferiscono alle impostazioni di routing e gateway predefinite che sono state applicate a questa connessione, in base alla rete a cui è connessa.
editor interattivo di nmcli
Sebbene sia uno strumento da riga di comando, nmcli include un editor interattivo elementare. La edit
action aprirà l'editor interattivo sulla connessione specificata:
$ nmcli connection edit ethernet-enp0s8
Visualizza una piccola quantità di testo della guida, quindi il prompt dei comandi 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>
Se digiti print
e premi Invio , nmcli elencherà tutte le proprietà associate alla connessione. Ci sono molte proprietà. Puoi scorrere l'elenco su e giù:
===============================================================================
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: --
Cambia di nuovo la tua connessione per usare DHCP. Digita goto ipv4
e premi Invio :
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 proprietà che vuoi modificare è method
. Digita set method auto
e premi Invio :
nmcli ipv4> set method auto
Do you also want to clear 'ipv4.addresses'? [yes]:
Se desideri che la connessione elimini l'indirizzo IP statico, premi Invio . Per mantenerlo, digita no
e premi Invio . Puoi tenerlo se pensi di poterlo riutilizzare in futuro. Anche con un indirizzo IP statico memorizzato, se method
è impostato su auto
, utilizzerà DHCP.
Digita save
per salvare le modifiche:
nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.
nmcli ipv4>
Digita quit
per uscire dall'editor interattivo nmcli. Se non vuoi uscire, digita back
per tornare al livello principale e continuare a utilizzare l'editor.
C'è molto di più in nmcli
Sfoglia l'editor interattivo e vedi quante impostazioni ci sono e quante proprietà ha ciascuna impostazione. L'editor interattivo è uno strumento accurato, ma per battute eleganti o per usare nmcli negli script, avrai bisogno della normale versione da riga di comando.
Ora che hai le basi in mano, dai un'occhiata alla pagina man di nmcli per vedere cos'altro può offrire.