DNS no se resuelve en Mac OS X

Algunos de mis compañeros de trabajo tienen problemas con sus Mac: la resolución de DNS no funciona en Mac OS X. Están ejecutando Snow Leopard 10.6.8. Pueden usar DNS en una máquina virtual con Windows 7 (VMware Fusion 3.1.3) que se ejecuta en OS X. Las computadoras son MacBook Pro de 15", modelo de principios de 2011.

Cosas que han intentado que no funcionaron:

  • activar/desactivar el aeropuerto
  • reiniciando
  • usando conexión por cable en lugar de wifi
  • eliminar las credenciales de conexión y volver a agregarlas
  • desactivar el cortafuegos de Mac
  • usando IP estática
  • configuración manual de servidores DNS
  • reiniciar mDNSResponder
  • las correcciones de esta otra pregunta

EDITAR respuesta a la respuesta de Martín:

¿Puede hacer ping al DNS que desea utilizar?

$ ping apple.com
ping: cannot resolve apple.com: Unknown host

¿Cuáles son las direcciones IP de los DNS que desea utilizar?

Este es un servidor DNS de la empresa que se proporciona con DHCP, funciona bien para otras personas. También probé Google 8.8.4.4 y 205.171.3.65 (que encontré en DNS Benchmark de GRC como el más rápido).

¿Ha intentado usar 8.8.8.8 (google) o cualquiera de los OpenDNS 208.67.222.222 o 208.67.220.220?

No funciona, vea la salida de Google Chrome:

No se puede encontrar el servidor en www.apple.com porque la búsqueda de DNS falló. DNS es el servicio de red que traduce el nombre de un sitio web a su dirección de Internet. Este error suele deberse a que no tiene conexión a Internet o a una red mal configurada. También puede ser causado por un servidor DNS que no responde o un firewall que impide que Google Chrome acceda a la red.

¿Puede hacer ping a esos hosts?

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from
8.8.8.8: icmp_seq=0 ttl=58 time=3.925 ms

crear un usuario en blanco

Se creó una cuenta de usuario invitado, el problema de DNS seguía ahí cuando se usaba la cuenta de invitado.

nslookup y dig funcionan bien

$ nslookup www.apple.com 8.8.8.8
Server:  8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
www.apple.com canonical name = www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net canonical name = www.apple.com.edgekey.net.
www.apple.com.edgekey.net canonical name = e3191.c.akamaiedge.net.
Name: e3191.c.akamaiedge.net
Address: 184.24.141.15

 

$ dig @8.8.8.8 www.apple.com
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 www.apple.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11298
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;www.apple.com.   IN A
;; ANSWER SECTION:
www.apple.com.  1041 IN CNAME www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net. 38 IN CNAME www.apple.com.edgekey.net.
www.apple.com.edgekey.net. 8794 IN CNAME e3191.c.akamaiedge.net.
e3191.c.akamaiedge.net. 17 IN A 184.24.141.15
;; Query time: 4 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Oct 4 09:25:28 2011
;; MSG SIZE  rcvd: 158

también se vació la caché de DNS, pero no sirvió de nada

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

EDITAR 2 :

$ cat /etc/resolv.conf
#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
domain {redacted}.com
nameserver 8.8.8.8
nameserver 208.67.222.222
A mí también me pasa con el león.
Sucediendo para mí en Mavericks, 10.9.4
Esto parece un problema histórico que pudrió la vida de los usuarios y administradores de red desde Leopard hasta Yosemite. Si alguien todavía ve este problema, informe claramente si tiene más de una interfaz activa y, además, obtiene su conf. desde un servidor DHCP (desde diferentes lados). ¿Por qué? Nunca vi un problema así en ningún otro Unix y en ninguno de mis Mac (tengo muchos), pero ninguno de ellos tiene más de una interfaz que se comunica con una fuente de información de DNS.
Intente cambiar su configuración de DNS (cambiar el orden o eliminar entradas), eso resuelve el mismo problema para mí
Estoy usando mi propio servidor DNS en mi red doméstica y mi Mac siempre olvida los nombres de una máquina local u otra. Gracias porque lo siguiente lo arregla cuando sale mal:sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder

Respuestas (27)

Resulta que la solución fue rebotar mDNSResponder:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Esto fue obtenido por un compañero de trabajo diferente de esta pregunta de falla del servidor .

OS X 10.10.0 – 10.10.3, Yosemite

Aparentemente , mDNSResponder no existe en Yosemite (OS X 10.10). En su lugar, puede reiniciar descubrimiento para solucionar estos problemas.

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

OS X 10.10.4+, Yosemite

En OSX 10.10.4, se reintrodujo mDNSResponder . Así que usa el primero que funcionará de nuevo.

Pero esto no es realmente una respuesta satisfactoria. Necesito saber cómo evitar que suceda en primer lugar.
Mi DNS (la conexión a Internet con direcciones IP está bien, al igual que nslookup) también comenzó a fallar, esto lo recupera sin reiniciar, ¡gracias!
@dkagedal ¿Ayudará alguna de las otras respuestas? Realmente no estoy familiarizado con las redes, por lo que este no es mi fuerte. Si se le ocurre una mejor respuesta de prevención, publíquela aquí.
Ninguna otra respuesta aquí ayuda a prevenirlo, y no he encontrado ninguna otra respuesta.
@dkagedal En realidad, esta es una respuesta tan buena como la que vamos a obtener: esto sucede porque su Mac almacena en caché las entradas de DNS para evitar golpear su servidor DNS (probablemente su enrutador) para cada búsqueda de DNS, lo que sucede mucho. Este caché es necesario y bueno, pero sería bueno si hubiera un mejor comportamiento cuando no se encuentra una entrada (lo considero un error). En cualquier caso, hay algún tiempo de espera en el caché; cuando esperé 10 minutos más o menos en mi máquina, esta situación se resolvió sola. Para la mayoría de los usuarios, el comportamiento existente está bien, por lo que no es probable que Apple lo cambie en el corto plazo.
Por supuesto, esto no es tan bueno como parece. Ningún otro sistema operativo tiene este problema. No hay nada malo con el DNS, el registro de www.google.com no se perdió, es solo el caché de MacOS que de alguna manera lo perdió y no lo recuperará. Y ese es un error que necesita ser arreglado.
@dkagedal estuvo de acuerdo en que es un error bastante malo, especialmente porque un usuario no técnico no puede resolver el problema, pero no tengo claro qué espera que haga StackExchange al respecto.
Lo siento, solo quise decir que debería haber una respuesta adecuada y una solución para esto. Y no puedo imaginar que todo el mundo tenga este problema, ya que causaría una enorme cantidad de dolor. Entonces, es probable que haya algo en mi máquina que lo esté causando, pero no sé qué.
@dkagedal Ese es muy probablemente el caso. Sin embargo, nadie parece ser capaz de diagnosticar la causa raíz. Si puede encontrar una mejor solución, cambiaré mi aceptación.
Tengo este problema en 10.9 y la solución funcionó perfectamente. En mi caso, DNS estaba resolviendo nombres completos pero no cortos.
¡Guau! ¡Eress el mejor! +1 :) funcionó de maravilla!
¿Qué sucede si falta ese archivo en mi Mac?
@Matteo Tal vez el archivo no tenga que existir, o tal vez la respuesta deba actualizarse para Yosemite. ¿Tienes este problema? ¿Ejecutar esos comandos lo soluciona?
Mi error, no vi que estuviera relacionado con Snow-leopard, de todos modos no, no hay nada que pueda solucionarlo aparte de una solución que reinicie el demonio dns o la interfaz de red cada 2 minutos.
@Matteo Puede encontrar útil este artículo entonces. Supongo que mDNSResponder no existe en Yosemite, aunque puede instalarlo. arstechnica.com/apple/2015/01/…
Hoy tengo este problema frustrante (Yosemite 10.10.2) y lo único que ayudó fue configurar el DNS de Google como mi DNS principal (la descripción está aquí desarrolladores.google.com/speed/public-dns/docs/using ) + tuve que editar hostsarchivos para sitios donde usé VPN
My Yosemite informa que cargar y descargar son subcomandos heredados para launchctl. ¿Qué deberíamos estar haciendo en su lugar?
@DavidVincent ¿Está utilizando el comando discoveryd? ¿En qué versión de Yosemite estás? ¿Puedes publicar el comando completo y la respuesta que estás usando?
@CajunLuke, esas son excelentes preguntas. No he probado el comando discoveryd. Como debería haber dicho en mi primer comentario, estoy en OS X Yosemite 10.10.3. En cuanto al comando y la respuesta que estoy usando: casi probé launchctl como se sugiere, pero decidí mirar primero la página del manual. Hay un encabezado para SUBCOMANDOS LEGADOS que habla de cargar y descargar.
@DavidVincent No estoy seguro de qué reemplaza cargar y descargar para launchctl, pero uso esos comandos de descubrimiento cada vez que mi red se vuelve inestable, aproximadamente una vez al mes.
No se puede restablecer el caché de esta manera en Big Sur... use en su sudo killall -HUP mDNSResponderlugar la fuente
Trabajó en Catalina (10.15.7) después de deshabilitar la Protección de integridad del sistema developer.apple.com/documentation/security/…
launchctl unloaddará como resultado "Descarga fallida: 150: Operación no permitida mientras la Protección de integridad del sistema está activada". killall -HUP mDNSResponderresolverá el problema.

De hecho, creo que podrías querer usar

scutil --dns

scutil -r hostname

Estos comandos usan el almacenamiento dinámico en configd, a diferencia de los archivos planos en /etc, que a menudo solo se leen en modo de usuario único y para sistemas que no están en red.

man scutil   # or

scutil --help  
No explica por qué estos comandos ayudarían con este problema. ¿Incluso ellos? ¿O esto significaba como un comentario a una de las otras respuestas o algo así?
Una posible ventaja de scutil es que podría funcionar independientemente de si la computadora tiene descubrimiento o mDNSResponder. Data de antes de su introducción.
estos comandos no resuelven el problema
¡Gracias! Esta solución resolvió mi problema. En concreto, dig hostnameya host hostnameestaba resolviendo la dirección pero ping hostnameno estaba resolviendo. Después de ejecutar los dos comandos anteriores, ping hostnamecomenzó a resolverse.

He experimentado el mismo problema... Y aunque reiniciar mDNSResponder parece "funcionar", reiniciarlo un par de veces cada hora apesta.

Entonces, por ahora, "resolví" el problema ejecutando dnsmasq localmente. Para hacer eso:

  • Compile dnsmasq (descargue el tgz y makeo brew install dnsmasq)
  • Pon esto en un dnsmasq.confarchivo:

    resolv-file=resolv.conf
    user=nobody
    group=nobody
    interface=lo0
    cache-size=1024
    
  • Ponga esto en un resolv.confarchivo que esté en el mismo directorio que el dnsmasq.confarchivo (nb: no /etc/resolv.conf ):

    nameserver 8.8.8.8
    nameserver 4.2.2.1
    nameserver 4.2.2.2
    
  • Corre dnsmasqcon sudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf. La salida debería ser algo como:

    ...
    dnsmasq: reading resolv.conf
    dnsmasq: using nameserver 4.2.2.1#53
    dnsmasq: using nameserver 4.2.2.2#53
    dnsmasq: using nameserver 8.8.8.8#53
    dnsmasq: read /etc/hosts - 6 addresses
    
  • Abra Preferencias de red y asegúrese de que 127.0.0.1sea el único servidor DNS (preferencias de red -> avanzado -> DNS -> agregue 127.0.0.1)

Las cosas deberían empezar a funcionar bien de nuevo.

Una vez que las cosas funcionan, puede ejecutar dnsmasqsin las opciones --no-daemony --log-queries, por lo que se iniciará en segundo plano y no necesita mantener abierta una ventana de Terminal.

Solo me gustaría señalar que después de 16 horas seguidas explorando Internet, esta es la única solución que he encontrado que me permite resolver los nombres internos de la empresa Y permite que la red dividida funcione correctamente. Muchas gracias por hacer este comentario.
También me gustaría señalar que en OS X El Capitan, para configurar esto en un script, envolví mi openconnectcomando en un script de python, junto con comandos como networksetup -setdnsservers 127.0.0.1y networksetup -setsearchdomains "$COMPANY_NAME".com. ¡ Agregue su dnsmasqcomando y ya está todo listo! Finalmente tengo una solución VPN estable gracias a este comentario.
Para los futuros lectores, encontré que era más fácil ingresar a mi caja en el trabajo, determinar qué IP tenía para los servidores de nombres y luego codificar esas IP en mi resolv.conf debajo de 8.8.8.8 (servidor DNS de Google). Eso permite que todos los nombres que no sean de la empresa se resuelvan correctamente sin tener que pasar por los servidores de la empresa, lo que encuentro útil para la privacidad y la velocidad. En lo que respecta a la codificación, esas direcciones IP no van a cambiar en el corto plazo, y si lo hacen, no seré el único afectado y debería ser trivial editar dos líneas.
Dice que la dirección 127.0.0.1 ya está en uso cuando intento iniciar dnsmasq. ¿Que tengo que hacer? sierra alta
@IceFire Sé que esto es antiguo, pero eso significa que ya hay un servicio vinculado a ese puerto (53). Técnicamente, eso significa que está recibiendo el error EADDRINUSE , pero no iré allí :) En cuanto a esta respuesta, me parece intrigante. Tengo un problema similar, pero creo (espero) que la otra respuesta lo resuelva, solo que no necesito habilitarlo al menos para mi red doméstica, ya que tengo mis propios servidores DNS autorizados (y uno resulta ser local y lo que uso). Otoh, como usuario de Unix desde hace mucho tiempo, el hecho de que pueda usar /etc/resolv.conf es atractivo, pero probaré el otro primero.

La resolución de nombres bajo OSX (y UNIX en general) se toma de las direcciones IP de los DNS en el archivo ubicado en /etc/resolv.conf (que OS X genera automáticamente hasta donde puedo recordar).

Ya que has probado prácticamente todo lo que se me ocurre, me gustaría preguntarte:

  • ¿Puedes hacer ping al DNS que quieres usar?
  • ¿Cuáles son las direcciones IP de los DNS que desea utilizar?
  • ¿Ha intentado usar 8.8.8.8 (google) o cualquiera de los OpenDNS 208.67.222.222 o 208.67.220.220?
  • ¿Puedes hacer ping a esos hosts?

Finalmente, una buena prueba generalmente consiste en crear un usuario en blanco y ver si ese nuevo usuario presenta el mismo problema. Si no es así, puede comenzar a investigar qué tiene su usuario actual que podría estar causando el problema; si también falla, entonces sabes que esto es algo más relacionado con el "sistema".

También eche un vistazo a la Consola para ver si puede encontrar algo que pueda estar relacionado (y le gustaría pegarlo aquí).

Por último, pero no menos importante, su Mac viene con dos comandos DNS importantes nslookupy dig.

Entonces, para resolver www.apple.com usando el servidor de Google, debe escribir:

nslookup "host para resolver" "servidor DNS para usar". P.ej:

$ nslookup www.apple.com 8.8.8.8
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
www.apple.com   canonical name = www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net    canonical name = www.apple.com.edgekey.net.
www.apple.com.edgekey.net   canonical name = e3191.c.akamaiedge.net.
Name:   e3191.c.akamaiedge.net
Address: 184.24.141.15

NSLookup es un comando antiguo (que se suponía que sería obsoleto hace algunos años y reemplazado por DIG, pero supongo que su sintaxis fácil de usar era demasiado buena para matar), su "reemplazo" es digun comando mucho más poderoso, cuya sintaxis es más loco.

Para realizar la misma consulta, escribiría:

cavar @ 8.8.8.8 www.apple.com

Y aquí está la salida:

$ dig @8.8.8.8 www.apple.com

; <<>> DiG 9.7.3 <<>> @8.8.8.8 www.apple.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17356
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.apple.com.         IN  A

;; ANSWER SECTION:
www.apple.com.      1782    IN  CNAME   www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net. 42 IN CNAME   www.apple.com.edgekey.net.
www.apple.com.edgekey.net. 21581 IN CNAME   e3191.c.akamaiedge.net.
e3191.c.akamaiedge.net. 2   IN  A   184.24.141.15

;; Query time: 26 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Oct  3 21:21:49 2011
;; MSG SIZE  rcvd: 158

Como puede ver, dig es mucho más "detallado" (lo cual es bueno para depurar qué diablos está pasando). El poder de dig proviene del hecho de que puede especificar qué tipo de consulta desea realizar (entre otras cosas).

En cualquier caso, háganos saber las salidas exactas de estos comandos.

Ver mi edición de la pregunta.
@CajunLuke hmmmm interesante... ¿Me importaría agregar el resultado de: cat /etc/resolv.conf a su pregunta?
Editado. (Relleno para que encaje el comentario).
@CajunLuke estoy desconcertado. Volvamos a las raíces... esto solo sucede en esta máquina, y solo bajo OSX, las VM están bien. Empiezo a sospechar que Parallels o VMware pueden estar causando algunos problemas. ¿Qué tipo de red utilizan estas máquinas virtuales? ¿Puenteado? ¿Compartido?
Es VMware Fusion y usamos la opción NAT. Probablemente hay veinte máquinas idénticas (con imágenes), de las cuales dos tienen este problema. OS X tiene el problema, las máquinas virtuales no.
@CajunLuke Realmente no puedo pensar en nada más desde aquí. Dada la reputación de VMware y Parallels de "agregar cosas" a la pila/capa de red y agregar adaptadores virtuales, etc., intentaría eliminar completamente VMware de la máquina para ver si eso lo soluciona, lo que luego le indicaría VMware para obtener más información. Puedes decirles, oye, tengo dos máquinas idénticas, una funciona y la otra no. ¿Detectó algo interesante en la Consola (Aplicaciones/Utilidades/Console.app) relacionado con DNS o VMware mientras la resolución está en curso?
Nada interesante en Console. Además, una de las computadoras que tenía el problema se rompió espontáneamente ayer. Esperamos que el otro también lo haga.
Sí... Pero incluso con mi servidor DNS local (autoritario, de hecho, con vistas múltiples), como en la red local, tengo este problema de vez en cuando. El problema del caché parece mucho más probable, especialmente porque después de un tiempo está bien nuevamente. Y así como un nslookup aparte se considera obsoleto o roto y lo ha sido durante muchos años, se prefiere excavar. Además, mientras estoy en eso, es más corto cavar un apple.com @ 8.8.8.8 (o cualquiera que sea su servidor DNS). No necesita las cosas de CNAME siempre que se pueda encontrar el registro de dirección (CNAME es un mecanismo de alias). Sólo fwiw.
O si quieres algo realmente corto, siempre puedes hacerlo... dig +short a apple.com ...

Tuve exactamente los mismos síntomas (y pasé un tiempo resolviendo el problema), pero pude resolverlo cuando me di cuenta de que me metí /System/Library/LaunchDaemons/com.apple.mDNSResponder.plisty lo que hice se interpretó de alguna manera como incorrecto. Restauré desde una copia de seguridad y la máquina pudo resolver los nombres de host nuevamente.

Antes de llegar a la solución, también me di cuenta de que podía navegar por Internet si usaba un proxy SOCKS5 ssh -Dy probaba las búsquedas de DNS a través del túnel.

Mi empresa ha estado teniendo este problema durante meses y meses, cada vez que llevaba Macs a la "barra Genius" cuya única solución era borrar los discos duros y empezar de nuevo. Vi su publicación, eliminé com.apple.mDNSResponder.plist, reinicié y el problema se resolvió. Desearía poder votarte mil millones de veces.
¡No olvide eliminar com.apple.mDNSResponder.plist! Lo hice como sugirió @TomThorogood. Me cuesta mucho volver. Incluso volví a colocar el archivo y reinicié, no pude obtener ninguna respuesta de Internet. El sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistque ayudó.

Tuve un problema muy, muy similar, excepto que los síntomas eran ligeramente diferentes.

Mi usuario no pudo resolver ningún nombre (NAS local, Google, etc.) pero un usuario invitado en el mismo iMac (OS X 10.7.4) funcionó bien.

Vaciar y reiniciar mDNSResponder como se mencionó funcionó por un tiempo. Si bien seguía funcionando cuando el iMac se ponía en modo de suspensión, siempre fallaba una vez que se reiniciaba.

Cuando el vaciado/reinicio dejó de funcionar, busqué otras razones/soluciones y descubrí que estaba relacionado con mi firewall. No sé qué en mi configuración de firewall (OS X) lo estaba causando, pero si restauré la configuración de firewall, funcionó.

Para restaurar la configuración predeterminada que usé:

sudo cp /usr/libexec/ApplicationFirewall/com.apple.alf.plist /Library/Preferences/com.apple.alf.plist

Obviamente, todas las reglas personalizadas se habrán eliminado con esta restauración.

¡Quería compartir mi versión de este problema, ya que me ha estado causando problemas durante meses y esta publicación es la mejor colección de soluciones posibles en la red!

Me encontré con este problema en Yosemite (10.10). Resulta que un demonio clave, discoveryd, fue eliminado porque consumía demasiada CPU.

2014/10/22 3:50:07.000 PM kernel[0]: process discoveryd[49] thread 1251 caught burning CPU! It used more than 50% CPU (Actual recent usage: 68%) over 180 seconds. thread lifetime cpu usage 90.016372 seconds, (74.516637 user, 15.499735 system) ledger info: balance: 90007570271 credit: 90007570271 debit: 0 limit: 90000000000 (50%) period: 180000000000 time since last refill (ns): 131905306167 

Extrañamente, reiniciar no hizo que se reiniciara.

Reinicié manualmente el servicio con:

sudo launchctl kickstart -k system/com.apple.networking.discoveryd

y ahora todo está bien.

Esta fue la solución para mí también en Yosemite. Algunos detalles: host, dig y Chrome funcionaron bien, pero ping, telnet, ssh, firefox y safari no pudieron resolver los nombres de host. Esta solución solucionó mi problema.
Molesto esto sucede todo el tiempo para mí. Hay que reiniciar el servicio.

Tengo el mismo problema con 10.6.8. El primer viaje a una Apple Store resultó en la restauración del sistema. Pero, después de eso, el DNS volvió a fallar mientras estaba en el extranjero y no tenía conmigo un DVD del sistema. En ese momento encontré este hilo y /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistlo eliminé por @freezedpeanuts y @Tom Thorogood.

Solucionó el problema, pero, sorprendentemente, el DNS se rompió por tercera vez un par de días después. Busqué una imagen del sistema de 10.6.3 y:

  1. Copiado /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistde la imagen del sistema.
  2. sudo chown root /System/Library/LaunchDaemons/com.apple.mDNS*
  3. reiniciado

Eso solucionó el problema.

Se rompe periódicamente para mí ahora (una vez al mes más o menos), y el procedimiento de restauración se reduce a los pasos anteriores, excepto que en lugar de reiniciar puede:

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Tenga en cuenta que si todavía tiene problemas, es posible que deba eliminar cualquier servidor DNS público hasta que se borre el caché.

Tal vez deberíamos mencionar support.apple.com/en-au/HT203244 .
@DAVincent Unos años tarde, pero ese enlace es decepcionante. Es claramente un error de Apple, pero lo atribuyen a un error del usuario.

Aparentemente tuve el mismo problema que el OP. Usando la herramienta networksetup, encontré que para el nombre de red dado, se configuró un DNS incorrecto:

networksetup -getdnsservers <networkname>

enumeró 192.168.0.1 como DNS. Usando scutil --dns, obtuve resultados comparables, enumerando que el servidor de resolución # 2 usó el servidor de nombres [0]: 192.168.0.1.

Usando el comando

networksetup -setdnsservers <networkname> 192.168.188.1 8.8.8.8

Pude reconfigurar el DNS para la red dada y resolver nombres de máquinas locales y globales cuando estaba conectado a la VPN.

Apagar y volver a encender Wi-Fi ayudó.

MacBook Pro con 10.9.1

Especialmente si apagas wifi y luego reinicias. El retraso adicional y el inicio sin IP/conexión de red aseguran que la solicitud para volver a unirse a la red tenga mejores posibilidades de éxito.

Aunque la pregunta puede necesitar alguna edición, todavía dice (al momento de escribir este comentario) que los trabajadores ya intentaron apagar y encender el Wi-Fi. ¿Quizás podríamos retractarnos de esta respuesta?
No tengo suficiente reputación para agregar un comentario a una publicación sobre cómo apagar y encender wifi, pero funcionó para mí. Retractarse de la respuesta sería una tontería.
+1 por la sugerencia de volver a intentarlo. Las respuestas múltiples ayudan a muchas personas, y cada enrutador tiene tiempos de espera y comportamientos diferentes.

Esto probablemente no ayudará a nadie, pero en caso de que accidentalmente hace algún tiempo creé un archivo en la carpeta, cuando un DNS estaba inactivo para un dominio en particular:

/etc/resolver/

y esto impedía que se resolviera un nombre específico, dos años después.

Muchas gracias, este era mi problema. Estuve depurando durante horas, y cuando busqué en /etc/resolver, por supuesto, encontré un archivo llamado "prueba", con las direcciones IP erróneas...
Exactamente mi problema. Solo me di cuenta de esto una vez que ejecuté scutil --dnsy noté que el resolutor #8 agregó servidores de nombres personalizados para mi dominio problemático. Primero intenté eliminarlos a través de la scutilinterfaz de línea de comandos, pero no tuve suerte. Y luego, de alguna manera, me topé con /etc/resolver... ¡aleluya! Esta respuesta fue muy útil para explicar la idea de DNS en macOS.

En mi caso, todo lo demás estuvo bien: mDNSResponder se estaba ejecutando y funcionando, host/ nslookupfuncionó, ambos /etc/resolv.confe networksetupinformaron los servidores DNS correctos, etc. A pesar de todo eso, la resolución de DNS en general (por ejemplo, con ping) inevitablemente dejó de funcionar en algún momento unas horas después bota.

Este problema específico puede ser poco probable, pero lo documentaré aquí como una respuesta de todos modos.

Solo noté cuando la máquina comenzó a ralentizarse, pero había muchos procesos idénticos ejecutándose . sensu-client, específicamente.

Lo teníamos configurado en launchd con este archivo plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
  <dict>
  <key>KeepAlive</key>
  <true/>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/etc/sensu</string>
  <key>UserName</key>
  <string>root</string>
  <key>Label</key><string>org.sensuapp.sensu-client</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/sensu-client</string>
      <string>-d/etc/sensu/conf.d/</string>
      <string>-b</string>
    </array>
  </dict>
</plist>

La -bbandera sensu-clienthace que se bifurque hacia el fondo, actuando como un demonio. Sin embargo, todo launchdlo que ve es que el proceso original terminó, por lo que (de acuerdo con la KeepAlivebandera) lo reinicia. Esto deja miles de procesos bifurcados en segundo plano, e incluso entonces launchd no se dará cuenta del hecho de que se está ejecutando.

Creo que estos varios miles de procesos (todos sensu-client, el software para el que habíamos escrito una configuración de inicio) pueden haber estado realizando solicitudes simultáneamente a mDNSResponder, lo que resultó en una denegación de servicio local del caché DNS . Matar estos procesos y arreglar el plist dado a launchd finalmente resolvió el problema.

La corrección de plist fue simplemente eliminar el -bindicador (fondo / daemonise) de la invocación de sensu-client. Tenga en cuenta que esto no es culpa de sensu; este plist fue escrito por un ex administrador de sistemas de esta empresa.

Aquí hay algunos comandos avanzados que pueden ayudar a solucionar el problema de DNS:

  • Ejecutar digpara enumerar los servidores de nombres raíz.
  • Ejecutar dig example.compara ejecutar la búsqueda de DNS para example.comel dominio.
  • Enumere sus puertos de hardware por: networksetup -listallhardwareports.
  • Compruebe la salida del paquete DHCP/BOOTP que el cliente aceptó del servidor DHCP/BOOTP mediante: ipconfig getpacket en0.
  • Verifique su configuración de DNS por: scutil --dns.
  • Verifique que el mDNSResponderproceso se esté ejecutando por: ps wuax | grep mDNSResponder.
  • Vacíe las entradas de traducción ARP por: arp -ad(ejecutar man arppara obtener ayuda). fuente

Para depurar mDNSResponderel proceso, el siguiente comando puede ayudar:

(sleep 1 && sudo killall -INFO mDNSResponder &); log stream | grep mDNSResponder

El comando anterior enviará SIGINFOuna señal al proceso que volcará los detalles de depuración en la salida del registro que se puede leer y analizar.

Desafortunadamente, nada de esto me ayudó, y resultó después de una hora de tratar de resolverlo y golpearme la cabeza contra la mesa de café... algo, de alguna manera, en algún lugar... eliminó el /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistarchivo, y fue la razón por la que tuve este problema.

Me di cuenta de esto cuando vi este mensaje de error:/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist: No such file or directory

Aquí hay una copia de una versión de El Capitan: https://gist.github.com/tripflex/e7147690d1768dc74b1dd626614573c0

Aquí está el código de esa esencia:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.apple.mDNSResponder.reloaded</string>
    <key>OnDemand</key>
    <false/>
    <key>InitGroups</key>
    <false/>
    <key>UserName</key>
    <string>_mdnsresponder</string>
    <key>GroupName</key>
    <string>_mdnsresponder</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/mDNSResponder</string>
    </array>
    <key>MachServices</key>
    <dict>
        <key>com.apple.mDNSResponder</key>
        <true/>
            <key>com.apple.mDNSResponder.dnsproxy</key>
            <true/>
    </dict>
    <key>Sockets</key>
    <dict>
        <key>Listeners</key>
        <dict>
            <key>SockFamily</key>
            <string>Unix</string>
            <key>SockPathName</key>
            <string>/var/run/mDNSResponder</string>
            <key>SockPathMode</key>
            <integer>438</integer>
        </dict>
    </dict>
    <key>POSIXSpawnType</key>
    <string>Interactive</string>
    <key>EnablePressuredExit</key>
    <false/>
</dict>
</plist>

Reiniciar DNSResponder/borrar caché de DNS en macOS Mojave:

sudo killall -HUP mDNSResponder

No hay problemas con System Integrity Protection, a diferencia de volver a cargar los archivos de configuración.

En mi caso, la causa raíz fue que el sistema de protección DoS de mi enrutador WiFi doméstico agregó por error la dirección MAC de mi dispositivo macOS a la lista negra. Después de borrar manualmente la lista negra y ejecutar los sudo killall -HUP mDNSRespondercomandos dig, ping y traceroute funcionan bien.

En Mac OS Mojave 10.14.6, recientemente comencé a ver fallas frecuentes en la búsqueda de dns. Tengo esta función en mi .bashrc:

function resetdns() {
     dscacheutil -flushcache;
     sudo killall -HUP mDNSResponder
     sudo killall -9 mDNSResponder mDNSResponderHelper
     sudo launchctl stop homebrew.mxcl.dnsmasq 
     sudo launchctl start homebrew.mxcl.dnsmasq
}

en funcionamiento

$ resetdns

Las búsquedas de dns comenzaron a funcionar bien nuevamente.

Resulta que, para resolver el problema, debe configurar un dominio de búsqueda y agregarlo al campo de dominio de búsqueda en la configuración de dns de Preferencias del sistema. Básicamente, el dominio de búsqueda funcionará de la misma manera que lo hace .local, pero en su lugar será .

Debe configurar su dominio de búsqueda como una zona maestra en su servidor dns para que esto funcione.

Tengo un problema similar al encontrar el servidor host. Tenemos 21 iMacs ejecutándose desde el servidor (El Capitan, actualizado recientemente) y solo uno no se enlaza. La solución suele ser bastante simple a través de Usuarios y Grupos en SysPref. Eliminando el servidor host y volviendo a enlazar, encontrando el servidor disponible en la opción desplegable, pero por alguna razón desconocida, el servidor aparece como unkown-00-00-12-34-56-78.home, que he encontrado es la dirección MAC del servidor. Ejecuté esto en la terminal:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

y

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Volví a vincularme al servidor en SysPref y apareció brevemente la opción de nombre de servidor correcto y luego volvió a cambiar a "unknown-00-00-12-34-56-78.home" ¡justo frente a mis ojos!

En mi caso, tenía instalado OpenDNS en el pasado y no se eliminó limpiamente. Se estaban ejecutando varios procesos relacionados con dns, como DNSdnscrypt-proxy. No pude forzar el cierre de ellos en el Monitor de actividad, pero pude evitar que se iniciaran al reiniciar eliminando el archivo .plist en Biblioteca/LaunchDaemons.

Vaya a Configuración -> Red -> Avanzado -> DNS. Luego, haga literalmente cualquier cambio en el DNS (reordene sus entradas de DNS, por ejemplo). Luego haga clic en "Aceptar" seguido de "Aplicar" en la siguiente pantalla. No se deje engañar pensando que el cambio particular que realizó fue significativo; es la magia del botón "Aplicar".

~ $  time nslookup www.google.com
;; connection timed out; no servers could be reached


real    0m21.041s
user    0m0.006s
sys     0m0.010s

 ~ $  time nslookup www.google.com
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   www.google.com
Address: 172.217.5.4


real    0m0.079s
user    0m0.006s
sys     0m0.010s

Lo que funcionó para mí fue eliminar todas las entradas del servidor de los servidores DNS y los dominios de búsqueda de:

Preferencias del Sistema → Red → Avanzado... → DNS

Desinstalar el cliente de roaming de Umbrella hizo que las búsquedas de DNS funcionaran bien para mí en Mac OS Mojave.

Ejecute la aplicación en

Applications > OpenDNS Roaming Client  > Umbrella Roaming Client Uninstaller.

Ejecutándose en MacOS Mojave 10.14.6. Principalmente los mismos problemas, como OP y otros. Todo funciona bien y, de repente, no hay acceso a Internet ni a direcciones locales. Puedo acceder por dirección IP pero no por DNS. Ni wifi ni conexión por cable. Claramente un problema de DNS. Puedo ver las entradas de DNS correctas en Preferencias de red... Avanzado... DNS. Hasta ahora la única resolución era un reinicio. Entonces funcionaría bien durante unos días, luego volvería a suceder.

Lo que funcionó para mí fue proporcionado arriba por @ user674669

function resetdns() {
 dscacheutil -flushcache;
 sudo killall -HUP mDNSResponder
 sudo killall -9 mDNSResponder mDNSResponderHelper
 sudo launchctl stop homebrew.mxcl.dnsmasq 
 sudo launchctl start homebrew.mxcl.dnsmasq

}

en funcionamiento

$ reinicios

Ejecuté cada línea en la función individualmente. Ahora veré si puedo escribirlo, ya que estoy bastante seguro de que lo necesitaré nuevamente.

Bien, tengo una resolución, pero la pregunta principal es ¿por qué sucede esto? Anteriormente, había intentado "sudo killall -HUP mDNSResponder" sin éxito, pero no había ejecutado los otros comandos. Puedo probar solo los primeros tres y ver si eso lo resuelve. Si requiere los dos comandos que hacen referencia a homebrew, ¿podría ser homebrew el problema?

Estoy seguro de que tendré otra oportunidad de comprobar esto más a fondo.

Nuevamente muchas gracias a @user674669!

Actualización 26-08-2021:

El problema volvió a ocurrir. Ejecutó solo los tres primeros comandos:

 dscacheutil -flushcache;
 sudo killall -HUP mDNSResponder
 sudo killall -9 mDNSResponder mDNSResponderHelper

... conexión probada después de cada uno. Parecía requerir los tres, no resuelve completamente el problema, solo restaura la funcionalidad de DNS hasta que vuelve a ocurrir.
El verdadero problema sigue siendo... ¿por qué sucede esto?

Y lo siento, puede que sea un novato aquí, pero también soy analista y lo he sido durante años. Creo que mis respuestas publicadas son relevantes para este tema. Nadie aquí ha llegado con una resolución concluyente definitiva a este problema. Y hago referencia a una respuesta diferente (pero también la misma) con respecto a la persona (@user674669) que brindó los pasos que pude usar para ayudar parcialmente (ya que el problema vuelve más adelante) a resolver el problema. Y con esta actualización, he determinado que no se requieren todos los pasos publicados por @user674669 (al menos en mi caso) para restaurar la funcionalidad de DNS. Creo que mis comentarios son útiles para otros que tienen este mismo problema.

LThibx

Bienvenido a Preguntar Diferente. Gracias por su respuesta, pero es un poco confuso de leer porque hace referencia a una respuesta diferente. Edite su respuesta para incluir solo los pasos relevantes para resolver el problema. - De la revisión
En primer lugar, ¡bienvenido a Ask Different! :) Gracias por su publicación, estoy seguro de que esto será útil para otros. Sin embargo, es posible que desee editarlo para eliminar los bits que no pertenecen a una respuesta . Más específicamente, todo, desde "Entonces, está bien, tengo una resolución..." en adelante podría eliminarse, ya que se lee más como una pregunta. Además, siéntase libre de editar su respuesta si / cuando sienta que puede mejorarla / aclararla. ¡Gracias de nuevo por tu contribución! :)
Esta respuesta parece ser una mezcla de una reiteración (autoconfesada) de la respuesta del usuario 674669 y una nueva pregunta. No parece haber ninguna nueva solución proporcionada.

2022 y teniendo este problema.

nslookup & dig devolvió los valores dns correctos, pero ping y ssh al dispositivo deseado solo devolvieron la IP pública de mi dominio.

en mi caso, tuve que desactivar mi perfil de DNS y "el límite de seguimiento de direcciones IP" en el panel de preferencias de configuración de red.

ahora todo funciona correctamente y los dominios de búsqueda funcionan correctamente.

Después de actualizar Snow Leopard en una Mac Book antigua a Mountain Lion, el sistema no pudo resolver el DNS. Enjuagar, reiniciar, nada ayudó. Cambiar WiFi a un punto de acceso diferente (mi teléfono) ayudó.

Mountain Lion agrega un nuevo campo de cliente a la configuración de la red DHCP. Rellenar este campo parecía alegrar el punto de acceso wifi. Dejarlo en blanco significaba que no pasaba nada, aunque la conexión wifi parecía tener éxito.