Wie finde ich den autorisierenden Nameserver für einen Domainnamen?

317

Wie kann ich die Ursprünge widersprüchlicher DNS-Einträge finden?

Binärgeschichten
quelle

Antworten:

413

Sie möchten den SOA-Datensatz (Start of Authority) für einen bestimmten Domänennamen. Auf diese Weise erreichen Sie ihn mit dem universell verfügbaren Befehlszeilentool nslookup :

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.

In der Zeile origin (oder primärer Nameserver unter Windows) wird angegeben, dass ns51.domaincontrol der Hauptnameserver für stackoverflow.com ist .

Am Ende der Ausgabe werden alle autorisierenden Server aufgelistet, einschließlich der Sicherungsserver für die angegebene Domäne.

Antti Kissaniemi
quelle
158
nslookup -type = soa stackoverflow.com
Ben Amada
6
Unter Windows kann ich jedoch die Antwort "Autorisierende Antworten" nicht sehen. Ich habe Windows 8 und Ubuntu 12 nebeneinander und dann funktioniert der gleiche Befehl für dieselbe Domain unter Ubuntu ordnungsgemäß, aber nicht unter Windows.
Mario Awad
1
Beachten Sie, dass dies nicht unbedingt die letzten Änderungen an DNS-Konfigurationen zeigt, jedoch digschien die Verwendung für mich (siehe Antwort unten)
Rogerdpack
6
Was bedeutet es, wenn es keine maßgebliche Antwort gibt, die nicht maßgebliche Antwort jedoch in Ordnung ist?
Overmind
6
Wenn Sie nslookup -type=soa stackoverflow.comheute (2019 - Februar) unter Linux arbeiten, ist der autorisierende Abschnitt leer.
Simpleuser
174

Sie haben den Singular in Ihrer Frage verwendet, aber es gibt normalerweise mehrere autorisierende Nameserver. Der RFC 1034 empfiehlt mindestens zwei.

Es sei denn, Sie meinen "primärer Nameserver" und nicht "autorisierender Nameserver". Die sekundären Nameserver sind maßgebend.

So ermitteln Sie die Nameserver einer Domain unter Unix:

  % dig +short NS stackoverflow.com
 ns52.domaincontrol.com.
 ns51.domaincontrol.com.

Um herauszufinden, welcher Server als primär aufgeführt ist (der Begriff "primär" ist heutzutage ziemlich verschwommen und hat normalerweise keine gute Antwort):

% dig +short  SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.

Um die Diskrepanzen zwischen Nameservern zu überprüfen, bevorzuge ich das alte check_soaTool, das im Buch "DNS & BIND" von Liu & Albitz (O'Reilly-Editor) beschrieben ist. Der Quellcode ist unter http://examples.oreilly.com/dns5/ verfügbar.

% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300

Hier haben die beiden autorisierenden Nameserver dieselbe Seriennummer. Gut.

bortzmeyer
quelle
5
dig + short gibt nicht immer die Antwort, die ich erwarte. Beispielsweise gibt eine Site www.pressero.com, die als CNAME für eine andere Site definiert ist - dig + short SOA - nur das CNAME-Ziel zurück.
Ross Presser
Wie macht man eine NS maßgeblich?
Overmind
1
@Overmind Sie machen keine NS "autorisierend". Wenn ein Nameserver für einige Domänen als autorisierend konfiguriert ist, bedeutet dies, dass er über lokale Zonendateien (normalerweise flache Textdateien, kann aber auch anders ausgeführt werden) für diese Domänen verfügt und auf Anfragen nach ihnen antwortet. Um nützlich zu sein, müssen sie als NS-Datensätze in der übergeordneten Zone für jede Domäne aufgelistet werden, für die sie autorisierend sind. Andernfalls würde sie standardmäßig niemand abfragen.
Patrick Mevzek
@ RossPresser Die Antwort war, über NS / SOA-Datensätze zu sprechen, und ich bezweifle, dass Sie dies tun www.pressero.com. Sie haben wahrscheinlich über A-Datensätze nachgedacht (dies ist der Standarddatensatztyp indig wenn Sie ihn nicht angeben). Fügen Sie bei Bedarf einfach ein hinzu tail -1, um das Endergebnis abzurufen.
Patrick Mevzek
@PatrickMevzek Wie ich in meinem Kommentar angegeben habe, habe ich verwendet dig +short SOA www.pressero.com. Dies gibt nur das CNAME-Ziel zurück - nicht den SOA-Datensatz für daspressero.com Domäne, was ich erwartet habe. tail -1hilft nicht weiter; dig +short SOAgibt nur eine Zeile aus.
Ross Presser
40

On * nix:

$ dig -t ns <domain name>
aryeh
quelle
3
Er fragte nach den Nameservern, nicht nach der IPv4-Adresse. Typ (-t) sollte also NS sein, nicht A.
bortzmeyer
1
Warum nicht SOA @bortzmeyer eingeben?
Randy L
Äh, weil das die SOA anstelle des NS-Ergebnisses zurückgibt?
Tripleee
17

Ich habe ein DNS-Weitergabe-Tool, das diese Art von Fragen beantwortet.

Die Quelle wird unter AGPLv3 veröffentlicht.

(Ja, die Oberfläche ist im Moment ziemlich einfach :))

