Czy a.gtld-servers.net ma listę wszystkich domen .com?

14

Kiedy to zrobię dig @a.gtld-servers.net example.com, szybko zwraca serwery nazw example.comi adresy IP tych serwerów nazw (rekordy kleju).

Czy to oznacza a.gtld-servers.net(i *.gtld-servers.net) .comlokalny zapis wszystkich domen? Odpowiadają bardzo szybko, więc nie sądzę, aby sami zadawali dalsze pytania. Podobnie, żądanie example.comserwerów nazw nie przekierowuje mnie domains.starting.with.e.gtld-servers.netani nic takiego .

Zdaję sobie sprawę, że a.gtld-servers.netprawdopodobnie jest kilka komputerów i że jestem przekierowywany do najbliższego mnie (dzięki tej nowej technologii jeden-ip-wiele-maszyn), ale to po prostu oznaczałoby, że kilka innych maszyn ma wszystkie .comdomeny.

EDYCJA: Dziękujemy wszystkim, którzy odpowiedzieli! Kolejne pytanie: jeśli ktoś „włamie się” do jednej z tych maszyn, czy nie może uzyskać listy wszystkich .comdomen? To wydaje się użyteczną informacją, chyba że jest już dostępna gdzieś za darmo? Zdaję sobie sprawę, że informacje o domenie są publiczne, ale nadal trudno jest uzyskać je masowo. Chyba *.gtld-servers.netnie obsługują transferów stref (chociaż .eduserwery nazw tak zrobiły, przynajmniej kilka lat temu).

UWAGA: Zdaję sobie sprawę, że example.com nie jest rzeczywistą domeną - wystarczy zastąpić ją dowolną inną domeną .com powyżej (pierwotnie miałem xyz.com, ale ktoś poprawnie ją edytował, aby uniknąć używania prawdziwej nazwy domeny).

bariera
źródło
Kolejne pytanie: tak, mogliby uzyskać listę, a dla większości domen najwyższego poziomu taka lista nie jest publicznie dostępna i można „tylko” wyszukiwać według nazw. Niektóre strefy są nadal publiczne (obecnie), np. Strefa główna lub szwedzka.
Vladimír Čunát,
1
@ VladimírČunát dla wszystkich domen gTLD pliki strefy są publiczne, patrz czds.icann.org/pl To jest zgodnie z umową ICANN. W przypadku ccTLD jest różna, ale większość nie podaje tej listy.
Patrick Mevzek
@PatrickMevzek fajnie, choć najwyraźniej nie ma najciekawszych gTLD (com, org, ...).
Vladimír Čunát
@ VladimírČunát dla osób, których nie ma, musisz skontaktować się z rejestrem gTLD: będą one miały osobny proces, ponieważ są zobowiązane umową ICANN do udzielenia dostępu do swoich plików stref.
Patrick Mevzek

Odpowiedzi:

18

Tak, „x.gtld-servers.net” to autorytatywne serwery dla domeny najwyższego poziomu „com”, więc mają wszystkie „wskaźniki” dla domen .com. Możesz zobaczyć serwery nazw dla TLD, uruchamiając

dig -t ns com
dig -t ns us
dig -t ns dk
dig -t ns aero
Zapytaj Bjørna Hansena
źródło
W przypadku nazw o pojedynczej etykiecie najlepiej dołączyć końcówkę .- com., us.- aby uniknąć dołączania domyślnej nazwy domeny. (Na przykład, gdy rozwiązanie comwewnątrz sieci CONTOSO Inc, system może próbować com.contoso.net. przed tylko com.)
user1686
4
Nie sądzę, żeby digkiedykolwiek używał ścieżki wyszukiwania; inne „prawdziwe narzędzia do debugowania dns” również nie powinny. (nslookup tak robi, ale nie używaj tego do debugowania dns). :-)
Zapytaj Bjørna Hansena
1
Och, stare sposoby. : D @ AskBjørnHansen ma rację. po prostu użyj kopania zamiast nslookupwe wszystkich przypadkach
Dan Bradbury,
więc mają wszystkie „wskaźniki” dla domen .com. dokładnie, mają wszystkie delegowane nazwy domenowe .COM, które mają rekordy NS, co nie jest absolutnie wszystkimi istniejącymi nazwami domenowymi .COM, istnieje kilka procentowa różnica.
Patrick Mevzek
@grawity ostatnia kropka byłaby niezbędna tylko w przypadku niejasności. -tjest opcjonalny, możesz to zrobić, dig com NSa kopanie zrobi to, co należy (zapisuję typ rekordu wielkimi literami, tak jak w konwencji dla czytelności, ale nie jest to obowiązkowe). Ale kiedy chcesz wykonać zapytanie dotyczące czegoś, co można by zinterpretować jako opcję, masz problem rozwiązany kropką.
Patrick Mevzek
3

Wykonaj zapytanie dotyczące samej domeny dig @a.gtld-servers.net com.- i poszukaj flagi „autorytatywna odpowiedź”:

snowflake ~ $ dig @a.gtld-servers.net com | grep flags
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
             ^^
użytkownik1686
źródło
1

Już dawno otrzymałeś odpowiedź, ale uważam, że możemy być bardziej precyzyjni i masz dodatkowe pytanie, które powinno być kolejnym pytaniem.

Wróćmy więc od początku.

Jeśli zapytasz serwery główne, aby dowiedzieć się o .COMdelegowaniu (zwróć uwagę, że wszystko poniżej dotyczy w ten sam sposób, .NETponieważ oba są obsługiwane przez ten sam rejestr), otrzymasz następującą odpowiedź:

$ dig @a.root-servers.net com. NS +noall +auth

; <<>> DiG 9.12.0 <<>> @a.root-servers.net com. NS +noall +auth
; (1 server found)
;; global options: +cmd
com.            172800 IN NS e.gtld-servers.net.
com.            172800 IN NS b.gtld-servers.net.
com.            172800 IN NS j.gtld-servers.net.
com.            172800 IN NS m.gtld-servers.net.
com.            172800 IN NS i.gtld-servers.net.
com.            172800 IN NS f.gtld-servers.net.
com.            172800 IN NS a.gtld-servers.net.
com.            172800 IN NS g.gtld-servers.net.
com.            172800 IN NS h.gtld-servers.net.
com.            172800 IN NS l.gtld-servers.net.
com.            172800 IN NS k.gtld-servers.net.
com.            172800 IN NS c.gtld-servers.net.
com.            172800 IN NS d.gtld-servers.net.

Podsumowując, każdy z tych serwerów nazw jest autorytatywny .COMi wszystkie mają te same dane (więc możesz poszerzyć swoje pytanie, nie a.gtld-servers.netjest w żaden sposób wyjątkowy, wszystko poniżej będzie dotyczyć dowolnego z tych serwerów nazw).

Gdy zapytasz tych serwerów nazw o dowolną .COM/.NETnazwę domeny, muszą oni odpowiedzieć autorytatywnie, podając nazwę autorytatywną dla nazwy domeny, o którą prosisz.

Stąd z definicji „Czy to znaczy, że a.gtld-servers.net (i * .gtld-servers.net) mają zapis wszystkich domen .com lokalnie?”, Ale to dokładnie tak! Z pewnym zastrzeżeniem dotyczącym „wszystkich”, które jest omówione poniżej.

Pamiętaj, że mówisz o zapisach klejów, jest to konkretny przypadek, a nie najczęstszy. Zazwyczaj żądanie domeny na dowolnym z powyższych serwerów nazw zwróci tylko jeden lub więcej rekordów NS.

Pozwól nam poświęcić czas na zajęcie się innymi drobnymi punktami w twoim tekście:

Odpowiadają bardzo szybko, więc nie sądzę, aby sami zadawali dalsze pytania.

Autorytatywny serwer nazw z definicji zawiera dane, za pomocą których musi odpowiadać na zapytania, bez konieczności polegania na zasobach zewnętrznych, w przeciwnym razie nie jest tak naprawdę autorytatywny.

Jeśli chodzi o szybkość, jest to częściowo subiektywne i wysoce zależne od tego, co i jak testujesz, ale jest kilka czynników: domyślnie DNS używa UDP, który jest lżejszy niż TCP, a zatem szybszy, a takie serwery nazw są anycastowane, co oznacza, że ​​przy odrobinie szczęścia zawsze będziesz mieć jednego „blisko” ciebie.

Zdaję sobie sprawę, że a.gtld-servers.net to prawdopodobnie kilka maszyn

Możesz usunąć „prawdopodobnie” :-) Te serwery nazw otrzymują tak wiele zapytań, że żadne pojedyncze urządzenie nigdy nie będzie w stanie wytrzymać.

Jeśli przejdziesz do https://stat.ripe.net/192.5.6.30#tabId=routing , zobaczysz wiele informacji, które mogą być trudne do strawienia, ale w zasadzie, biorąc pod uwagę, że ten pojedynczy adres IP a.gtld-servers.net(w rzeczywistości blok, w którym to jest) ogłaszane przez kilka AS kontrolowanych przez jedną firmę, co jest silnym wskaźnikiem anycastingu, który działa pięknie dla większości DNS.

Jeśli wejdziesz na http://www.root-servers.org/ , możesz dowiedzieć się więcej. Jest to związane z głównymi serwerami nazw, już nie .COMtymi, ale technicznie jest to dokładnie to samo. Można na przykład odkryć, że 13 serwerami głównymi zarządza 12 różnych organizacji w 930 instancjach (instancja to nie tylko jeden serwer, to lokalizacja, „punkt obecności”, w którym operator ma „węzeł”, który zazwyczaj jest sprzęt do routingu, wiele serwerów w konfiguracji równoważenia obciążenia / przełączania awaryjnego, niektóre funkcje monitorowania / zdalnego sterowania itp. Fna przykład jest w 222 miejscach.

i że jestem przekierowywany do najbliższego mnie (dzięki tej nowej technologii jeden-ip-wiele-maszyn), ale oznaczałoby to po prostu, że kilka innych maszyn ma wszystkie domeny .com.

Tak, wiele komputerów ma listę wszystkich .COMnazw domen. Ale najpierw precyzja: na tych serwerach nazw otrzymasz listę wszystkich serwerów nazw dla wszystkich nazw domen .COM ... co oznacza, że ​​dla nazw domen, które nie zostały delegowane, nie znajdziesz ich tutaj. Może się to zdarzyć w wielu przypadkach:

  1. rejestrując nazwę domeny, możesz nie ustawiać serwerów nazw lub usuwać je później.
  2. Twój rejestrator, na przykład ze względu na spór o płatność, może dodać status clientHolddo nazwy domeny, co spowoduje, że zniknie z DNS
  3. rejestr może założyć domenę z serverHolddowolnego powodu.

