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 IPv4
o 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