Sie können die Nameserver für eine Domain auch mit dem Befehl "host" ermitteln:

[davidp @ supernova: ~] $ host -t ns stackoverflow.com
stackoverflow.com Nameserver ns51.domaincontrol.com.
stackoverflow.com Nameserver ns52.domaincontrol.com.
David Precious
quelle
@cacho Das stimmt; Ich kann das gut hinzufügen, wenn ich eine Chance bekomme.
David Precious
1
Es ist kaputt, es zeigt "502 Bad Gateway nginx / 1.14.2"
Marco Demaio
8

Ich fand, dass es am besten ist, immer die Option + trace hinzuzufügen:

dig SOA +trace stackoverflow.com

Es funktioniert auch mit rekursivem CNAME, der von einem anderen Anbieter gehostet wird. + trace trace impliziert + norecurse, sodass das Ergebnis nur für die von Ihnen angegebene Domain gilt.

Alex
quelle
Hinweis: Wenn Sie einen lokalen NS-Server wie dnsmasq + trace ausführen, wird nichts zurückgegeben ...
Daniel Sokolowski
Dieser Befehl bietet 53 Zeilen, 3652 Byte Ausgabe, von denen viele zufällige Werte sind. Wie sollte jemand die Ausgabe interpretieren, um festzustellen, was der autorisierende Nameserver ist?
Theferrit32
Ich habe es von unten nach oben gelesen. Der SOA-Datensatz ist das, wonach Sie suchen. Sie können festlegen, dass SOA weniger Daten enthält.
Alex
@ theferrit32 Versuchen Sie + nocomments für eine besser lesbare Ausgabe.
Piepi
6

Der Begriff, den Sie googeln sollten, ist "maßgeblich", nicht "endgültig".

Unter Linux oder Mac können Sie die Befehle verwenden whois , dig, host, nslookupoder einige andere. nslookupfunktioniert möglicherweise auch unter Windows.

Ein Beispiel:

$ whois stackoverflow.com
[...]
   Domain servers in listed order:
      NS51.DOMAINCONTROL.COM
      NS52.DOMAINCONTROL.COM

Was das zusätzliche Guthaben betrifft: Ja, es ist möglich.


aryeh ist definitiv falsch, da sein Vorschlag normalerweise nur die IP-Adresse für den Hostnamen angibt. Wenn du benutztdig , müssen Sie nach NS-Datensätzen suchen, wie folgt:

dig ns stackoverflow.com

Beachten Sie, dass dies möglicherweise Ihren lokalen DNS-Server fragt und daher möglicherweise falsche oder veraltete Antworten gibt, die er im Cache hat.


quelle
6
Diese Befehle sind nicht gleichwertig. Nichts sagt aus, dass die Informationen von whois aktuell sind. Häufig liegt dies nicht daran, dass Benutzer die NS-Einträge in der Zonendatei aktualisieren, ohne die Registrierung oder den Registrar zu benachrichtigen.
Bortzmeyer
Ich habe nie gesagt, dass dies der Fall ist;) Sie können die NS-Einträge in Ihrer Zone nach Belieben ändern. Solange die übergeordnete Zone nicht aktualisiert wird, ändert sich nichts. Und eine Aktualisierung der übergeordneten Zone geht normalerweise mit einer Aktualisierung der whois-Daten einher (zumindest bei meinen Anbietern).
5

