Gestire la configurazione di rete con il comando ip su Linux

Introduzione

Il comando ip su Linux è uno strumento estremamente versatile e potente per la gestione e la configurazione dei parametri di rete del sistema. Sostituisce gradualmente alcuni comandi più datati (come ifconfig, route, netstat) offrendo funzionalità più moderne e una sintassi coerente. Grazie a ip è possibile visualizzare, modificare e mantenere in efficienza la rete locale, le interfacce, i gateway e le rotte in modo sicuro, scalabile e senza ricorrere ad azioni rischiose.

In questo articolo esamineremo, in un ordine più coerente rispetto alla lista originale, come utilizzare il comando ip per coprire una serie di attività comuni in ambito di amministrazione di rete. Saranno illustrate le funzioni principali, la configurazione di base consigliata, alcune opzioni utili e le best practice per mantenere un livello di sicurezza medio-alto, senza ricorrere ad un accesso root diretto.

Perché usare il comando ip?

Il comando ip fa parte del pacchetto iproute2 e offre una sintassi modulare in cui le operazioni si esprimono come combinazioni di ip [oggetto] [comando] [parametri]. Gli oggetti principali sono link (le interfacce), addr (gli indirizzi IP), route (le rotte), neigh (gli ARP/neighbour), e così via.

Rispetto ad altri comandi datati, ip fornisce un output più chiaro, supporta funzionalità moderne (come tunnel e policy routing) e permette di integrare opzioni avanzate (es. gestione di MTU, queueing discipline, bridging, bonding).

Ordine logico delle operazioni con il comando ip

Di seguito una lista ordinata di 15 azioni comuni che si possono effettuare con il comando ip, riorganizzate in un ordine più coerente per un amministratore di sistema:

  1. Individuare le interfacce di rete disponibili sul sistema
    Prima di qualsiasi operazione è fondamentale sapere quali interfacce siano presenti: Ethernet, Wi-Fi, loopback, virtuali ecc.

  2. Consultare lo stato di una singola interfaccia IP
    Una volta individuata un’interfaccia, è utile controllarne stato, parametri e statistiche.

  3. Configurare l’interfaccia di loopback, Ethernet e altre interfacce IP
    Il loopback e le interfacce fisiche o virtuali possono essere configurate con indirizzi IP, MTU, etichette, ecc.

  4. Mettere un’interfaccia in stato attivo (up) o inattivo (down)
    Attivare o disattivare un’interfaccia senza rimuoverne la configurazione.

  5. Modificare parametri aggiuntivi di un’interfaccia, ad esempio MTU o nome
    Non solo up/down, ma anche impostare l’MTU e, se supportato, rinominare l’interfaccia in modo coerente.

  6. Assegnare, eliminare e configurare indirizzi IP, subnet e altre informazioni IP
    Aggiungere un indirizzo IP, rimuoverlo, configurare maschere di rete e gateway può essere fatto con pochi comandi.

  7. Visualizzare e modificare l’elenco degli indirizzi IP e le loro proprietà
    Effettuare un inventario degli indirizzi configurati, controllare indirizzi multipli su una singola interfaccia, ecc.

  8. Configurare e modificare rotte predefinite e statiche
    Impostare una route di default o aggiungere rotte statiche verso sottoreti specifiche.

  9. Impostare o eliminare singole voci di routing
    Se necessario, aggiungere o rimuovere rotte individuali per un fine più granulare.

  10. Verificare il percorso (traccia) che un indirizzo IP seguirà
    Controllare come i pacchetti raggiungono una destinazione, utile per diagnosticare problemi di rete.

  11. Configurare tunnel su IP
    Creare e gestire tunnel IP (ad esempio GRE o IPIP) per connettere due reti remote attraverso un canale sicuro.

  12. Gestire e visualizzare lo stato globale della rete
    Panoramica dello stato di tutte le interfacce e delle relative statistiche.

  13. Raccogliere informazioni sugli indirizzi IP multicast
    Verificare quali gruppi multicast sono configurati sull’host.

  14. Mostrare la cache ARP o NDISC
    Visualizzare i mapping tra indirizzi IP e MAC (ARP su IPv4) o NDISC (su IPv6).

  15. Gestire gli oggetti neighbour: invalidare ARP cache, aggiungere entry ARP, ecc.
    Aggiungere manualmente voci ARP, rimuoverle o invalidarle per forzare la risoluzione dell’indirizzo in caso di problemi.

