Le voci nei file "host" locali sovrascrivono sia le ricerche in avanti che quelle invertite?


16

Se ho le seguenti voci in un file hosts:

192.168.100.1    bugs
192.168.100.2    daffy.example.com
192.168.100.3    elmer.example.com.

I tentativi di risoluzione dei nomi IP-> da parte di utility locali (presumo usando 'gethostbyaddr' o l'equivalente di Windows) rispetteranno queste voci? Questo comportamento è configurabile? Come varia tra i sistemi operativi? Importa se le voci del file "hosts" sono completamente qualificate o no?

EDIT: in risposta a Russell, il mio sistema Linux di prova esegue RHEL 4. Il mio /etc/nsswitch.conf contiene la seguente riga 'hosts':

hosts:      files dns nis

Se eseguo il ping di uno dei miei host per nome (ad esempio bug, daffy), la risoluzione diretta funziona correttamente. Se traccerò uno di essi per indirizzo IP, la ricerca inversa funziona come previsto. Tuttavia, se eseguo il ping tramite IP, il ping non sembra risolvere i nomi dei loro host. La mia comprensione era che il ping di Linux avrebbe sempre tentato di risolvere gli IP in nomi se non diversamente indicato. Perché traceroute sarebbe in grado di gestire le ricerche inverse nei file hosts, ma non il ping?

Risposte:


16

Generalmente il file hosts verrà utilizzato sia per le ricerche in avanti che per quelle inverse. La preferenza su un sistema Unix dipenderà dall'ordine delle voci nel tuo file nsswitch.conf.

ad esempio, la riga seguente renderà il file hosts sovrascritto DNS. L'inversione delle voci farà sì che DNS sovrascriva il file hosts.

host: file dns

Non sono sicuro che sia possibile sintonizzarsi sull'ordine di preferenza su un sistema Windows.

Ho dato un'occhiata alla fonte per il ping in inetutils-20071127 (la versione installata sulla mia casella Ubuntu 9.04) e la fonte sembra abilitare la modalità solo numerica se esegui il ping di un indirizzo IP anziché un nome host:

                if (inet_aton (target, e whereto.sin_addr) == 1) {
                        hostname = target;
                        if (argc == 1)
                                opzioni | = F_NUMERIC;

Questo potrebbe spiegare perché non si ottiene una ricerca inversa quando si esegue il ping dell'host per indirizzo IP.


Questo era il mio pensiero, ma non sembra essere così. Vedi la domanda aggiornata per i dettagli.
Murali Suriar,

Non ho ancora avuto la possibilità di guardare la fonte; comunque un rapido sguardo a spettacoli di uscita LDD che sul mio tavolo da ping sistema è collegato direttamente alla libreria di risoluzione DNS libresolv, che potrebbe implicare che si bypassa il file nsswitch e facendo le sue ricerche inverse direttamente ...
Russell Heilling

Quando si utilizza l' hostutilità ISC , si potrebbe avere l'impressione che la modifica di / etc / hosts non abbia alcun effetto. host 10.0.0.1eseguirà una query DNS e ignorerà il file hosts. Ciò consente di verificare il risolutore di sistema:perl -MSocket -le '$a=inet_aton(shift); $_=gethostbyaddr $a, AF_INET; print' 10.0.0.1
mivk,

8

Ho trovato un riferimento alla modifica delle voci di registro per modificare l'ordine di risoluzione dei nomi su Windows:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=963485

Citando da lì:

Per impostazione predefinita, Windows controlla i provider di risoluzione dei nomi nel seguente ordine:

Locale, (cache dei nomi locali NetBT), host, DNS, NetBT (WINS).

Volete che l'ordine sia Host, DNS, Local, NetBT.

Di seguito, i numeri più bassi hanno la priorità più alta.

Le seguenti chiavi di registro in

HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\ServicessTcpip\ServiceProvider

deve essere modificato.

DnsPriority= 0x3e8 (Decimal: 1000)
HostsPriority= 0x1f4 (Decimal: 500)
LocalPriority= 0x5dc (Decimal: 1500)
NetbtPriority= 0x7d1 (Decimal: 2001)

Come ottengono tali informazioni "di lavoro interiore"?
Pacerier,

1

Il /etc/host.conffile specifica quale ordine viene utilizzato per rilevare gli indirizzi IP. Il mio contiene quanto segue per impostazione predefinita:

#
# /etc/host.conf
#

order hosts,bind
multi on

Ciò significa che il file hosts viene sempre verificato prima e poi DNS (bind).

Se nisnon viene specificato qui, non verrà mai visualizzato /etc/nsswitch.conf.

Link alla documentazione: http://tldp.org/LDP/nag/node82.html


Il metodo /etc/host.conf è obsoleto per alcuni sistemi, viene utilizzato solo nsswitch.conf (come i sistemi basati su glibc e eglibc). Queste versioni di glibc analizzeranno "/etc/host.conf" senza preavviso e scarteranno la riga "ordine".
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.