El problema
Tengo OS X Mountain Lion, las últimas actualizaciones instaladas.
Al azar después del inicio, no tengo conectividad de red desde la perspectiva del usuario. Los navegadores web no pueden mostrar páginas, no hay correo a los tweets, ni dropbox, ni nada.
Lo que está roto es en realidad la resolución de nombres (DNS), ya que puedo hacer ping a la dirección IP local y remota. El servicio que realiza la resolución de nombres, mDNSResponder, envía correctamente la consulta de DNS, pero no ve la respuesta de DNS , aunque se pueden ver los paquetes en la red.
La pregunta
¿Cómo corrijo mDNSResponder (o qué está bloqueando la respuesta del DNS) para que la resolución de nombres siempre funcione?
Mi investigación actual y análisis detallado
Después de la investigación, puedo hacer ping a la dirección IP local y remota. No nombres. No puedo usar nslookup
, dig
o dns-sd
, incluso cuando especifico mi resolución de DNS local o una remota (como 8.8.8.8, a la que puedo hacer ping). Siempre me agota el tiempo. La herramienta Network Utility
se comporta de manera similar a las herramientas de línea de comandos.
Lo que funciona es hacer ping o traceroute de direcciones IP.
Además, al enviar SIGUSR2
a mDNSResponder
se registran los paquetes en system.log
. Solo las consultas son de registro, mDNSResponder no ve ninguna respuesta. Sin embargo, una escucha de paquetes de red simple muestra que tanto la solicitud de DNS como la respuesta de DNS se reciben y envían correctamente. Cuando hago lo mismo con la resolución de nombres adecuada, puedo ver las consultas y las respuestas en system.log
!
Por lo tanto, deshabilité completamente el firewall OS X, e hice la secuencia launchctl unload/load
para mDNSResponder pero esto no resolvió el problema. El servicio aún era sordo y no veía ninguna respuesta.
Un reinicio "simple" a menudo soluciona el problema (tuve que reiniciar dos veces para que vuelva a funcionar).
Normalmente, uso DHCP para IP, enrutador y servidor DNS. Pero incluso la configuración manual de la configuración de red no funciona. ¡Aunque después de reiniciar esas configuraciones manuales funcionan!
Cuando esto sucede, otros dispositivos en la red continúan funcionando como siempre: ¡iPad, NAS y una caja de Linux funcionan bien! La resolución de nombres funciona de maravilla en aquellos al mismo tiempo. El reinicio del enrutador no resuelve el problema y luego de dicho reinicio (cuando se encuentra en este modo particular que no funciona) a menudo termino teniendo una dirección IP automática en el caso de que se configurara DHCP (uno de 169.254. . ) y una solicitud de un nuevo arrendamiento de IP no parece llegar con el mismo sordo aparente que el mDNSResponder.
Cuando estoy en este estado extraño, si inicio una VM en el cuadro OS X no conectado con una interfaz de red NAT, el invitado VM se comporta como el host OS X, la resolución de nombres es unidireccional. Sin embargo, si inicio una máquina virtual con una interfaz de red de puente, ¡el invitado funciona correctamente recibiendo la respuesta del DNS!
Por último, pero no menos importante, la salida scutil --dns
cuando falla la resolución de nombres es exactamente idéntica a la misma salida cuando la resolución de nombres funciona