Dig es otro comando para realizar consultas directamente a los servidores DNS’s. Veamos un ejemplo sencillo:
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.
25 septiembre, 2010 a las 14:00
Great read! I want to see a follow up to this topic =D