Perché la mia risoluzione dei nomi colpisce il DNS anche con una voce del file hosts?


15

Sto eseguendo Ubuntu 10.04.2 LTS Desktop. Essendo uno sviluppatore web, naturalmente ho creato un "me.com" nel mio /etc/hostsfile. Sfortunatamente, la mia risoluzione del nome sta andando al DNS prima di controllare prima la voce dei miei host locali e non riesco a capire perché.

Il risultato finale è che se il mio /etc/resolv.conf contiene nameserver 127.0.0.1prima lì, allora ricevo una risposta nel mio browser web da me.com (locale) in meno di un secondo. Ma se non ho quella voce, la mia risposta a volte impiega fino a 5 secondi se il mio ISP è un po 'lento.

Il problema era così problematico che in realtà ho dovuto presentare una domanda qui (e qualcuno l'ha risolto) per come inserire automaticamente quella voce /etc/resolv.conf. Ma uno degli utenti (@shellholic) qui ha fortemente raccomandato (e commentato avanti e indietro con me su di esso) che avrei dovuto presentare questa domanda.

Sai perché la risoluzione dei nomi della mia workstation deve colpire il server DNS prima di colpire la /etc/hostsvoce del mio file? Per ora, sto usando il trucco resolv.conf .


1
Potresti provare a cercare /etc/nsswitch.conf. Le voci sul mio sistema sono un po 'non ovvie, ma puoi testare le ricerche solo filescome opzione e vedere se ciò ha fatto la differenza.
belacqua

Sì, potresti darci l'output di cat /etc/nsswitch.confe cat /etc/host.conf? Inoltre: come lo stai testando (tramite ping, browser, sniffer di pacchetti ecc.)?
organizzare l'

Per completare la versione di @arrange, potresti allegare il risultato di time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts. Non esitate a offuscare la razionalità.
Shellholic

@shellholic ^ razionalità ^ razionalmente? eh.
belacqua

@jgbelacqua: davvero
shellholic

Risposte:


14

Il file /etc/nsswitch.confti consentirà di riconfigurare l'ordine della risoluzione dei nomi. Per impostazione predefinita, il file host è il primo, quindi il DNS configurato. Potrebbero esserci più opzioni.

Il file /etc/hostselenca solo indirizzi IP e nomi host (se lo desideri, più nomi per un IP)

Il file /etc/resolv.confelencherà i domini di ricerca predefiniti e elencherà anche in sequenza i server dei nomi da utilizzare.


4
Inoltre, tieni presente che una volta che un nome è stato risolto da un'applicazione o un servizio sulla tua scatola Linux, rimarrà nella cache per una durata nota come TTL (tempo di vita). Quindi, se si cambia la sequenza di risoluzione, è meglio riavviare il sistema o svuotare la cache.
jfmessier,

come si cancella la 'cache'?
Eric Johnson,

Non ne sono sicuro, ma riavviare una connessione di rete con i comandi ifup e ifdown potrebbe farlo. Naturalmente, il riavvio dovrebbe svuotare la cache, ma stiamo usando Linux, giusto?
jfmessier,

nscdpuò memorizzare nella cache le query sulla risoluzione dei nomi, ma non rispetta ttl (e pertanto la cache degli host è disabilitata per impostazione predefinita). systemd-resolvedmemorizzerà anche le voci nella cache. Se nessuno di questi è configurato, gli host Linux non memorizzano nella cache le risposte DNS . (Probabilmente i browser lo fanno a livello di applicazione)
Gert van den Berg
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.