Come posso elencare TUTTI i record DNS?


189

Esiste un modo per elencare TUTTI i record DNS per un dominio?

Conosco cose come scavare e guardare ma vanno solo così lontano. Ad esempio, se ho un record A come sottodominio

test A somedomain.co.uk

quindi a meno che non lo richieda espressamente, ad es.

dig any test.somedomain.co.uk

Non riesco a vederlo

Esiste un modo (oltre a guardare i record andando al gestore DNS) per vedere esattamente quali sono tutti i record DNS?

Risposte:


202

Quando esegui una query per QUALSIASI, otterrai un elenco di tutti i record a quel livello ma non al di sotto.

# try this
dig google.com any

Ciò può restituire record A, record TXT, record NS, record MX, ecc. Se il nome di dominio è esattamente "google.com". Tuttavia, non restituirà i record figlio (ad es. Www.google.com). Più precisamente, PUOI ottenere questi record se esistono. Il server dei nomi non deve restituire questi record se sceglie di non farlo (ad esempio, per ridurre la dimensione della risposta).

Un AXFR è un trasferimento di zona ed è probabilmente quello che vuoi. Tuttavia, questi sono in genere limitati e non disponibili a meno che non si controlli la zona. Di solito effettuerai un trasferimento di zona direttamente dal server autorevole (@ ns1.google.com di seguito) e spesso da un server dei nomi che potrebbe non essere pubblicato (un server dei nomi invisibile).

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

Se hai il controllo della zona, puoi impostarla per ottenere trasferimenti protetti con una chiave TSIG. Questo è un segreto condiviso che il client può inviare al server per autorizzare il trasferimento.


4
Grazie per quello (anche per deltab). Spiegazione molto chiara, che conferma ciò che avevo sospettato: è disponibile ma non per me (a meno che non inizi a configurare i miei nameserver). Dato che mi occupo di moltissimi domini, sarebbe stato così bello eseguire uno script per ottenere TUTTE le voci DNS.
Ken,

13
I nameserver di Route53 di Amazon non includevano TXT, MX e SOA quando l'ho provato. Dopo aver interrogato in modo specifico questi record, sono stati inclusi in QUALSIASI risposta. Quindi prendi questo con un granello di sale.
Peter,

Ho appena ricevuto "connessione rifiutata"
niico

1
Le specifiche non sono mai state interpretate in modo coerente dai risolutori sul significato di QUALSIASI. Sicuramente non significa TUTTO (c'è una richiesta per questo), anche se alcuni (non molti) lo hanno trattato in questo modo. Altri hanno appena scaricato la cache e altri lo hanno limitato a determinati tipi di record. Nei tempi moderni (2016+), la maggior parte dei provider ha disabilitato QUALSIASI (o gli ha dato una risposta inutile) o ha in programma di farlo, in quanto è il driver comune per molti attacchi di amplificazione.
Nick Bastin,

1
@NickBastin questa bozza ( tools.ietf.org/html/draft-ietf-dnsop-refuse-any-06 ) attualmente nel lavoro cerca di rafforzare il modello di risposte per questo tipo di query. Discute anche perché è / non dovrebbe essere usato.
Patrick Mevzek,

29

Ho migliorato la risposta di Josh . Ho notato che digmostra solo le voci già presenti nella cache del nameserver interrogato, quindi è meglio estrarre un nameserver autorevole dalla SOA (piuttosto che fare affidamento sul nameserver predefinito). Ho anche disabilitato il filtro degli IP jolly perché di solito sono più interessato alla correttezza dell'installazione.

Il nuovo script accetta un -xargomento per l'output espanso e un -s NSargomento per scegliere un nameserver specifico: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

aggiungere righe dig -t txt +nocmd $NS "$DOM" +noall +answer(e modificare il $DOM) per ispezionare i record TXT di un dominio.
Max

19

In assenza della possibilità di eseguire trasferimenti di zona, ho scritto questo piccolo 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

Ora utilizzo dg example.comun elenco chiaro e pulito di record DNS o dg example.com xper includere un gruppo di altri sottodomini popolari.

grep -vE "${wild_ips}"filtra i record che potrebbero essere il risultato di una voce DNS jolly come * 10800 IN A 1.38.216.82. Altrimenti, una voce jolly farebbe apparire come se ci fossero record per ciascuno $COMMON_SUBDOMAN.

Nota: questo si basa su ANYquery, che sono bloccate da alcuni provider DNS come CloudFlare .


3
So che questa soluzione è tutt'altro che ideale, ma mi ha fatto risparmiare un sacco di tempo, quindi spero che sia utile a qualcun altro.
Zaz,

aggiungere dig -t txt +nocmd "$1" +noall +answer(e modificare in "*.$1"ecc.) per ispezionare i record TXT di un dominio.
Max

15

host -afunziona bene, simile a dig any.

PER ESEMPIO:

$ 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.

11
Questo non risponde alla domanda, ovvero come trovare altri record nella zona DNS di un dominio, vale a dire tutti i record per i sottodomini. Questo non vuol dire che host -anon sia un comando utile, semplicemente non fa ciò che l'OP sta cercando.
spikyjt,

13
  1. Un trasferimento di zona è l'unico modo per essere sicuri di avere tutti i record del sottodominio. Se il DNS è configurato correttamente, normalmente non si dovrebbe essere in grado di eseguire un trasferimento di zona esterno.

  2. Il progetto scans.io ha un database di record DNS che è possibile scaricare e cercare sottodomini. Ciò richiede il download di 87 GB di dati DNS, in alternativa puoi provare la ricerca online dei dati su https://hackertarget.com/find-dns-host-records/


12

Per Windows:

Potrebbe essere necessario verificare lo stato dei record DNS dei domini o controllare i server dei nomi per vedere quali record stanno tirando i server.

  1. Avviare il prompt dei comandi di Windows andando su Start> Prompt dei comandi o tramite Esegui> CMD.

  2. Digita NSLOOKUP e premi Invio. Il server predefinito è impostato sul DNS locale, l'indirizzo sarà l'IP locale.

  3. Impostare il tipo di record DNS che si desidera cercare digitando set type=##dove ## è il tipo di record, quindi premere Invio. È possibile utilizzare QUALSIASI, A, AAAA, A + AAAA, CNAME, MX, NS, PTR, SOA o SRV come tipo di record.

  4. Ora inserisci il nome di dominio che desideri interrogare, quindi premi Invio. In questo esempio, utilizzeremo Managed.com.

  5. NSLOOKUP ora restituirà le voci del record per il dominio inserito.

  6. È inoltre possibile modificare i server dei nomi ai quali si sta eseguendo la query. Ciò è utile se si stanno verificando i record prima che il DNS si sia propagato completamente. Per cambiare il Name Server digitare server [name server]. Sostituire [server dei nomi] con i server dei nomi che si desidera utilizzare. In questo esempio, li imposteremo come NSA.managed.com.

  7. Una volta modificato, modificare il tipo di query (Passaggio 3), se necessario, quindi immettere un nuovo dominio (Passaggio 4.)

Per Linux:

1) Controllare i record DNS usando il comando Dig Dig Dig sta per informazioni sul dominio groper è uno strumento flessibile per interrogare i server dei nomi DNS. Esegue ricerche DNS e visualizza le risposte restituite dai server dei nomi a cui è stata eseguita la query. La maggior parte degli amministratori DNS utilizza lo scavo per risolvere i problemi DNS a causa della sua flessibilità, facilità d'uso e chiarezza dell'output. Altri strumenti di ricerca tendono ad avere meno funzionalità rispetto allo scavo.

