[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume]


Capitolo 787.   nanoLinux: la rete e gli instradamenti

Questo capitolo mostra alcune situazioni per cui nanoLinux è predisposto, per quanto riguarda il collegamento a una rete. Si osservi che nanoLinux è organizzato per funzionare correttamente in reti IPv4, anche senza la risoluzione dei nomi locali; pertanto, la lettura di questo capitolo e l'utilizzo relativo di nanoLinux presuppongono una conoscenza adeguata delle reti IPv4 (volume X).

787.1   Individuazione delle interfacce di rete

Le interfacce di rete Ethernet sono identificate da nomi del tipo eth0, eth1,... ethn, ma l'attribuzione del numero n non è controllabile. In pratica, può capitare che la prima e unica interfaccia di rete abbia il nome eth7. Quando si vogliono realizzare delle configurazioni abbastanza uniformi tra elaboratori che hanno una sola interfaccia di rete Ethernet, è improbabile che il nome attribuito all'interfaccia di rete sia lo stesso.

Con nanoLinux, quando si indica il nome di un'interfaccia Ethernet si può usare il nome effettivo (eth0, eth1, ecc...), oppure si può fare riferimento a una variabile. Sono previste tre variabili per questo scopo, da annotare esattamente così: $ETH0, $ETH1 e $ETH2. Questi nomi si riferiscono, rispettivamente, alla prima, alla seconda e alla terza interfaccia Ethernet, indipendentemente dal nome effettivo che gli viene attribuito automaticamente. Negli esempi dei capitoli, si intende utilizzare questa rappresentazione generica.

787.2   Connessione in una rete locale

L'utilizzo di nanoLinux in una rete locale, che può disporre eventualmente di un router, si configura normalmente attraverso i comandi consueti come ifconfig e route, ma può essere definita una configurazione duratura (eventualmente salvandola in un disco se si utilizza nanoLinux da DVD).

La configurazione predefinita di nanoLinux prevede l'uso del protocollo DHCP, in modo da attribuire automaticamente l'indirizzo alla prima interfaccia di rete Ethernet e anche l'instradamento necessario a uscire dalla rete locale.

Figura 787.1. Utilizzo di nanoLinux in una rete locale tipica.

schema rete locale con collegamento attraverso un router

La figura mostra una situazione pratica: l'elaboratore in cui è in funzione nanoLinux deve utilizzare l'indirizzo IPv4 192.168.1.7 (in quanto si trova nella rete 192.168.1.0/255.255.255.0) e può accedere all'esterno della rete locale attraverso un router NAT raggiungibile all'indirizzo 192.168.1.254. Per configurare nanoLinux attraverso nanorc si procede nel modo seguente:

nanorc network config[Invio]

.Internal network interface name--.
| Please insert the real internal |
| network interface name:         |
| .-----------------------------. |
| |$ETH0                        | |
| `-----------------------------' |
|                                 |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

$ETH0<OK>

.Internal network interface address--.
| Please insert the internal network |
| interface IPv4 address:            |
| .--------------------------------. |
| |                                | |
| `--------------------------------' |
|------------------------------------|
|       <  OK  >    <Cancel>         |
`------------------------------------'

192.168.1.7<OK>

Volendo dichiarare esplicitamente di voler utilizzare il protocollo DHCP, al posto dell'indirizzo IPv4 si deve inserire la parola chiave AUTO. In tal caso, le richieste successive non vengono fatte all'utente.

.-----Internal netmask-------.
| Please insert the internal |
| IPv4 network mask:         |
| .------------------------. |
| |255.255.255.0           | |
| `------------------------' |
|                            |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

255.255.255.0<OK>

.Internal network router address--.
| Please insert the internal      |
| network IPv4 router address:    |
| .-----------------------------. |
| |                             | |
| `-----------------------------' |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

192.168.1.254<OK>

Si osservi che se la rete locale dovesse essere sprovvista di un router (una rete locale isolata), è importante evitare di indicare come indirizzo del router lo stesso indirizzo dell'interfaccia di rete locale, perché la concomitanza degli indirizzi fa presumere alla procedura prevista per nanoLinux che il nodo locale sia precisamente un router nei confronti della rete locale.

787.3   Router per una rete locale

nanoLinux può essere usato anche per intervenire in qualità di router al servizio di una rete locale, per la connessione con una rete esterna. Si immagina una situazione simile a quella della figura successiva.

Figura 787.6. nanoLinux utilizzato come router.

router per collegare una rete locale a una rete più grande

Nella figura, il router si colloca tra due reti: 172.21.*.* e 192.168.1.*. Per la precisione, la rete 172.21.*.* accede all'esterno attraverso la trasformazione degli indirizzi (NAT), perché si presume che gli instradamenti nella rete 192.168.1.* consentano di raggiungere l'esterno (Internet), ma non di accedere alla rete 172.21.*.*.

nanorc network config[Invio]

.Internal network interface name--.
| Please insert the real internal |
| network interface name:         |
| .-----------------------------. |
| |$ETH0                        | |
| `-----------------------------' |
|                                 |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

$ETH0<OK>

.Internal network interface address--.
| Please insert the internal network |
| interface IPv4 address:            |
| .--------------------------------. |
| |                                | |
| `--------------------------------' |
|------------------------------------|
|       <  OK  >    <Cancel>         |
`------------------------------------'

172.21.254.254<OK>

.-----Internal netmask-------.
| Please insert the internal |
| IPv4 network mask:         |
| .------------------------. |
| |255.255.0.0             | |
| `------------------------' |
|                            |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

255.255.0.0<OK>

.Internal network router address--.
| Please insert the internal      |
| network IPv4 router address:    |
| .-----------------------------. |
| |                             | |
| `-----------------------------' |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

172.21.254.254<OK>

Dal momento che l'indirizzo del router per la rete interna coincide con l'indirizzo dell'interfaccia, la procedura intende che si debba specificare anche il collegamento con l'esterno:

.External network interface name--.
| Please insert the real external |
| network interface name:         |
| .-----------------------------. |
| |$ETH1                        | |
| `-----------------------------' |
|                                 |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

Per funzionare correttamente, un router con le funzionalità che si richiedono qui deve avere due interfacce. Nel caso si trattasse di una sola interfaccia ci possono essere delle funzionalità che vengono a mancare, in ogni caso si deve inserire sempre il nome reale dell'interfaccia, non un alias.

$ETH1<OK>

.External network interface address--.
| Please insert the external network |
| interface IPv4 address:            |
| .--------------------------------. |
| |                                | |
| `--------------------------------' |
|------------------------------------|
|       <  OK  >    <Cancel>         |
`------------------------------------'

192.168.1.253<OK>

.-----External netmask-------.
| Please insert the external |
| IPv4 network mask:         |
| .------------------------. |
| |255.255.255.0           | |
| `------------------------' |
|                            |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

255.255.255.0<OK>

.External network router address--.
| Please insert the external      |
| network IPv4 router address:    |
| .-----------------------------. |
| |                             | |
| `-----------------------------' |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

192.168.1.254<OK>

.----Transparent proxy------.
| Is this router a          |
| transparent proxy?        |
|---------------------------|
|     < Yes >   < No  >     |
`---------------------------'

Potrebbe essere conveniente sfruttare il proxy imponendo il suo utilizzo da parte della rete locale:

<Yes>

Quando si intende utilizzare la funzione di proxy, occorre ricordare di controllare la configurazione di OOPS in modo da garantirgli una disponibilità adeguata di risorse. Vanno controllati e modificati i file /etc/oops/oops.cfg e /etc/oops/oops.cfg.nanoLinux:

mem_max         128m
...
maxresident     5m

Il router che si ottiene si comporta anche come firewall, secondo una configurazione di massima che dovrebbe impedire alcuni tipi di accesso dall'esterno. Tuttavia, se esistono effettivamente dei problemi di sicurezza, la configurazione del firewall deve essere valutata personalmente da chi si incarica di realizzare una rete locale del genere; eventualmente è possibile modificare lo script /etc/init.d/rc.network. Le istruzioni che riguardano la configurazione in qualità di router iniziano a partire dalla porzione di codice evidenziata dal confronto tra l'indirizzo locale e l'indirizzo del router interno:

...
    elif    [ "$INTERNAL_IPV4" = "$INTERNAL_ROUTER" ]
    then
        ##
        ## This is the router for the local network.
        ##
...

L'esempio mostrato fa riferimento a indirizzi IPv4 privati sia dal lato interno, sia dal lato esterno del router. Con questo esempio si vuole individuare una situazione che potrebbe essere abbastanza comune: una rete locale gestita attraverso un router la cui configurazione non può essere cambiata, senza la disponibilità di indirizzi privati a sufficienza per le esigenze di tutte le reti. Con la soluzione proposta dall'esempio, si va a utilizzare un solo indirizzo nell'ambito della rete precedente, aggiungendo un altro router per un'altra rete locale che comunque sarebbe irraggiungibile nell'ambito di quella preesistente (per mancanza di instradamenti), pertanto si rende necessario il NAT nel nuovo router inserito.

787.4   Router per una rete locale, attraverso un proxy

Se non esiste altra possibilità di accedere alla rete esterna se non attraverso un proxy HTTP, è possibile tentare di organizzare la configurazione del router nanoLinux in modo che il proprio proxy faccia riferimento a quello disponibile. Questo è comunque condizionato alla disponibilità di un servizio di risoluzione dei nomi di dominio (DNS) accessibile. Si immagina una situazione simile a quella della figura successiva.

Figura 787.17. nanoLinux utilizzato come router che deve avvalersi di un proxy.

router per collegare una rete locale a una rete più grande

Come già visto in un esempio di un'altra sezione, nella figura, il router si colloca tra due reti: 172.21.*.* e 192.168.1.*.

