Jak znaleźć autorytatywny serwer nazw dla nazwy domeny?


317

Jak znaleźć źródło konfliktu rekordów DNS?

Odpowiedzi:


413

Będziesz potrzebował rekordu SOA (Start of Authority) dla danej nazwy domeny, a oto jak go osiągnąć za pomocą powszechnie dostępnego narzędzia wiersza poleceń 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.

Pochodzenie (lub serwer nazw podstawowym w systemie Windows) linia mówi, że ns51.domaincontrol to główny serwer nazw dla stackoverflow.com .

Na końcu danych wyjściowych są wymienione wszystkie autorytatywne serwery, w tym serwery kopii zapasowych dla danej domeny.


158
nslookup -type = soa stackoverflow.com
Ben Amada

6
Jednak pod oknami nie widzę odpowiedzi „Autorytatywne odpowiedzi”. Mam Windows 8 i Ubuntu 12 obok siebie, a następnie to samo polecenie dla tej samej domeny działa poprawnie na Ubuntu, ale nie w systemie Windows.
Mario Awad,

1
uwaga, że ​​to pokazuje niekoniecznie pokazuje ostatnie zmiany w konfiguracjach DNS, jednak używanie digwydawało mi się (patrz odpowiedź poniżej)
rogerdpack

6
Co to znaczy, że nie ma autorytatywnej odpowiedzi, ale nieautorytatywna odpowiedź jest w porządku?
Overmind,

6
Jeśli korzystasz nslookup -type=soa stackoverflow.comz Linuksa dzisiaj (2019-luty), autorytatywna sekcja jest pusta.
simpleuser

174

Użyłeś liczby pojedynczej w swoim pytaniu, ale zwykle istnieje kilka autorytatywnych serwerów nazw, RFC 1034 zaleca co najmniej dwa.

Chyba że masz na myśli „podstawowy serwer nazw”, a nie „autorytatywny serwer nazw”. Pomocnicze serwery nazw autorytatywne.

Aby znaleźć serwery nazw domeny w Uniksie:

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

Aby dowiedzieć się, który serwer jest wymieniony jako główny (pojęcie „podstawowy” jest obecnie dość rozmyte i zazwyczaj nie ma dobrej odpowiedzi):

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

Aby sprawdzić rozbieżności między serwerami nazw, preferuję stare check_soanarzędzie opisane w książce Liu & Albitz „DNS & BIND” (edytor O'Reilly). Kod źródłowy jest dostępny na stronie http://examples.oreilly.com/dns5/

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

Tutaj dwa autorytatywne serwery nazw mają ten sam numer seryjny. Dobrze.


5
dig + short nie zawsze daje odpowiedź, której oczekuję. Na przykład witryna zdefiniowana jako www.pressero.com, która jest CNAME dla innej witryny - dig + short SOA po prostu zwraca cel CNAME.
Ross Presser

Jak zrobić autorytatywny NS?
Overmind,

1
@Overmind nie czynisz NS „autorytatywnym”. Jeśli serwer nazw jest skonfigurowany jako autorytatywny dla niektórych domen, oznacza to, że ma lokalnie pliki stref (zwykle płaskie pliki tekstowe, ale można to zrobić inaczej) dla tych domen i odpowiada na ich zapytanie. Aby były użyteczne, muszą być wymienione jako rekordy NS w strefie nadrzędnej dla każdej domeny, dla której są autorytatywne, w przeciwnym razie domyślnie nikt ich nie zapyta.
Patrick Mevzek

@RossPresser odpowiedź mówiła o rekordach NS / SOA i wątpię, że to robisz www.pressero.com, prawdopodobnie myślałeś o rekordach A (co jest domyślnym typem rekordu, digjeśli go nie określisz). Ale jeśli to konieczne, po prostu dodaj a, tail -1aby pobrać końcowy wynik.
Patrick Mevzek,

@PatrickMevzek Jak powiedziałem w moim komentarzu, użyłem dig +short SOA www.pressero.com. Zwraca tylko cel CNAME - nie rekord SOA dla pressero.comdomeny, czego się spodziewałem. tail -1nie pomaga w sprawach; dig +short SOAemituje tylko jedną linię.
Ross Presser

40

W * nix:

$ dig -t ns <domain name>

3
Poprosił o serwery nazw, a nie o adres IPv4. Więc typ (-t) powinien być NS, a nie A.
bortzmeyer

1
dlaczego nie wpisać SOA @bortzmeyer?
Randy L,

Uh, ponieważ to zwraca SOA zamiast wyniku NS?
tripleee

17

Mam narzędzie do propagacji DNS zaprojektowane, aby odpowiedzieć na tego rodzaju pytania.

Źródło zostało wydane na podstawie AGPLv3.

(Tak, interfejs jest w tej chwili dość prosty :))

Możesz również znaleźć serwery nazw dla domeny za pomocą polecenia „host”:

