Comandi Linux per gestire la configurazione di rete

Una breve guida all'uso di alcuni tra i principali comandi Linux per gestire le interfacce di rete e la corretta comunicazione tra sistemi.

Quando si lavora con un sistema Linux, è fondamentale conoscere alcuni comandi utili per verificarne ed eventualmente modificarne la configurazione di rete.
I dispositivi basati su kernel Linux sono onnipresenti: all’interno dei data center così come nelle infrastrutture di rete delle aziende di qualsiasi dimensione. Su Linux sono poi basati la stragrande maggioranza dei prodotti per l’Internet delle Cose (IoT), sempre più utilizzati per la smart home così come a livello industriale.

Il “comando principe” per intervenire sulla configurazione di rete dei sistemi Linux è ip che ha ormai da tempo sostituito ifconfig, route e arp (tutti “deprecati”).

Digitando il comando ip addr show, è possibile ottenere la lista delle interfacce di rete in uso e, per ciascuna di esse, l’indirizzo IP (privato o pubblico) a essa associato.

L’indirizzo IP utilizzato da ciascuna interfaccia è visualizzato a destra della voce inet (IPv4) mentre a destra di inet6 si può leggere l’eventuale indirizzo IPv6 attribuito.

Le interfacce che corrispondono a schede Ethernet, fisiche o virtuali (nel caso dei server cloud), sono denominate eth0, eth1, eth2.
Per ciascuna di essa, accanto a link/ether è possibile leggere il corrispondente indirizzo MAC: MAC address, cos’è e a che cosa serve.

Usando il comando ip addr show dev eth0, è possibile ottenere informazioni sulla configurazione dell’interfaccia di rete specificata (in questo caso eth0).
Accanto a state, la dizione UP e DOWN indica se l’interfaccia sia attiva o meno.

Il comando ip link set eth0 up permette di abilitare l’interfaccia di rete eth0 mentre digitando ip link set eth0 down si può disattivare la stessa interfaccia.

Per rimuovere un IP da una singola interfaccia di rete si può usare il comando seguente:

ip address del IP_DA_RIMUOVERE/SUBNET_MASK dev eth0

Indicando /24 come maschera di rete si specificherà una subnet mask 255.255.255.0: Subnet mask, cos’è e a che cosa serve.

Per associare un IP all’interfaccia di rete, si può usare il comando:

 ip address add IP_DA_RIMUOVERE/SUBNET_MASK dev eth0

Per fare in modo che la modifica degli indirizzi IP sia persistente, sui sistemi Debian/Ubuntu, si può digitare quanto segue:

nano /etc/network/interfaces

Quindi modificare il file di configurazione in maniera simile a quanto riportato in figura:

Nell’esempio, con auto eth0 e auto eth1 si richiede che le due interfacce di rete vengano automaticamente inizializzate all’avvio del sistema operativo.
Con iface NOME_INTERFACCIA inet static si fa in modo che l’indirizzo IP specificato venga assegnato in modo statico e non richiesto a un server DHCP (altrimenti, al posto di static, si sarebbe dovuto indicare dhcp).
Gli altri parametri consentono di definire subnet mask, gateway e server DNS da utilizzare.

Le modifiche al file dovranno essere memorizzate premendo la combinazione di tasti CTRL+O quindi CTRL+X per chiudere l’editor di testo.

Con una distribuzione Linux come CentOS 8 e RHEL 8, si può utilizzare il comando nmtui per accedere alla schermata di configurazione in figura.

Scegliendo la prima opzione Edit a connection si può variare la configurazione di tutte le interfacce di rete in uso con la possibilità di aggiungerle e rimuoverle.

La configurazione di ciascuna interfaccia di rete è conservata nella directory /etc/sysconfig/network-scripts (digitare ls /etc/sysconfig/network-scripts per conoscere i nomi dei file di configurazione).
Scrivendo nano /etc/sysconfig/network-scripts/ifcfg-eth0 si può ad esempio accedere alla configurazione dell’interfaccia di rete eth0 ed eventualmente modificarla.

Parte delle competenze di un qualsiasi utente Linux, e in particolare di un amministratore di sistema, consistono nella capacità di eseguire alcune modifiche sulla configurazione di rete dei sistemi Linux. Un aspetto importante, oltre alla corretta configurazione delle interfacce di rete, ha a che fare con l’impostazione delle “rotte” (routing) per consentire al sistema di comunicare con altri dispositivi o altre reti.

Per verificare la tabella di routing in uso sul sistema, è sufficiente digitare il comando ip route.

Una sintassi come quella presentata di seguito fa sì che per raggiungere la rete 10.1.1.0/24 dove /24 è la subnet mask 255.255.255.0 venga utilizzato l’IP 192.168.0.1:

ip route add 10.1.1.0/24 via 192.168.0.1

Un comando del genere, sostituiti gli IP con quelli corretti, risulta ad esempio particolarmente utile per rendere accessibile il sistema attraverso una VPN usando l’IP privato (in questo caso 192.168.0.5 come si vede in figura).

In Ubuntu e comunque sulle distribuzioni Linux derivate da Debian, basta digitare nano /etc/network/interfaces quindi aggiungere, nel caso dell’esempio, quanto segue in calce al file di configurazione:

up route add -net 10.1.1.0 netmask 255.255.255.0 gw 192.168.0.1

In CentOS/RHEL si può digitare nano /etc/sysconfig/network-scripts/route-enps03 e aggiungere al suo interno le rotte necessarie perché tutte le comunicazioni avvengano correttamente. Nel nostro esempio:

10.1.1.0/24 via 192.168.0.1

Come buona regola è sempre bene aiutarsi con i comandi ping e traceroute (tracert in Windows) per verificare se un sistema risponde a una richiesta di contatto e il percorso che seguono i pacchetti dati prima di raggiungere la destinazione.

Ti consigliamo anche

Link copiato negli appunti