[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
Iproute, ovvero Linux traffic control engine, (1) è un pacchetto di programmi di servizio per comunicare con il kernel Linux allo scopo di configurare nel dettaglio le interfacce di rete e l'instradamento. Il programma più importante del pacchetto corrisponde all'eseguibile ip e il suo utilizzo è piuttosto complesso.
In questo capitolo si riprendono in particolare degli esempi comuni di configurazione, già mostrati in precedenza, ma definiti attraverso ip. Il funzionamento di Iproute non viene descritto nel dettaglio; eventualmente conviene consultare la sua documentazione originale.
Dal momento che Iproute tiene in considerazione lo stato precedente della configurazione delle interfacce e degli instradamenti, verranno mostrati esempi che potrebbero anche risultare ridondanti, in cui le informazioni, prima di essere definite, vengono cancellate, anche nel caso non ce ne fosse bisogno.
Il programma eseguibile principale di Iproute è ip, la cui sintassi ha una struttura particolare, riassumibile nel modello seguente:
ip [opzioni] oggetto [comando [argomenti]]
Alcune opzioni rilevanti sono elencate nella tabella seguente; si può osservare che con queste si definisce in particolare il protocollo di riferimento:
| richiede maggiori informazioni; |
| fa riferimento ai protocolli IPv4; |
| fa riferimento ai protocolli IPv6; |
| non fa riferimento ad alcun protocollo. |
L'oggetto è ciò su cui si vuole intervenire, o dal quale si vogliono ottenere delle informazioni. Si rappresenta con una parola chiave:
Il comando che può seguire l'indicazione dell'oggetto rappresenta l'azione da compiere e dipende dall'oggetto stesso. Alcuni comandi comuni sono:
| aggiunge qualcosa all'oggetto; |
| toglie qualcosa dall'oggetto; |
| mostra la situazione dell'oggetto; |
| mostra una guida sintetica dell'uso dell'oggetto; |
Viene riproposto un esempio già apparso in altri capitoli:
|
Lo schema mostra la situazione di due elaboratori, che si potrebbe riassumere sinteticamente nelle due tabelle seguenti, riferite rispettivamente all'elaboratore «A» e all'elaboratore «B»:
La configurazione dell'interfaccia di rete virtuale locale, si può ottenere con i comandi seguente, in entrambi gli elaboratori:
#
ip -4 address del 127.0.0.1/8 dev lo
#
ip -4 address add 127.0.0.1/8 dev lo broadcast 127.255.255.255
<-'
`->scope host
#
ip link set up dev lo
Come si può intuire, viene prima cancellata la configurazione associata all'indirizzo 127.0.0.1, con una maschera di rete pari ai primi 8 bit (255.0.0.0); quindi si imposta di nuovo l'indirizzo e gli altri dati accessori; infine si attiva l'interfaccia. Per controllare la situazione vanno usati comandi diversi, in base al contesto. Per conoscere lo stato dell'interfaccia:
#
ip link show dev lo
[Invio]
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 |
Per conoscere l'indirizzo IPv4 associato all'interfaccia:
#
ip -4 address show dev lo
[Invio]
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue inet 127.0.0.1/8 brd 127.255.255.255 scope host lo |
La configurazione di una scheda di rete Ethernet procede in modo simile:
#
ip -4 address del local 192.168.1.1/24 dev eth0
[Invio]
#
ip -4 address add local 192.168.1.1/24 dev eth0
<-'
`->broadcast 192.168.1.255 scope site
[Invio]
#
ip link set up dev eth0
[Invio]
#
ip link show dev eth0
[Invio]
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:4f:56:00:11:87 brd ff:ff:ff:ff:ff:ff |
#
ip -4 address show dev eth0
[Invio]
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 inet 192.168.1.1/24 brd 192.168.1.255 scope site eth0 |
La configurazione di un'interfaccia di rete per le connessioni punto-punto, diventa più complessa; per semplicità si mostra solo la configurazione dal lato dell'elaboratore «A»:
#
ip -4 address del local 192.168.7.1/32 dev plip0
[Invio]
#
ip -4 address add local 192.168.7.1/32 peer 192.168.7.2
<-'
`->dev plip0 scope site
[Invio]
#
ip link set up dev plip0
[Invio]
#
ip link show dev plip0
[Invio]
2: plip0: <POINTOPOINT,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen 10 link/ether fc:fc:c0:a8:01:0a peer ff:ff:ff:ff:ff:ff |
#
ip -4 address show dev plip0
[Invio]
2: plip0: <POINTOPOINT,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen 10 link/ether fc:fc:c0:a8:01:0a peer ff:ff:ff:ff:ff:ff inet 192.168.7.1 peer 192.168.7.2/32 scope site plip0 |
Nella sezione 114.2.2 è stata mostrata l'attribuzione di più indirizzi IPv4 alla stessa interfaccia di rete, attraverso l'uso di nomi particolari per l'interfaccia stessa:
interfaccia_reale:n_interfaccia_virtuale
In realtà, con i kernel Linux recenti non è più necessario distinguere tra «interfacce virtuali»; tuttavia, per questioni di compatibilità, si mantiene questa gestione. Si osservi in particolare che quanto segue i due punti verticali, non deve essere necessariamente un numero, ma può essere anche un altro tipo di stringa.
|
La figura 117.2 richiama un esempio già mostrato in precedenza, a proposito dell'attribuzione di più indirizzi IPv4 alla stessa interfaccia di rete. Per ottenere lo stesso risultato con Iproute, si può procedere nel modo seguente:
#
ip -4 address del local 192.168.10.254/24 dev eth0
[Invio]
#
ip -4 address add local 192.168.1.254/24 dev eth0
<-'
`->broadcast 192.168.1.255 scope site
[Invio]
#
ip link set up dev eth0
[Invio]
#
ip -4 address add local 192.168.100.254/24 dev eth0
<-'
`->label eth0:0 broadcast 192.168.100.255 scope site
[Invio]
#
ip link set up dev eth0
[Invio]
#
ip -4 address show dev eth0
[Invio]
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 inet 192.168.1.254/24 brd 192.168.1.255 scope site eth0 inet 192.168.100.254/24 brd 192.168.100.255 scope site eth0:0 |
Per eliminare completamente la configurazione di una certa interfaccia, compresi gli indirizzi aggiuntivi, si può usare il comando seguente:
#
ip -4 address flush dev eth0
[Invio]
La gestione della tabella ARP, ovvero ciò che consente un abbinamento tra gli indirizzi IPv4 e gli indirizzi di livello due (secondo il modello ISO-OSI), può essere molto complessa. Qui vengono mostrati solo alcuni esempi che si rifanno in pratica all'uso del comando arp.
#
ip -4 neighbour show dev eth0
[Invio]
Mostra la tabella ARP relativa a quanto collegato fisicamente all'interfaccia eth0.
#
ip -4 neighbour del 192.168.1.2 dev eth0
[Invio]
Cancella le voci riferite al nodo 192.168.1.2, per il collegamento relativo all'interfaccia eth0, contenute nella tabella ARP.
#
ip -4 neighbour flush dev eth0
[Invio]
Cancella tutte le voci riferite all'interfaccia di rete eth0, contenute nella tabella ARP.
Con Iproute è necessario definire tutti gli instradamenti, compreso quello locale, che non è implicito nella definizione degli indirizzi. Riprendendo la situazione descritta nella sezione 117.2, si può descrivere l'instradamento con le due tabelle seguenti, riferite rispettivamente al nodo A e al nodo B:
Destinazione | Maschera di rete | Router | Interfaccia di rete |
192.168.1.0 | 255.255.255.0 | -- | eth0 |
192.168.7.1 | 255.255.255.255 | -- | plip1 |
192.168.7.2 | 255.255.255.255 | -- | plip1 |
127.0.0.0 | 255.0.0.0 | -- | lo |
Destinazione | Maschera di rete | Router | Interfaccia di rete |
192.168.7.1 | 255.255.255.255 | -- | plip1 |
192.168.7.2 | 255.255.255.255 | -- | plip1 |
127.0.0.0 | 255.0.0.0 | -- | lo |
Entrambi i nodi devono configurare l'instradamento locale (interfaccia lo):
#
ip -4 route replace to unicast 127.0.0.0/8 scope host dev lo
[Invio]
Per visualizzare l'instradamento impostato:
#
ip -4 route show
[Invio]
127.0.0.0/8 dev lo scope host |
L'instradamento dell'elaboratore A nella rete 192.168.1.* si ottiene in modo altrettanto semplice:
#
ip -4 route replace to unicast 192.168.1.0/24 scope link
<-'
`->dev eth0
[Invio]
#
ip -4 route show
[Invio]
192.168.1.0/24 dev eth0 scope link |
L'instradamento, sia dell'elaboratore A, sia dell'elaboratore B, per quanto riguarda la connessione punto-punto, si può ottenere così:
#
ip -4 route replace to unicast 192.168.7.1/32 scope link
<-'
`->dev plip1
[Invio]
#
ip -4 route replace to unicast 192.168.7.2/32 scope link
<-'
`->dev plip1
[Invio]
#
ip -4 route show
[Invio]
192.168.7.1/32 dev plip1 scope link 192.168.7.2/32 dev plip1 scope link |
Indipendentemente dagli esempi precedenti, si può prendere ora in considerazione il caso di un nodo, connesso alla rete locale 192.168.1.*, nella quale è disponibile un router, all'indirizzo 192.168.1.254, che consente di accedere alla rete 192.168.7.*:
Destinazione | Maschera di rete | Router | Interfaccia di rete |
192.168.1.0 | 255.255.255.0 | -- | eth0 |
192.168.7.0 | 255.255.255.0 | 192.168.1.254 | eth0 |
Per realizzare l'instradamento verso il router, si può usare il comando seguente:
#
ip -4 route replace to unicast 192.168.7.0/24 scope site
<-'
`->via 192.168.1.254
[Invio]
Si osservi che l'instradamento verso la rete 192.168.1.* deve essere stato definito precedentemente; così si determina in modo automatico anche l'interfaccia coinvolta, che è quella necessaria a raggiungere il router nella rete locale.
#
ip -4 route show
[Invio]
192.168.7.0/24 via 192.168.1.254 dev eth0 scope site 192.168.1.0/24 dev eth0 scope link |
La definizione dell'instradamento predefinito funziona in modo analogo. Supponendo che il router raggiungibile all'indirizzo 192.168.1.254 consenta di instradare verso tutte le altre reti, si può cambiare il comando nel modo seguente:
#
ip -4 route replace to unicast 0/0 scope global
<-'
`->via 192.168.1.254
[Invio]
#
ip -4 route show
[Invio]
192.168.1.0/24 dev eth0 scope link default via 192.168.1.254 dev eth0 |
La cancellazione di un instradamento si ottiene in modo analogo a quanto visto a proposito dell'impostazione dell'indirizzo dell'interfaccia. Per esempio, volendo cancellare l'instradamento per la rete locale 192.168.1.*, si può procedere nel modo seguente:
#
ip -4 route del to unicast 192.168.1.0/24
[Invio]
Inoltre, è possibile usare un comando più esteso, per cancellare tutti gli instradamenti che corrispondono a una certa interfaccia:
#
ip -4 route flush dev eth0
[Invio]
daniele @ swlibero.org
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome ipv4_con_il_pacchetto_iproute.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]