[davidp @ supernova: ~] $ host -t ns stackoverflow.com
serwer nazw stackoverflow.com ns51.domaincontrol.com.
serwer nazw stackoverflow.com ns52.domaincontrol.com.

@cacho To prawda; Mogę to dodać, jeśli mam szansę.
David Precious

1
Jest zepsuty, pokazuje „502 Bad Gateway nginx / 1.14.2”
Marco Demaio

8

Odkryłem, że najlepszym sposobem jest zawsze dodawanie opcji + trace:

dig SOA +trace stackoverflow.com

Działa również z rekurencyjną CNAME hostowaną u innego dostawcy. + trace trace oznacza + norecurse, więc wynik jest tylko dla określonej domeny.


Uwaga: jeśli używasz lokalnego serwera NS, takiego jak dnsmasq + trace, nic nie zwróci ...
Daniel Sokolowski,

To polecenie zapewnia 53 wiersze, 3652 bajty danych wyjściowych, z których większość to wartości losowe. Jak ktoś powinien interpretować dane wyjściowe, aby określić, czym jest autorytatywny serwer nazw?
theferrit32

Czytam to od dołu do góry. Rekord SOA jest tym, czego szukasz. Możesz grep, aby SOA miała mniej danych.
Alex

6

Termin, w którym powinieneś być google, to „autorytatywny”, a nie „ostateczny”.

W systemie Linux lub Mac można użyć polecenia whois, dig, host, nslookupi kilka innych. nslookupmoże również działać w systemie Windows.

Przykład:

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

Jeśli chodzi o dodatkowy kredyt: Tak, jest to możliwe.


aryeh jest zdecydowanie w błędzie, ponieważ jego sugestia zwykle daje ci tylko adres IP nazwy hosta. Jeśli używasz dig, musisz szukać rekordów NS, takich jak:

dig ns stackoverflow.com

Pamiętaj, że może to poprosić lokalny serwer DNS, a zatem może dać nieprawidłowe lub nieaktualne odpowiedzi, które ma w pamięci podręcznej.


6
Te polecenia nie są równoważne. Nic nie mówi, że informacje podane przez whois są aktualne. Często nie dzieje się tak dlatego, że ludzie aktualizują rekordy NS w pliku strefy bez powiadamiania rejestru lub rejestratora.
bortzmeyer

Nigdy nie mówiłem, że były;) Możesz zmienić rekordy NS w swojej strefie, ile chcesz, dopóki strefa nadrzędna nie zostanie zaktualizowana, nic się nie zmieni. Aktualizacja strefy nadrzędnej zwykle idzie w parze z aktualizacją danych whois (przynajmniej u moich dostawców).

5

Zbudowaliśmy narzędzie do wyszukiwania dns, które daje wiarygodne serwery nazw domeny i wspólne rekordy dns w jednym żądaniu.

Przykład: https://www.misk.com/tools/#dns/stackoverflow.com

Nasze narzędzie wyszukuje autorytatywne serwery nazw, wykonując wyszukiwanie DNS w czasie rzeczywistym (niebuforowane) na głównych serwerach nazw, a następnie postępując zgodnie z poleceniami serwerów nazw, aż dotrzemy do autorytatywnych serwerów nazw. Jest to ta sama logika, której używają przeliczniki dns, aby uzyskać wiarygodne odpowiedzi. Losowy autorytatywny serwer nazw jest wybierany (i identyfikowany) dla każdego zapytania, umożliwiając znalezienie sprzecznych rekordów dns poprzez wykonanie wielu żądań.

Możesz także wyświetlić ścieżkę delegowania serwera nazw, klikając „Autorytatywne serwery nazw” na dole wyników wyszukiwania dns z powyższego przykładu.

Przykład: https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net


2

Możesz skorzystać z usługi whois. W systemie operacyjnym typu UNIX wykonaj następujące polecenie. Alternatywnie możesz to zrobić w Internecie pod adresem http://www.internic.net/whois.html .

whois stackoverflow.com

Otrzymasz następującą odpowiedź.

... tekst usunięty tutaj ...

Serwery domen w podanej kolejności: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM

Możesz użyć nslookup lub dig, aby uzyskać więcej informacji o rekordach dla danej domeny. Może to pomóc w rozwiązaniu opisanych konfliktów.


2
Nic nie mówi, że informacje podane przez whois są aktualne. Często nie dzieje się tak dlatego, że ludzie aktualizują rekordy NS w pliku strefy bez powiadamiania rejestru lub rejestratora.
bortzmeyer

Chociaż nie jest to bezpośrednia odpowiedź na pytanie, „whois” jest użyteczny, ponieważ mówi ci, kto powinien być gdzieś serwerem nazw (nawet jeśli z jakiegokolwiek powodu nie jest).
SomeoneElse

1

Niestety większość z tych narzędzi zwraca tylko rekord NS dostarczony przez sam serwer nazw. Aby dokładniej określić, które serwery nazw są faktycznie odpowiedzialne za domenę, musisz albo użyć „whois” i sprawdzić wymienione tam domeny LUB użyć „dig [domena] NS @ [główny serwer nazw]” i uruchomić to rekurencyjnie, aż pojawi się lista serwerów nazw ...

