Ubuntu 18.04: configurare scheda di rete (netplan)

di Aggiornato: 10 Ott 2018 0 commenti

Netplan

Dalla versione 17.10 e quindi anche la LTS 18.04 di Ubuntu Linux il network manager è stato sostituito da un sistema proprietario di Canonical chiamato Netplan.

Devo dire che proprio non se ne sentiva il bisogno, visto che il sistema precedente bene o male è abbastanza trasversale alle varie distribuzioni Linux. Dall’altra parte posso comprenderne i motivi, nel caso di una server farm con centinaia di server cloud,  Netplan viene in aiuto nella gestione distribuita e centralizzata.

Infatti il cuore della questione è il formato YAML con cui è scritto il file di configurazione e una serie di comandi che permettono la validazione e l’utilizzo in modo rapido di cambiamenti, spesso delicati, che riguardano proprio l’aspetto della scheda di rete e degli indirizzamenti IP.

La prima cosa che salta all’occhio è che la configurazione di Netplan non è monolitica, ma ci sono più strade per dichiarare un valore, la seconda è che sono assolutamente vietate le tabulazioni. Ci ho perso un po’ di tempo inizialmente perché continuava a non validarmi il file di configurazione, senza per altro dare spiegazioni. E solo attraverso un validatore online del formato YAML, tra i tanti che si trovano per internet, ho capito dove sbagliavo.

Se non avete un file di configurazione, che va sotto /etc/netplan potrete farlo generare dal sistema con il comando netplan generate

Vediamo come è fatta una configurazione di una scheda di rete che utilizza il DHCP:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      dhcp4: true

Come si vede il sistema è molto semplice e in qualche modo simile ad un XML pur con la mancanza dei tag di dichiarazione. Vediamo invece un esempio dove l’indirizzo IP è dichiarato in modo esplicito:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      addresses:
        - 10.10.10.2/24
      gateway4: 10.10.10.1
      nameservers:
          search: [mydomain, otherdomain]
          addresses: [10.10.10.1, 1.1.1.1]

Come si vede l’indirizzo IP viene dichiarato con la netmask nella notazione CIDR, ovvero /xy dove il numero definisce in bit l’ampiezza della maschera stessa. La stessa cosa la possiamo scrivere anche in questo modo (si veda la prima voce addresses):

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      addresses: [10.10.10.2/24]
      gateway4: 10.10.10.1
      nameservers:
          search: [mydomain, otherdomain]
          addresses: [10.10.10.1, 1.1.1.1]

Una cosa che potrebbe far storcere il naso è che Netplan non prevede gli alias di rete, ma prevede gli indirizzi multipli. Quindi in quel caso il codice va scritto così:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
     addresses:
       - 10.100.1.38/24
       - 10.100.1.39/24
     gateway4: 10.100.1.1

Oppure:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
     addresses: [10.100.1.38/24, 10.100.1.39/24]
     gateway4: 10.100.1.1

Siccome ci sono più indirizzi si possono utilizzare più gateway, o meglio si devono dichiarare più rotte, visto che il gateway per forza di cose può essere solo uno per IPV4 e IPV6

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
     addresses:
       - 9.0.0.9/24
       - 10.0.0.10/24
       - 11.0.0.11/24
     #gateway4:    # unset, since we configure routes below
     routes:
       - to: 0.0.0.0/0
         via: 9.0.0.1
         metric: 100
       - to: 0.0.0.0/0
         via: 10.0.0.1
         metric: 100
       - to: 0.0.0.0/0
         via: 11.0.0.1
         metric: 100

Visto che ho citato IPv6 questo può essere dichiarato direttamente come indirizzo IP multiplo, avendo cura di citare il gateway IPV6

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
     addresses: [10.100.1.38/24,  2001:41f0:304:2190:0:0:0:52d5]
     gateway4: 10.100.1.1
	 gateway6: 2001:41f0:304:2190:0:0:0:ffff

Questo per quanto riguarda il file di configurazione. Per i comandi non sono molti, il classico help o man a linea di comando ci sono sempre d’aiuto. In sostanza con netplan apply si applica la configurazione, ma è più conveniente passare attraverso il comando netplan try, perché questo viene prima validato e se privo di errori applicato, per altro con una finestra di tempo in cui è obbligatorio accettare il cambiamento oppure non fare nulla (ad esempio perché siamo stati tagliati fuori) e alla fine di questa finestra viene ripristinata la configurazione precedente. Sotto questo punto di vista non si può certo dire nulla.

Per attivare o disattivare una scheda di rete invece si possono utilizzare i comandi pressoché identici al vecchio sistema:

ip link set eth1 up
ip link set eth1 down

Non ho citato la parte relativa a Bridge e Bonding e a cui rimando alla documentazione ufficiale, per altro non del tutto completata, ma sappiate che è possibile effettuare questo tipo di operazioni.

Conclusioni

Il sistema porta qualche miglioria, è innegabile, ma ad esempio nella configurazione di una scheda di rete che generalmente è molto rigida nelle direttive, anche per un mero schema mentale, qui ci si ritrova a vedere situazioni diverse che poi dichiarano la stessa cosa. In questo somiglia un po’ al Javascript, ma vederlo applicato ad una interfaccia di rete non mi pare una buona idea. Penso ad un datacenter dove più persone gestiscono i server, vedere configurazioni “non monolitiche” a mio avviso può portare ad incomprensioni e/o rimaneggiamenti inutili dei file di configurazione. 

Libri che ti consiglio sull'argomento

Alcuni titoli che ho trovato utili come manuale tecnico per questo articolo

Vuoi dire o aggiungere qualcosa?

sezione commenti aperta al pubblico

Non ci sono ancora commenti!

Puoi essere il primo a commentare.

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.