Risoluzione Nome

Il processo per ottenere un indirizzo Internet da un nome host è noto come risoluzione del nome e viene eseguito dalla sottoroutine gethostbyname .

Il processo di conversione di un indirizzo Internet in un nome host è noto come risoluzione del nome inversa e viene eseguito dalla sottoroutine gethostbyaddr .

Quando un processo riceve un nome host simbolico e deve essere risolto in un indirizzo, richiama una routine resolver.

Le routine resolver sugli host che eseguono TCP/IP tentano di risolvere i nomi utilizzando le seguenti origini:
  • BIND/DNS (server dei nomi di dominio, denominato)
  • NIS (Network Information Service)
  • File /etc/hosts locale

Per risolvere un nome in una rete di dominio, la routine del resolver interroga prima il database del server dei nomi di dominio, che può essere locale se l'host è un server dei nomi di dominio o può trovarsi su un host esterno. I server dei nomi convertono i nomi dominio in indirizzi Internet. Il gruppo di nomi per cui un server dei nomi è responsabile è la sua zona di autorità. Se la routine resolver sta utilizzando un server dei nomi remoto, la routine utilizza il DOMAIN (Domain Name Protocol) per eseguire una query per la mappatura. Per risolvere un nome in una rete flat, la routine del programma di risoluzione controlla una voce nel file /etc/hosts locale. Quando si utilizza NIS, viene controllato il file /etc/hosts sul server principale.

Per impostazione predefinita, le routine del resolver tentano di risolvere i nomi utilizzando le risorse precedenti. BIND/DNS verrà provato per primo. Se il file /etc/resolv.conf non esiste o se BIND/DNS non riesce a trovare il nome, NIS viene interrogato se è in esecuzione. Se NIS non è in esecuzione, viene ricercato il file /etc/hosts locale. Se nessuno di questi servizi può trovare il nome, le routine resolver restituisconoHOST_NOT_FOUND. Se tutti i servizi non erano disponibili, le routine del resolver restituisconoSERVICE_UNAVAILABLE.

L'ordine predefinito può essere sovrascritto creando il file di configurazione, /etc/netsvc.conf e specificando l'ordine desiderato. Il valore predefinito e /etc/netsvc.conf possono essere sovrascritti con la variabile di ambiente NSORDER. Se il file /etc/netsvc.conf o la variabile di ambiente NSORDER sono definiti, è necessario specificare almeno un valore insieme all'opzione.

Per specificare l'ordinamento host con il file /etc/netsvc.conf :

hosts = value,value,value 

Dovevalueè una delle origini elencate.

Per specificare l'ordinamento host con la variabile di ambiente NSORDER :

NSORDER=value,value,value

L'ordine viene specificato su una riga con valori separati da virgole. Sono consentiti spazi vuoti tra le virgole e il segno uguale. I valori specificati e il relativo ordinamento dipendono dalla configurazione di rete. Ad esempio, se la rete locale è organizzata come una rete semplice, è necessario solo il file /etc/hosts .

Il file etc/netsvc.conf contiene la seguente riga:

hosts=local
La variabile di ambiente NSORDER viene impostata come:

NSORDER=local

Se la rete locale è una rete di dominio che utilizza un server dei nomi per la risoluzione dei nomi e un file /etc/hosts per il backup, è necessario specificare entrambi i servizi.

Il file etc/netsvc.conf contiene la seguente riga:

hosts=bind,local
La variabile di ambiente NSORDER viene impostata come:

NSORDER=bind,local
Nota: i valori elencati devono essere in minuscolo.
Verrà tentata la prima origine nell'elenco. L'algoritmo tenterà un altro servizio specificato se:
  • il servizio corrente non è in esecuzione, pertanto non è disponibile
  • Il servizio corrente non è riuscito a trovare il nome e non è autorizzato.

Se il file /etc/resolv.conf non esiste, BIND/DNS viene considerato non impostato o in esecuzione e quindi non disponibile. Se le sottoroutine, getdomainname e yp_bind hanno esito negativo, si presume che il servizio NIS non sia impostato o in esecuzione e quindi non sia disponibile. Se non è stato possibile aprire il file /etc/hosts , non è possibile eseguire una ricerca locale e, pertanto, il file e il servizio non sono disponibili.

Un servizio elencato come autorevole significa che è l'esperto dei suoi successori e dovrebbe avere le informazioni richieste. (Gli altri servizi possono contenere solo un sottoinsieme delle informazioni nel servizio autorevole.) La risoluzione dei nomi terminerà dopo aver tentato un servizio elencato come autorevole anche se non trova il nome. Se un servizio di autorizzazione non è disponibile, verrà eseguita la query del servizio successivo specificato, altrimenti la routine del resolver verrà restituita conHOST_NOT_FOUND.

Un servizio di autorizzazione è specificato con la stringa=authdirettamente dietro un valore. L'intera parolaauthoritativepuò essere immesso, ma solo il authverrà utilizzato. Ad esempio, il file /etc/netsvc.conf potrebbe contenere la seguente riga:

hosts = nis=auth,bind,local

Se NIS è in esecuzione, la ricerca viene terminata dopo la query NIS indipendentemente dal fatto che il nome sia stato trovato. Se NIS non è in esecuzione, viene eseguita la query dell'origine successiva, che è BIND.

I server dei nomi TCP/IP utilizzano la memorizzazione nella memoria cache per ridurre il costo di ricerca dei nomi degli host sulle reti remote. Invece di ricercare di nuovo un nome host ogni volta che viene effettuata una richiesta, un server dei nomi esamina la relativa cache per verificare se il nome host è stato risolto di recente. Poiché i nomi dominio e host cambiano, ogni elemento rimane nella cache per un periodo di tempo limitato specificato dal TTL (time to live) del record. In questo modo, le autorità possono specificare per quanto tempo si aspettano che la risoluzione del nome sia accurata.

In un ambiente server dei nomi DOMAIN, il nome host impostato utilizzando il comando hostname dalla riga comandi o nel formato file rc.net deve essere il nome ufficiale dell'host come restituito dal server dei nomi. Generalmente, questo nome è il nome dominio completo dell'host nel formato:

host.subdomain.subdomain.rootdomain

Se il nome host non è impostato come un nome dominio completo e se il sistema è impostato per utilizzare un server dei nomi DOMAIN insieme al programma sendmail , il file di configurazione sendmail (/etc/sendmail.cf) deve essere modificato per riflettere questo nome host ufficiale. Inoltre, le macro del nome dominio in questo file di configurazione devono essere impostate per il corretto funzionamento del programma sendmail .

Nota: il dominio specificato nel file /etc/sendmail.cf ha la precedenza sul dominio impostato dal comando hostname per tutte le funzioni sendmail .

Per un host che si trova in una rete di dominio ma che non è un server dei nomi, il nome dominio locale e il server dei nomi di dominio vengono specificati nel file /etc/resolv.conf . In un host del server dei nomi di dominio, il dominio locale e gli altri server dei nomi vengono definiti nei file letti dal daemon denominato all'avvio.