(patrz https://www.icann.org/resources/pages/epp-status-codes-2014-06-16-pl, jeśli chcesz dowiedzieć się więcej o tych statusach i innych).

W zależności od tego, jak zdefiniujesz „wszystkie” i co zrobisz z takimi danymi, możesz nie uzyskać naprawdę absolutnie wszystkich z nich.

We wszystkich powyższych przypadkach domena nie pojawi się na serwerach DNS rejestru, ale pojawi się, gdy wykonasz zapytanie whois. Tak więc serwery whois (znowu, nie jedno pudełko) będą również miały ... listę wszystkich nazw domen .COM i jeszcze więcej danych niż na serwerach nazw, ponieważ:

  1. naprawdę masz wszystkie nazwy domen, w tym te nierozpoznane, a zatem nie na serwerach nazw rejestru
  2. whois zapewnia znacznie więcej informacji, takich jak dane kontaktowe

I nadal są to tylko publiczne usługi rejestrowe posiadające, w pewien sposób lub w części, listę (lub jej część) nazw domen.

Co do dalszych działań:

Dalsze pytanie: jeśli ktoś „włamie się” do jednej z tych maszyn, czy nie może uzyskać listy wszystkich domen .com?

Technicznie tak. Ale:

  1. Z pewnością nie jest to najłatwiejszy cel, jaki znajdziesz w Internecie
  2. W tym konkretnym przypadku dane są już dostępne za darmo.

.COMjest gTLD i jako taki podlega umowie z ICANN. ICANN upoważnia wszystkie rejestry gTLD do publikowania swoich plików stref (co jest w zasadzie tym, czego używają same serwery nazw, więc rekordy NS plus kleje A / AAAA), przynajmniej raz dziennie, a dostęp jest bezpłatny dla każdego, pod warunkiem podpisania umowy aby mieć pewność, że nie wykorzystasz tych danych do „złych” celów (takich jak ich ponowne opublikowanie)

Zobacz szczegóły na https://czds.icann.org/en . To daje dostęp do setek plików stref gTLD.

Pamiętaj, że jeśli twoje pytanie zostanie rozszerzone na „jeśli ktoś włamie się na jeden z tych komputerów i zmieni zawartość, która dodaje lub usuwa nazwy domen .COM ...”, możemy szybko odpowiedzieć:

  1. zmiany nie będą widoczne na całym świecie, ponieważ włamujesz się tylko do jednego pudełka i istnieje wiele serwerów nazw, najpierw według nazwy, a potem przez anycasting
  2. DNSSEC może sprawić, że twoje zmiany pojawią się jako błędy i dlatego zostaną szybko wykryte (poza wszelkimi lokalnymi środkami zaradczymi przez samego operatora).

Krótko mówiąc, nie jest to najlepszy pomysł, aby robić bałagan z .COMnazwami domen. Są też inne sposoby.

Zdaję sobie sprawę, że informacje o domenie są publiczne, ale nadal trudno jest uzyskać je masowo.

Zobacz powyżej program ICANN. Jeśli chodzi o ccTLD, sytuacja jest różna, ale częściej nie dają dostępu do swojego pliku strefy, i to nie w czasie rzeczywistym.

Czasami można uzyskać do niego dostęp po pewnym czasie, na przykład poprzez ruchy „otwartych danych”. Jeden przykład: https://opendata.afnic.fr/en/products-and-services/services/opendata-en.html dla .FRnazw domen.

Domyślam się, że * .gtld-servers.net nie obsługuje transferów stref (chociaż serwery nazw .edu przynajmniej kilka lat temu).

Łatwy do przetestowania:

$ for ns in $(dig NS . +noall +ans | grep 'IN NS' | awk '{print $5}') ; do echo $ns ; dig @$ns com. AXFR; done
c.root-servers.net.

; <<>> DiG 9.12.0 <<>> @c.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
m.root-servers.net.

; <<>> DiG 9.12.0 <<>> @m.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
i.root-servers.net.

; <<>> DiG 9.12.0 <<>> @i.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
e.root-servers.net.

; <<>> DiG 9.12.0 <<>> @e.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
j.root-servers.net.

; <<>> DiG 9.12.0 <<>> @j.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
l.root-servers.net.

; <<>> DiG 9.12.0 <<>> @l.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
g.root-servers.net.

; <<>> DiG 9.12.0 <<>> @g.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
k.root-servers.net.

; <<>> DiG 9.12.0 <<>> @k.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
b.root-servers.net.

; <<>> DiG 9.12.0 <<>> @b.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
h.root-servers.net.

; <<>> DiG 9.12.0 <<>> @h.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
d.root-servers.net.

; <<>> DiG 9.12.0 <<>> @d.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

;; Connection to 199.7.91.13#53(199.7.91.13) for com. failed: timed out.
;; QUERY SIZE: 44

;; Connection to 199.7.91.13#53(199.7.91.13) for com. failed: timed out.
;; QUERY SIZE: 44

;; connection timed out; no servers could be reached
;; Connection to 199.7.91.13#53(199.7.91.13) for com. failed: timed out.
a.root-servers.net.

; <<>> DiG 9.12.0 <<>> @a.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.
f.root-servers.net.

; <<>> DiG 9.12.0 <<>> @f.root-servers.net. com. AXFR
; (1 server found)
;; global options: +cmd
;; QUERY SIZE: 44

; Transfer failed.

Nie, w tej chwili żaden .COMautorytatywny serwer nazw nie akceptuje zapytań AXFR. Ale niekoniecznie jest tak samo wszędzie. Jeśli f.root-servers.netzapytasz serwer nazw, możesz wykonać zapytanie AXFR, aby opublikować wszystkie TLD. Niektóre inne domeny TLD również mogą na to pozwolić.

Należy pamiętać, że istnieje „wiele” zaleceń, które nie zezwalają na publiczne zapytania AXFR. Fakty są takie, że są z definicji ogromnymi odpowiedziami i mogą obciążać serwer, jeśli zostaną powtórzone, to prawda. On może bez końca spierać się o to, dlaczego / jeśli społeczeństwo potrzebuje tych informacji. Na początku DNS był częściej używany do kopiowania stref między serwerami nazw (teraz są o wiele lepsze alternatywy). Dlatego AXFR jest często wyłączany ... poza tym, że wykonujesz DNSSEC w tym samym czasie, w określony sposób (to znaczy NSEC, a nie wariant NSEC3), łatwo jest przejść przez standardowe zapytania DNS i bez AXFR, wszystkie twoje strefę i zrekonstruuj plik strefy. Istnieją narzędzia do tego.

Zauważ również, że różni dostawcy online sprzedadzą ci pliki stref i / lub listę wszystkich nazw domen dla wielu TLD, które zdobyli różnymi sposobami (jeden pomysł między innymi: bierzesz otwarte pliki stref, jak .COM, a dla TLD pytasz .examplejeden po drugim wszystkie nazwy, które znalazłeś .COM, które mogą dać ci pewne pomysły, oprócz oczywiście chodzenia po słowniku w oparciu o języki najczęściej używane w wyszukiwanej TLD).

Patrick Mevzek
źródło