Chciałbym, aby istniała prosta linia poleceń, którą można uruchomić, aby uzyskać TEN wynik w sposób niezawodny i w spójnym formacie, a nie tylko wynik otrzymany z samego serwera nazw. Celem tego jest dla mnie możliwość zapytania o około 330 nazw domen, którymi zarządzam, dzięki czemu mogę dokładnie określić, na który serwer nazw wskazuje każda domena (zgodnie z ich ustawieniami rejestratora).

Czy ktoś wie o komendzie używającej „dig” lub „host” lub czegoś innego na * nix?


2
Prosty. Załóżmy, że domeną jest example.org. Najpierw musisz znaleźć serwery nazw „.org” z „dig + short NS org.”. Następnie pytasz jednego z nich (każdy, wszyscy są wiarygodni). Wybierzmy d0.org.afilias-nst.org. Pytasz za pomocą „dig @ d0.org.afilias-nst.org NS example.org.”.
bortzmeyer

Fakt, że resolver domyślnie zwraca serwery nazw wymienione przez samą domenę, jest dobrą rzeczą. To są wiarygodne informacje. Delegacja w strefie nadrzędnej NIE jest autorytatywna.
bortzmeyer

Wskaźnik do whois to czerwony śledź. Informacje o serwerze nazw Whois są często nieaktualne. Autorytatywnym zasobem jest DNS.
tripleee

1
Whois jest całkowicie arbitralny. Wartość widoczna na liście Whois nie ma technicznych powiązań z DNS. Jest to często nieaktualne lub błędne. Posunąłbym się nawet do stwierdzenia, że ​​danych whois prawie nigdy nie należy ufać. Istnieją rejestry „cienkie” i „grube”. Dwoma dobrze znanymi grubymi rejestrami są rejestry .com i .net. Rejestry te zawierają wszystkie dane DNS i służą odpowiedziom whois, którym można zaufać. Prawie inne rejestry są „rzeczami” i prowadzą własne rejestry whois. Te dane są często błędne.
Mark

1

Rekordy SOA są obecne na wszystkich serwerach w dalszej części hierarchii, nad którymi właściciel domeny NIE ma kontroli, i wszystkie one wskazują na jeden autorytatywny serwer nazw pod kontrolą właściciela domeny.

Z drugiej strony, rekord SOA na samym autorytatywnym serwerze nie jest ściśle potrzebny do rozwiązania tej domeny i może zawierać fałszywe informacje (lub ukryte serwery podstawowe lub w inny sposób ograniczone) i nie należy na nim polegać w celu ustalenia autorytatywnego serwera nazw dla danej domeny.

Musisz wysłać zapytanie do serwera, który jest autorytatywny dla domeny najwyższego poziomuAby uzyskać wiarygodne informacje SOA dla danej domeny podrzędnej, .

(Informacje o tym, który serwer jest autorytatywny, dla którego TLD można zapytać z głównych serwerów nazw).

Gdy masz wiarygodne informacje na temat SOA z autorytatywnego serwera TLD, możesz następnie zapytać autorytatywny główny serwer nazw (ten, który znajduje się w rekordzie SOA na serwerze nazw gTLD!) O inne rekordy NS, a następnie przejść do sprawdzenia wszystkich te serwery nazw, które otrzymałeś od zapytania rekordów NS, aby sprawdzić, czy istnieje jakaś niespójność dla jakiegokolwiek innego konkretnego rekordu na którymkolwiek z tych serwerów.

To wszystko działa znacznie lepiej / niezawodnie w przypadku Linuksa i Diga niż w przypadku nslookup / windows.


0

Prostym sposobem jest użycie narzędzia domeny online. Moje ulubione to Domain Tools (poprzednio whois.sc). Nie jestem jednak pewien, czy potrafią rozwiązać konfliktowe rekordy DNS. Na przykład serwery DNS dla stackoverflow.com to

  NS51.DOMAINCONTROL.COM
  NS52.DOMAINCONTROL.COM

0

Przekonałem się, że w niektórych domenach powyższe odpowiedzi nie działają. Najszybszym sposobem, jaki udało mi się znaleźć, jest sprawdzenie rekordu NS. Jeśli to nie istnieje, sprawdź rekord SOA. Jeśli to nie istnieje, rekurencyjnie rozwiąż nazwę za pomocą dig i weź ostatni zwrócony rekord NS. Przykładem, który do tego pasuje, jestanalyticsdcs.ccs.mcafee.com.

  1. Sprawdź rekord NS

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

  1. Jeśli nie znaleziono NS, sprawdź rekord SOA

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

  1. Jeśli ani NS, ani SOA, wykonaj pełną rekurencję i weź ostatni zwrócony NS

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

  1. Sprawdź, czy zwrócił się serwer nazw

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.