[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 117.   IPv4 con il pacchetto Iproute

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.

Quando si intende gestire una rete IPv4, Iproute risulta eccessivamente complesso da usare; tuttavia, Iproute diventa indispensabile con IPv6 e questo capitolo permette di introdurre al suo utilizzo, attraverso esempi comuni che possono essere confrontati facilmente.

117.1   Sintassi generale

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:

-s

-stats

-statistics

richiede maggiori informazioni;

-f inet

-family inet

-4

fa riferimento ai protocolli IPv4;

-f inet6

-family inet6

-6

fa riferimento ai protocolli IPv6;

-f link

-family link

-0

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:

link

si tratta di un dispositivo di rete;

address

si fa riferimento a un indirizzo del protocollo coinvolto;

address

si fa riferimento a un indirizzo IPv4 o IPv6, in base al contesto;

neighbour

fa riferimento alla tabella ARP (IPv4) o NDISC (IPv6);

route

interviene nella tabella degli instradamenti;

rule

fa riferimento a una regola nella politica degli instradamenti;

maddress

indirizzo multicast;

mroute

instradamento multicast;

tunnel

tunnel su IPv4.

Il comando che può seguire l'indicazione dell'oggetto rappresenta l'azione da compiere e dipende dall'oggetto stesso. Alcuni comandi comuni sono:

add

aggiunge qualcosa all'oggetto;

delete

toglie qualcosa dall'oggetto;

show

list

mostra la situazione dell'oggetto;

help

mostra una guida sintetica dell'uso dell'oggetto;

117.2   Configurazione comune delle interfacce di rete

Viene riproposto un esempio già apparso in altri capitoli:

   .---------------------.                                     .---------------.
   |    Elaboratore A    | plip1                   192.168.7.2 | Elaboratore B |
   |                     |-------------------------------------|               |
   |    127.0.0.1  lo    |192.168.7.1                    plip1 | 127.0.0.1  lo |
   `---------------------'                                     `---------------'
     192.168.1.1 | eth0
                 |
                 |
                 |    rete 192.168.1.0
- - - - - - - - -*- - - - - - - - - - - - - 

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»:

Interfaccia Tipo Indirizzo IP Maschera di rete Indirizzo broadcast Indirizzo punto-punto
lo virtuale 127.0.0.1 255.0.0.0 127.255.255.255 --
plip1 porta parallela 192.168.7.1 255.255.255.255 -- 192.168.7.2
eth0 Ethernet 192.168.1.1 255.255.255.0 192.168.1.255 --

Interfaccia Tipo Indirizzo IP Maschera di rete Indirizzo broadcast Indirizzo punto-punto
lo virtuale 127.0.0.1 255.0.0.0 127.255.255.255 --
plip1 porta parallela 192.168.7.2 255.255.255.255 -- 192.168.7.1

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

In questi esempi è stato inserito l'ambito di competenza degli indirizzi usati. In particolare, la definizione scope site, specifica che si tratta di indirizzi validi nell'ambito del sito, inteso come un insieme di sottoreti, in cui i nodi non hanno accesso all'esterno. Ciò è stato mostrato in questo modo perché gli indirizzi usati sono riservati per le reti private e non sono accessibili dalla rete globale.

117.3   Indirizzi multipli per una stessa interfaccia di rete

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.

Figura 117.2. Esempio di utilizzo di più indirizzi sulla stessa interfaccia.

        .------.        .------.        .------.        .------.
        | host |        | host |        | host |        | host |
        `------'        `------'        `------'        `------'
            |               |               |               |
- - - ------*---------------*-------*-------*---------------*---------- - - -
            192.168.100.0 <---      |      ---> 192.168.1.0 
                                    |
                                    |
             192.168.100.254 eth0:0 | eth0 192.168.1.254
                                    |
                         .---------------------.
                         |                     |
                         |       Router        |
                         |                     |
                         `---------------------'

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]

117.4   ARP

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.

117.5   Instradamento

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]

Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- daniele @ swlibero.org

1) Iproute   GNU GPL


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]