Come posso trovare le origini dei record DNS in conflitto?
Come posso trovare le origini dei record DNS in conflitto?
Risposte:
È necessario il record SOA (Start of Authority) per un determinato nome di dominio, ed è così che lo si ottiene utilizzando lo strumento da riga di comando nslookup disponibile universalmente :
command line> nslookup
> set querytype=soa
> stackoverflow.com
Server: 217.30.180.230
Address: 217.30.180.230#53
Non-authoritative answer:
stackoverflow.com
origin = ns51.domaincontrol.com # ("primary name server" on Windows)
mail addr = dns.jomax.net # ("responsible mail addr" on Windows)
serial = 2008041300
refresh = 28800
retry = 7200
expire = 604800
minimum = 86400
Authoritative answers can be found from:
stackoverflow.com nameserver = ns52.domaincontrol.com.
stackoverflow.com nameserver = ns51.domaincontrol.com.
La riga di origine (o server dei nomi primario su Windows) indica che ns51.domaincontrol è il server dei nomi principale per stackoverflow.com .
Alla fine dell'output vengono elencati tutti i server autorevoli, inclusi i server di backup per il dominio specificato.
dig
sembrato, per me (vedi risposta sotto)
nslookup -type=soa stackoverflow.com
su Linux oggi (2019-febbraio), la sezione autorevole è vuota.
Hai usato il singolare nella tua domanda, ma in genere ci sono diversi server dei nomi autorevoli, RFC 1034 ne consiglia almeno due.
A meno che non si intenda "server dei nomi primario" e non "server dei nomi autorevole". I server dei nomi secondari sono autorevoli.
Per scoprire i server dei nomi di un dominio su Unix:
% dig +short NS stackoverflow.com
ns52.domaincontrol.com.
ns51.domaincontrol.com.
Per scoprire il server elencato come primario (la nozione di "primario" è piuttosto confusa in questi giorni e in genere non ha una buona risposta):
% dig +short SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.
Per verificare le discrepanze tra i server dei nomi, la mia preferenza va al vecchio check_soa
strumento, descritto nel libro "DNS & BIND" di Liu & Albitz (editor O'Reilly). Il codice sorgente è disponibile in http://examples.oreilly.com/dns5/
% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300
Qui, i due server dei nomi autorevoli hanno lo stesso numero seriale. Buona.
www.pressero.com
, che è un CNAME per un altro sito - dig + short SOA restituisce solo il target CNAME.
www.pressero.com
, probabilmente stavi pensando ai record A (che è il tipo di record predefinito dig
se non lo specifichi). Ma se necessario, basta aggiungere a tail -1
per recuperare il risultato finale.
dig +short SOA www.pressero.com
. Ciò restituisce solo il target CNAME, non il record SOA per il pressero.com
dominio, che è quello che mi aspettavo. tail -1
non aiuta le cose; dig +short SOA
sta emettendo solo una riga.
On * nix:
$ dig -t ns <domain name>
Ho uno strumento di propagazione DNS progettato per rispondere a questo tipo di domande.
La fonte è rilasciata sotto AGPLv3.
(Sì, l'interfaccia è piuttosto semplice al momento :))
Puoi anche scoprire i nameserver per un dominio con il comando "host":
[davidp @ supernova: ~] $ host -t ns stackoverflow.com server dei nomi stackoverflow.com ns51.domaincontrol.com. server dei nomi stackoverflow.com ns52.domaincontrol.com.
Ho scoperto che il modo migliore per aggiungere sempre l'opzione + trace:
dig SOA +trace stackoverflow.com
Funziona anche con CNAME ricorsivo ospitato in diversi provider. + trace trace implica + norecurse quindi il risultato è solo per il dominio specificato.
Il termine su cui dovresti cercare su Google è "autorevole", non "definitivo".
Su Linux o Mac è possibile utilizzare i comandi whois
, dig
, host
, nslookup
o più altri. nslookup
potrebbe funzionare anche su Windows.
Un esempio:
$ whois stackoverflow.com
[...]
Domain servers in listed order:
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
Per quanto riguarda il credito extra: Sì, è possibile.
aryeh è decisamente sbagliato, poiché il suo suggerimento di solito ti darà solo l'indirizzo IP per il nome host. Se lo usi dig
, devi cercare i record NS, in questo modo:
dig ns stackoverflow.com
Tieni presente che ciò potrebbe richiedere al tuo server DNS locale e quindi fornire risposte errate o non aggiornate che ha nella sua cache.
Abbiamo creato uno strumento di ricerca DNS che ti fornisce i server dei nomi autorevoli del dominio e i suoi record DNS comuni in una richiesta.
Esempio: https://www.misk.com/tools/#dns/stackoverflow.com
Il nostro strumento trova i server dei nomi autorevoli eseguendo una ricerca DNS (in cache) in tempo reale sui server dei nomi radice e quindi seguendo i riferimenti ai nameserver fino a raggiungere i server dei nomi autorevoli. Questa è la stessa logica utilizzata dai resolver DNS per ottenere risposte autorevoli. Un nameserver autorevole casuale viene selezionato (e identificato) su ogni query che consente di trovare record DNS in conflitto eseguendo più richieste.
È inoltre possibile visualizzare il percorso della delega del nameserver facendo clic su "Nameserver autorevoli" nella parte inferiore dei risultati della ricerca DNS nell'esempio sopra.
Esempio: https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net
È possibile utilizzare il servizio whois. Su un sistema operativo UNIX come si eseguirà il seguente comando. In alternativa, puoi farlo sul Web all'indirizzo http://www.internic.net/whois.html .
whois stackoverflow.com
Otterresti la seguente risposta.
... testo rimosso qui ...
Server di dominio nell'ordine elencato: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM
Puoi usare nslookup o scavare per scoprire maggiori informazioni sui record per un determinato dominio. Questo potrebbe aiutarti a risolvere i conflitti che hai descritto.
Sfortunatamente, la maggior parte di questi strumenti restituisce solo il record NS fornito dallo stesso vero server dei nomi. Per essere più accurati nel determinare quali server dei nomi sono effettivamente responsabili di un dominio, dovresti usare "whois" e controllare i domini elencati lì O usare "dig [domain] NS @ [root name server]" ed eseguirlo in modo ricorsivo fino a quando non si ottiene l'elenco dei server dei nomi ...
Vorrei che ci fosse una semplice riga di comando che potresti eseguire per ottenere quel risultato in modo affidabile e in un formato coerente, non solo il risultato che viene fornito dal server dei nomi stesso. Lo scopo di questo per me è quello di essere in grado di interrogare circa 330 nomi di dominio che gestisco in modo da poter determinare esattamente a quale server dei nomi punta ogni dominio (secondo le loro impostazioni del registrar).
Qualcuno sa di un comando usando "dig" o "host" o qualcos'altro su * nix?
I record SOA sono presenti su tutti i server più in alto nella gerarchia, su cui il proprietario del dominio non ha alcun controllo e tutti in effetti puntano all'unico server dei nomi autorevole sotto il controllo del proprietario del dominio.
Il record SOA sul server autorevole stesso, d'altra parte, non è strettamente necessario per la risoluzione di quel dominio e può contenere informazioni false (o server primari nascosti o altrimenti limitati) e non deve essere invocato per determinare il server dei nomi autorevole per un determinato dominio.
È necessario eseguire una query sul server autorevole per il dominio di primo livello per ottenere informazioni SOA affidabili per un determinato dominio figlio.
(Le informazioni su quale server è autorevole per cui TLD può essere interrogato dai server dei nomi di root).
Quando si hanno informazioni affidabili sulla SOA dal server autorevole TLD, è quindi possibile eseguire una query autorevole sul server dei nomi primario (quello presente nel record SOA sul nameserver gTLD!) Per qualsiasi altro record NS, quindi procedere con il controllo di tutto quei server dei nomi che hai ottenuto dall'interrogazione dei record NS, per vedere se c'è qualche incoerenza per qualsiasi altro record particolare, su uno di quei server.
Tutto questo funziona molto meglio / affidabile con Linux e scavare che con nslookup / windows.
Un modo semplice è utilizzare uno strumento di dominio online. Il mio preferito è Domain Tools (precedentemente whois.sc). Tuttavia, non sono sicuro che possano risolvere record DNS in conflitto. Ad esempio, sono i server DNS per stackoverflow.com
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
Ho scoperto che per alcuni domini, le risposte sopra non funzionano. Il modo più veloce che ho trovato è prima di controllare un record NS. Se ciò non esiste, verificare la presenza di un record SOA. Se ciò non esiste, risolvi ricorsivamente il nome usando dig e prendi l'ultimo record NS restituito. Un esempio che si adatta a questo èanalyticsdcs.ccs.mcafee.com.
host -t NS analyticsdcs.ccs.mcafee.com.
host -t SOA analyticsdcs.ccs.mcafee.com.
dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1
host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.