¿Por qué mi resolución de nombre llega al DNS incluso con una entrada de archivo de hosts?

15

Estoy ejecutando Ubuntu 10.04.2 LTS Desktop. Siendo un desarrollador web, naturalmente creé un "me.com" en mi /etc/hostsarchivo. Desafortunadamente, mi resolución de nombre está yendo al DNS antes de verificar primero mi entrada de hosts locales y no puedo entender por qué.

El resultado final es que si mi /etc/resolv.conf contiene nameserver 127.0.0.1allí primero, entonces recibo una respuesta en mi navegador web de me.com (local) en menos de un segundo. Pero si no tengo esa entrada, entonces mi respuesta tarda a veces hasta 5 segundos si mi ISP es un poco lento.

El problema era tan problemático que en realidad tuve que presentar una pregunta aquí (y alguien lo resolvió) sobre cómo insertar automáticamente esa entrada /etc/resolv.conf. Pero uno de los usuarios (@shellholic) aquí recomendó encarecidamente (y comentó conmigo una y otra vez al respecto) que debía presentar esta pregunta.

¿Sabes por qué la resolución de nombre de mi estación de trabajo tiene que afectar primero al servidor DNS antes de presionar mi /etc/hostsentrada de archivo? Por ahora, estoy usando el truco resolv.conf .

Volomike
fuente
1
Podrías intentar mirar /etc/nsswitch.conf. Las entradas en mi sistema son un poco no obvias, pero puedes probar las búsquedas solo filescomo una opción y ver si eso marcó la diferencia.
belacqua
Sí, ¿podría darnos la salida de cat /etc/nsswitch.confy cat /etc/host.conf? Además: ¿cómo está probando esto (mediante ping, navegador, rastreo de paquetes, etc.)?
organizar el
Para completar la versión de @arrange, ¿podría adjuntar el resultado de 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. No dudes en ofuscar la racionalidad.
shellholic
@shellholic ^ racionalidad ^ racionalmente? je
belacqua
@jgbelacqua: de hecho
shellholic

Respuestas:

14

El archivo /etc/nsswitch.confle permitirá reconfigurar el orden de la resolución del nombre. Por defecto, el archivo de host es el primero, luego el DNS configurado. Podría haber más opciones.

El archivo /etc/hostssolo enumera las direcciones IP y los nombres de host (múltiples nombres para una IP si lo desea)

El archivo /etc/resolv.confenumerará los dominios de búsqueda predeterminados y también enumerará en secuencia los servidores de nombres a utilizar.

jfmessier
fuente
44
También tenga en cuenta que una vez que una aplicación o un servicio resuelve un nombre en su caja de Linux, permanecerá en caché durante un tiempo conocido como TTL (tiempo de vida). Entonces, si cambia la secuencia de resolución, es mejor que reinicie su sistema o borre cualquier caché.
jfmessier
¿Cómo se borra el 'caché'?
Eric Johnson el
No estoy seguro, pero reiniciar una conexión de red con los comandos ifup e ifdown podría hacerlo. Por supuesto, reiniciar debería borrar el caché, pero estamos usando Linux, ¿verdad?
jfmessier
nscdpuede almacenar en caché las consultas de resolución de nombres, pero no respeta ttl (y, por lo tanto, el almacenamiento en caché de hosts está deshabilitado de forma predeterminada). systemd-resolvedtambién almacenará en caché las entradas. Si ninguno de estos está configurado, los hosts de Linux no almacenan en caché las respuestas DNS . (Los navegadores probablemente lo hagan en la capa de aplicación)
Gert van den Berg