2) Controlla i record DNS usando il comando NSlookup Nslookup è un programma per interrogare i server dei nomi di dominio Internet. Nslookup ha due modalità interattive e non interattive.

La modalità interattiva consente all'utente di eseguire query sui server dei nomi per informazioni su vari host e domini o di stampare un elenco di host in un dominio.

La modalità non interattiva viene utilizzata per stampare solo il nome e le informazioni richieste per un host o un dominio. È lo strumento di amministrazione della rete che li aiuterà a controllare e risolvere i problemi relativi al DNS.

3) Controlla i record DNS usando l'host host Il comando è una semplice utility per eseguire ricerche DNS. Viene normalmente utilizzato per convertire i nomi in indirizzi IP e viceversa. Quando non vengono forniti argomenti o opzioni, l'host stampa un breve riepilogo degli argomenti e delle opzioni della riga di comando.


Questo ha funzionato perfettamente per me in Windows 7, ma sembra essere difettoso in Windows 10, questo è quello che ho usato per il debug di un record TXT in Windows 10: nslookup -querytype = txt nomedominiohere.com
The Coder

11

Quello che vuoi è chiamato un trasferimento di zona . È possibile richiedere un trasferimento di zona utilizzando dig -t axfr.

Una zona è un dominio e tutti i domini sottostanti che non sono delegati a un altro server.

Si noti che i trasferimenti di zona non sono sempre supportati. Non vengono utilizzati nella ricerca normale, ma solo nella replica di dati DNS tra server; ma ci sono altri protocolli che possono essere utilizzati per questo (come rsync su ssh), potrebbe esserci un rischio per la sicurezza dall'esposizione dei nomi e le risposte al trasferimento di zona costano di più per generare e inviare rispetto alle normali ricerche DNS.


1

Non esiste un modo semplice per ottenere tutti i record DNS per un dominio in un'istanza. Ad esempio, è possibile visualizzare solo determinati record, se si desidera visualizzare un record A per un determinato dominio, è possibile utilizzare il comando: dig a domain.com (tipo di record). Questo è lo stesso per tutti gli altri tipi di record che vuoi vedere per quel dominio.

Se non hai familiarità con l'interfaccia della riga di comando, puoi anche utilizzare un sito come mxtoolbox.com. Quale strumento molto utile per ottenere record di un dominio.

Spero che questo risponda alla tua domanda.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.