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

/etc/nsswitch.conf. Las entradas en mi sistema son un poco no obvias, pero puedes probar las búsquedas solofilescomo una opción y ver si eso marcó la diferencia.cat /etc/nsswitch.confycat /etc/host.conf? Además: ¿cómo está probando esto (mediante ping, navegador, rastreo de paquetes, etc.)?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.Respuestas:
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.fuente
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)