Gestiamo le connessioni di rete in Linux utilizzando l'utilità da riga di comando nmcli

Sfrutta tutte le funzionalità dello strumento di gestione delle connessioni di rete NetworkManager nella riga di comando di Linux utilizzando l'utilità nmcli.

Gestiamo le connessioni di rete in Linux utilizzando l'utilità da riga di comando nmcli

Utilità nmcli accede direttamente all'API per accedere alle funzioni di NetworkManager.

È stato introdotto nel 2010 e per molti è diventato un modo alternativo per configurare le interfacce e le connessioni di rete. Anche se alcuni continuano a utilizzare ifconfig. Poiché nmcli è uno strumento della riga di comando (CLI) progettato per essere utilizzato in finestre di terminale e script, è perfetto per gli amministratori di sistema che lavorano senza GUI.

La sintassi dei comandi ncmli

In generale, la sintassi è la seguente:

$ nmcli  

  • options sono i parametri che definiscono le specifiche del funzionamento di nmcli,
  • section (sezione) definisce quali funzionalità dell'utilità utilizzare,
  • action (azione) consente di specificare cosa, esattamente, deve essere fatto.

Ci sono 8 sezioni, ognuna delle quali è associata a un insieme di comandi (azioni):

  • Aiuto fornisce assistenza sui comandi ncmcli e sul loro utilizzo.
  • Generale restituisce lo stato di NetworkManager e la configurazione globale.
  • Networking includere comandi per richiedere lo stato della connessione di rete e attivare / disattivare le connessioni.
  • Radio includere comandi per richiedere lo stato della connessione WiFi e attivare / disattivare le connessioni.
  • Monitora includere comandi per monitorare l'attività di NetworkManager e osservare i cambiamenti di stato delle connessioni di rete.
  • Connection includere comandi per gestire le interfacce di rete, per aggiungere nuove connessioni e rimuovere quelle esistenti.
  • Device viene utilizzato principalmente per modificare le impostazioni relative ai dispositivi (ad esempio, il nome dell'interfaccia) o per connettere dispositivi utilizzando una connessione esistente.
  • Secret registra nmcli come "agente segreto" di NetworkManager che ascolta i messaggi riservati. Questa sezione è raramente utilizzata, poiché nmcli di default funziona in questo modo quando si collega alle reti.

Esempi semplici

Prima di iniziare, assicurati 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

Spesso si inizia visualizzando tutti i profili delle connessioni di rete:

$ nmcli connection show
NOME                UUID                                  TIPO      DISPOSITIVO
Connessione cablata 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Connessione cablata 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Connessione cablata 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

Questo comando utilizza l'azione show per la sezione Connessione.

Sulla macchina di test gira Ubuntu 20.04. In questo caso abbiamo trovato tre connessioni cablate: enp0s3, enp0s8 e enp0s9.

Gestione delle connessioni

È importante comprendere che in nmcli con il termine Connessione intendiamo un'entità che contiene tutte le informazioni sulla connessione. In altre parole, è la configurazione di rete. La Connessione racchiude tutte le informazioni relative alle connessioni, inclusi il livello di collegamento e le informazioni sull'indirizzamento IP. Questi sono il livello 2 e il livello 3 nel modello OSI.

Quando si configura una rete in Linux, di solito si impostano connessioni che saranno collegate a dispositivi di rete, i quali a loro volta sono interfacce di rete installate sul computer. Quando un dispositivo utilizza una connessione, viene considerato attivo o attivato. Se la connessione non viene utilizzata, è inattiva o disattivata.

Aggiunta di connessioni di rete

L'utility nmcli consente di aggiungere e configurare rapidamente connessioni. Ad esempio, per aggiungere la Connessione cablata 2 (con enp0s8), è necessario eseguire il seguente comando come superutente:

$ sudo nmcli connection add type ethernet ifname enp0s8
Connessione 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) aggiunta con successo.

