Come configurare la rete IP con 'nmcli' in Linux
Come amministratore Linux, hai vari strumenti da utilizzare per configurare le tue connessioni di rete, come nmtui, il tuo NetworkManager con interfaccia utente grafica GNOME e, naturalmente, nmcli (strumento da riga di comando del gestore di rete).
Ho osservato molti amministratori utilizzare nmtui per la sua semplicità. Tuttavia, l'utilizzo di nmcli ti fa risparmiare tempo, aumenta la tua sicurezza, consente l'integrazione negli script ed è lo strumento principale per la risoluzione dei problemi di rete dei server Linux, ripristinandone rapidamente la funzionalità.
Avendo notato numerosi commenti in cerca di aiuto con nmcli, ho deciso di scrivere questo articolo. Naturalmente, dovresti sempre leggere attentamente le pagine man (sono la risorsa numero 1 per te). Il mio obiettivo è farti risparmiare tempo e fornirti alcuni suggerimenti utili.
Sintassi del comando nmcli
La sintassi di nmcli è:
nmcli [OPTIONS] OBJECT {COMMAND | help}
Dove OBJECT
è uno tra generale, rete, radio, connessione, dispositivo e agente.
Controlla lo stato del dispositivo di rete in Linux
Un buon punto di partenza sarebbe controllare i nostri dispositivi:
nmcli dev status
DEVICE TYPE STATE CONNECTION
docker0 bridge connected docker0
virbr0 bridge connected virbr0
enp0s3 ethernet connected enp0s3
virbr0-nic ethernet disconnected --
lo loopback unmanaged --
Come possiamo vedere nella prima colonna, c'è un elenco dei nostri dispositivi di rete. Abbiamo una scheda di rete con il nome enp0s3
. Sul tuo computer potresti vedere nomi diversi.
La denominazione dipende dal tipo di scheda di rete (se è integrata, una scheda PCI, ecc.). Nell'ultima colonna vediamo i nostri file di configurazione, che vengono utilizzati dai nostri dispositivi per connettersi alla rete
È semplice capire che i nostri dispositivi, da soli, non possono fare nulla. Hanno bisogno che creiamo un file di configurazione per istruirli su come ottenere la connettività di rete. Questi file sono anche chiamati "profili di connessione" e li troviamo nella directory /etc/sysconfig/network-scripts.
cd /etc/sysconfig/network-scripts/
ls
Uscita del campione
ifcfg-enp0s3 ifdown-isdn ifup ifup-plip ifup-tunnel
ifcfg-lo ifdown-post ifup-aliases ifup-plusb ifup-wireless
ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global
ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions
ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6
ifdown-ib ifdown-Team ifup-ippp ifup-sit
ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team
ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort
Come puoi vedere qui, i file con nomi che iniziano con 'ifcfg-'
(configurazione dell'interfaccia) sono profili di connessione. Quando creiamo una nuova connessione o ne modifichiamo una esistente con nmcli o nmtui, i risultati vengono salvati qui come profili di connessione.
Te ne mostrerò due dalla mia macchina, uno con una configurazione DHCP e uno con IP statico.
cat ifcfg-static1
cat ifcfg-Myoffice1
Ci rendiamo conto che alcune proprietà hanno valori diversi e altre non esistono se non sono necessarie.
Diamo una rapida occhiata a quelli più importanti.
TYPE
– qui abbiamo il tipo Ethernet. Potremmo anche avere WiFi, team, bond e altri.DEVICE
– il nome del dispositivo di rete associato a questo profilo.BOOTPROTO
– se ha il valore “dhcp ”, il nostro profilo di connessione ottiene un IP dinamico dal server DHCP. Se ha il valore “none ”, non utilizza un IP dinamico e probabilmente assegniamo un IP statico.IPADDR
– è l'IP statico che assegniamo al nostro profilo.PREFIX
– la maschera di sottorete. Un valore di 24 significa 255.255.255.0. Puoi comprendere meglio la maschera di sottorete annotando il suo formato binario. Ad esempio, i valori 16, 24 e 26 indicano che i primi 16, 24< o 26 bit, rispettivamente, sono impostati su 1 e il resto è 0. Ciò definisce l'indirizzo di rete e l'intervallo di indirizzi IP che possono essere assegnati.GATEWAY
– l'IP del gateway.DNS1
,DNS2
– due server DNS che vogliamo utilizzare.ONBOOT
– se ha il valore “sì” significa che all'avvio il nostro computer leggerà questo profilo e proverà ad assegnarlo al suo dispositivo.
Controlla la connessione di rete in Linux
Ora andiamo avanti e controlliamo le nostre connessioni:
nmcli con show
L'ultima colonna di dispositivi ci aiuta a capire quale connessione è "UP" e funzionante e quale no. Nell'immagine sopra puoi vedere le due connessioni attive: Myoffice1 e enp0s8.
Suggerimento: se vuoi vedere solo le connessioni attive, digita:
nmcli con show -a
Suggerimento: puoi usare il completamento automatico premendo Tab
quando usi nmcli, ma è meglio usare formato minimo del comando.
Pertanto, i seguenti comandi sono uguali:
nmcli connection show
nmcli con show
nmcli c s
Controlla l'indirizzo IP in Linux
Se controllo gli indirizzi IP dei miei dispositivi:
ip a
Vedo che il mio dispositivo enp0s3
ha preso l'IP 192.168.1.6 dal server DHCP perché il profilo di connessione Myoffice1
attivo ha una configurazione DHCP.
Se apro “up ”
il mio profilo di connessione con nome static1
, il mio dispositivo assumerà l'IP statico 192.168.1.40 come definito nel profilo di connessione.
nmcli con down Myoffice1 ; nmcli con up static1
nmcli con show
Vediamo ancora l'indirizzo IP:
ip a
Possiamo creare il nostro primo profilo di connessione. Le proprietà minime che dobbiamo definire sono type, ifname, e con-name:
type
– per il tipo di connessione.ifname
– per il nome del dispositivo assegnato alla nostra connessione.con-name
– per il nome della connessione.
Creazione di una nuova connessione Ethernet in Linux
Effettuiamo una nuova connessione ethernet con il nome Myhome1
, assegnata ad un dispositivo enp0s3
:
nmcli con add type ethernet con-name Myhome1 ifname enp0s3
Controlla la sua configurazione:
cat ifcfg-Myhome1
Come puoi vedere ha BOOTPROTO=dhcp
, perché non abbiamo fornito alcun indirizzo IP statico.
Suggerimento: Possiamo modificare qualsiasi connessione con il comando “nmcli con mod“
. Tuttavia, se modifichi una connessione DHCP e la imposti in statica, non dimenticare di cambiarla “ipv4.method ”
da “auto ”
a “manual ” . Altrimenti ti ritroverai con due indirizzi IP: uno dal server DHCP e quello statico.
Creiamo un nuovo profilo di connessione Ethernet con nome static2
, che verrà assegnato a un dispositivo enp0s3
, con IP statico 192.168.1.50, sottorete maschera 255.255.255.0=24, e gateway 192.168.1.1.
nmcli con add type ethernet con-name static2 ifname enp0s3 ip4 192.168.1.50/24 gw4 192.168.1.1
Controlla la sua configurazione:
cat ifcfg-static2
Modifica i server DNS in Linux
Modifichiamo l'ultimo profilo di connessione e aggiungiamo due server DNS.
nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”
Suggerimento: C'è qualcosa a cui devi prestare attenzione: le proprietà per l'indirizzo IP e il gateway hanno nomi diversi quando aggiungi e quando modifichi una connessione. Quando aggiungi connessioni usi “ip4 ”
e “gw4 ”
, mentre quando le modifichi usi “ipv4 ”
e “ gwv4 ".
Visualizza la connessione Ethernet in Linux
Ora visualizziamo questo profilo di connessione:
nmcli con down static1 ; nmcli con up static2
Come puoi vedere, il dispositivo enp0s3
ora ha un indirizzo IP 192.168.1.50.
ip a
Suggerimento: ci sono molte proprietà che puoi modificare. Se non li ricordate a memoria potete aiutarvi digitando “nmcli con show ”
e poi il nome della connessione:
nmcli con show static2
È possibile modificare tutte queste proprietà scritte in minuscolo.
Ad esempio: quando disattivi un profilo di connessione, il NetworkManager cerca un altro profilo di connessione e lo richiama automaticamente. (Lo lascio come esercizio per verificarlo). Se non desideri che il tuo profilo di connessione si connetta automaticamente:
nmcli con mod static2 connection.autoconnect no
L'ultimo esercizio è molto utile: hai creato un profilo di connessione ma vuoi che venga utilizzato da utenti specifici. È utile classificare i tuoi utenti!
Imposta le autorizzazioni di connessione Ethernet su Utente in Linux
Permettiamo solo all'utente stella di utilizzare questo profilo:
nmcli con mod static2 connection.permissions stella
Suggerimento: se desideri concedere i permessi a più di un utente, devi digitare user:user1,user2
senza spazi vuoti tra di loro:
nmcli con mod static2 connection.permissions user:stella,john
Se accedi come un altro utente non potrai “visualizzare” questo profilo di connessione:
nmcli con show
nmcli con up static2
ls /etc/sysconfig/network-scripts
Un messaggio di errore dice che la connessione 'static2' non esiste, anche se vediamo che esiste. Questo perché un utente corrente non ha l'autorizzazione per attivare questa connessione.
Conclusione: non esitate a utilizzare nmcli. È facile e utile.