¿Cómo puedo listar TODOS LOS registros DNS?


¿Hay alguna manera de que pueda enumerar TODOS los registros DNS de un dominio?

Sé de cosas como dig y nslookup, pero solo llegan hasta cierto punto. Por ejemplo, si tengo un subdominio Un registro como

test A somedomain.co.uk

Entonces a menos que lo pida específicamente, por ejemplo.

dig any test.somedomain.co.uk

No puedo verlo.

¿Hay alguna manera (aparte de mirar los registros yendo al administrador de DNS) de ver exactamente cuáles son todos los registros DNS?

 124
dns
Author: Ken, 2013-10-11

7 answers

Cuando usted consulta para CUALQUIERA obtendrá una lista de todos los registros en ese nivel, pero no por debajo.

# try this
dig google.com any

Esto puede devolver registros A, registros TXT, registros NS, registros MX, etc. si el nombre de dominio es exactamente "google.com". Sin embargo, no devolverá los registros de los hijos (p. ej., www.google.com). Más precisamente, puede obtener estos registros si existen. El servidor de nombres no tiene que devolver estos registros si decide no hacerlo (por ejemplo, para reducir el tamaño de la respuesta).

Un AXFR es una transferencia de zona y es probable que lo que quieres. Sin embargo, estos suelen estar restringidos y no están disponibles a menos que usted controle la zona. Por lo general, realizará una transferencia de zona directamente desde el servidor autorizado (el @ns1.google.com a continuación) y a menudo desde un servidor de nombres que puede no ser publicado (un servidor de nombres sigiloso).

# This will return "Transfer failed"
dig @ns1.google.com google.com axfr

Si tiene el control de la zona, puede configurarla para obtener transferencias que estén protegidas con una clave TSIG. Este es un secreto compartido que el cliente puede enviar al servidor para autorizar la transferencia.

 142
Author: denis phillips,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-15 19:48:42

He mejorado la respuesta de Josh . He notado que dig solo muestra las entradas ya presentes en la caché del servidor de nombres consultado, por lo que es mejor extraer un servidor de nombres autoritativo de la SOA (en lugar de confiar en el servidor de nombres predeterminado). También he desactivado el filtrado de IP comodín porque normalmente estoy más interesado en la corrección de la configuración.

El nuevo script toma un argumento -x para la salida expandida y un argumento -s NS para elegir un servidor de nombres específico: dig -x example.com

#!/bin/bash
set -e; set -u
COMMON_SUBDOMAINS="www mail mx a.mx smtp pop imap blog en ftp ssh login"
EXTENDED=""

while :; do case "$1" in
  --) shift; break ;;
  -x) EXTENDED=y; shift ;;
  -s) NS="$2"; shift 2 ;;
  *) break ;;
esac; done
DOM="$1"; shift
TYPE="${1:-any}"

test "${NS:-}" || NS=$(dig +short  SOA "$DOM" | awk '{print $1}')
test "$NS" && NS="@$NS"

if test "$EXTENDED"; then
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
  wild_ips=$(dig +short "$NS" "*.$DOM" "$TYPE" | tr '\n' '|')
  wild_ips="${wild_ips%|}"
  for sub in $COMMON_SUBDOMAINS; do
    dig +nocmd $NS "$sub.$DOM" +noall +answer "$TYPE"
  done | cat  #grep -vE "${wild_ips}"
  dig +nocmd $NS "*.$DOM" +noall +answer "$TYPE"
else
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
fi
 18
Author: dan3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:37

En ausencia de la capacidad de hacer transferencias de zona, escribí este pequeño script bash, dg:

#!/bin/bash
COMMON_SUBDOMAINS=(www mail smtp pop imap blog en ftp ssh login)
if [[ "$2" == "x" ]]; then
    dig +nocmd "$1" +noall +answer "${3:-any}"
    wild_ips="$(dig +short "*.$1" "${3:-any}" | tr '\n' '|')"
    wild_ips="${wild_ips%|}"
    for sub in "${COMMON_SUBDOMAINS[@]}"; do
        dig +nocmd "$sub.$1" +noall +answer "${3:-any}"
    done | grep -vE "${wild_ips}"
    dig +nocmd "*.$1" +noall +answer "${3:-any}"
