Introduzione

Il comando ip è un potente strumento per la configurazione di interfacce di rete che qualsiasi amministratore di sistema Linux dovrebbe conoscere. Può essere utilizzato per attivare o disattivare le interfacce, assegnare e rimuovere indirizzi e route per gestire la cache ARP e molto altro.

In questo tutorial, ti mostreremo come utilizzare il ip comando attraverso esempi pratici e spiegazioni dettagliate delle opzioni più comuni.

Come utilizzare il comando ip

L'utility ip fa parte del pacchetto iproute2 installato su tutte le moderne distribuzioni Linux.

La sintassi per il comando ip è la seguente:

ip [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT è il tipo di oggetto che si desidera gestire. Gli oggetti (o sottocomandi) utilizzati più frequentemente sono:

  • link( l) - Visualizza e modifica le interfacce di rete.
  • address( a) - Visualizza e modifica gli indirizzi IP.
  • route( r) - Visualizza e modifica la tabella di routing.
  • neigh( n) - Visualizza e manipola oggetti vicini (tabella ARP).

L'oggetto può essere scritto in forma completa o abbreviata (short). Per visualizzare un elenco di comandi e argomenti per ciascun tipo di oggetto digitare ip OBJECT help per ogni sottocomando, esempio:

ip link help

Dovreste visualizzare un messaggio di output simile al seguente:

Usage: ip link add [link DEV] [ name ] NAME
                   [ txqueuelen PACKETS ]
                   [ address LLADDR ]
                   [ broadcast LLADDR ]
                   [ mtu MTU ] [index IDX ]
                   [ numtxqueues QUEUE_COUNT ]
                   [ numrxqueues QUEUE_COUNT ]
                   type TYPE [ ARGS ]
                   
...


TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |
          bridge | bond | team | ipoib | ip6tnl | ipip | sit | vxlan |
          gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan |
          vti | nlmon | team_slave | bond_slave | ipvlan | geneve |
          bridge_slave | vrf | macsec }

Quando si configurano le interfacce di rete, è necessario eseguire i comandi come root o utente con privilegi sudo. Altrimenti il ​​comando stamperà RTNETLINK answers: Operation not permitted.

Le configurazioni impostate con il comando ip non sono persistenti. Dopo il riavvio del sistema, tutte le modifiche vengono perse. Per impostazioni permanenti, è necessario modificare i file di configurazione specifici della distro o aggiungere i comandi a uno script di avvio.

Visualizzare e modificare gli indirizzi IP

Quando si opera con l'oggetto addr, i comandi assumono la seguente forma:

ip addr [ COMMAND ] ADDRESS dev IFNAME

I comandi più frequentemente utilizzati della dell'oggetto addr sono: show, add, e del.

Visualizzare informazioni su tutti gli indirizzi IP

Per visualizzare un elenco di tutte le interfacce di rete e l'indirizzo IP associato digitare il comando seguente:

ip addr show

L'output sarà simile al seguente:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff
    inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2a01:4f8:1c1c:c73d::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::9400:ff:fe19:12df/64 scope link
       valid_lft forever preferred_lft forever

Si otterrà lo stesso risultato se si digita omette l'comandi show e digitare: ip addr.

Se si desidera visualizzare solo indirizzi IP IPv4o IPv6, utilizzare ip -4 addr o ip -6 addr.

ip -4 addr

L'output sarà simile al seguente:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
       valid_lft forever preferred_lft forever

Visualizzare informazioni su una singola interfaccia di rete

Per ottenere informazioni su un'interfaccia di rete specifica, utilizzare ip addr show dev seguito dal nome del dispositivo. Ad esempio, per eseguire una query eth0, digitare:

ip addr show dev eth0

L'output sarà simile al seguente:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff
    inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2a01:4f8:1c1c:c73d::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::9400:ff:fe19:12df/64 scope link
       valid_lft forever preferred_lft forever

Assegnare indirizzi IP a un'interfaccia

Per assegnare un indirizzo IP a un'interfaccia, utilizzare la sintassi seguente:

ip addr add ADDRESS dev IFNAME

Dove IFNAME è il nome dell'interfaccia e ADDRESS è l'indirizzo IP che si desidera assegnare all'interfaccia.

Per aggiungere l'indirizzo 192.168.111.111 con netmask 24 al dispositivo eth0, digitare:

sudo ip address add 192.168.111.111/24 dev eth0

In caso di successo, il comando non mostrerà alcun output. Se l'interfaccia non esiste, otterrai Cannot find device "eth0".

Assegnare più indirizzi IP alla stessa interfaccia

Con ip, è possibile assegnare più indirizzi alla stessa interfaccia. Per esempio:

sudo ip address add 192.168.111.111/24 dev eth0
sudo ip address add 192.168.111.22/24 dev eth0

Per confermare gli IP sono assegnati tipo ip -4 addr show dev eth0 o ip -4 a show dev eth0:

ip -4 addr show dev eth0

L'output sarà simile al seguente:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.111.111/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.111.22/24 scope global secondary eth0
       valid_lft forever preferred_lft forever

Rimuovi / Elimina un indirizzo IP dall'interfaccia

La sintassi per rimuovere un indirizzo IP da un'interfaccia è la seguente:

ip addr dev ADDRESS dev IFNAME

IFNAME è il nome dell'interfaccia e ADDRESS è l'indirizzo IP che si desidera rimuovere dall'interfaccia.

Per rimuovere l'indirizzo 192.168.111.111/24 dal dispositivo eth0 digitare:

sudo ip address del 192.168.111.111/24 dev eth0

Visualizzare e modificare delle interfacce di rete

Per gestire e visualizzare lo stato delle interfacce di rete, utilizzare l'oggetto link.

I comandi più comunemente utilizzati quando si lavora con gli oggetti link sono: show, set, add, e del.

Visualizzare informazioni sulle interfacce di rete

Per visualizzare un elenco di tutte le interfacce di rete, digitare il comando seguente:

ip link show

L'output sarà simile al seguente:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff

Diversamente ip addr show, ip link show non stamperà informazioni sugli indirizzi IP associati al dispositivo.

Per ottenere informazioni su un'interfaccia di rete specifica, utilizzare ip link show dev seguito dal nome del dispositivo. Ad esempio, per eseguire una query eth0 digitare:

ip link show dev eth0

L'output sarà simile al seguente:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff

Modificare lo stato dell'interfaccia UP/DOWN

Per attivare o disattivare le interfacce, utilizzare il comando ip link set dev seguito dal nome del dispositivo e lo stato desiderato:

ip link set dev {DEVICE} {up|down}

Ad esempio, per portare l'interfaccia eth0 online, digitare:

ip link set eth0 up

E da portare se offline

ip link set eth0 down

Visualizzare e modificare la tabella di routing

Per assegnare, rimuovere e visualizzare la tabella di routing del kernel utilizzare l'oggetto route. I comandi più comunemente utilizzati quando si lavora con gli oggetti itinerari sono: list, add e del.

Visualizzare la tabella di routing

Per ottenere un elenco delle voci della route del kernel, utilizzare uno dei seguenti comandi:

ip route
ip route list SELECTOR
ip route list SELECTOR

Se usato senza un comando SELECTOR, elencherà tutte le voci della route nel kernel:

ip route list
default via 172.31.1.1 dev eth0
172.31.1.1 dev eth0 scope link
192.168.111.0/24 dev eth0 proto kernel scope link src 192.168.111.22

Per visualizzare solo il routing per una rete specifica, ad esempio, 172.17.0.0/16 digitare:

ip r list 192.168.111.0/24
192.168.111.0/24 dev eth0 proto kernel scope link src 192.168.111.22

Aggiungere un nuovo route

Per aggiungere una nuova voce alla tabella di routing, utilizzare il comando route add seguito dalla rete o dal nome del dispositivo.

Aggiungi un percorso a 192.168.111.0/24 tramite il gateway a 192.168.111.1

ip route add 192.168.111.0/24 via 192.168.111.1

Aggiungi un percorso a 192.168.111.0/24 che può essere raggiunto sul dispositivo eth0.

ip route add 192.168.111.0/24 dev eth0

Per aggiungere un percorso predefinito, utilizzare la parola chiave default. Il comando seguente aggiungerà una route predefinita tramite il gateway locale 192.168.111.1 che può essere raggiunta sul dispositivo eth0.

ip route add default via 192.168.111.1 dev eth0

Eliminare un percorso

Per eliminare una voce dalla tabella di routing, utilizzare il comando route del, La sintassi per eliminare una route è la stessa di quando si aggiunge.

Il seguente comando eliminerà la route predefinita:

ip route del default

Elimina un percorso per 192.168.111.0/24 tramite il gateway in 192.168.111.1

ip route del 192.168.111.0/24 via 192.168.111.1

Conclusione

Ormai dovresti avere una buona conoscenza di come usare il comando ip su Linux. Per ulteriori informazioni sulle altre opzioni del comando ip digitare:

man ip


Per uscire dalla schermata di help, digitare q:

q