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?
fuente
nslookup
. Solo intenté hacer pingmyMachine.MyDnsSuffix
y se resolvió en mi IP en la red, no127.0.0.1
como se especifica en mi archivo HOSTS.ipconfig /flushdns
. Y el NetBIOS caché demasiado:nbtstat -R
. (Mayúsculas y minúsculas en windows - WTF, ¿por qué?!?)Las búsquedas de DNS no usan un archivo de hosts. Nunca.
fuente
gethostbyname()
puede ir a través del archivo hosts, o a través de DNS, pero un DNS-específica lookup (interpretada pornslookup
) no va a usar el archivo de hosts.OK, nuevo enfoque. Hagamos que borre su caché de IP y NETBIOS.
ipconfig /flushdns
ynbtstat -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.
fuente
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:
fuente
HOSTS
archivo, 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" unHOSTS
archivo.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.
fuente
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.
fuente
http://www.tweaksforgeeks.com/windows7/2011/02/windows-7-hosts-file-ignored <- ¡Trabaja para mí!
fuente