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


Capitolo 114.   IPv4: configurazione delle interfacce di rete

La connessione in una rete basata su IP necessita inizialmente dell'assegnazione di indirizzi IP e quindi di un instradamento per determinare quale strada, o itinerario, devono prendere i pacchetti per raggiungere la destinazione.

Generalmente, ma non necessariamente, valgono queste regole:

In un sistema GNU/Linux, per poter gestire una connessione in rete di qualunque tipo, occorre un kernel predisposto in modo da attivarne la gestione (sezioni 29.2.4 e 29.2.9).

È necessario anche provvedere alla gestione delle interfacce di rete particolari che si utilizzano. Ciò può essere fatto sia attraverso la realizzazione di un kernel monolitico, sia modulare. Per quanto riguarda la gestione specifica di ogni singola scheda, la tendenza è quella di usare preferibilmente i moduli.

114.1   Configurazione delle interfacce di rete

La configurazione di un'interfaccia implica essenzialmente l'attribuzione di un indirizzo IP. Un indirizzo IP di un'interfaccia vale in quanto inserito in una rete logica, identificata anche questa da un proprio indirizzo IP. Pertanto, quando si assegna un indirizzo a un'interfaccia, occorre anche stabilire la rete a cui questo appartiene, attraverso la maschera di rete, con la quale, il risultato di indirizzo_di_interfaccia AND maschera_di_rete genera l'indirizzo della rete.

   .---------------------.                                     .---------------.
   |    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

Per la spiegazione di questa configurazione vengono mostrati nelle sezioni seguenti degli esempi ottenuti con un sistema GNU/Linux, attraverso il programma Ifconfig (1) (Interface configuration), a cui corrisponde l'eseguibile ifconfig. Tuttavia, il concetto rimane tale per gli altri sistemi operativi, anche se il comando che si usa per impostare le interfacce di rete può avere un nome e un funzionamento differente.

114.1.1   Loopback

Un elaboratore connesso o meno a una rete fisica vera e propria, deve avere una connessione virtuale a una rete immaginaria interna allo stesso elaboratore. A questa rete virtuale inesistente si accede per mezzo di un'interfaccia immaginaria, che in un sistema GNU/Linux è denominata lo, e l'indirizzo utilizzato è sempre lo stesso, 127.0.0.1, ma ugualmente deve essere indicato esplicitamente.

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

Come si vede dallo schema, la maschera di rete è quella di una classe A e, di solito, il comando che si usa per associare l'indirizzo all'interfaccia locale determina da solo questa maschera. In un sistema GNU/Linux si può definire il nodo locale in modo molto semplice:

ifconfig lo 127.0.0.1

Quindi, si può controllare la configurazione:

ifconfig lo[Invio]

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          ...

È indispensabile che sia presente l'interfaccia locale virtuale per il buon funzionamento del sistema, soprattutto quando l'elaboratore ha già una connessione a una rete reale. Infatti, si potrebbe essere tentati di non definire tale interfaccia, oppure di non attivare l'instradamento relativo, quando sono presenti altre interfacce fisiche reali, ma ciò potrebbe provocare un malfunzionamento intermittente della rete.

114.1.2   Ethernet

La configurazione degli indirizzi di una scheda di rete Ethernet è la cosa più comune: si tratta semplicemente di abbinare all'interfaccia il suo indirizzo stabilendo il proprio ambito di competenza, attraverso la maschera di rete. In precedenza era stato mostrato un esempio di configurazione schematizzato nel modo seguente:

Interfaccia Tipo Indirizzo IP Maschera di rete Indirizzo broadcast Indirizzo punto-punto
eth0 Ethernet 192.168.1.1 255.255.255.0 192.168.1.255 --

In questo modo, l'indirizzo 192.168.1.1 risulta assegnato all'interfaccia eth0, che in un sistema GNU/Linux rappresenta la prima scheda Ethernet. La maschera di rete, 255.255.255.0, fa sì che l'indirizzo di rete sia 192.168.1.0; infatti, 192.168.1.1 AND 255.255.255.0 = 192.168.1.0.

In un sistema GNU/Linux, si definisce questo abbinamento con il comando seguente:

ifconfig eth0 192.168.1.1 netmask 255.255.255.0