else
    dig +nocmd "$1" +noall +answer "${2:-any}"
fi

Ahora utilizo dg example.com para obtener una lista bonita y limpia de registros DNS, o dg example.com x para incluir un montón de otros subdominios populares.

grep -vE "${wild_ips}" filtra los registros que podrían ser el resultado de una entrada DNS comodín como * 10800 IN A 1.38.216.82. De lo contrario, una entrada comodín haría que pareciera como si hubiera registros para cada $COMMON_SUBDOMAN.

Nota: Esto se basa en ANY consultas, que son bloqueadas por algunos proveedores de DNS como CloudFlare.

 14
Author: Zaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-04 22:55:51

Lo que quieres se llama una transferencia de zona . Puede solicitar una transferencia de zona usando dig -t axfr.

A zone es un dominio y todos los dominios debajo de él que no están delegados a otro servidor.

Tenga en cuenta que las transferencias de zona no siempre son compatibles. No se usan en búsquedas normales, solo en replicar datos DNS entre servidores; pero hay otros protocolos que se pueden usar para eso (como rsync sobre ssh), puede haber un riesgo de seguridad al exponer nombres y las respuestas de transferencia de zona cuestan más generar y enviar que las búsquedas de DNS habituales.

 11
Author: deltab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-11 16:53:33
  1. Una transferencia de zona es la única manera de asegurarse de que tiene todos los registros de subdominio. Si el DNS está configurado correctamente, normalmente no debería poder realizar una transferencia de zona externa.

  2. El scans.io el proyecto tiene una base de datos de registros DNS que se pueden descargar y buscar subdominios. Esto requiere descargar los 87 GB de datos DNS, alternativamente puede probar la búsqueda en línea de los datos en https://hackertarget.com/find-dns-host-records/

 9
Author: squizzy99,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-14 13:14:08

host -a funciona bien, similar a dig any.

EG:

$ host -a google.com
Trying "google.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10403
;; flags: qr rd ra; QUERY: 1, ANSWER: 18, AUTHORITY: 0, ADDITIONAL: 0


;; QUESTION SECTION:
;google.com.            IN  ANY

;; ANSWER SECTION:
google.com.     1165    IN  TXT "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"
google.com.     53965   IN  SOA ns1.google.com. dns-admin.google.com. 2014112500 7200 1800 1209600 300
google.com.     231 IN  A   173.194.115.73
google.com.     231 IN  A   173.194.115.78
google.com.     231 IN  A   173.194.115.64
google.com.     231 IN  A   173.194.115.65
google.com.     231 IN  A   173.194.115.66
google.com.     231 IN  A   173.194.115.67
google.com.     231 IN  A   173.194.115.68
google.com.     231 IN  A   173.194.115.69
google.com.     231 IN  A   173.194.115.70
google.com.     231 IN  A   173.194.115.71
google.com.     231 IN  A   173.194.115.72
google.com.     128 IN  AAAA    2607:f8b0:4000:809::1001
google.com.     40766   IN  NS  ns3.google.com.
google.com.     40766   IN  NS  ns4.google.com.
google.com.     40766   IN  NS  ns1.google.com.
google.com.     40766   IN  NS  ns2.google.com.
 7
Author: Datavar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-24 05:07:17

No hay una manera fácil de obtener todos los registros DNS de un dominio en una instancia. Solo puede ver ciertos registros por ejemplo, si desea ver un registro A para un dominio determinado, puede usar el comando: dig a (type of record) domain.com. Esto es lo mismo para todos los otros tipos de registros que desea ver para ese dominio.

Si no está familiarizado con la interfaz de línea de comandos, también puede usar un sitio como mxtoolbox.com. Wich es una herramienta muy útil para obtener registros de un dominio.

I espero que esto responda a su pregunta.

 0
Author: Mike Fraanje,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-25 12:58:01