Saltar al contenido

¿Dig + trace siempre es preciso?

Solución:

Solución 1:

Obviamente, esta es una sesión de preguntas y respuestas preparada, pero esto tiende a confundir a la gente a menudo y no puedo encontrar una pregunta canónica que cubra el tema.

dig +trace es una gran herramienta de diagnóstico, pero un aspecto de su diseño es ampliamente malinterpretado: la IP de cada servidor que se consultará se obtiene de su biblioteca de resolución. Esto se pasa por alto muy fácilmente y, a menudo, solo termina convirtiéndose en un problema cuando su caché local tiene la incorrecto respuesta para un servidor de nombres en caché.


Análisis detallado

Esto es más fácil de desglosar con una muestra de la salida; Omitiré todo más allá de la primera delegación de NS.

; <<>> DiG 9.7.3 <<>> +trace +additional serverfault.com                                                                      

;; global options: +cmd
.                   121459  IN      NS      d.root-servers.net.
.                   121459  IN      NS      e.root-servers.net.
.                   121459  IN      NS      f.root-servers.net.
.                   121459  IN      NS      g.root-servers.net.
.                   121459  IN      NS      h.root-servers.net.
.                   121459  IN      NS      i.root-servers.net.
.                   121459  IN      NS      j.root-servers.net.
.                   121459  IN      NS      k.root-servers.net.
.                   121459  IN      NS      l.root-servers.net.
.                   121459  IN      NS      m.root-servers.net.
.                   121459  IN      NS      a.root-servers.net.
.                   121459  IN      NS      b.root-servers.net.
.                   121459  IN      NS      c.root-servers.net.
e.root-servers.net. 354907  IN      A       192.203.230.10
f.root-servers.net. 100300  IN      A       192.5.5.241
f.root-servers.net. 123073  IN      AAAA    2001:500:2f::f
g.root-servers.net. 354527  IN      A       192.112.36.4
h.root-servers.net. 354295  IN      A       128.63.2.53
h.root-servers.net. 108245  IN      AAAA    2001:500:1::803f:235
i.root-servers.net. 355208  IN      A       192.36.148.17
i.root-servers.net. 542090  IN      AAAA    2001:7fe::53
j.root-servers.net. 354526  IN      A       192.58.128.30
j.root-servers.net. 488036  IN      AAAA    2001:503:c27::2:30
k.root-servers.net. 354968  IN      A       193.0.14.129
k.root-servers.net. 431621  IN      AAAA    2001:7fd::1
l.root-servers.net. 354295  IN      A       199.7.83.42
;; Received 496 bytes from 75.75.75.75#53(75.75.75.75) in 10 ms

com.                        172800  IN      NS      m.gtld-servers.net.
com.                        172800  IN      NS      k.gtld-servers.net.
com.                        172800  IN      NS      f.gtld-servers.net.
com.                        172800  IN      NS      g.gtld-servers.net.
com.                        172800  IN      NS      b.gtld-servers.net.
com.                        172800  IN      NS      e.gtld-servers.net.
com.                        172800  IN      NS      j.gtld-servers.net.
com.                        172800  IN      NS      c.gtld-servers.net.
com.                        172800  IN      NS      l.gtld-servers.net.
com.                        172800  IN      NS      d.gtld-servers.net.
com.                        172800  IN      NS      i.gtld-servers.net.
com.                        172800  IN      NS      h.gtld-servers.net.
com.                        172800  IN      NS      a.gtld-servers.net.
a.gtld-servers.net. 172800  IN      A       192.5.6.30
a.gtld-servers.net. 172800  IN      AAAA    2001:503:a83e::2:30
b.gtld-servers.net. 172800  IN      A       192.33.14.30
b.gtld-servers.net. 172800  IN      AAAA    2001:503:231d::2:30
c.gtld-servers.net. 172800  IN      A       192.26.92.30
d.gtld-servers.net. 172800  IN      A       192.31.80.30
e.gtld-servers.net. 172800  IN      A       192.12.94.30
f.gtld-servers.net. 172800  IN      A       192.35.51.30
g.gtld-servers.net. 172800  IN      A       192.42.93.30
h.gtld-servers.net. 172800  IN      A       192.54.112.30
i.gtld-servers.net. 172800  IN      A       192.43.172.30
j.gtld-servers.net. 172800  IN      A       192.48.79.30
k.gtld-servers.net. 172800  IN      A       192.52.178.30
l.gtld-servers.net. 172800  IN      A       192.41.162.30
;; Received 505 bytes from 192.203.230.10#53(e.root-servers.net) in 13 ms
  • La consulta inicial para . IN NS (servidores de nombres raíz) llega al solucionador local, que en este caso es Comcast. (75.75.75.75) Esto es fácil de detectar.
  • La siguiente consulta es para serverfault.com. IN A y corre contra e.root-servers.net., seleccionado al azar de la lista de servidores de nombres raíz que acabamos de obtener. Tiene una dirección IP de 192.203.230.10, y como tenemos +additional lo habilitó aparece venir del pegamento.
  • Dado que no tiene autoridad para serverfault.com, esto se delega al com. Servidores de nombres de TLD.
  • Lo que no es obvio del resultado aquí es que dig no derivó la dirección IP de e.root-servers.net. del pegamento.

En el fondo, esto es lo que realmente sucedió:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
02:03:43.301022 IP 192.0.2.1.59900 > 75.75.75.75.53: 63418 NS? . (17)
02:03:43.327327 IP 75.75.75.75.53 > 192.0.2.1.59900: 63418 13/0/14 NS k.root-servers.net., NS l.root-servers.net., NS m.root-servers.net., NS a.root-servers.net., NS b.root-servers.net., NS c.root-servers.net., NS d.root-servers.net., NS e.root-servers.net., NS f.root-servers.net., NS g.root-servers.net., NS h.root-servers.net., NS i.root-servers.net., NS j.root-servers.net. (512)
02:03:43.333047 IP 192.0.2.1.33120 > 75.75.75.75.53: 41110+ A? e.root-servers.net. (36)
02:03:43.333096 IP 192.0.2.1.33120 > 75.75.75.75.53: 5696+ AAAA? e.root-servers.net. (36)
02:03:43.344301 IP 75.75.75.75.53 > 192.0.2.1.33120: 41110 1/0/0 A 192.203.230.10 (52)
02:03:43.344348 IP 75.75.75.75.53 > 192.0.2.1.33120: 5696 0/1/0 (96)
02:03:43.344723 IP 192.0.2.1.37085 > 192.203.230.10.53: 28583 A? serverfault.com. (33)
02:03:43.423299 IP 192.203.230.10.53 > 192.0.2.1.37085: 28583- 0/13/14 (493)

+trace engañó y consultó al solucionador local para obtener la dirección IP del servidor de nombres del siguiente salto en lugar de consultar el pegamento. ¡Furtivo!

Por lo general, esto es “suficientemente bueno” y no causará ningún problema a la mayoría de las personas. Desafortunadamente, hay casos extremos. Si por alguna razón su caché de DNS ascendente proporciona la respuesta incorrecta para el servidor de nombres, este modelo se descompone por completo.

Ejemplo del mundo real:

  • el dominio expira
  • el pegamento se reasigna a los servidores de nombres de redireccionamiento del registrador
  • las direcciones IP falsas se almacenan en caché para ns1 y ns2.yourdomain.com
  • el dominio se renueva con pegamento restaurado
  • cualquier caché con direcciones IP de servidor de nombres falsas continúa enviando a las personas a un sitio web que dice que el dominio está a la venta

En el caso anterior, +trace sugerirá que los propios servidores de nombres del propietario del dominio son la fuente del problema, y ​​que está a una llamada de decirle incorrectamente a un cliente que sus servidores están mal configurados. Si se trata de algo sobre lo que puedas (o estés dispuesto a) hacer algo, es otra historia, pero es importante tener la información correcta.

dig +trace es una gran herramienta, pero como cualquier herramienta, necesita saber qué hace y qué no, y cómo solucionar el problema manualmente cuando resulta insuficiente.


Editar:

También debe tenerse en cuenta que dig +trace no te advertirá sobre NS registros que apuntan a CNAMEalias. Esta es una violación de RFC que ISC BIND (y posiblemente otros) no intentará corregir. +trace Estará completamente feliz de aceptar el A registro que obtiene de su servidor de nombres configurado localmente, mientras que si BIND realizara una recursividad completa, rechazaría toda la zona con un SERVFAIL.

Esto puede ser complicado de solucionar si hay pegamento; esto funcionará bien hasta que los registros NS se actualicen y luego se rompan repentinamente. Las delegaciones sin cola siempre romper la recursividad de BIND cuando un NS puntos de registro en un alias.

Solucion 2:

Otra forma de rastrear la resolución de DNS sin usar el solucionador local para nada excepto para encontrar los servidores de nombres raíz, es usando dnsgraph (Divulgación completa: escribí esto). Tiene una herramienta de línea de comandos y una versión web, de la cual puede encontrar una instancia en http://ip.seveas.net/dnsgraph/

Ejemplo de serverfault.com, que en realidad tiene un problema de DNS en este momento:

ingrese la descripción de la imagen aquí

valoraciones y comentarios

Si para ti ha sido de utilidad nuestro post, te agradeceríamos que lo compartas con más juniors y nos ayudes a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *