Solución de problemas de DNS

2

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

$ 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, no se ve afectado solo el software, es decir, Chrome, que no utiliza la resolución del sistema:

$ 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

La solicitud de un nuevo arrendamiento DHCP tampoco hizo nada. Restablecer 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, pero siempre falla con un tiempo de espera, como si intentara alcanzarlos pero no puedo?

A diferencia de Linux, parece que dig / nslookup no usa el sistema de resolución del sistema que todas las demás aplicaciones / servicios están usando. ¿Hay alguna herramienta que use el sistema de resolución del sistema y tenga algunas opciones para decirme qué está mal?

    
pregunta pascal 26.08.2014 - 20:52

1 respuesta

1

No sé qué podría causar un problema como este, pero puedo darte algunos consejos para la solución de problemas.

  • Primero, intente hacer una consulta manual a 8.8.4.4 ( dig google.com @8.8.4.4 ): dig , nslookup y host parecen usar el primer servidor listado, pero el sistema de resolución del sistema usa un extraño sistema de round robin-ish que fallará de forma intermitente si algunos de los servidores DNS configurados no funcionan correctamente. De manera similar, puede intentar configurar el sistema operativo para usar solo 8.8.8.8 y ver si eso cambia algo.

  • Hablando del sistema de resolución del sistema, es posible que haya entrado en un estado extraño, por lo que reiniciarlo puede solucionar el problema. En realidad, restablecería tanto opendirectoryd (que distribuye todo tipo de búsquedas) como mDNSResponder (que en realidad hace la parte de DNS), por si acaso. sudo killall opendirectoryd mDNSResolver debería hacer el truco. Tenga en cuenta que ambos demonios se reiniciarán automáticamente.

  • Puede obtener más información de mDNSResponder enviándole señales. Probablemente la más útil es la función de registro de paquetes, que hace que registre cada paquete DNS enviado & recibido a /var/log/system.log. Puede activarlo y & apagado con sudo killall -USR2 mDNSResponder . Las entradas del registro deberían tener este aspecto (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 puede enviarle una señal USR1 para activar el registro de depuración (lo que parece requerir que sepa mucho sobre los aspectos internos de mDNSResponder para que tenga sentido), y la señal INFO hace que descargue su estado interno en el registro del sistema (probablemente informativo, pero un montón de información para clasificar).

respondido por el Gordon Davisson 27.08.2014 - 04:26

Lea otras preguntas en las etiquetas