GNU/Linux >> Linux Esercitazione >  >> Linux

Gestisci le connessioni di rete dalla riga di comando di Linux con nmcli

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.


Linux
  1. Lavorare con le pipe sulla riga di comando di Linux

  2. Report di I/O dalla riga di comando di Linux

  3. Pass:gestisci le tue password dalla riga di comando di Linux

  4. Migrazione di un server Linux dalla riga di comando

  5. Nozioni di base sulla riga di comando di Linux:esecuzione di comandi dalla riga di comando

Gestisci il tuo calendario dal terminale Linux con il comando konsolekalendar

Programma hardware dalla riga di comando di Linux

Risolvi un enigma dalla riga di comando di Linux con Nudoku

Suggerimenti per elencare i file con ls nella riga di comando di Linux

Padroneggia la riga di comando di Linux

Come controllare le statistiche di rete Linux dalla riga di comando