Nell'opzione type indichiamo che si tratta di una connessione Ethernet, e nell'opzione ifname (nome dell'interfaccia) indichiamo l'interfaccia di rete che vogliamo utilizzare.

Ecco cosa accadrà dopo aver eseguito il comando:

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

È stata creata una nuova connessione, ethernet-enp0s8. Le è stato assegnato un UUID, il tipo di connessione è Ethernet. Attiviamola con il comando up:

$ nmcli connection up ethernet-enp0s8
Connessione attivata con successo (Percorso attivo D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4)

Controlliamo di nuovo l'elenco delle connessioni attive:

$ nmcli connection show --active
NOME                UUID                                  TIPO      DISPOSITIVO
Connessione cablata 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  enp0s8
Connessione cablata 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

È stata aggiunta una nuova connessione ethernet-enp0s8, è attiva e utilizza l'interfaccia di rete enp0s8.

Configurazione delle connessioni

L'utilità ncmli consente di modificare facilmente le impostazioni delle connessioni esistenti. Ad esempio, potrebbe essere necessario passare da un indirizzo IP dinamico (DHCP) a un indirizzo IP statico.

Supponiamo di voler impostare l'indirizzo IP su 192.168.4.26. Per fare ciò, utilizzeremo due comandi. Il primo imposterà direttamente l'indirizzo IP, mentre il secondo cambierà il metodo di assegnazione dell'indirizzo IP a "manuale":

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

Non dimenticare di impostare anche la maschera di sottorete. Per la nostra connessione di test, è 255.255.255.0, oppure /24 per il routing senza classi (CIDR).

Per applicare le modifiche, è necessario disattivare e poi riattivare la connessione:

$ nmcli connection down ethernet-enp0s8
Connection 'ethernet-enp0s8' disattivata con successo (percorso attivo D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Connessione attivata con successo (percorso attivo D-Bus: /org/freedesktop/NetworkManager/ActiveC

Se hai bisogno di impostare il DHCP, invece di manual usa auto:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Gestione dei dispositivi

Per questo utilizziamo la sezione Dispositivo.

Verifica dello stato dei dispositivi

$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION        
enp0s3  ethernet  connesso  Wired connection 1
enp0s8  ethernet  connesso  ethernet-enp0s8    
enp0s9  ethernet  connesso  Wired connection 3
lo      loopback  non gestito  --  

Richiesta di informazioni sul dispositivo

Per questo, utilizziamo l'azione show dalla sezione Dispositivo (è necessario specificare il nome del dispositivo). L'utilità mostra molte informazioni, spesso su più pagine.
Diamo un'occhiata all'interfaccia enp0s8, che utilizza la nostra nuova connessione. Assicuriamoci che stia usando esattamente l'indirizzo IP che abbiamo impostato 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 (connesso)
GENERAL.CONNECTION:                     ethernet-enp0s8
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER:               attivo
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

Le informazioni sono abbastanza dettagliate. Vediamo i punti principali:

  • Nome dell'interfaccia di rete: enp0s8.
  • Tipo di connessione: connessione Ethernet cablata.
  • Vediamo l'indirizzo MAC del dispositivo.
  • È stato specificato il Maximum Transmission Unit (MTU) — la dimensione massima del blocco di dati utile di un pacchetto che può essere trasmesso dal protocollo senza frammentazione.
  • Dispositivo attualmente connesso.
  • Nome della connessione, che utilizza il dispositivo: ethernet-enp0s8.
  • Il dispositivo utilizza quello indirizzo IP, che abbiamo impostato in precedenza: 192.168.4.26/24.

Altre informazioni riguardano le impostazioni predefinite di instradamento e gateway della connessione. Queste dipendono dalla rete specifica.

Editor interattivo nmcli

nmcli ha anche un semplice editor interattivo, in cui può essere più comodo lavorare per qualcuno. Per avviarlo, ad esempio, per la connessione ethernet-enp0s8, usa l'azione edit:

$ nmcli connection edit ethernet-enp0s8

Ha anche una piccola guida, che tuttavia è inferiore rispetto alla versione da console:

===| nmcli editor di connessione interattivo |===
Modifica la connessione '802-3-ethernet' esistente: 'ethernet-enp0s8'
Digita 'help' o '?' per i comandi disponibili.
Digita 'print' per mostrare tutte le proprietà della connessione.
Digita 'describe [<setting>.<prop>]' per la descrizione dettagliata della proprietà.
Puoi modificare le seguenti impostazioni: connessione, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>

Se digiti il comando print e premi Invio, nmcli mostrerà tutte le proprietà della connessione:

===============================================================================
                 Dettagli del profilo di connessione (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 (predefinito)
connection.multi-connect:               0 (predefinito)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (predefinito)
connection.secondaries:                 --

Ad esempio, per impostare la proprietà DHCP per la connessione, digita goto ipv4 e premi Invio:

nmcli> goto ipv4
Puoi modificare le seguenti proprietà: metodo, dns, dns-search, 
dns-options, dns-priority, indirizzi, gateway, rotte, route-metric, 
tabella di routing, regole di routing, 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>

Poi scrivi set method auto e premi Invio:

nmcli ipv4> set method auto
Vuoi anche cancellare 'ipv4.addresses'? [sì]:

Se desideri cancellare l'indirizzo IP statico, premi Invio. Altrimenti, inserisci no e premi Invio. Puoi salvarlo se pensi che ti servirà in futuro. Ma anche con un indirizzo IP statico salvato, verrà utilizzato DHCP se il metodo è impostato su auto.

Usa il comando save per salvare le modifiche:

nmcli ipv4> save
Connessione 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) aggiornata con successo.
nmcli ipv4>

Inserisci quit per uscire dall'editor interattivo nmcli. Se hai cambiato idea e non vuoi uscire, usa il comando back.

E questo non è tutto.

Apri l'editor interattivo nmcli e scopri quante impostazioni esistono e quali proprietà ha ciascuna impostazione. L'editor interattivo è uno strumento eccellente, ma se desideri utilizzare nmcli in comandi singoli o script, avrai bisogno della versione standard da riga di comando.

Ora che hai le basi, dai un'occhiata alla pagina man nmcli per sapere come può aiutarti ulteriormente.

In base alla pubblicità

Server epici è server virtuali su Windows o Linux con potenti processori della famiglia AMD EPYC e velocissimi dischi NVMe Intel. Affrettati a ordinare!

Gestiamo le connessioni di rete in Linux utilizzando l'utilità da riga di comando nmcli

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster