Jak działa DynamicDNS natychmiast?

16

Rozumiem, że podstawową funkcją DNS jest zapewnienie usługi nazewnictwa / mapowania między nazwami domen (np. blah-whatever.com) A adresami IP (np. 100.2.3.4 ).

Co więcej, rozumiem, jak działają internetowe serwery DNS, że po zmianie rekordu mapowania domeny / adresu IP (powiedzmy, zmiana blah-whatever.comna punkt teraz na 105.2.3.4 itd.), Zmiana ta musi zostać rozpowszechniona na każdym serwerze DNS na świecie przed zmianą można powiedzieć, że jest „kompletna”. Ten okres rozmnażania może czasem trwać do 24 godzin.

Na początek, jeśli cokolwiek, co do tej pory powiedziałem, jest błędne lub nieprawidłowe, zacznij od poprawienia mnie!

Zakładając, że mam mniej więcej rację, nie rozumiem, w jaki sposób firmy takie jak CloudFlare czy DynamicDNS mogą oferować usługi typu „natychmiastowe przejście”, dzięki którym zmienisz z nimi swój rekord DNS i - boom - zmiana zacznie obowiązywać natychmiast.

Rozumiem, że istnieje coś o nazwie „TTL” (czas życia, jak sądzę?!?), Który odgrywa rolę w tej funkcji natychmiastowego najazdu, ale ponieważ jestem już niejasny, jeśli chodzi o możliwość rozpoczęcia, trudno jest zrozumieć, co ten TTL jest lub w jakim celu służy.

Pytam więc: co takiego jest w Dynamic DNS i jego konkurentach, który pozwala im na natychmiastową zmianę mapowań DNS (bez 24 godzin na propagowanie zmian DNS jak wszyscy inni) i jak TTL pasuje do tego procesu? Z góry dziękuję.

pnongrata
źródło

Odpowiedzi:

3

Moja poprzednia odpowiedź zawierała fałszywe informacje, ponieważ miałem kilka nieporozumień dotyczących sposobu propagowania zmian DNS. Oto druga próba. Aby uzyskać szczegółowe wyjaśnienie, zachęcam do przeczytania odpowiedzi Alexa .

Według mnie istnieją dwa czynniki związane z szybkością propagacji zmiany DNS:

  1. Transfery stref między serwerami DNS, które są autorytatywne dla strefy.
  2. Zestaw TTL dla pojedynczych rekordów w tej strefie.

Transfery strefowe

Biorąc pod uwagę, że do zarządzania strefą potrzebne są dwa odrębne serwery nazw, chcesz, aby te serwery szybko miały dostęp do najnowszej wersji tej strefy.

Można to osiągnąć poprzez pobieranie najnowszej wersji strefy w ustalonych odstępach czasu lub czekanie na powiadomienie z autoryzowanego serwera nazw.

Biorąc pod uwagę, że mechanizm ten jest pod pełną kontrolą tego, kto obsługuje serwery nazw, wszelkie opóźnienia w tym obszarze mogą być w pełni kontrolowane.

TTL

TTL jest określony limit czasu dla każdego pojedynczego rekordu zasobu w strefie. Ta wartość określa, jak długo rekord powinien być buforowany przez nieautoryzowanych dostawców DNS.

Należy pamiętać, że ta wartość ma zastosowanie tylko wtedy, gdy istniejący rekord zostanie zmieniony. Nowe rekordy nie mogą być jeszcze buforowane.

Biorąc pod uwagę, że TTL jest również pod pełną kontrolą tego, kto kontroluje strefę, opóźnienie można również w pełni kontrolować.

Der Hochstapler
źródło
Dzięki @Oliver (+1) - To brzmi jak „natychmiastowe przejście” to miejska legenda! Wydaje mi się, że moje dalsze pytanie brzmiałoby: dlaczego sam nie edytować swoich rekordów DNS? Czy to dlatego, że te firmy oferują interfejsy API, aby zmiany DNS mogły być zautomatyzowane po uruchomieniu określonych zdarzeń? Chyba przede wszystkim szukam, do czego służą!
pnongrata,
1
@zharvey: Możesz oczywiście uruchomić własny serwer DNS i samodzielnie edytować swoje strefy. Musisz jednak zapewnić co najmniej 2 różne serwery DNS, które są autorytatywne dla Twojej strefy, aby mogły zostać zaakceptowane przez serwery root. Ludzie zwykle nie mają dostępnej infrastruktury.
Der Hochstapler,
1
Możesz samodzielnie edytować rekordy DNS. Wystarczy uruchomić parę serwerów nazw (w różnych podsieciach). DynDNS działa jednak dla Ciebie i umożliwia względnie łatwe aktualizacje. Zasadniczo zlecasz trochę pracy.
Hennes,
@zharvey oczywiście możesz mieć „natychmiastowe przejście”. Jeśli masz na myśli to dosłownie, po prostu pozwól obu komputerom zmienić ich adresy IP (co nie zawsze jest możliwe). Poza tym zawsze będziesz miał pewne opóźnienie. Zwykle, jeśli usługi mają zostać przeniesione na różne serwery, administrator z wyprzedzeniem zmienia TTL (np. Obniża go do około 1 godziny) - więc kiedy zmiana ma miejsce, opóźnienie będzie minimalne. Po zakończeniu TTL ponownie wzrośnie (do np. 24 godzin lub więcej), aby umożliwić lepsze buforowanie i szybsze odpowiedzi na zapytania DNS. Ale to zwykle nie dotyczy DynDNS;)
Izzy
2
Przepraszam, że jestem niegrzeczny, ale ta odpowiedź jest błędna w prawie każdym punkcie.
Alex
18

Masz trochę nieporozumień, więc postaram się wyjaśnić cały proces. (Jestem dobry w szczegółach, ponieważ zaangażowałem się w obsługę publicznej dynamicznej usługi DNS).

Załóżmy, że twoja domena to example.com , a na przykład domena example.com hostowana przez jakąś dynamiczną firmę DNS, nazwijmy ją lightfastdns.net (nazwa fikcyjna). Twoja domena zawiera rekord DNS - somehost.example.com , który obecnie wskazuje na 1.1.1.1 .

  1. Kiedy dokonujesz zmiany w rekordzie DNS, zmiana ta jest najpierw przesyłana do jakiegoś serwera pośredniego, obsługiwanego przez lightfastdns.net , np . Updates.lightfastdns.net . Dzieje się tak niemal natychmiast (w ułamku sekundy). Możesz przesłać aktualizację za pomocą interfejsu internetowego lub klienta aktualizacji dynamicznych lub za pomocą interfejsu API. To nie ma znaczenia, w każdym razie ta aktualizacja pojawi się na serwerze obsługującym aktualizacje DNS.

  2. Ten serwer aktualizacji przekazuje zaktualizowany rekord (powiedzmy 1.2.3.4 ) do „ głównego ” serwera DNS dla Twojej domeny. Ten serwer DNS jest również obsługiwany przez lightfastdns.net . Jak szybko to się dzieje: zależy od tego, jak dostawca DNS zaprojektował swoje oprogramowanie. (Może to być natychmiastowe i co 24 godziny. Na przykład gandi.net wypycha aktualizacje DNS raz na godzinę.) Oczywiście, nasza lightfastdns.net zrobi to natychmiast.

  3. Ten główny serwer DNS będzie przekazywał aktualizacje do podrzędnych serwerów DNS dla domeny example.com . Te serwery są również obsługiwane przez tę samą firmę lightfastdns.net . Jak szybko to się dzieje: dzięki nowoczesnemu oprogramowaniu master natychmiast wyśle ​​wiadomość NOTIFY do slave'ów i natychmiast otrzyma zaktualizowany rekord od master. ze starszym oprogramowaniem mieliśmy wartości REFRESH i RETRY w rekordzie SOA, ale dzisiaj jest to rzadko istotne. Oczywiście, nasza witryna lightfastdns.net implementuje NOTIFY, a aktualizacje rozprzestrzeniają się natychmiast.

Teraz mamy to, że wszystkie „autorytatywne” serwery dla twojej domeny otrzymały zaktualizowany rekord ( 1.2.3.4 ). W przypadku lightfastdns.net zajęło to około dwóch sekund.

  1. Teraz przeprowadzimy się do domu Iwana w Rosji, a Ivan chce otworzyć „ somehost.example.com ” w swojej przeglądarce. Jeśli nigdy wcześniej tego nie otwierał, jego przeglądarka nie zna adresu, więc przeglądarka zapyta system operacyjny. Ale jeśli ostatnio odwiedził stronę, adres może nadal być przechowywany w przeglądarce i użyje starego (przestarzałego) adresu! Jak długo ? - Zależy od przeglądarki, na przykład Google Chrome przechowuje rekordy DNS tylko do 60 sekund. Mamy do 60 sekund opóźnienia . z tego powodu powiedziałbym, że zmiana DNS nie została jeszcze rozpowszechniona w tej przeglądarce.

  2. W każdym razie po 60 sekundach lub natychmiast przeglądarka ostatecznie poprosi system operacyjny o podanie adresu. System operacyjny może już znać (starą, przestarzałą) odpowiedź i zwrócić ją, w tym przypadku powiedziałbym, że nowy rekord nie rozprzestrzenił się jeszcze na system operacyjny Iwana. Jak długo system operacyjny będzie przechowywał starą wartość - w nowoczesnych systemach operacyjnych kontrolowanych przez parametr TTL . TTL w DNS określa, jak długo rekord może być przechowywany w pamięci podręcznej. Nasze lightfastdns.net pozwoliło na użycie dość niskiego TTL - 30 sekund, więc otrzymaliśmy nowe opóźnienie do 30 sekund, ogólnie - do tej pory 90 sekund .

  3. Jeśli system operacyjny nie zna odpowiedzi lub jeśli znana odpowiedź jest teraz nieaktualna przez TTL, system operacyjny zapyta o usługę DNS (ISP ISP przypisał mu usługę DNS dns.moscow-telecom.ru ). Tutaj stary rekord może być buforowany do TTL sekund lub dns.moscow-telecom.ru może nie znać adresu. Otrzymujemy kolejne 30 sekund, ponieważ dns.moscow-telecom.ru również buforuje DNS nie dłużej niż wartość TTL. Mamy 120 sekund opóźnienia. Tak się nazywało, że nowy rekord DNS nie rozprzestrzenił się jeszcze na serwery DNS firmy Moscow-Telecom .

  4. Jeśli serwer DNS ISP nie zna odpowiedzi, lub jeśli odpowiedź nie wiedział to już nieaktualne, bo to TTL wygasła - dns.moscow-telecom.ru poprosi jednego z autorytatywnych serwerów DNS dla example.net (czy je pamiętasz?). Oni otrzymali zmianę około 118 sekund temu i zwrócą nową odpowiedź, ta odpowiedź zostanie natychmiast wysłana łańcuchem do resolvera DNS, systemu operacyjnego i przeglądarki Ivana.

Dlatego propagowanie rekordu trwało od 2 do 120 sekund, w zależności od stanu różnych pamięci podręcznych. Dłuższe TTL - mogą wystąpić dłuższe opóźnienia.

Aby go ukończyć - niektórzy dostawcy usług internetowych przez długi czas naruszają standardy i zapisują pamięć podręczną. Niektóre starsze systemy operacyjne długo zachowywały stary rekord, a także starsze przeglądarki. Ale dla większości użytkowników będzie działać zgodnie z oczekiwaniami.

Alex
źródło
Bardzo mi przykro, że wyszło to pełne. Może ktoś chce zrobić krótszy wariant (jako osobna odpowiedź) - proszę bardzo.
Alex
@zharvey W rzeczywistości zapytałeś, jaka jest różnica między dynamicznym a nie dynamicznym - to 1. Jak szybko radzą sobie z krokami (2) i (3) oraz 2. Jak niskie TTL pozwalają ci ustawić.
Alex
3

Nie. Zmiana nie musi się rozprzestrzeniać na każdy serwer DNS na świecie .

Jeśli coś zmienisz i ktoś zapyta o zmieniony zapis na twoim serwerze DNS, wynik jest natychmiastowy.

Problem polega na tym, że wcześniej sprawdziłeś tę nazwę i została ona buforowana. Otrzymasz stary adres IP, aż pamięć podręczna wygaśnie. W DNS możesz ustawić, jak długo stare zapytanie jest ważne, a okres ten jest często ustawiony na kilka dni. W przypadku DynDNS jest zwykle ustawiony na niższą wartość, ale nie wszystkie programy rozpoznające DNS to szanują.

Hennes
źródło
Dzięki @Hennes (+1) - proszę zobaczyć moje pytanie pod odpowiedzią Olivera - Mam dla ciebie to samo pytanie!
pnongrata,