To jest pytanie kanoniczne dotyczące usługi DNS (Domain Name Service).
Jeśli moje rozumienie systemu DNS jest prawidłowe, rejestr .com zawiera tabelę mapującą domeny (www.example.com) na serwery DNS.
Jaka jest zaleta? Dlaczego nie zmapować bezpośrednio na adres IP?
Jeśli jedyny rekord, który musi się zmienić, gdy konfiguruję serwer DNS tak, aby wskazywał inny adres IP, znajduje się na serwerze DNS, dlaczego proces nie jest natychmiastowy?
Jeśli jedynym powodem opóźnienia są pamięci podręczne DNS, czy można je ominąć, aby zobaczyć, co dzieje się w czasie rzeczywistym?
domain-name-system
sabof
źródło
źródło
You can not able full understand DNS unless you are name Paul Mockapetris, Paul Vixie or Cricket Liu.
twitter.com/DEVOPS_BORAT/status/249006925767909376Odpowiedzi:
W rzeczywistości jest to bardziej skomplikowane - zamiast jednego „centralnego rejestru (który) zawiera tabelę mapującą domeny (www.mysite.com) na serwery DNS”, istnieje kilka warstw hierarchii
Jest to centralny rejestr (serwery root), które zawierają tylko niewielki zestaw wpisów: NS (nameserver) zapisy dla wszystkich domen najwyższego poziomu -
.com
,.net
,.org
,.uk
,.us
,.au
, i tak dalej.Te serwery zawierają tylko rekordy NS dla następnego poziomu niższego. Aby wybrać jeden przykład serwery nazw dla
.uk
domeny ma tylko wpisy dotyczące.co.uk
,.ac.uk
oraz inne strefy drugiego poziomu używane w Wielkiej Brytanii.Serwery te zawierają tylko rekordy NS na następny poziom niżej - aby kontynuować przykład, podają, gdzie znaleźć rekordy NS
google.co.uk
. Na tych serwerach w końcu znajdziesz mapowanie między nazwą hostawww.google.co.uk
i adresem IP.Jako dodatkowe zmarszczki każda warstwa będzie również służyć do zapisywania „kleju”. Każdy rekord NS mapuje domenę na nazwę hosta - na przykład rekordy NS dla
.uk
listynsa.nic.uk
jako jeden z serwerów. Aby przejść do następnego poziomu, musimy dowiedzieć się, że rekordy NSnic.uk
są, i okazuje się, że zawierająnsa.nic.uk
również. Więc teraz musimy znać adres IPnsa.nic.uk
, ale aby się tego dowiedzieć, musimy wykonać zapytaniensa.nic.uk
, ale nie możemy wykonać tego zapytania, dopóki nie poznamy adresu IP dlansa.nic.uk
...Aby rozwiązać ten dylemat, serwery dla
.uk
dodać rekord A dlansa.nic.uk
Into theADDITIONAL SECTION
odpowiedzi (odpowiedź poniżej przycięte dla zwięzłość):Bez tych dodatkowych rekordów klejów nigdy nie bylibyśmy w stanie znaleźć serwerów nazw,
nic.uk.
a więc nigdy nie bylibyśmy w stanie wyszukać żadnych hostowanych tam domen.Aby wrócić do swoich pytań ...
Po pierwsze, umożliwia dystrybucję zmian do poszczególnych stref. Jeśli chcesz zaktualizować wpis
www.mydomain.co.uk
, po prostu musisz edytować informacje na serwerzemydomain.co.uk
nazw. Nie ma potrzeby powiadamiania centralnych.co.uk
serwerów,.uk
serwerów ani głównych serwerów nazw. Gdyby istniał tylko jeden centralny rejestr, który odwzorował wszystkie poziomy w dół hierarchii, który musiał być powiadamiany o każdej zmianie wpisu DNS w całym łańcuchu, byłby całkowicie zalany ruchem.Przed 1982 r. Tak właśnie miało miejsce rozpoznawanie nazw. Jeden centralny rejestr został powiadomiony o wszystkich aktualizacjach i rozpowszechnili plik o nazwie,
hosts.txt
który zawierał nazwę hosta i adres IP każdej maszyny w Internecie. Nowa wersja tego pliku była publikowana co kilka tygodni i każda maszyna w Internecie musiałaby pobrać nową kopię. Na długo przed 1982 rokiem zaczęło to być problematyczne, dlatego wymyślono DNS, aby zapewnić bardziej rozproszony system.Po drugie, byłby to pojedynczy punkt awarii - gdyby upadł pojedynczy centralny rejestr, cały Internet byłby offline. Posiadanie systemu rozproszonego oznacza, że awarie wpływają tylko na małe części Internetu, a nie na całość.
(Aby zapewnić dodatkową redundancję, w rzeczywistości istnieje 13 oddzielnych klastrów serwerów obsługujących strefę główną. Wszelkie zmiany w rekordach domeny najwyższego poziomu muszą zostać wprowadzone do wszystkich 13; wyobraź sobie, że musisz koordynować aktualizację wszystkich 13 z nich dla każdej zmiany na dowolną nazwę hosta w dowolnym miejscu na świecie ...)
Ponieważ DNS wykorzystuje dużo pamięci podręcznej, aby zarówno przyspieszyć, jak i zmniejszyć obciążenie NS. Bez buforowania, za każdym razem odwiedził
google.co.uk
komputer musiałby wychodzić do sieci patrzeć na serwery.uk
, a potem.co.uk
, potem.google.co.uk
, potemwww.google.co.uk
. Te odpowiedzi niewiele się zmieniają, więc wyszukiwanie ich za każdym razem jest stratą czasu i ruchu w sieci. Zamiast tego, gdy NS zwróci rekordy do twojego komputera, będzie zawierać wartość TTL, która każe Twojemu komputerowi buforować wyniki przez kilka sekund.Na przykład rekordy NS
.uk
mają TTL 172800 sekund - 2 dni. Google jest jeszcze bardziej konserwatywny - rekordy NSgoogle.co.uk
mają TTL wynoszącą 4 dni. Usługi, które polegają na możliwości szybkiej aktualizacji, mogą wybrać znacznie niższy czas wygaśnięcia - na przykładtelegraph.co.uk
czas wygaśnięcia ich rekordów NS wynosi zaledwie 600 sekund.Jeśli chcesz, aby aktualizacje Twojej strefy były niemal natychmiastowe, możesz obniżyć TTL tak daleko, jak chcesz. Im niższy jest ustawiony, tym większy ruch zobaczą twoje serwery, ponieważ klienci częściej odświeżają swoje rekordy. Za każdym razem, gdy klient musi skontaktować się z Twoimi serwerami w celu wykonania zapytania, spowoduje to pewne opóźnienie, ponieważ jest to wolniejsze niż wyszukiwanie odpowiedzi w lokalnej pamięci podręcznej, więc będziesz również chciał rozważyć kompromis między szybkimi aktualizacjami a szybką usługą.
Tak, jest to łatwe, jeśli testujesz ręcznie za pomocą
dig
lub podobnych narzędzi - po prostu powiedz, z którym serwerem się skontaktować.Oto przykład buforowanej odpowiedzi:
Sekcja flagi tutaj nie zawiera
aa
flagi, więc możemy zobaczyć, że ten wynik pochodzi z pamięci podręcznej, a nie bezpośrednio z wiarygodnego źródła. W rzeczywistości możemy zobaczyć, że pochodzi z97.107.133.4
, który jest akurat jednym z lokalnych translatorów DNS Linode. Fakt, że odpowiedź została podana z pamięci podręcznej bardzo blisko mnie, oznacza, że uzyskanie odpowiedzi zajęło mi 0 ms; ale jak zobaczymy za chwilę, cena, którą płacę za tę prędkość, jest taka, że odpowiedź jest prawie 5 minut nieaktualna.Aby ominąć resolver Linode i przejść bezpośrednio do źródła, po prostu wybierz jedną z NS i powiedz digowi, aby skontaktowała się z nim bezpośrednio:
Widać, że tym razem wyniki zostały podane bezpośrednio ze źródła - zwróć uwagę na
aa
flagę, która wskazuje, że wyniki pochodzą z wiarygodnego źródła. W moim wcześniejszym przykładzie wyniki pochodzą z mojej lokalnej pamięci podręcznej, więc nie mająaa
flagi. Widzę, że wiarygodne źródło dla tej domeny ustawia TTL na 600 sekund. Wyniki, które uzyskałem wcześniej z lokalnej pamięci podręcznej, miały TTL wynoszące zaledwie 319 sekund, co mówi mi, że siedzieli w pamięci podręcznej przez (600-319) sekund - prawie 5 minut - zanim je zobaczyłem.Chociaż TTL wynosi tutaj tylko 600 sekund, niektórzy dostawcy usług internetowych będą próbowali jeszcze bardziej ograniczyć swój ruch, zmuszając swoje resolwery DNS do buforowania wyników na dłużej - w niektórych przypadkach na 24 godziny lub dłużej. Tradycyjnie (w sposób, w jaki nie wiemy, czy to jest naprawdę konieczne, ale bądźmy bezpieczni), zakładamy, że każda wprowadzona zmiana DNS nie będzie widoczna wszędzie na internet przez 24-48 godzin.
źródło
aa
(autorytatywnej odpowiedzi)flag
w odpowiedzi. Jeśliaa
jest obecny, odpowiedź pochodzi bezpośrednio z wiarygodnego serwera nazw. (Jeśli go nie ma, odpowiedź może być wciąż aktualna; niektóre rekurencyjne serwery nazw usuwająaa
flagę przed przekazaniem odpowiedzi do resolvera klienta.).uk
serwerów. Obecnie domeny drugiego poziomu zarządzane przez Nominet znajdują się na tych samych serwerach couk.
, więc zapytanieexample.co.uk
douk
serwerów otrzyma przekazanie natychmiast, bez konieczności wcześniejszego przejścia przez przekazanie doco.uk
serwerów.+trace
opcja dig zapyta skonfigurowany serwer nazw o główne serwery nazw, aby mógł rozpocząć wyszukiwanie. Jeśli twój lokalny serwer nazw todnsmasq
(jak w Ubuntu), nie obsługuje tego, więc pojawi się błąd. Zastosowaniedig +trace @8.8.8.8 www.example.com
. 8.8.8.8 to publiczna usługa DNS Google. Użyj 1.1.1.1 jako ekwiwalentu Cloudflare.a) Liczba mapowań nazw hostów na świecie jest NAPRAWDĘ duża. Ten system przekazuje odpowiedzialność za hosting wszystkich rekordów subdomeny i MX oraz każdego innego rekordu DNS właścicielowi domeny. To był właściwie cel nazwy domeny.
.com
jest przechowywany przez jeden rejestr, w którym.uk
inny może być przechowywany. Podobnieexample.com
iotherexample.com
może być hostowany osobno, aby można było dystrybuować zasoby.b) Jest buforowany, co zmniejsza liczbę trafień na twoim serwerze DNS do niewielkiej części tego, co byłoby inaczej. Domyślnie zapisy są przechowywane w pamięci podręcznej przez 2 dni, zanim zostaną usunięte. Można to zmienić, zmieniając czas wygaśnięcia rekordu.
c) Możesz skutecznie zatrzymać buforowanie rekordów, ustawiając naprawdę krótki TTL. NIE jest to zalecane, chyba że używasz go do dynamicznego DNS. Buforowanie znacznie obniża liczbę trafień na serwerze DNS. Aby wybrać odgadnięty numer z powietrza, mówimy o odrzuceniu 95% żądań.
źródło
yourdomain.com
to subdomena.com
. Jeśli był to tylko jeden duży „plik hostów” (tak jak wcześniej DNS i elfy wciąż chodzili po ziemi), to tak. Miałbyś tylko jeden duży plik i każdy by go buforował.local
) prawdopodobnie sprawia pewną ograniczoną ilość znaczeniu.Jeśli korzystasz z systemu * nix, pobierz kopię djbdns Dana Bernsteina ze strony http://cr.yp.to/djbdns.html i uruchom jego program dnstrace, aby zobaczyć, jak działa system zapytań rekurencyjnych. To bardzo pouczające.
źródło
a) Liczba możliwych nazw domen jest o wiele za duża, aby obsługiwać je jeden serwer. I nie tylko .com; jest .net, .org, .se, .info i wiele innych. Dodaj do tego, że możesz delegować odpowiedzialność za subdomenę (co faktycznie
com
działa). Mniej scentralizowany system DNS ułatwia zarządzanie.b) Maszyny po drodze od użytkownika do ciebie mają pamięć podręczną DNS, aby zminimalizować liczbę potrzebnych żądań. Zapobiega, na przykład, spamowaniu sieci z prośbami o adres „serverfault.com” za każdym razem, gdy dostajesz stronę od SF. Te serwery potrafią nawet buforować wyniki „domena nie istnieje”, dlatego nawet pojawienie się zupełnie nowej domeny może trochę potrwać.
c) Mimo że możesz wyłączyć pamięć podręczną, między twoim komputerem a serwerem DNS twojadomena.com często znajdują się inne serwery DNS. Na przykład serwer DNS Twojego usługodawcy internetowego będzie próbował buforować tyle pamięci, ile może. Jedyne rekordy, które są relatywnie szybko aktualizowane w sieci, to te z krótkim TTL (co w zasadzie mówi „jestem ważny tylko przez kilka sekund; potem zapytaj mnie ponownie o aktualne informacje”). Przyczyny TTL są jednak tak wysokie, że serwer odpowiedzialny za domenę może przenieść część pracy na inne serwery. Gdyby cała sieć kontaktowała się z jednym lub dwoma serwerami DNS typu rinky-dink za każde trafienie na twoją stronę, byłyby one praktycznie bezużyteczne, gdyby ktoś zobaczył twoją stronę na /., Digg itp.
źródło