Mostrando entradas con la etiqueta dig. Mostrar todas las entradas
Mostrando entradas con la etiqueta dig. Mostrar todas las entradas

DIG - guía básica

Hace un tiempo expliqué algunos usos básicos de dig como herramienta de visualización y comprobación de entradas DNS.
Hoy voy a dejar aquí una pequeña guía o chuleta básica de dig, opciones y salidas que vamos a poder obtener para comprobar si un servidor DNS está correctamente configurado o incluso para averiguar información interesante sobre dominios.
Por defecto, y siempre que sea posible voy a emplear la opción "+short" ya que así la salida es mucho más simple y legible.
También, dig incluye la posibilidad de preguntar directamente a un servidor DNS concreto. Para ello empleamos el "@DNS-Server".



  1. Información básica
    shell> dig google.com +short
    74.125.24.101
    74.125.24.102
    74.125.24.113
    74.125.24.138
    74.125.24.139
    74.125.24.100
    
  2. Registros DNS
    shell> dig @8.8.8.8 google.com A +short
    173.194.116.101
    173.194.116.105
    173.194.116.99
    173.194.116.97
    173.194.116.100
    173.194.116.103
    173.194.116.102
    173.194.116.98
    173.194.116.96
    173.194.116.110
    173.194.116.104
    
    1. Registros NS
      Hace referencia a los servidores DNS que emplear el dominio consultado.
      shell> dig @8.8.8.8 google.com NS +short
      ns1.google.com.
      ns2.google.com.
      ns3.google.com.
      ns4.google.com.
      
    2. Registros MX
      Hace referencia a los nombre de los servidores de correo que existen en el dominio consultado.
      shell> dig @8.8.8.8 google.com MX +short
      40 alt3.aspmx.l.google.com.
      30 alt2.aspmx.l.google.com.
      10 aspmx.l.google.com.
      50 alt4.aspmx.l.google.com.
      20 alt1.aspmx.l.google.com.
      
    3. Registros TXT
      shell> dig @8.8.8.8 google.com TXT +short
      "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ..."

  3. Consulta inversa
    Sirve para saber el nombre que al que resuelve una IP concreta y por lo tanto poder buscar un dominio únicamente teniendo como información una IP.
    shell> dig -x 173.194.116.96
    ...
    ;; AUTHORITY SECTION:
    116.194.173.in-addr.arpa. 60  IN  SOA  ns1.google.com. ...
    ...
Leer más

Detección de balanceadores de carga

