3 votos

Solución de problemas de DNS

Estoy teniendo un problema extraño en el que la resolución de DNS en todo el sistema no funciona, pero no sé cómo podría arreglarlo, o incluso encontrar un registro (viniendo de Linux). Configuré manualmente 8.8.8.8, 8.8.4.4 como servidores DNS en la GUI, lo cual parece haber funcionado:

$ scutil --dns
DNS configuration

resolver #1
  search domain[0] : Home
  nameserver[0] : 8.8.8.8
  nameserver[1] : 8.8.4.4
  flags    : Request A records
  reach    : Reachable

DNS configuration (for scoped queries)

resolver #1
  search domain[0] : Home
  nameserver[0] : 8.8.8.8
  nameserver[1] : 8.8.4.4
  if_index : 4 (en0)
  flags    : Scoped, Request A records
  reach    : Reachable

Sin embargo, cuando el sistema intenta resolver un nombre, falla con un tiempo de espera, sólo algunos programas, como Chrome, que no utilizan el sistema de resolución, no se ven afectados:

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

$ scutil -r google.com
Not Reachable

Se pueden consultar manualmente:

$ nslookup google.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 2.127.237.183
...

$ dig google.com
google.com.     50  IN  A   2.127.237.183
;; Query time: 226 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

Y los resultados son válidos:

$ ping 2.127.237.183
64 bytes from 2.127.237.183: icmp_seq=0 ttl=60 time=37.086 ms

$ scutil -r 2.127.237.183
Reachable

Mi archivo de hosts no contiene nada sorprendente:

$ cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost

Solicitar un nuevo arrendamiento DHCP tampoco hizo nada. Reiniciar los servidores no cambia nada:

$ networksetup -getinfo Wi-Fi
DHCP Configuration
IP address: 192.168.0.2
Subnet mask: 255.255.255.0
Router: 192.168.0.1
Client ID:
IPv6: Automatic
IPv6 IP address: none
IPv6 Router: none

$ networksetup -setdnsservers Wi-Fi Empty

$ scutil --dns
DNS configuration

resolver #1
  search domain[0] : Home
  nameserver[0] : 192.168.0.1
  if_index : 4 (en0)
  flags    : Request A records
  reach    : Reachable,Directly Reachable Address

DNS configuration (for scoped queries)

resolver #1
  search domain[0] : Home
  nameserver[0] : 192.168.0.1
  if_index : 4 (en0)
  flags    : Scoped, Request A records
  reach    : Reachable,Directly Reachable Address

$ scutil -r google.com
Not Reachable

Los registros disponibles en Console.app muestran en su mayoría aplicaciones que se quejan de los tiempos de espera (creo que esto es especialmente extraño: la resolución no falla inmediatamente porque no hay un servidor disponible, sino que siempre falla con un tiempo de espera, como si intentara llegar a ellos pero no pudiera ).

Al contrario que en Linux, dig/nslookup no parecen utilizar el resolver del sistema que utilizan todas las demás aplicaciones/servicios. ¿Existe alguna herramienta que utilice el resolver del sistema y que tenga algunas opciones para decirme qué es lo que está mal?

3voto

Nate Puntos 220

No sé qué puede causar un problema como éste, pero puedo darte algunas indicaciones para solucionar el problema.

  • En primer lugar, intente hacer una consulta manual a 8.8.4.4 ( dig google.com @8.8.4.4 ) -- dig , nslookup y host todos parecen utilizar el primer servidor de la lista, pero el sistema de resolución utiliza un extraño sistema round-robin-ish que fallará intermitentemente si algunos de los servidores DNS configurados no funcionan bien. Del mismo modo, podrías intentar configurar el sistema operativo para que sólo utilice 8.8.8.8 y ver si eso cambia algo.

  • Hablando del resolvedor del sistema, es posible que haya entrado en algún estado extraño, por lo que reiniciarlo puede solucionar el problema. En realidad, yo reiniciaría ambos opendirectoryd (que envía todo tipo de búsquedas) y mDNSResponder (que realmente hace la parte del DNS), por si acaso. sudo killall opendirectoryd mDNSResponder debería funcionar. Tenga en cuenta que ambos demonios se reiniciarán automáticamente.

  • Puede obtener más información en mDNSResponder enviándole señales. Probablemente lo más útil es la función de registro de paquetes, que hace que registre cada paquete DNS enviado y recibido en /var/log/system.log. Puedes activarlo y desactivarlo con sudo killall -USR2 mDNSResponder . Las entradas del registro deberían ser algo así (para una búsqueda exitosa, es decir):

     -- Sent UDP DNS Query (flags 0100) RCODE: NoErr (0) RD ID: 28215 25 bytes from port 61186 to 172.20.0.1:53 --
      1 Questions
      0 scanme.insecure.net. Addr
      0 Answers
      0 Authorities
      0 Additionals
     --------------
     -- Received UDP DNS Response (flags 8180) RCODE: NoErr (0) RD RA ID: 28215 272 bytes from 172.20.0.1:53 to 172.20.6.67:61186 --
      1 Questions
      0 scanme.insecure.net. Addr
      1 Answers
      0 TTL    3600    4 scanme.insecure.net. Addr 5.45.96.131
      4 Authorities
      0 TTL   86400   17 insecure.net. NS ns3.eurodns.com.
      1 TTL   86400   17 insecure.net. NS ns2.eurodns.com.
      2 TTL   86400   17 insecure.net. NS ns4.eurodns.com.
      3 TTL   86400   17 insecure.net. NS ns1.eurodns.com.
      7 Additionals
      0 TTL    3600    4 ns1.eurodns.com. Addr 80.92.65.2
      1 TTL    3600   16 ns1.eurodns.com. AAAA 2001:0B20:1001:0004:0000:0000:0000:0002
      2 TTL    3600    4 ns2.eurodns.com. Addr 80.92.89.242
      3 TTL    3600   16 ns2.eurodns.com. AAAA 2001:0B20:1001:0011:0000:0000:0000:0242
      4 TTL     600    4 ns3.eurodns.com. Addr 80.92.95.42
      5 TTL    3600    4 ns4.eurodns.com. Addr 192.174.68.100
      6 TTL    3600   16 ns4.eurodns.com. AAAA 2001:067C:01BC:0000:0000:0000:0000:0100
     --------------

También puedes enviarle un USR1 para activar el registro de depuración (que parece requerir que se conozca mucho el funcionamiento interno de mDNSResponder para darle sentido), y la señal INFO señal hace que vuelque su estado interno en el registro del sistema (probablemente informativo, pero lotes de información para ordenar).

0 votos

Gracias, era exactamente el tipo de indicación que estaba buscando.

0 votos

Grandes consejos para la resolución de problemas de @Gordon Davisson. En Big Sur Bonjour es soportado por mDNSResponder, no por mDNSResolver, así que recomiendo usar esto en su lugar o adicionalmente: ``` sudo killall mDNSResponder ```

0 votos

@AlDante mDNSResolver era sólo un pedo cerebral, no el nombre real de nada; lo corregí a mDNSResponder .

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