Wir haben ein DNS-Lookup-Tool erstellt , mit dem Sie die autorisierenden Nameserver der Domain und die allgemeinen DNS-Datensätze in einer Anfrage erhalten.

Beispiel: https://www.misk.com/tools/#dns/stackoverflow.com

Unser Tool findet die autorisierenden Nameserver, indem es eine Echtzeit-DNS-Suche (nicht zwischengespeichert) bei den Stammnamenservern durchführt und dann den Nameserver-Verweisen folgt, bis wir die autorisierenden Nameserver erreichen. Dies ist dieselbe Logik, die DNS-Resolver verwenden, um maßgebliche Antworten zu erhalten. Bei jeder Abfrage wird ein zufälliger autorisierender Nameserver ausgewählt (und identifiziert), mit dem Sie widersprüchliche DNS-Datensätze finden können, indem Sie mehrere Anforderungen ausführen.

Sie können den Nameserver-Delegierungspfad auch anzeigen, indem Sie unten in den Ergebnissen der DNS-Suche aus dem obigen Beispiel auf "Autorisierende Nameserver" klicken.

Beispiel: https://www.misk.com/tools/#dns/[email protected]

Nitin Agarwal
quelle
Cool, es funktioniert wie ein Zauber!
Marco Demaio
2

Sie können den whois-Dienst nutzen. Unter einem UNIX-ähnlichen Betriebssystem würden Sie den folgenden Befehl ausführen. Alternativ können Sie dies im Internet unter http://www.internic.net/whois.html tun .

whois stackoverflow.com

Sie würden die folgende Antwort erhalten.

... Text hier entfernt ...

Domänenserver in der angegebenen Reihenfolge: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM

Sie können nslookup oder dig verwenden, um weitere Informationen zu Datensätzen für eine bestimmte Domain zu erhalten. Dies kann Ihnen helfen, die von Ihnen beschriebenen Konflikte zu lösen.

Chris de Vries
quelle
2
Nichts sagt aus, dass die Informationen von whois aktuell sind. Häufig liegt dies nicht daran, dass Benutzer die NS-Einträge in der Zonendatei aktualisieren, ohne die Registrierung oder den Registrar zu benachrichtigen.
Bortzmeyer
"Whois" ist zwar keine direkte Antwort auf die Frage, aber nützlich, da es Ihnen sagt, wer die Nameserver für irgendwo sein sollen (auch wenn dies aus irgendeinem Grund derzeit nicht der Fall ist).
SomeoneElse
1

Leider geben die meisten dieser Tools nur den NS-Datensatz zurück, der vom eigentlichen Nameserver selbst bereitgestellt wird. Um genauer zu bestimmen, welche Nameserver tatsächlich für eine Domain verantwortlich sind, müssten Sie entweder "whois" verwenden und die dort aufgeführten Domains überprüfen ODER "dig [domain] NS @ [root name server]" verwenden und diese ausführen rekursiv, bis Sie die Nameserver-Listen erhalten ...

Ich wünschte, es gäbe eine einfache Befehlszeile, die Sie ausführen könnten, um DIESES Ergebnis zuverlässig und in einem konsistenten Format zu erhalten, nicht nur das Ergebnis, das vom Nameserver selbst angegeben wird. Dies dient für mich dazu, etwa 330 von mir verwaltete Domain-Namen abfragen zu können, damit ich genau bestimmen kann, auf welchen Nameserver jede Domain verweist (gemäß den Registrar-Einstellungen).

Kennt jemand einen Befehl mit "dig" oder "host" oder etwas anderem auf * nix?


quelle
2
Einfach. Nehmen wir an, die Domain ist example.org. Zuerst müssen Sie die Nameserver von ".org" mit 'dig + short NS org.' Finden. Dann fragen Sie einen von ihnen ab (jeder, sie sind alle maßgeblich). Wählen wir d0.org.afilias-nst.org. Sie fragen mit 'dig @ d0.org.afilias-nst.org NS example.org' ab.
Bortzmeyer
Die Tatsache, dass der Resolver standardmäßig die von der Domäne selbst aufgelisteten Nameserver zurückgibt, ist eine gute Sache. Das sind die maßgeblichen Informationen. Die Delegierung in der übergeordneten Zone ist NICHT autorisierend.
Bortzmeyer
Und der Zeiger auf whois ist ein roter Hering. Die whois-Nameserver-Informationen sind häufig veraltet. Die maßgebliche Ressource ist das DNS.
Tripleee
1
Whois ist völlig willkürlich. Der Wert, den Sie in der whois-Liste sehen, hat keine technischen Bindungen zu DNS. Es ist oft veraltet oder richtig falsch. Ich würde sogar sagen, whois Daten sollten fast nie vertrauenswürdig sein. Es gibt "dünne" und "dicke" Register. Die beiden bekannten dicken Register sind die .com- und .net-Register. Diese Register enthalten alle DNS-Daten und dienen als vertrauenswürdig. Fast andere andere Register sind "Ding" und führen ihre eigenen whois-Register. Diese Daten sind häufig falsch.
Mark
1

SOA-Datensätze sind auf allen Servern weiter oben in der Hierarchie vorhanden, über die der Domäneninhaber KEINE Kontrolle hat, und sie alle verweisen auf den einen autorisierenden Nameserver, der vom Domänenbesitzer kontrolliert wird.

Der SOA-Datensatz auf dem autorisierenden Server selbst wird andererseits nicht unbedingt zum Auflösen dieser Domäne benötigt und kann falsche Informationen (oder versteckte primäre oder anderweitig eingeschränkte Server) enthalten und sollte nicht zur Bestimmung des autorisierenden Nameservers herangezogen werden für eine bestimmte Domain.

Sie müssen den Server abfragen, der für die Domäne der obersten Ebene autorisierend ist , um zuverlässige SOA-Informationen für eine bestimmte untergeordnete Domäne zu erhalten.

(Die Informationen darüber, welcher Server für welche TLD maßgeblich ist, können von den Stammnamenservern abgefragt werden.)

Wenn Sie vom autorisierenden TLD-Server zuverlässige Informationen über die SOA haben, können Sie den autorisierenden Primärnamenserver selbst (den im SOA-Datensatz auf dem gTLD-Nameserver!) Nach anderen NS-Datensätzen abfragen und anschließend alle überprüfen Diese Nameserver, die Sie durch Abfragen der NS-Datensätze erhalten haben, um festzustellen, ob auf einem dieser Server Inkonsistenzen für einen anderen bestimmten Datensatz vorliegen.

Dies alles funktioniert unter Linux und Dig viel besser / zuverlässiger als unter nslookup / windows.

Dennis
quelle
0

Eine einfache Möglichkeit ist die Verwendung eines Online-Domain-Tools. Mein Favorit ist Domain Tools (früher whois.sc). Ich bin mir nicht sicher, ob sie widersprüchliche DNS-Einträge lösen können. Beispielsweise sind die DNS-Server für stackoverflow.com

  NS51.DOMAINCONTROL.COM
  NS52.DOMAINCONTROL.COM
Kyle Cronin
quelle
0

Ich habe festgestellt, dass für einige Domänen die obigen Antworten nicht funktionieren. Der schnellste Weg, den ich gefunden habe, besteht darin, zuerst nach einem NS-Datensatz zu suchen. Wenn dies nicht vorhanden ist, suchen Sie nach einem SOA-Datensatz. Wenn dies nicht vorhanden ist, lösen Sie den Namen rekursiv mit dig auf und nehmen Sie den zuletzt zurückgegebenen NS-Datensatz. Ein Beispiel dafür istanalyticsdcs.ccs.mcafee.com.

  1. Suchen Sie nach einem NS-Datensatz

host -t NS analyticsdcs.ccs.mcafee.com.

  1. Wenn kein NS gefunden wurde, suchen Sie nach einem SOA-Datensatz

host -t SOA analyticsdcs.ccs.mcafee.com.

  1. Wenn weder NS noch SOA, führen Sie eine vollständige Rekursion durch und nehmen Sie die zuletzt zurückgegebene NS

dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1

  1. Testen Sie, ob der zurückgegebene Nameserver funktioniert

host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.

dannyw
quelle