nanorc network config[Invio]

.Internal network interface name--.
| Please insert the real internal |
| network interface name:         |
| .-----------------------------. |
| |$ETH0                        | |
| `-----------------------------' |
|                                 |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

$ETH0<OK>

.Internal network interface address--.
| Please insert the internal network |
| interface IPv4 address:            |
| .--------------------------------. |
| |                                | |
| `--------------------------------' |
|------------------------------------|
|       <  OK  >    <Cancel>         |
`------------------------------------'

172.21.254.254<OK>

.-----Internal netmask-------.
| Please insert the internal |
| IPv4 network mask:         |
| .------------------------. |
| |255.255.0.0             | |
| `------------------------' |
|                            |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

255.255.0.0<OK>

.Internal network router address--.
| Please insert the internal      |
| network IPv4 router address:    |
| .-----------------------------. |
| |                             | |
| `-----------------------------' |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

172.21.254.254<OK>

Dal momento che l'indirizzo del router per la rete interna coincide con l'indirizzo dell'interfaccia, la procedura intende che si debba specificare anche il collegamento con l'esterno:

.External network interface name--.
| Please insert the real external |
| network interface name:         |
| .-----------------------------. |
| |$ETH1                        | |
| `-----------------------------' |
|                                 |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

Per funzionare correttamente, un router con le funzionalità che si richiedono qui deve avere due interfacce. Nel caso si trattasse di una sola interfaccia ci possono essere delle funzionalità che vengono a mancare, in ogni caso si deve inserire sempre il nome reale dell'interfaccia, non un alias.

$ETH1<OK>

.External network interface address--.
| Please insert the external network |
| interface IPv4 address:            |
| .--------------------------------. |
| |                                | |
| `--------------------------------' |
|------------------------------------|
|       <  OK  >    <Cancel>         |
`------------------------------------'

192.168.1.253<OK>

.-----External netmask-------.
| Please insert the external |
| IPv4 network mask:         |
| .------------------------. |
| |255.255.255.0           | |
| `------------------------' |
|                            |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'

255.255.255.0<OK>

.External network router address--.
| Please insert the external      |
| network IPv4 router address:    |
| .-----------------------------. |
| |                             | |
| `-----------------------------' |
|---------------------------------|
|     <  OK  >   <Cancel>         |
`---------------------------------'

In questo caso, non c'è alcun router esterno da poter raggiungere, pertanto si lascia il campo vuoto:

<OK>

.----Transparent proxy------.
| Is this router a          |
| transparent proxy?        |
|---------------------------|
|     < Yes >   < No  >     |
`---------------------------'

In questo caso, è necessario attivare la funzione di proxy imponendo il suo utilizzo da parte della rete locale:

<Yes>

A questo punto, però, occorre fare delle modifiche manuali. Oltre a espandere la disponibilità di memoria di OOPS, è necessario che questo sia in grado di rinviare le richieste al proxy esterno. Si deve intervenire nei file /etc/oops/oops.cfg e /etc/oops/oops.cfg.nanoLinux dell'elaboratore che offre questo servizio per la rete locale, aggiungendo le direttive seguenti:

peer    192.168.1.254   8080 0 {
        # my_auth       my_login:my_password;
        parent ;
        allow   dstdomain * ;
}

Per maggiori dettagli sulla configurazione di questa funzionalità di OOPS conviene consultare la sua documentazione originale.

La seconda modifica da apportare riguarda il servizio DNS: non potendo contare su un accesso alla rete esterna, il servente DNS di nanoLinux non serve a nulla ed è necessario modificare il file /etc/resolv.conf di tutti gli elaboratori della rete locale:

nameserver 192.168.1.1

Questa situazione potrebbe essere complicata ulteriormente se per l'accesso al proxy esterno o al servente DNS è necessario utilizzare un router. In tal caso si comprende che è sufficiente specificare l'indirizzo di tale router esterno, senza lasciare il campo in bianco come è stato fatto negli esempi mostrati in questa sezione.

787.5   Indirizzi di rete da evitare assolutamente

Onde evitare inutili perdite di tempo, è bene rammentare che nelle reti con indirizzi privati è necessario evitare alcuni indirizzi di rete, che apparentemente sono innocui. La tabella seguente riepiloga le situazioni più comuni, tenendo conto delle maschere di rete predefinite.

Indirizzo Maschera Motivazione
172.16.0.0 255.255.0.0 L'indirizzo di rete della sottorete è identico all'indirizzo della rete complessiva.
172.31.0.0 255.255.0.0 L'indirizzo broadcast della sottorete è identico all'indirizzo broadcast della rete complessiva.
192.168.0.0 255.255.255.0 L'indirizzo di rete della sottorete è identico all'indirizzo della rete complessiva.
192.168.255.0 255.255.255.0 L'indirizzo broadcast della sottorete è identico all'indirizzo broadcast della rete complessiva.

Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome nanolinux_la_rete_e_gli_instradamenti.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory