3 votos

¿cómo verificar el estado del servicio de resolución de DNS y/o reiniciarlo en macOS?

Antecedentes

Conectado a WiFi en Macbook Air, Early 2014, con Big Sur 11.7.10, iniciado sesión como Usuario Estándar (limitado).

Síntomas

  1. Navegación en Internet funciona bien en Google Chrome.
  2. nslookup google.com funciona bien desde Terminal.
  3. Navegación en Internet NO funciona desde Safari.
  4. ping google.com NO funciona desde Terminal. (No se puede resolver, Host desconocido)

Deducciones

El servidor DNS y la resolución están funcionando, SIN EMBARGO la resolución predeterminada de MacOS NO está funcionando.

Intento de Solución

Desde Terminal:

  • su al usuario Administrador
  • Ejecutar comando: sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Resultado: La resolución DNS sigue sin funcionar.

2voto

jzer7 Puntos 21

Una pregunta multipartita, con respuesta multipartita :)

Primera: revisar estado

  1. Google Chrome funciona: las configuraciones más recientes de Chrome utilizan DNS seguro, por lo tanto, no dependen del servicio de resolución DNS de MacOS. (Mire en Configuración, Privacidad y Seguridad, Seguridad, DNS seguro y proveedor de DNS seguro para ver lo que Chrome utiliza).
  2. El comando de terminal nslookup no utiliza el servidor DNS del sistema.

    $ man nslookup ... AVISO DE macOS El comando nslookup no utiliza el nombre de host y la resolución de dirección o los mecanismos de enrutamiento de consulta DNS utilizados por otros procesos que se ejecutan en macOS. Los resultados de consultas de nombre o dirección impresos por nslookup pueden diferir de los encontrados por otros procesos que utilizan los mecanismos nativos de resolución de nombre y dirección de macOS. Los resultados de consultas DNS también pueden diferir de las consultas que utilizan la biblioteca de enrutamiento DNS de macOS. ...

En cambio, nslookup utiliza el archivo /etc/resolv.conf. Por lo general, ese archivo tiene una línea como nameserver 127.0.0.1, donde esa dirección es proporcionada por la red (durante DHCP) o por tu SO (en Configuración). Lo mismo sucede con el comando dig.

  1. Safari utiliza el mecanismo de resolución de DNS.
  2. ping utiliza el mecanismo de resolución de DNS.

En tu caso, las pruebas (3) y (4) muestran que hay de hecho un problema.

Otra prueba potencial es utilizar el comando scutil --dns. Si el resolutor de DNS está sano, la salida debería mostrar una sección "Configuración de DNS (para consultas con alcance)", con algunos puntos finales válidos.

Segunda: ¿cómo "reiniciarlo"?

Para MacOS Big Sur el comando que tienes en la pregunta debería hacerlo:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Esta página tiene instrucciones para otras versiones de macOS.

Adicional

1voto

chr Puntos 136

La respuesta de @jzer7 tiene buena información sobre comandos/aplicaciones que usan el resolver del sistema (ping, Safari) vs otros como nslookup o dig que no lo hacen. Por lo tanto, no repetiré eso.

Agregaré que es probable que falte algo de información en los archivos de /var/log/ ya que esos registros antiguos han sido reemplazados parcial o totalmente por el Sistema de Registro Unificado. Para consultar el ULS en busca de entradas relacionadas con DNS, puedes hacer algo como

log show --last 10m --predicate 'subsystem == "com.apple.mDNSResponder" || subsystem == "com.apple.mdns"'

Para enfocarte solo en Errores/Fallas, y producir la salida en formato JSON (que contiene más detalles) aquí tienes una variante:

log show --style json --last 10m --predicate '(subsystem == "com.apple.mDNSResponder" || subsystem == "com.apple.mdns") && logType IN {16,17}'

Para un filtrado y búsqueda adicionales, sugiero enviar la salida a jq o fx. ¡Buena caza!

edición: En caso de que se pierda el comentario que hice en otro lugar de este tema, quiero reiterar:

Esto parece indicar que el hotel está interceptando el puerto UDP 53 e intentando realizar un ataque MITM o redirigirlo a su propio servidor DNS (defectuoso), probablemente con fines de registro/bloqueo. Sugiero intentar configurar un DNS basado en TLS en todo el sistema (como Cloudflare WARP o Tailscale) para mitigar esto.

1voto

Frank O'Neill Puntos 11

Abre la aplicación Terminal en Aplicaciones/Utilidades, escribe sudo -s e introduce tu contraseña. Verifica que tengas una IP de resolución de DNS utilizable y pública (yo uso 9.9.9.9, 1.1.1.1, 8.8.8.8) en la configuración de DNS de tu máquina con scutil --dns. Compara esa salida con cat /etc/resolv.conf

Si todo parece correcto, entonces determinaría si el firewall PF está habilitado y si alguna regla de filtro está interfiriendo. Mi proceso para hacer esto sería algo así:

Verifica si el firewall está habilitado con pfctl -si | head -1 y busca en la última línea el estado del firewall -- dirá "enabled" (habilitado) o "disabled" (deshabilitado)

Si el firewall PF está habilitado, lista el conjunto de reglas: pfctl -vvsr

esto te dará una lista numerada de reglas, junto con el recuento de paquetes afectados por la regla.

Si tu firewall PF está habilitado, desactívalo con pfctl -d -Fa y luego determina si el problema desapareció.

Si es así, vuelve a habilitar el firewall con pfctl -E y luego echo "set loginterface pflog0" | pfctl -mf - y luego crea la interfaz de log con ifconfig pflog0 create. abre un tcpdump (no estoy seguro si instalé el mío a través del gestor de paquetes homebrew, o si vino con la instalación predeterminada de Mac OS...) tcpdump -I pflog0 -n -s 0 -vvv -XX

Luego abre otra ventana de Terminal manteniendo presionada la tecla Apple / comando en el teclado (generalmente al lado de la barra espaciadora) y la letra 'n'. escribe dig www.google.com a +short. deberías ver una dirección IP devuelta. si no, mira la otra ventana de Terminal, verás la solicitud de DNS y el número de regla de PF que la bloqueó.

Espero que eso ayude.

F.

0voto

Lamak Puntos 33901

Algunas cosas adicionales que puedes intentar:

  • Cambiar la configuración de DNS en Mac muestra cómo cambiar los servidores DNS (sección relevante copiada aquí: "Menú de Apple > Preferencias del Sistema, clic en Red en la barra lateral, clic en un servicio de red a la derecha, clic en Detalles, luego clic en DNS. (Puede que necesites desplazarte hacia abajo.)"), podrías intentar hacer ping a cada uno de ellos, ya que a veces un solo servidor problemático puede causar problemas.
  • ¿Estás usando alguna VPN? Es posible que haya afectado a dónde van tus consultas DNS. Si es posible, intenta desinstalarlo/borrar la configuración.
  • Verifica que el contenido de /etc/resolv.conf y /etc/hosts sea sensato (sin reescrituras extrañas de nombres o direcciones IP).
  • La respuesta en ¿Cómo puedo mostrar los servidores DNS actuales desde la línea de comandos en OS X? y otros muestran varias formas de obtener los servidores DNS utilizados, podrías ver cuál es el resultado de esos comandos.

0voto

Daniel Puntos 18

Probablemente debería haber mencionado que viajo mucho, y actualmente estoy en un hotel en un país extranjero. Asumí que el problema era con mi computadora porque:

  1. Todo había estado funcionando bien durante varios días.
  2. El hecho de que DNS funcionara cuando utilizaba Chrome o nslookup me indicaba que la resolución de DNS estaba funcionando, pero el problema estaba específicamente limitado al resolutor de DNS predeterminado de macOS, por lo que el problema debía ser algo específicamente limitado a mi Macbook.

Resulta que el problema es alguna combinación específica entre el enrutador de este hotel y el resolutor de DNS predeterminado de macOS.

Encontré varios hilos de StackExchange con problemas similares:

Pero ninguna de las soluciones funcionó para mí.

Finalmente probé reiniciar mi Macbook (había estado tratando de evitar esto), y sin embargo el problema aún persistía después de un reinicio.

Fue en este punto que finalmente consideré que el problema puede que no sea con mi Macbook.

Pedí al personal del hotel que reiniciara su enrutador inalámbrico y APs y... la resolución de DNS en macOS volvió a funcionar como debería.

Entonces, debe haber algo fallando en el lado del enrutador, pero aún hay algo de culpa que recaer en macOS ya que 'nslookup' y Chrome continúan funcionando normalmente. En resumen, debe haber algo único y peculiar en la forma en que el resolutor de DNS predeterminado en macOS funciona que lo hace incompatible con cualquier error que se presente en el lado del WiFi o del enrutador.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X