Capitolo successivo Capitolo precedente Indice

47. Indirizzi IP 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 corrispondente numero IP.

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

I metodi attraverso cui si può trasformare un nome in un indirizzo IP e viceversa sono due: un elenco contenuto nel file /etc/hosts oppure l'uso di un DNS server.

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 DNS server (o name server).

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

/etc/host.conf

Viene usato per determinare quali servizi usare per risolvere i nomi di dominio. Ogni riga rappresenta una opzione, ed eventualmente, il simbolo # rappresenta un commento. Solitamente vengono specificate solo due opzioni: order e multi, come nell'esempio seguente.

order hosts,bind
multi on

Nella prima riga, order indica l'ordine dei servizi. In questo caso si utilizza prima il file /etc/hosts ( hosts) e quindi si interpella il name server. La 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 computer ha due o più connessioni per la rete e per ogni una di queste ha un diverso indirizzo IP.

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.

Variabili di ambiente

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

RESOLV_HOST_CONF

Se esiste e non è vuota, definisce il nome di un file alternativo a /etc/hosts.

RESOLV_SERV_ORDER

Definisce l'ordine dei servizi di risoluzione dei nomi, senza tenere conto di quanto eventualmente già definito attraverso l'opzione order nel file /etc/hosts.

RESOLV_SERV_MULTI

Può contenere la stringa on oppure off, con lo stesso significato dell'opzione multi del file /etc/hosts e serve a sostituirsi alla eventuale dichiarazione fatta nel file stesso.

47.2 File per la conversione

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

/etc/hosts

Il file /etc/hosts viene usato per convertire i nomi dei computer in codici IP e viceversa. È particolarmente utile la sua compilazione all'interno di piccole reti che non dispongono di un DNS server. All'interno di una rete locale, può essere predisposto uguale per tutti i computer 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
127.0.0.1       localhost.localdomain   localhost

192.168.1.1     topolino.zigozago.dg    topolino
192.168.1.2     pippo.zigozago.dg       pippo

192.168.2.1     paperone.zagozigo.dg    paperone

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. Dopo l'indirizzo IP, separato da spazi o tabulazioni, inizia l'elenco dei nomi a esso abbinati, anch'esso eventualmente separato da spazi o tabulazioni.

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

Poco sopra era stata accennata la possibilità di creare un unico file /etc/hosts per tutti i computer 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: 192.168.1.0 denominata zigozago.dg e 192.168.2.0 denominata zagozigo.dg. In questa situazione, potrebbe capitare che un computer nella rete zagozigo.dg abbia lo stesso nome locale di un altro collocato nelle rete zigozago.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 computer si può chiamare localhost.

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

#necessario per il loopback
127.0.0.1       localhost.localdomain   localhost

192.168.1.1     topolino.zigozago.dg
192.168.1.2     pippo.zigozago.dg

192.168.2.1     paperone.zagozigo.dg

/etc/networks

Il file /etc/networks viene usato per convertire i nomi delle sottoreti in codici IP. È particolarmente utile la sua compilazione all'interno di piccole reti che non dispongono di un DNS server. All'interno di una rete locale, può essere predisposto uguale per tutti i computer connessi, 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

zigozago.dg     192.168.1.0
zagozigo.dg     192.168.2.0

<!>   La presenza di questo file non è indispensabile, anche quando non si dispone di un DNS server. 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.

/etc/resolv.conf

Quando il file /etc/hosts non basta, si deve poter accedere a un name server, o DNS server. Viene usato il file /etc/resolv.conf per conoscere l'indirizzo o gli indirizzi dei name server di competenza della rete cui si appartiene. Se non si intende utilizzare il sistema del name server per risolvere i nomi della propria rete, oppure si dispone di un unico computer, ma si vuole accedere alla rete Internet, dovranno essere indicati gli indirizzi dei name server forniti dall'ISP (Internet Service Provider).

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

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

domain <nome-di-dominio>

Stabilisce il dominio predefinito per le interrogazioni del name server.

search <nome-di-dominio>...

Definisce un elenco di domini possibili (l'elenco è separato da spazi o tabulazioni) per le interrogazioni del name server.

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 file può essere standardizzato su tutta la rete locale.

Segue un esempio in cui si utilizza il name server 192.168.1.1 ed eventualmente, in sua mancanza, 192.168.2.15

nameserver 192.168.1.1
nameserver 192.168.2.15

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice