Netplan è un'utilità sviluppata da Canonical, la società dietro Ubuntu. Fornisce un'astrazione della configurazione di rete sui due sistemi "backend" attualmente supportati (o "renderer" nella terminologia Netplan):networkd e Gestore di rete . Utilizzando Netplan, le interfacce di rete fisiche e virtuali vengono configurate tramite yaml file che vengono tradotti in configurazioni compatibili con il backend selezionato.
Su Ubuntu 20.04 Netplan sostituisce il metodo tradizionale di configurazione delle interfacce di rete usando il /etc/network/interfaces
file; mira a rendere le cose più semplici e centralizzate (il vecchio modo di configurare le interfacce può ancora essere utilizzato:controlla il nostro articolo su Come tornare in rete a /etc/network/interfaces su Ubuntu 20.04 Focal Fossa Linux). In questo articolo impareremo i principi di base alla base dell'utilità e, solo a titolo di esempio, come possiamo utilizzarla per configurare un indirizzo IPv4 statico per un'interfaccia di rete.
In questo tutorial imparerai :
- La struttura di base dei file di configurazione di yaml utilizzati da Netplan
- Come creare una semplice regola per assegnare un IP statico a un'interfaccia di rete
- Come applicare le configurazioni utilizzando genera , prova e applica sottocomandi

Requisiti software e convenzioni utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | Ubuntu 20.04 (Focale Fossa) |
Software | Netplan (installato per impostazione predefinita) |
Altro | Autorizzazioni di root per modificare i file di configurazione |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede l'esecuzione di determinati comandi linux come un normale utente non privilegiato |
File di configurazione Netplan
Ci sono tre posizioni in cui possono essere collocati i file di configurazione di Netplan; in ordine di priorità sono:
/run/netplan
/etc/netplan
/lib/netplan

All'interno di ciascuna di queste directory le configurazioni vengono create utilizzando file con .yaml estensione che vengono elaborati in lessicografico ordine, indipendentemente dalla directory in cui si trovano.
La priorità della directory ha un ruolo solo quando esistono file con lo stesso nome:in questi casi, viene analizzato solo il file contenuto nella directory con la priorità più alta.
Se un booleano o scalare parametro è definito in più di un file di configurazione, assumerà il valore definito nell'ultimo file analizzato; se i valori sono sequenze , invece, sono concatenati.
Gli utenti devono inserire le loro configurazioni all'interno di /etc/netplan
directory; per impostazione predefinita l'unico file presente su un sistema Ubuntu 20.04 appena installato è /etc/netplan/01-network-manager-all.yaml
. Nella prossima sezione vedremo le istruzioni che contiene e qual è il loro significato.
Il file /etc/netplan/01-network-manage-all.yaml
L'unico file di configurazione esistente /etc/netplan/
la directory su un sistema Ubuntu 20.04 appena installato è 01-network-manage-all.yaml
. Diamo un'occhiata al suo contenuto:
# Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager
Come suggerito dal commento nel file, la configurazione ha lo scopo di impostare tutte le interfacce di rete del sistema che devono essere gestite dal NetworkManager
renderer. Possiamo osservare che le direttive sono rientrate all'interno del nodo principale, network
. Dal momento che abbiamo a che fare con file yaml, il rientro è fondamentale.
Altre due parole chiave che possiamo trovare nel file sono version
e renderer
:il primo specifica la versione della sintassi in uso, il secondo il backend di sistema (rete rispetto a NetworkManager ).
Nella prossima sezione di questo tutorial creeremo un esempio di configurazione leggermente più complesso e lo useremo per assegnare un indirizzo IPv4 statico a un'interfaccia di rete.
Un esempio di configurazione:impostazione di un indirizzo IPv4 statico
Il file di configurazione che abbiamo visto sopra è piuttosto semplice; proviamo qualcosa di un po' più complesso e vediamo come possiamo configurare un indirizzo IPv4 statico utilizzando Netplan.
La prima cosa che dobbiamo fare è creare un nuovo file di configurazione, da analizzare dopo quello di default:chiamiamolo /etc/netplan/02-static-ip.yaml
. All'interno del file, creiamo una regola che corrisponda alle interfacce di rete che vogliamo configurare:possiamo portare a termine l'attività utilizzando il match
strofa.
Dentro il match
sezione, possiamo selezionare una serie di interfacce fisiche in base al valore delle proprietà specificate. Affinché le impostazioni vengano applicate, tutte le proprietà devono corrispondere alla regola.
Nel file di configurazione scriviamo:
# Set static ip address for enp1s0 interface network: version: 2 renderer: NetworkManager ethernets: id0: match: name: enp1s0 dhcp4: false addresses: - 192.168.122.250/24 nameservers: addresses: - 192.168.122.1 gateway4: 192.168.122.1
Diamo un'occhiata più da vicino alle nuove istruzioni che abbiamo utilizzato nella configurazione. All'interno della network
principale nodo, i dispositivi possono essere raggruppati per tipo:
ethernets
wifis
bridges
Poiché nel nostro esempio abbiamo a che fare con un dispositivo ethernet, abbiamo usato ethernets
stanza. Dentro il match
stanza, abbiamo fatto riferimento all'interfaccia con il suo name
:enp1s0
. Le regole di corrispondenza possono anche essere basate su macaddress
e, solo quando si utilizza networkd
come renderer, su driver
che è il nome del driver del kernel Linux utilizzato per i dispositivi.
Per raggiungere la configurazione desiderata, abbiamo utilizzato una serie di direttive. Poiché vogliamo assegnare un indirizzo statico, abbiamo disabilitato dhcp4
e utilizzato gli addresses
parola chiave per associare un indirizzo IPv4 all'interfaccia. È possibile specificare più indirizzi:devono essere forniti insieme alla subnet mask.
Impostiamo anche gli indirizzi dei nameservers
nell'omonima strofa. Infine, impostiamo l'indirizzo IPv4 del gateway che l'interfaccia dovrebbe utilizzare con il gateway4
parola chiave.
Semplificazione della configurazione
La configurazione che abbiamo utilizzato nell'esempio sopra può essere leggermente semplificata. Per fare riferimento all'interfaccia a cui vogliamo assegnare l'indirizzo statico abbiamo usato il match
strofa, tuttavia, avremmo potuto ometterla. Poiché desideriamo che le nostre impostazioni vengano applicate a un solo dispositivo specifico, possiamo fare riferimento direttamente utilizzando il suo nome prevedibile (enp1s0
) come id :
network: version: 2 renderer: NetworkManager ethernets: enp1s0: dhcp4: false addresses: - 192.168.122.250/24 nameservers: addresses: - 192.168.122.1 gateway4: 192.168.122.1
Quando il match
viene utilizzata la stanza, l'id (id0
nell'esempio precedente) è arbitrario e viene utilizzato per fare riferimento ai dispositivi configurati da altre sezioni del file di configurazione. Quando il match
viene omesso, invece, l'id deve corrispondere al nome prevedibile del dispositivo. Quando si lavora con dispositivi virtuali come bridge o bond, l'id non viene utilizzato per fare riferimento a un'interfaccia esistente, ma rappresenta il nome da utilizzare al momento della creazione dell'interfaccia.
A questo punto la nostra configurazione è pronta; tutto ciò che dobbiamo fare è salvarlo e testarlo.
Test e applicazione di una configurazione Netplan
Nella sezione precedente abbiamo visto come creare una semplice configurazione Netplan per fornire un indirizzo IPv4 statico per un'interfaccia di rete. Ora è il momento di testare la configurazione, per vedere se funziona correttamente. Per raggiungere il nostro obiettivo possiamo utilizzare il netplan
utilità e il try
sottocomando.
Il try
sottocomando del netplan
l'utilità, come suggerisce il nome, viene utilizzata per provare una configurazione e, facoltativamente, ripristinarla se l'utente non la conferma dopo un certo periodo di tempo. Il timeout predefinito è 120
secondi ma può essere modificato usando il --timeout
opzione.
Come puoi vedere dall'output dell'ip address
comando, l'indirizzo IPv4 corrente per enp1s0
l'interfaccia è 192.168.122.200
:
$ ip address|grep enp1s0 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet 192.168.122.200/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0
Applichiamo la configurazione:
$ sudo netplan try
Una volta eseguito il comando, sullo schermo viene visualizzato il seguente messaggio:
Do you want to keep these settings? Press ENTER before the timeout to accept the new configuration Changes will revert in 120 seconds
Abbiamo abbastanza tempo per verificare se l'indirizzo IP dell'interfaccia è cambiato:
$ ip address|grep enp1s0 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet 192.168.122.250/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0
Come possiamo vedere, l'indirizzo IPv4 è cambiato come previsto. In questo caso, tuttavia, trascorso il timeout, il comando non è riuscito a ripristinare la configurazione. Questo è un problema noto, riportato anche nella manpage dell'utility. In questi casi, per tornare completamente allo stato iniziale, dovrebbe essere sufficiente un riavvio.
È possibile utilizzare altri due comandi:
netplan generate
netplan apply
Il netplan generate
Il comando converte le impostazioni nei file yaml in configurazioni appropriate per il renderer in uso, ma non le applica. Nella stragrande maggioranza dei casi non è pensato per essere chiamato direttamente:è invocato, ad esempio, da netplan apply
che applica inoltre le modifiche senza un timeout di "ripristino".
Conclusioni
In questo tutorial ci siamo avvicinati a Netplan, un'utilità sviluppata da Canonical, attiva di default su Ubuntu 20.04 Focal Fossa. Lo scopo di questa utilità è di astrarre le configurazioni per le interfacce di rete utilizzando un file di configurazione yaml.
Tali configurazioni vengono quindi tradotte in configurazioni per il renderer specificato, come NetworkManager o networkd. In questo tutorial abbiamo visto come scrivere una semplice regola per impostare un indirizzo IP statico per un'interfaccia di rete, abbiamo imparato alcuni dei nodi che possono essere utilizzati nei file di configurazione e abbiamo visto come applicare le modifiche tramite il netplan try
e netplan apply
comandi. Qui abbiamo appena scalfito la superficie di ciò che può essere realizzato utilizzando Netplan. Se vuoi saperne di più, dai un'occhiata al sito Web di Netplan e alla pagina man dell'utilità.