In questo caso, tuttavia, dal momento che l'indirizzo 192.168.1.1 appartiene alla classe C, la maschera di rete predefinita sarebbe stata la stessa di quella che è stata indicata esplicitamente.

La verifica della configurazione potrebbe dare l'esito seguente:

ifconfig eth0[Invio]

eth0      Link encap:10Mbps Ethernet  HWaddr 00:4F:56:00:11:87
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ...

114.1.3   Connessioni punto-punto

Le connessioni di tipo punto-punto, ovvero quelle in cui si possono collegare solo due punti alla volta, hanno caratteristiche diverse da quelle di tipo a bus, come nel caso della tecnologia Ethernet. In linea di massima si può dire che questo tipo di connessione implichi la specificazione di entrambi gli indirizzi dei due punti collegati, cioè delle rispettive interfacce. Tuttavia, la configurazione effettiva dipende anche dalle strategie che si vogliono adottare. A titolo di esempio si fa riferimento a una connessione PLIP, che si ottiene collegando due elaboratori con un cavo apposito attraverso le porte parallele.

Il modo più semplice, da un punto di vista intuitivo, per configurare una connessione punto-punto, è quello di trattarla come se fosse una connessione a bus. Per esempio, i due lati della connessione potrebbero essere definiti rispettivamente nel modo seguente:

Interfaccia Tipo Indirizzo IP Maschera di rete Indirizzo broadcast Indirizzo punto-punto
plip1 porta parallela 192.168.7.1 255.255.255.0 -- 192.168.7.2

Interfaccia Tipo Indirizzo IP Maschera di rete Indirizzo broadcast Indirizzo punto-punto
plip1 porta parallela 192.168.7.2 255.255.255.0 -- 192.168.7.1

Come si vede, si dichiara una maschera di rete che impegna un ottetto completo per connettere i due nodi. Segue il comando corrispondente, da utilizzare in un sistema GNU/Linux dal lato del primo dei due nodi:

ifconfig plip1 192.168.7.1 pointopoint 192.168.7.2 <-'
`->netmask 255.255.255.0

Come si comprende intuitivamente, si assegna l'indirizzo 192.168.7.1 all'interfaccia parallela plip1 locale e si stabilisce l'indirizzo 192.168.7.2 per l'altro capo della comunicazione. Il risultato è che si dovrebbe generare la configurazione seguente:(2)

ifconfig plip1[Invio]

plip1     Link encap:Ethernet  HWaddr FC:FC:C0:A8:64:84
          inet addr:192.168.7.1  P-t-P:192.168.7.2  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          ...

Dall'altro capo della connessione si deve eseguire la configurazione opposta. Per seguire l'esempio mostrato, si deve usare il comando seguente:

ifconfig plip1 192.168.7.2 pointopoint 192.168.7.1 <-'
`->netmask 255.255.255.0

In alternativa, dal momento che si tratta di una connessione di due soli punti, non è sempre indispensabile indicare precisamente l'indirizzo all'altro capo: di solito si può fare in modo che venga accettato qualunque indirizzo, facilitando la configurazione.

Interfaccia Tipo Indirizzo IP Maschera di rete Indirizzo broadcast Indirizzo punto-punto
plip1 porta parallela 192.168.7.1 255.255.255.0 -- 0.0.0.0

Interfaccia Tipo Indirizzo IP Maschera di rete Indirizzo broadcast Indirizzo punto-punto
plip1 porta parallela 192.168.7.2 255.255.255.0 -- 0.0.0.0

Sempre con un sistema GNU/Linux, la configurazione del primo nodo può essere ottenuta in questo modo alternativo:

ifconfig plip1 192.168.7.1 pointopoint 0.0.0.0 netmask 255.255.255.0

L'esempio che si vede sopra è lo stesso già proposto con la variante dell'indicazione dell'indirizzo all'altro capo. In questo caso, 0.0.0.0 fa in modo che venga accettata la connessione con qualunque indirizzo.

ifconfig plip1[Invio]

plip1     Link encap:Ethernet  HWaddr FC:FC:C0:A8:64:84
          inet addr:192.168.7.1  P-t-P:0.0.0.0  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          ...

