Como posso listar todos os registos DNS?

Há alguma forma de eu poder listar todos os registos DNS para um domínio?

Sei coisas como escavar e procurar, mas só vão até certo ponto. Por exemplo, se eu tiver um sub-domínio um registro como

test A somedomain.co.uk
Então, a não ser que eu peça especificamente, por exemplo.

dig any test.somedomain.co.uk
Não consigo ver.

Existe alguma maneira(além de olhar para os registros indo ao gerente do DNS) para ver exatamente o que são todos os registros do DNS?

 124
dns
Author: Ken, 2013-10-11

7 answers

Quando você consulta para qualquer você vai obter uma lista de todos os registros a esse nível, mas não abaixo.

# try this
dig google.com any

Isto pode devolver registos, registos TXT, registos NS, registos MX, etc Se o nome de domínio for exactamente "google.com". no entanto, não devolverá registros de crianças (por exemplo, www.google.com). mais precisamente, você pode obter esses registros se eles existem. O servidor de nomes não tem que devolver esses registros se ele optar por não fazê-lo (por exemplo, para reduzir o tamanho da resposta).

AXFR é uma transferência de zona e é provavelmente o que você quer. No entanto, estes são tipicamente restritos e não estão disponíveis a menos que você controle a zona. Normalmente, irá efectuar uma transferência de zona directamente do servidor autoritário (@@ns1.google.com abaixo) e muitas vezes a partir de um servidor de nome que não pode ser publicado (um servidor de nome stealth).

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

Se você tem o controle da zona, você pode configurá-lo para obter transferências que são protegidas com uma chave TSIG. Este é um segredo partilhado para o qual o cliente pode enviar o servidor para autorizar a transferência.

 142
Author: denis phillips, 2018-06-15 19:48:42
Eu melhorei a resposta do Josh. Eu notei que dig só mostra entradas já presentes no cache do servidor de nomes pesquisados, por isso é melhor puxar um servidor de nomes autoritário do SOA (em vez de confiar no servidor de nomes padrão). Eu também desativei a filtragem de IPs wildcard porque normalmente estou mais interessado na correção da configuração.

O novo programa tem um argumento -x para uma saída expandida e um argumento -s NS para escolher um argumento específico servidor de nomes: 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, 2017-05-23 12:26:37
Na ausência da capacidade de fazer transferências de zonas, escrevi este pequeno guião de 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

Agora eu uso {[[2]} para obter uma lista limpa de registros DNS, ou dg example.com x para incluir um monte de outros subdomínios populares.

grep -vE "${wild_ips}" filtra os registos que poderão ser o resultado de um item DNS de caracteres especiais como * 10800 IN A 1.38.216.82. Caso contrário, um item de caracteres especiais faria com que parecesse como se houvesse registos para cada $COMMON_SUBDOMAN.

Nota: Isto depende de ANY consultas, que são bloqueada por alguns fornecedores de DNS, como a CloudFlare .

 14
Author: Zaz, 2016-01-04 22:55:51

O que queres chama-se transferência de zona . Você pode solicitar uma transferência de zona usando dig -t axfr.

A zone é um domínio e todos os domínios abaixo dele que não são delegados em outro servidor.

Note que as transferências de zonas nem sempre são suportadas. Eles não são usados na pesquisa normal, apenas na replicação de dados DNS entre servidores; mas existem outros protocolos que podem ser usados para isso( como rsync sobre ssh), pode haver um risco de segurança de expor nomes, e as respostas de transferência de zona custam mais para gerar e enviar do que as habituais pesquisas de DNS.

 11
Author: deltab, 2013-10-11 16:53:33
  1. Uma transferência de zona é a única forma de ter a certeza de que tem todos os registos de subdomínios. Se o DNS estiver configurado corretamente, você normalmente não deverá ser capaz de realizar uma transferência de zona externa.

  2. O scans.io o projecto tem uma base de dados de Registos DNS que podem ser descarregados e procurados por subdomínios. Isto requer o download dos 87GB de dados DNS, alternativamente você pode tentar a pesquisa online dos dados em https://hackertarget.com/find-dns-host-records/

 9
Author: squizzy99, 2014-09-14 13:14:08

host -a funciona bem, semelhante 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, 2014-12-24 05:07:17

Não há uma maneira fácil de obter todos os registos de DNS para um domínio em uma instância. Só poderá ver certos registos, por exemplo, se quiser ver um registo de um determinado domínio, poderá usar o comando: dig a (tipo de Registo) domain.com este é o mesmo para todos os outros tipos de registros que você quer ver para esse domínio.

Se não estiver familiarizado com a interface da linha de comandos, também pode utilizar um site como mxtoolbox.com. Wich é uma ferramenta muito útil para obter registros de um dominio.

Espero que isto responda à tua pergunta.
 0
Author: Mike Fraanje, 2017-10-25 12:58:01