Muchas veces a la hora de consultar una página web nos puede interesa saber si tiene o no un balanceador de carga detrás de ella, es decir, si lo que parece una única página web en realidad tiene detrás un número N de servidores. A continuación vamos a ver las formas que hay de averiguar si detrás de un servicio hay uno o varios equipos respondiendo.
  • Consulta DNS
    Podemos averiguar si un servicio está balanceado mediante DNS si al realizar la pregunta al servidor, éste nos devuelve varias entradas.
    shell> dig www.google.com A
    ...
    ;; ANSWER SECTION:
    www.google.com.  511041 IN CNAME www.l.google.com.
    www.l.google.com. 205 IN A 173.194.66.106
    www.l.google.com. 205 IN A 173.194.66.147
    www.l.google.com. 205 IN A 173.194.66.99
    www.l.google.com. 205 IN A 173.194.66.103
    www.l.google.com. 205 IN A 173.194.66.104
    www.l.google.com. 205 IN A 173.194.66.105
    ...
    
  • Load Balancing Detector
    lbd es un pequeño script escrito en bash por Stefan Behte (http://ge.mine.nu) que permite evaluar con una sola llamada varias técnicas para descubrir si un dominio está en load balancing o no. Tras descargarlo y dar permisos de ejecución, únicamente hay que pasarle como parámetro el dominio a evaluar.
    shell> ./lbd google.com
    
    lbd - load balancing detector 0.2 -
          Checks if a given domain uses load-balancing.
          Written by Stefan Behte (http://ge.mine.nu)
          Proof-of-concept! Might give false positives.
    
    Checking for DNS-Loadbalancing: FOUND
    google.com has address 74.125.230.230
    google.com has address 74.125.230.231
    google.com has address 74.125.230.232
    google.com has address 74.125.230.233
    google.com has address 74.125.230.238
    google.com has address 74.125.230.224
    google.com has address 74.125.230.225
    google.com has address 74.125.230.226
    google.com has address 74.125.230.227
    google.com has address 74.125.230.228
    google.com has address 74.125.230.229
    
    Checking for HTTP-Loadbalancing [Server]: 
     gws
     NOT FOUND
    
    Checking for HTTP-Loadbalancing [Date]: 10:56:58, 10:56:58, 10:56:58, 10:56:58, 10:56:58, 10:56:59, 10:56:59, 10:56:59, 10:56:59, 10:56:59, 10:56:59, 10:56:59, 10:56:59, 10:56:59, 10:57:00, 10:57:00, 10:57:00, 10:57:00, 10:57:00, 10:57:00, 10:57:00, 10:57:00, 10:57:01, 10:57:01, 10:57:01, 10:57:01, 10:57:01, 10:57:01, 10:57:01, 10:57:01, 10:57:02, 10:57:02, 10:57:02, 10:57:02, 10:57:02, 10:57:02, 10:57:02, 10:57:02, 10:57:02, 10:57:03, 10:57:03, 10:57:03, 10:57:03, 10:57:03, 10:57:03, 10:57:03, 10:57:03, 10:57:04, 10:57:04, 10:57:04, NOT FOUND
    
    Checking for HTTP-Loadbalancing [Diff]: NOT FOUND
    
    google.com does Load-balancing. Found via Methods: DNS
    
  • hping3
    Con esta pequeña utilidad podemos crear paquetes ping "made a tu gusto" y que nos permite obtener valores al intentar establecer una conexión con un equipo. Si el equipo no está balanceado, generalmente los id's son incrementales o cero, pero al estar detrás de un balanceador vemos que no tienen un orden lógico.
    shell> hping3 -S -p 80 www.google.com
    HPING www.google.com (eth2 173.194.66.103): S set, 40 headers + 0...
    len=46 ip=173.194.66.103 ttl=46 id=26225 sport=80 flags=SA seq=0...
    len=46 ip=173.194.66.103 ttl=46 id=13025 sport=80 flags=SA seq=1...
    len=46 ip=173.194.66.103 ttl=46 id=55771 sport=80 flags=SA seq=2...
    len=46 ip=173.194.66.103 ttl=46 id=53021 sport=80 flags=SA seq=3...
    len=46 ip=173.194.66.103 ttl=46 id=46727 sport=80 flags=SA seq=4...
    len=46 ip=173.194.66.103 ttl=46 id=11782 sport=80 flags=SA seq=5...
    
    Mientras que a un dominio sin balanceo,
    shell> hping3 -S -p 80 www.domain.com
    HPING www.domain.es (eth2 213.60.X.Y): S set, 40 headers + 0...
    len=46 ip=213.60.X.Y ttl=63 DF id=0 sport=80 flags=SA seq=0...
    len=46 ip=213.60.X.Y ttl=63 DF id=0 sport=80 flags=SA seq=1...
    len=46 ip=213.60.X.Y ttl=63 DF id=0 sport=80 flags=SA seq=2...
    len=46 ip=213.60.X.Y ttl=63 DF id=0 sport=80 flags=SA seq=3...
    len=46 ip=213.60.X.Y ttl=63 DF id=0 sport=80 flags=SA seq=4...
    
Leer más

Reverse lookup

En ocasiones igual de importante saber la IP a la que responde un nombre, también es importante saber a qué nombre corresponde una determinada IP. Para ello se usa el reverse lookup y dig nos lo permite hacer empleando la opción -x.
Partiendo de una IP, por ejemplo, 74.125.230.216, nos interesa saber a qué nombre de dominio resuelve. Para ello, usando dig, realizamos lo siguiente.
shell> dig -x 74.125.230.216 +short
par08s09-in-f24.1e100.net.
En este caso, la IP solicitada devuelve el dominio par08s09-in-f24.1e100.net, que corresponde a Google. Con la opción +short evitamos una salida larga y más compleja de comprender.
Leer más

dig, solicitar transferencia de zona

dig es un comando muy complejo, que como ya se vio permite realizar consultas al DNS para obtener diversa información de una IP o de un dominio, pero también permite realizar transferencias de zona. Para realizarlo, únicamente es necesario al final del comando "axfr".
Un ejemplo de ejecución, tras el salto.

shell> dig mydomain.com @192.168.1.3 axfr

; <<>> DiG 9.3.4-P1 <<>> mydomain.com @192.168.1.3 axfr
; (1 server found)
;; global options:  printcmd
mydomain.com.  86400  IN  SOA  ns1.mydomain.es. ...
mydomain.com.  86400  IN  A    192.168.1.160
mydomain.com.  86400  IN  NS   ns2.mydomain.com.
mydomain.com.  86400  IN  NS   ns1.mydomain.com.
mydomain.com.  86400  IN  MX   mail.mydomain.com.
(...)
;; Query time: 11 sec
;; SERVER: 192.168.1.3#53(192.168.1.3)
;; WHEN: Fri Nov 15 19:32:57 2011
;; XFR size: 29 records (messages 1)
Y en caso de que la transferencia falle,
shell> dig mydomain.com @192.168.1.3 axfr
; <<>> DiG 9.7.3 <<>> mydomain.com @192.168.1.3 axfr
;; global options: +cmd
; Transfer failed.
Leer más

Comandos interesantes: dig




El comando dig sirve pare realizar consultas sencillas a un servidor DNS y obtener cualquier registro que interese de un dominio. Por defecto, el comando usa los servidores predeterminados de nuestro sistema, ubicados en /etc/resolv.conf y pide los registros de tipo A.





shell> dig google.es

; <<>> DiG 9.7.3 <<>> google.es
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode:QUERY, status:NOERROR, id:11789
;; flags:qr rd ra; QUERY:1, ANSWER:6, AUTHORITY:0, ADDITIONAL:0

;; QUESTION SECTION:
;google.es.   IN A

;; ANSWER SECTION:
google.es.    300   IN   A   209.85.148.104
google.es.    300   IN   A   209.85.148.106
google.es.    300   IN   A   209.85.148.103
google.es.    300   IN   A   209.85.148.105
google.es.    300   IN   A   209.85.148.99
google.es.    300   IN   A   209.85.148.147

;; Query time: 63 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Oct 11 17:13:38 2011
;; MSG SIZE  rcvd: 123

Los princiaples registros que DNS maneja son:
  • A, define la dirección IPv4.
  • AAA, define la dirección IPv6.
  • NS, define los servidores DNS.
  • MX, define los servidores de correo.
  • CNAME, permite definir alias de otros nombres.
  • SOA, contiene información sobre el servidor DNS primario
  • LOC, define la localización
Para pedir un registro específico al DNS, simplemente indicamos en el comando el tipo.
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios