Guía de Dig

Dig es otro comando para realizar consultas directamente a los servidores DNS’s. Veamos un ejemplo sencillo:
Ejemplo dig IANA
Se distribuye con servidor de nombres BIND, en Linux/UNIX suele venir preinstalado con las utilidades DNS, si no es vuestro caso buscad en Google cual es el paquete que necesitáis según vuestra distribución. En el caso de los usuarios de Windows no viene preinstalado en ninguna de sus versiones.
¿Entonces solo se puede utilizar en entornos Linux/Unix?
Obviamente no, pero tendremos que “instalarlo” nosotros mismos. Tenéis el como en este otro post.
Ahora vamos a ir entrando en detalle. Para empezar dig sin no le especificamos lo contrario hará uso del servidor de nombres que tengamos configurado por defecto en el archivo resolv.conf, el cual podéis encontrar en:
Linux

/etc/resolv.conf

Windows

C:\Windows\system32\driver\setcresolv.conf

Dig nos presenta por consola la información dividida en secciones:

  • Got Answer. En esta sección nos dan información acerca de la consulta realizada. Mención especial hay que hacer a la sección flags.
  • Flags:
    • QR (Query/Response): Informa de que el mensaje es de respuesta.
    • RD (Recursion Desired): Informa de que queremos que en caso de no resolver la consulta en el servidor inicial seguirá realizando consultas recursivamente a otros.
    • RA (Recursion Allowed): Informa de que pedimos al servidor que consulte recursivamente a otros servidores de darse el caso de no ser capaz de resolver una consulta. El server puede aceptar o no.
    • AA: Informa de que es una respuesta autorizada.
    • TC (Truncated Response),Informa de que la respuesta se ha truncado por ser demasiado grande.
    • AD (Authentic Data): Informa de que los datos incluidos en la respuesta han sido verificados por el servidor que nos la ha devuelto.
    • CD (Checking Disabled): Informa de que una consulta con los datos sin verificar es valida.
  • Question Section. En esta sección se nos muestra la consulta realizada. Consta de tres partes
    • El dominio consultado
    • Ámbito donde se realiza la consulta. Normalmente tiene el valor IN que representa a Internet.
    • Registros consultados. Estos registros pueden ser:
      • A: IPv4 de un dominio
      • ANY: Cualquier tipo de registro
      • AAAA: IPv6 de un dominio
      • CNAME: Alias de host
      • MX: Servidores de correo
      • NS: Servidores de nombres
      • TXT: Texto, se utiliza para configurar SPF
      • SOA: Servidor autorizado para el dominio
  • Answer Section. En esta sección se nos muestra la respuesta a nuestra consulta. En el caso de que haya uno o varios alias especificados para nuestra consulta, dig seguira consultando a los alias hasta llegar al registro A.
  • Authority Section. En esta sección se nos muestra información de los servidores de nombres autorizados para una determinada zona.
  • Additional Section. Es en esta sección donde se nos mostrara las IP’s de los servidores de nombres mostrados en la Authority Section.
  • Detalles de la consulta.en esta sección se nos muestran datos sobre como se ha realizado la consulta:
    • Tiempo en realizar la consulta
    • Server y puerto al que se ha realizado la consulta
    • Cuando se ha realizado la consulta
    • Tamaño del mensaje recibido

Si se da el caso de que tuviéramos que consultar a un DNS especifico no necesitarías modificar el archivo resolv.conf, simplemente con utilizar la opción @SERVIDORDNS seria suficiente. Un ejemplo:

C:>dig @208.67.222.222 www.iana.org

; <<>> DiG 9.7.0-P1 <<>> @208.67.222.222 www.iana.org; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44611;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:;www.iana.org.                  IN      A

;; ANSWER SECTION:www.iana.org.           296     IN      CNAME   ianawww.vip.icann.org.ianawww.vip.icann.org.  30      IN      A       208.77.188.193

;; Query time: 156 msec;; SERVER: 208.67.222.222#53(208.67.222.222);; WHEN: Sun May 16 17:37:06 2010;; MSG SIZE  rcvd: 78

 

C:>dig @208.67.222.222 www.iana.org

; <<>> DiG 9.7.0-P1 <<>> @208.67.222.222 www.iana.org; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44611;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:;www.iana.org.                  IN      A

;; ANSWER SECTION:www.iana.org.           296     IN      CNAME   ianawww.vip.icann.org.ianawww.vip.icann.org.  30      IN      A       208.77.188.193

;; Query time: 156 msec;; SERVER: 208.67.222.222#53(208.67.222.222);; WHEN: Sun May 16 17:37:06 2010;; MSG SIZE  rcvd: 78

Podremos realizar consultas sobre solo un tipo de registros simplemente añadiendo el tipo de registro  después del comando, de hecho por defecto dig consulta los registros A. En las siguientes capturas os pongo varios ejemplos de como funcionaria:

C:>dig NS hotmail.com

; <<>> DiG 9.7.0-P1 <<>> NS hotmail.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32701;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 5

;; QUESTION SECTION:;hotmail.com.                   IN      NS

;; ANSWER SECTION:hotmail.com.            1890    IN      NS      ns4.msft.net.hotmail.com.            1890    IN      NS      ns3.msft.net.hotmail.com.            1890    IN      NS      ns2.msft.net.hotmail.com.            1890    IN      NS      ns1.msft.net.hotmail.com.            1890    IN      NS      ns5.msft.net.

;; ADDITIONAL SECTION:ns4.msft.net.           1281    IN      A       207.46.75.254ns3.msft.net.           1281    IN      A       213.199.161.77ns2.msft.net.           1281    IN      A       64.4.59.173ns1.msft.net.           1281    IN      A       65.55.37.62ns5.msft.net.           1281    IN      A       65.55.226.140

;; Query time: 3 msec;; SERVER: 192.168.1.240#53(192.168.1.240);; WHEN: Sun May 16 17:43:28 2010;; MSG SIZE  rcvd: 207

Solo hay una excepción y es para obtener los registros PTR, para ello debemos utilizar el parámetro –x. Un ejemplo:

C:>dig -x 192.0.43.8

; <<>> DiG 9.7.0-P1 <<>> -x 192.0.43.8;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54298;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:;8.43.0.192.in-addr.arpa.       IN      PTR

;; ANSWER SECTION:8.43.0.192.in-addr.arpa. 12009  IN      PTR     43-8.any.icann.org.

;; Query time: 2 msec;; SERVER: 192.168.1.240#53(192.168.1.240);; WHEN: Sun May 16 17:44:30 2010;; MSG SIZE  rcvd: 73

Este ultimo comando nos sirve perfectamente para identificar rápidamente direcciones IP desconocidas que nos encontremos en cualquiera de los logs que tenemos que revisar o en una red que estemos descubriendo.

Hay dos opciones mas que merecen ser comentadas, el resto las tenéis en la ayuda:

  • +trace: Lista los servidores de nombres que se han utilizado para resolver la consulta
  • +notcp. Realiza la consulta con paquetes UDP en vez de TCP

Al realizar la consulta podemos seleccionar que secciones queremos que se nos muestren

También podemos seleccionar que secciones de la respuesta se nos presentan si nos hiciese falta filtrarla, los parámetros son:

  • +[no]cl: Clase
  • +[no]cmd: Línea de comandos
  • +[no]comments: Líneas comentadas
  • +[no]question: Sección Question
  • +[no]answer: Sección Answer
  • +[no]authority: Sección Authority
  • +[no]additional: Sección Additional
  • +[no]stats: Estadisticas
  • +[no]short: Muestra unicamente la respuesta corta
  • +[no]ttlid: TTL

Espero que os sirva.

One comment

Comments are closed.