[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


92. Indirizzi e nomi

La gestione diretta degli indirizzi IP in forma numerica può essere utile in fase di progetto di una rete, ma a livello di utente è una pretesa praticamente inaccettabile. Per questo, agli indirizzi IP numerici si affiancano quasi sempre dei nomi che teoricamente potrebbero anche essere puramente fantastici e senza alcuna logica. Ogni volta che si fa riferimento a un nome, il sistema è (o dovrebbe essere) in grado di convertirlo nel numero IP corrispondente.

In pratica, si usa di solito la convenzione dei nomi di dominio, come già descritto in precedenza ( 86.7).

Ci sono due metodi per trasformare un nome in un indirizzo IP e viceversa: un elenco contenuto nel file `/etc/hosts' oppure l'uso di un servente DNS.

In questo capitolo si analizza `/etc/hosts' e gli altri file di configurazione legati alla traduzione dei nomi; nel prossimo verrà trattata la gestione di un servente DNS con il quale si ottiene un servizio di risoluzione dei nomi (name server).

92.1 Configurazione del tipo di conversione

Prima di procedere con la trasformazione di un nome in un indirizzo IP, occorre definire in che modo si vuole che il sistema esegua questa operazione. Il file di configurazione attraverso il quale si definisce ciò è `/etc/host.conf', ma anche attraverso l'uso di variabili di ambiente si può intervenire in questa configurazione.

92.1.1 /etc/host.conf

Viene usato per determinare quali servizi usare per risolvere i nomi di dominio. Ogni riga rappresenta un'opzione di funzionamento, inoltre il simbolo `#' rappresenta l'inizio di un commento. Solitamente vengono specificate solo due direttive: `order' e `multi', come nell'esempio seguente:

order hosts,bind
multi on

Nella prima riga, l'opzione `order' indica l'ordine dei servizi. In questo caso si utilizza prima il file `/etc/hosts' ( 92.2.1) e quindi si interpella il servizio di risoluzione dei nomi. Nella seconda riga, `multi on', abilita la possibilità di trovare all'interno del file `/etc/hosts' l'indicazione di più indirizzi IP per lo stesso nome. Un evento del genere può verificarsi quando uno stesso elaboratore ha due o più connessioni per la rete e per ognuna di queste ha un indirizzo IP diverso.

order {hosts|bind|nis}[,...[,...]]

L'opzione `order' richiede uno o più argomenti (separati da spazio, virgola, punto e virgola o due punti) indicanti la sequenza di servizi attraverso cui si deve tentare di risolvere un nome.

multi {on|off}

L'opzione `multi' attiva o disattiva la possibilità di trovare all'interno del file `/etc/hosts' l'indicazione di più indirizzi IP per lo stesso nome.

92.1.2 Variabili di ambiente

Attraverso l'uso di variabili di ambiente è possibile interferire con la configurazione del file `/etc/hosts'.

92.2 File per la conversione

Prima che esistessero i serventi DNS si dovevano risolvere i nomi attraverso l'uso di un file unico, contenente un elenco di indirizzi IP associato ai nomi rispettivi. Teoricamente, utilizzando un servente DNS questo file potrebbe non essere più necessario. In pratica conviene utilizzare ugualmente questo vecchio metodo per garantirsi l'accessibilità alla rete locale anche quando l'eventuale servente DNS non dovesse funzionare.

92.2.1 /etc/hosts

Il file `/etc/hosts' viene usato per convertire i nomi degli elaboratori in numeri IP e viceversa. È particolarmente utile la sua compilazione all'interno di piccole reti che non dispongono di un servente DNS. All'interno di una rete locale può essere predisposto uguale per tutti gli elaboratori connessi, così da facilitare per quanto possibile l'aggiornamento all'interno di questi. Segue un estratto di esempio di questo file.

# necessario per il loopback IPv4
127.0.0.1			localhost.localdomain	localhost

# indirizzi IPv4
192.168.1.1			dinkel.brot.dg    	dinkel
192.168.1.2			roggen.brot.dg		roggen

192.168.2.1			weizen.mehl.dg		weizen

#necessario per il loopback IPv6
::1				ip6-localhost		ip6-loopback

# necessari per il multicast IPv6
fe00::0				ip6-localnet
ff00::0				ip6-mcastprefix
ff02::1				ip6-allnodes
ff02::2				ip6-allrouters
ff02::3				ip6-allhosts

# indirizzi IPv6
fec0::1:2a0:24ff:fe77:4997	dinkel.brot.dg		dinkel
fec0::1:280:5fff:fea6:6d3d	roggen.brot.dg		roggen

fec0::2:280:adff:fec8:a981	weizen.mehl.dg		weizen

In pratica, il file può contenere righe vuote o commenti (le righe che iniziano con il simbolo `#') e righe che iniziano con un indirizzo IP (sia IPv4 che IPv6). Dopo l'indirizzo IP, separato da spazi o caratteri di tabulazione, inizia l'elenco dei nomi a esso abbinati, anche questo può essere separato da spazi o da caratteri di tabulazione.

Di solito, si indica il nome di dominio completo (FQDN o Fully Qualified Domain Name), seguito eventualmente da possibili abbreviazioni o soprannomi.

Poco sopra era stata accennata la possibilità di creare un file identico `/etc/hosts' per tutti gli elaboratori della propria rete locale. Ma se la rete locale si articola in sottoreti, è normale che il dominio di appartenenza di ogni sottorete cambi. Nell'esempio visto, si fa riferimento a due sottoreti IPv4 e IPv6: 192.168.1.0 e fec0::1::/64 denominata `brot.dg'; 192.168.2.0 e fec0::2::/64 denominata `mehl.dg'. In questa situazione, potrebbe capitare che un elaboratore nella rete `mehl.dg' abbia lo stesso nome locale di un altro collocato nelle rete `brot.dg'.

Per questo, l'attribuzione di soprannomi, o semplicemente di abbreviazioni, deve essere limitata alla sottorete di appartenenza, oppure deve essere evitata. A questo fa eccezione il caso dell'indirizzo di loopback: ogni elaboratore è bene che si chiami `localhost'.

Se si decide di fare il lavoro in serie, l'esempio visto sopra deve essere trasformato in quello seguente:

# necessario per il loopback IPv4
127.0.0.1			localhost.localdomain	localhost

# indirizzi IPv4
192.168.1.1			dinkel.brot.dg
192.168.1.2			roggen.brot.dg

192.168.2.1			weizen.mehl.dg

#necessario per il loopback IPv6
::1				ip6-localhost		ip6-loopback

# necessari per il multicast IPv6
fe00::0				ip6-localnet
ff00::0				ip6-mcastprefix
ff02::1				ip6-allnodes
ff02::2				ip6-allrouters
ff02::3				ip6-allhosts

# indirizzi IPv6
fec0::1:2a0:24ff:fe77:4997	dinkel.brot.dg
fec0::1:280:5fff:fea6:6d3d	roggen.brot.dg

fec0::2:280:adff:fec8:a981	weizen.mehl.dg

92.2.2 /etc/networks

Il file `/etc/networks' viene usato per convertire i nomi delle sottoreti in codici IPv4. Come nel caso del file `/etc/hosts', può essere predisposto in forma unificata per tutti i nodi di una stessa rete, così da facilitare per quanto possibile l'aggiornamento all'interno di questi. Segue un estratto di esempio di questo file.

localdomain	127.0.0.0

brot.dg		192.168.1.0
mehl.dg		192.168.2.0

La presenza di questo file non è indispensabile; in effetti, la gestione delle sottoreti attraverso l'uso diretto degli indirizzi IP non dovrebbe essere un problema. Il vantaggio di avere questo file, sta nell'utilizzo del programma `route' per visualizzare la tabella di instradamento: gli indirizzi di rete vengono trasformati nei nomi ottenuti dal file `/etc/networks'.

È bene chiarire che normalmente non si utilizza il servente DNS per risolvere i nomi della rete; quindi, di solito, la gestione di questi si attua solo attraverso la predisposizione di questo file, se realmente se ne sente la necessità.

92.2.3 /etc/resolv.conf

Quando il file `/etc/hosts' non basta, si deve poter accedere a un servizio di risoluzione dei nomi, ovvero a un servente DNS. Viene usato il file `/etc/resolv.conf' per conoscere l'indirizzo o gli indirizzi dei servizi di risoluzione dei nomi di competenza della rete cui si appartiene. Se non si intende utilizzare il sistema DNS per risolvere i nomi della propria rete, oppure si dispone di un solo elaboratore, ma si vuole accedere alla rete Internet, dovranno essere indicati gli indirizzi dei servizi di risoluzione dei nomi forniti dall'ISP (Internet Service Provider), ovvero dal fornitore di accesso a Internet.

Questo file può contenere righe vuote o commenti (le righe che iniziano con il simbolo `#') e righe che iniziano con un nome di opzione seguite normalmente da un argomento. Le opzioni utilizzabili sono descritte qui di seguito.

nameserver <indirizzo-ip-servente-DNS>

L'opzione `nameserver' è la più importante e permette di definire l'indirizzo IP di un servizio di risoluzione dei nomi. Se questa opzione non viene utilizzata, si fa riferimento a un servizio locale, raggiungibile precisamente all'indirizzo 127.0.0.1. Il file `/etc/resolv.conf' può contenere più righe con questa opzione, in modo da poter fare riferimento a servizi di risoluzione dei nomi alternativi quando quello principale non risponde.

domain <nome-di-dominio>

Stabilisce il dominio predefinito per le interrogazioni del servizio di risoluzione dei nomi.

search <nome-di-dominio>...

Definisce un elenco di domini possibili (l'elenco è separato da spazi o caratteri di tabulazione) per le interrogazioni del servizio di risoluzione dei nomi.

Una configurazione normale non ha bisogno dell'indicazione delle opzioni `domain' e `search'. Se il file `/etc/resolv.conf' si limita a contenere opzioni `nameserver', questo può essere standardizzato su tutta la rete locale.

Segue un esempio in cui si utilizza il servizio di risoluzione dei nomi offerto dall'indirizzo IP 192.168.1.1 ed eventualmente, in sua mancanza, dall'indirizzo 192.168.2.15

nameserver 192.168.1.1
nameserver 192.168.2.15

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]