Comandi utili ed esempi di configurazione

Di seguito riportiamo alcuni esempi pratici, usando il comando ip.
Nota: Evita di operare come root; utilizza invece sudo quando necessario. Prima di modificare configurazioni critiche di rete, sperimenta su macchine di test o sistemi non di produzione.

1. Individuare le interfacce disponibili

ip link show

### 2. Consultare lo stato di una singola interfaccia

```bash
ip link show dev eth0

Questo comando mostra lo stato di `eth0`, le sue proprietà e se è up o down.

### 3. Configurare l’interfaccia di loopback

L’interfaccia loopback `lo` è solitamente già configurata di default, ma per verificarne lo stato:

```bash
ip link set lo up
ip addr show dev lo

### 4. Attivare o disattivare un’interfaccia

```bash
sudo ip link set eth0 up
sudo ip link set eth0 down

### 5. Modificare parametri avanzati dell’interfaccia

Ad esempio, per modificare l’MTU:

```bash
sudo ip link set eth0 mtu 1400

### 6. Assegnare un indirizzo IP

```bash
sudo ip addr add 192.168.1.10/24 dev eth0

Per rimuoverlo:

```bash
sudo ip addr del 192.168.1.10/24 dev eth0

### 7. Visualizzare gli indirizzi IP configurati

```bash
ip addr show

### 8. Configurare una route di default

```bash
sudo ip route add default via 192.168.1.1 dev eth0

### 9. Eliminare una route

```bash
sudo ip route del 192.168.2.0/24 dev eth0

### 10. Verificare il percorso verso un host remoto

Questo non è un comando `ip` diretto, ma `ip route get` può fornire una traccia del percorso:

```bash
ip route get 8.8.8.8

### 11. Configurare un tunnel IP (esempio GRE)

```bash
sudo ip tunnel add gre1 mode gre remote 203.0.113.5 local 198.51.100.10 dev eth0
sudo ip link set gre1 up
sudo ip addr add 10.0.0.1/24 dev gre1

### 12. Stato globale della rete

```bash
ip -s link

Mostra statistiche di rete su tutte le interfacce.

### 13. Informazioni sugli indirizzi multicast

```bash
ip maddr show

### 14. Mostrare la cache ARP

```bash
ip neigh show

### 15. Gestire la ARP cache

Aggiungere una voce statica ARP:

```bash
sudo ip neigh add 192.168.1.50 lladdr 00:11:22:33:44:55 dev eth0 nud permanent

Rimuoverla:

```bash
sudo ip neigh del 192.168.1.50 dev eth0

## Configurazione di base consigliata

Una configurazione di rete di base consigliata potrebbe prevedere:

- Un’interfaccia Ethernet principale con IP statico e una route di default verso il gateway della LAN.
- Un indirizzo IP assegnato con il comando `ip addr add ...`.
- Una route di default impostata con `ip route add default via ...`.
- Niente accessi diretti come root: utilizzare sempre `sudo`.
- Mantenere l’MTU standard (1500) a meno di necessità specifiche.
- Verificare che la cache ARP non contenga entry obsolete e mantenere aggiornato l’elenco delle rotte.

Per rendere persistenti queste configurazioni, l’amministratore può utilizzare file di configurazione specifici della distribuzione (ad esempio `/etc/network/interfaces` su Debian/Ubuntu, o i file in `/etc/sysconfig/network-scripts/` su Red Hat/CentOS), riportando le stesse informazioni che abbiamo testato con `ip`.

## Conclusioni

Il comando **ip** mette a disposizione un set completo di strumenti per configurare, diagnosticare e mantenere in efficienza la rete di un host Linux. Prendere confidenza con le sue opzioni più importanti è un passo fondamentale per qualsiasi amministratore di sistema moderno. Aumentare la sicurezza e la stabilità della rete non richiede l’uso di pratiche rischiose, ma una buona comprensione degli strumenti a disposizione.

Con l’approccio presentato in questo articolo, è possibile migliorare la propria padronanza di `ip`, organizzare il lavoro in modo sistematico e mantenere un livello di sicurezza medio-alto anche nella gestione quotidiana del networking Linux.