Dall'altro capo della connessione ci si può comportare in modo analogo, come nell'esempio seguente:

ifconfig plip1 192.168.7.2 pointopoint 0.0.0.0 netmask 255.255.255.0

Tuttavia, è bene trattare le connessioni punto-punto per quello che sono, pertanto è bene specificare una maschera di rete che non impegni altri indirizzi se non quelli indicati. In pratica, si tratta si usare la maschera 255.255.255.255, che tra l'altro è quella predefinita in questo tipo di connessione.

Interfaccia Tipo Indirizzo IP Maschera di rete Indirizzo broadcast Indirizzo punto-punto
plip1 porta parallela 192.168.7.1 255.255.255.255 -- 192.168.7.2

Interfaccia Tipo Indirizzo IP Maschera di rete Indirizzo broadcast Indirizzo punto-punto
plip1 porta parallela 192.168.7.2 255.255.255.255 -- 192.168.7.1

Ecco il comando corrispondente per GNU/Linux:

ifconfig plip1 192.168.7.1 pointopoint 192.168.7.2 <-'
`->netmask 255.255.255.255

L'esempio mostra una configurazione in cui si specificano gli indirizzi IP di entrambi i punti. In alternativa, anche in questo caso, si può fare a meno di indicare espressamente l'indirizzo dell'altro capo, come nell'esempio seguente:

ifconfig plip1 192.168.7.1 pointopoint 0.0.0.0 <-'
`->netmask 255.255.255.255

Il vantaggio di usare questo tipo di configurazione sta nel risparmio di indirizzi; lo svantaggio sta nella necessità di stabilire instradamenti specifici per ognuno dei due punti (questo particolare verrà chiarito in seguito).

114.2   Configurazione delle interfacce di rete con un sistema GNU/Linux

In un sistema GNU/Linux, le interfacce di rete vengono identificate attraverso un nome, assegnato dal kernel nel momento della loro identificazione. Alcuni nomi di interfaccia di rete sono elencati nella tabella 112.1.

La configurazione delle interfacce di rete avviene attraverso Ifconfig (l'eseguibile ifconfig), che consente impostazioni differenti a seconda della famiglia di protocolli a cui si intende fare riferimento. In particolare, il riferimento a IPv4 è implicito, ma si può indicare esplicitamente attraverso la parola chiave inet (mentre inet6 fa riferimento a IPv6).

114.2.1   # ifconfig

ifconfig [interfaccia]

ifconfig [interfaccia... [famiglia_indirizzamento] [indirizzo] opzioni]

ifconfig viene utilizzato per attivare e mantenere il sistema delle interfacce di rete residente nel kernel. Viene utilizzato al momento dell'avvio per configurare la maggior parte di questo sistema in modo da portarlo a un livello di funzionamento. Dopo, viene utilizzato di solito solo a scopo diagnostico o quando sono necessarie delle regolazioni. Se non vengono forniti argomenti, oppure se vengono indicate solo delle interfacce, ifconfig visualizza semplicemente lo stato delle interfacce specificate, oppure di tutte se non sono state indicate.

Il primo argomento successivo al nome di interfaccia può essere la sigla identificativa di una famiglia di indirizzamento, ovvero di un sistema di protocolli di comunicazione particolare. A seconda del tipo di questo, cambia il modo di definire gli indirizzi che si attribuiscono alle interfacce. Se questo non viene specificato, come si fa di solito, si intende fare riferimento al sistema di protocolli che si basano su IPv4.

L'indirizzo è il modo con cui l'interfaccia viene riconosciuta all'interno del tipo di protocollo particolare che si utilizza. Nel caso di IP, può essere indicato l'indirizzo IP numerico o il nome di dominio, che in questo caso sarà convertito automaticamente (sempre che ciò sia possibile) nell'indirizzo numerico corretto.

Alcune opzioni

up | down

L'opzione up attiva l'interfaccia. Quando all'interfaccia viene attribuito un nuovo indirizzo, questa viene attivata implicitamente. L'opzione down disattiva l'interfaccia.

arp | -arp

Abilita o disabilita l'uso del protocollo ARP per questa interfaccia.

allmulti | -allmulti

Abilita o disabilita la modalità promiscua dell'interfaccia. Ciò permette di fare un monitoraggio della rete attraverso applicazioni specifiche che così possono analizzare ogni pacchetto che vi transita, anche se non è diretto a quella interfaccia.

mtu n

Permette di specificare l'unità massima di trasferimento (MTU o Max transfer unit) dell'interfaccia. Per le schede Ethernet, questo valore può variare in un intervallo di 1 000-2 000 (il valore predefinito è 1 500). Per il protocollo SLIP si possono utilizzare valori compresi tra 200 e 4 096. È da notare però che attualmente non è possibile gestire la frammentazione IP, di conseguenza, è meglio utilizzare un MTU sufficientemente grande.

pointopoint [indirizzo_di_destinazione] | -pointopoint

Abilita o disabilita la modalità punto-punto per questa interfaccia. La connessione punto-punto è quella che avviene tra due elaboratori soltanto. Se viene indicato l'indirizzo, si tratta di quello dell'altro nodo.

netmask indirizzo_di_netmask

Stabilsce la maschera di rete per questa interfaccia. L'indicazione della maschera di rete può essere omessa, in tal caso, viene utilizzato il valore predefinito che è determinato in base alla classe a cui appartiene l'indirizzo (A, B o C). Naturalmente, se si usa una sottorete, il valore della maschera di rete non può coincidere con quello predefinito.

irq numero_di_irq

Alcune interfacce permettono di definire il numero di IRQ in questo modo. Nella maggior parte dei casi, ciò non è possibile.

broadcast [indirizzo] | -broadcast

Abilita o disabilita la modalità broadcast per questa interfaccia. Se abilitandola, viene indicato l'indirizzo, si specifica l'indirizzo broadcast di questa interfaccia.

multicast

Questa opzione permette di attivare esplicitamente la modalità multicast, anche se normalmente ciò viene determinato automaticamente in base al tipo di interfaccia utilizzato.

Esempi

ifconfig lo 127.0.0.1

Attiva l'interfaccia lo corrispondente al loopback con il noto indirizzo IP 127.0.0.1.

ifconfig eth0 192.168.1.1 netmask 255.255.255.0

Attiva l'interfaccia eth0 corrispondente alla prima scheda Ethernet, con l'indirizzo IP 192.168.1.1 e la maschera di rete 255.255.255.0.

ifconfig eth0

Emette la situazione dell'interfaccia eth0 corrispondente alla prima scheda Ethernet.

ifconfig

Emette la situazione di tutte le interfacce di rete attivate.

114.2.2   Alias IP

È possibile attribuire a ogni interfaccia di rete più di un indirizzo IP. Ciò si ottiene definendo delle interfacce virtuali, riferite a quelle reali, a cui poi si attribuiscono degli indirizzi IP differenti. Il nome di un'interfaccia virtuale ha l'aspetto seguente:

interfaccia_reale:n_interfaccia_virtuale

Per esempio, eth0 è il nome reale di un'interfaccia di rete Ethernet, mentre eth0:0, eth0:1,... sono una serie di interfacce virtuali riferite sempre all'interfaccia reale eth0. Naturalmente, lo stesso vale per gli altri tipi di interfaccia di rete: ppp0:n, plip0:n,...

Figura 114.2. Utilizzo ipotetico degli alias IP.

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

Naturalmente, per ottenere la definizione di alias IP, potrebbe essere necessario predisporre un kernel adatto (sezione 29.2.9).

Nel momento in cui si configura un'interfaccia virtuale, questa viene definita implicitamente. Si interviene nel modo solito attraverso ifconfig. L'esempio seguente si riferisce a quanto mostrato nella figura 114.2, in cui, su una sola rete fisica si distinguono gli indirizzi di due sottoreti differenti: 192.168.1.0 e 192.168.100.0.

ifconfig eth0 192.168.1.254 netmask 255.255.255.0

ifconfig eth0:0 192.168.100.254 netmask 255.255.255.0

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

1) net-tools   GNU GPL

2) La connessione PLIP non ha niente a che fare con le interfacce Ethernet, tuttavia il programma ifconfig fa apparire le interfacce PLIP come se fossero Ethernet, con la differenza che si tratta di una connessione punto-punto.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome ipv4_configurazione_delle_interfacce_di_rete.html

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