¿Qué puede hacer que una búsqueda de DNS ignore una entrada de archivo de hosts?

13

Tengo un problema de resolución de DNS que afecta el rendimiento de mi sitio web alojado localmente cuando lo navego en mi máquina local. Si adjunto el sufijo DNS de mi red al nombre de mi máquina local cuando accedo a la URL en mi navegador, el sitio tiene tiempos de carga terribles (más de 100 veces más lento) que sin el sufijo DNS.

Pensé que podría solucionar esto usando mi archivo de hosts para evitar la necesidad de una búsqueda. Agregué una entrada a mi archivo de hosts como este

127.0.0.1    myMachine.MyDnsSuffix

Pero esto no cambió los tiempos de carga, incluso después de un reinicio. Aunque no es importante resolver este problema específico, realmente me gustaría saber por qué sucede esto.

Además, cuando ejecuto nslookup en el dominio myMachine.MyDnsSuffix, noto que usa el servidor DNS de mi red para encontrar la IP. ¿Podría esto estar relacionado con mi problema o simplemente estoy entendiendo mal cómo funciona nslookup?

Dan Herbert
fuente

Respuestas:

20

Creo que nslookup se usa para probar un servidor DNS en sí mismo, en lugar de utilizar su archivo HOSTS. http://support.microsoft.com/kb/200525 parece indicarlo.

Pruebe solo un simple ping. ¿Se ping myMachine.MyDnsSuffixresuelve la dirección de bucle invertido que ha especificado en su archivo HOSTS?

Christopher Karel
fuente
Hiciste un buen punto al respecto nslookup. Solo intenté hacer ping myMachine.MyDnsSuffixy se resolvió en mi IP en la red, no 127.0.0.1como se especifica en mi archivo HOSTS.
Dan Herbert
¿Cuál es tu sistema operativo? Creo que Windows7 y posiblemente Vista tienen algunas protecciones extrañas de UAC en el archivo HOSTS. ¿Estás seguro de que tus cambios se están guardando correctamente?
Christopher Karel
Mi sistema operativo es Windows XP. Los cambios parecen estar siendo guardados correctamente.
Dan Herbert
Hmm ... no hay una marca hash al comienzo de esa entrada de HOSTS, ¿verdad? (eso lo haría un comentario) ¿Y estás seguro de que está en C: \ Windows \ System32 \ drivers \ etc \ hosts? ¿Puede agregar una entrada ficticia allí y ver si eso se resuelve como usted especifica?
Christopher Karel
3
Ah, y no olvides borrar tu caché de nombres. ipconfig /flushdns. Y el NetBIOS caché demasiado: nbtstat -R. (Mayúsculas y minúsculas en windows - WTF, ¿por qué?!?)
Christopher Karel
8

Las búsquedas de DNS no usan un archivo de hosts. Nunca.

Adaptador
fuente
2
@BartDeVos no, no está mal. Un genérico anfitrión de búsqueda (es decir, gethostbyname()puede ir a través del archivo hosts, o a través de DNS, pero un DNS-específica lookup (interpretada por nslookup) no va a usar el archivo de hosts.
Alnitak
Dicho esto, gethostinfo / getaddrinfo (las versiones modernas de gethostbyname) son POSIX, y no necesariamente lo que usa Windows.
Adaptr
2

OK, nuevo enfoque. Hagamos que borre su caché de IP y NETBIOS. ipconfig /flushdnsy nbtstat -R. Luego enciende un sniffer de paquetes como Wireshark y haz un ping mientras se está ejecutando.

A partir de la captura de paquetes, queremos ver si A) Hay una solicitud de DNS saliendo, y si es así, qué nombre está solicitando. B) Si hay una solicitud NETBIOS saliendo. Es posible que este nombre se resuelva a través de NETBIOS en lugar del DNS adecuado.

Si no vemos ninguno de los anteriores a pesar de que está vaciando su caché, entonces es probable que el nombre se extraiga de los hosts o lmhosts.

Christopher Karel
fuente
1

Algunas personas en los foros web afirman que crear un nuevo archivo de hosts y reiniciar el servicio del cliente DNS soluciona el problema, pero no estoy seguro de por qué eso funcionaría si ya ha intentado reiniciar.

Me doy cuenta de que esto es una posibilidad remota, pero no hay palabras relacionadas con Microsoft como MSDN, Microsoft o MSN en la entrada del archivo de hosts, ¿verdad? Microsoft ha escrito dnsapi.dll para ignorar las entradas del archivo de hosts que coinciden con ciertos nombres. Por ejemplo, si agrego la siguiente entrada, Windows la omite y resuelve ambos nombres de host en la entrada usando DNS:

127.0.0.1 www.microsoft.com www.mysite.com
jlupolt
fuente
No tengo ningún material relacionado con Microsoft en mi archivo HOSTS. Solo tengo algunos dominios de prueba internos asignados. Mi archivo HOSTS es bastante básico.
Dan Herbert
Mmm interesante. Sabía que codificaban los dominios de MS para ignorar el HOSTSarchivo, pero incluso el dominio que no es de MS se ignora si comparte una entrada con un dominio de MS. Eso es solo una mala programación de su parte. Esto definitivamente es algo a tener en cuenta si se "minimiza" un HOSTSarchivo.
Synetech
0

Cuando usa el nombre DNS completo, su navegador intenta pasar por su servidor proxy; haga clic para IE .

El orden de resolución de nombre o archivo de hosts no tiene nada que ver con este problema, y ​​la llaga supurante en la parte posterior de la humanidad que es el archivo de hosts debe retirarse y dispararse ruidosamente.

Maximus Minimus
fuente
Sin embargo, no estoy conectado a un proxy.
Dan Herbert
1
@mh: estaría de acuerdo con usted sobre los hosts de disparo, siempre que los servidores raíz me permitan agregar / eliminar / editar registros.
Ian Boyd
0

http://geekswithblogs.net/JanS/archive/2009/06/17/beware-of-spacing-in-windows7-hosts-file.aspx

Esta parece ser la causa real. Deja que Microsoft ignore de repente y sin previo aviso una convención de 25 años.

Michael McNally
fuente
2
Incluya una idea general de la respuesta / causa en su respuesta. Es mucho mejor que solo un enlace.
Jacob
Aquí está la parte esencial de la URL vinculada. Sin embargo, nada parecía funcionar. Hasta que vi algunos otros ejemplos de archivos de host que estaban formateados como <dirección ip> <espacio único> <valor>
Tun