Dlaczego nasze rekordy DNS nie rozprzestrzeniają się w Internecie?

22

W naszej sieci obsługujemy serwery nazw dla naszej domeny. Używamy bind / named. Zadzwoń do domeny example.com . Jedną z rzeczy, które zauważyłem ostatnio, kiedy mam stronę internetową taką jak http://network-tools.com i uruchamiam zapytania na adresy URL zdefiniowane na naszych serwerach nazw, natychmiast widzę zmiany.

Na przykład, jeśli dodam wpis do naszego serwera DNS dla adresu URL funny.example.com, a następnie wyszukam ten adres URL na http://network-tools.com , natychmiast zobaczę odpowiedni zewnętrzny statyczny adres IP.

To mówi mi, że wszelkie żądania DNS związane z example.com przychodzą prosto do naszych serwerów DNS za każdym razem.

Moje podejrzenia zostały potwierdzone na początku tygodnia, kiedy nasze serwery DNS uległy awarii na bardzo krótki okres. I w tym czasie, gdybym użył http://network-tools.com do zapytania example.com lub którejkolwiek z jego subdomen, uzyskałbym zero wyników. Oczywiście dlatego, że serwery DNS były wyłączone i nie można było do nich dotrzeć.

To prowadzi mnie do mojego pytania. Pomyślałem, że zmiany w naszych serwerach DNS powinny się rozprzestrzeniać w Internecie na inne serwery DNS. W ten sposób, jeśli nasz DNS tymczasowo przestanie działać, inne serwery w Internecie nadal wiedzą, na jaki adres IP example.com wskazuje.

Czy nie rozumiem tych rzeczy związanych z DNS? Czy kontrolowane przez strony trzecie serwery DNS, takie jak nasz, nie mogą rozpowszechniać informacji DNS na innych serwerach w sieci?

Gdzie powinienem zacząć badać, dlaczego zmiany tego nie robią? Widzę na naszej zaporze ogniowej, że ruch z portu 53 prawidłowo dociera do naszych serwerów DNS.

AKTUALIZACJA

  1. Wiem, że mówicie, że niemożliwe jest natychmiastowe opublikowanie ustawień DNS, ale wszystko, co wiem, to: jeśli dokonam zmiany DNS na naszych serwerach DNS, a następnie natychmiast sprawdzę to na http: // network-tools. com , natychmiast widzę zmiany.

  2. Jeśli wyłączę nasze serwery DNS, a następnie spróbuję sprawdzić dowolny adres URL za pomocą http://network-tools.com , strona nie może znaleźć żadnego z adresów URL. Ale jeśli przywrócę serwery DNS do trybu online, nagle http://network-tools.com może ponownie znaleźć adresy URL ... To mówi mi, że serwery NIE buforują naszych ustawień DNS. Czy się mylę? Ponadto nasze ustawienia TTL są obecnie ustawione na 900 (15 minut), a nasze serwery DNS działają od ponad roku. Więc to nie jest tak, że serwery DNS w Internecie nie miały jeszcze okazji go buforować. Czy serwery nie buforują ustawień, ponieważ czas TTL jest obecnie tak niski? To ma sens, jeśli to jest powód.

Jake Wilson
źródło
7
Ponieważ jokerville.com jest prawdziwą zarejestrowaną nazwą domeny, chyba że faktycznie jest to Twoja domena, użyj example.comzamiast tego - jest oficjalnie zarezerwowana do tego celu.
mattdm,
9
Powodem, dla którego network-tools.com natychmiast widzi zmiany, jest to, że jest to narzędzie sieciowe i WYRAŹNIE NIE buforuje wyników. Jest to narzędzie do przeglądania serwerów nazw, a nie zwykły klient DNS, więc przestrzega różnych zasad.
Michael Kohne,

Odpowiedzi:

42

Tak, nie rozumiesz, jak działa DNS. Mam zamiar użyć tutaj trochę nacisku, ale proszę, nie obrażaj się, ponieważ żaden nie jest zamierzony.

REKORDY DNS NIE SĄ PROPAGOWANE. SĄ DOKUMENTOWANI.

Biorąc to pod uwagę, oto uproszczone wyjaśnienie tego, co się dzieje:

  1. Tworzysz nowy rekord DNS (A, CNAME itp.)

  2. Użytkownik zdalny (a dokładniej uruchomiona przez użytkownika procedura \ aplikacja) próbuje uzyskać dostęp do usługi dostępnej za pośrednictwem tego rekordu DNS (na przykład przeglądarka internetowa próbująca uzyskać dostęp do strony internetowej działającej na stronie funny.example.com)

  3. Klient DNS użytkowników wysyła zapytanie DNS do swojego serwera DNS, serwer DNS następnie wyszukuje twoje serwery nazw (zwykle poprzez serię rekurencyjnych zapytań DNS) i prosi je o informacje dotyczące funny.example.com

  4. Twoje serwery nazw odpowiadają odpowiedziami

  5. Serwer DNS użytkowników wysyła następnie te informacje do użytkownika (a dokładniej do resolvera klienta DNS użytkowników), który z kolei zwraca informacje do procesu \ aplikacji. Informacje te pochodzą z tak zwanego TTL (czas wygaśnięcia), który informuje program tłumaczący klienta DNS, jak długo te informacje mogą być przechowywane w pamięci podręcznej DNS (w pamięci) i jak długo można uznać te informacje za aktualne i dokładne

  6. Program tłumaczący klienta DNS użytkownika usuwa następnie te informacje po wygaśnięciu TTL. Wszelkie nowe żądania danych rekordów DNS wymagają nowego wyszukiwania DNS, a powyższy proces powtarza się.

Tak długo i krótko to:

Twoje rekordy DNS nie są propagowane. Żaden inny serwer DNS nie ma kopii twoich rekordów DNS ani stref. Klient lub serwer DNS może buforować informacje o twoich rekordach lub strefach DNS (w oparciu o ich zapytania DNS dotyczące twoich rekordów i stref DNS) do swojej pamięci podręcznej DNS. Informacje te są tymczasowo buforowane i zostaną usunięte z pamięci podręcznej DNS po wygaśnięciu TTL.

Jeśli twoje serwery nazw są wyłączone, tylko ci klienci DNS, którzy mają w pamięci podręcznej dowolny z twoich rekordów DNS, będą w stanie rozpoznać te rekordy DNS i tylko do momentu wygaśnięcia TTL. Ponadto po wygaśnięciu TTL (wymaganie nowego lokalizacji DNS) ci klienci DNS nie będą już w stanie rozpoznać twoich rekordów DNS.

joeqwerty
źródło
Dobre wyjaśnienie i mogę dodać przykład protokołu, w którym propagacja (w przeciwieństwie do DNS): BGP.
bortzmeyer
11

bardzo pomogłoby to, gdybyś powiedział nam swoją rzeczywistą nazwę domeny, wtedy moglibyśmy odpowiedzieć na twoje pytanie w odniesieniu do twojej faktycznej konfiguracji i wskazać wszelkie błędy.

Zwykle ufam http://dns.squish.net/ w szybkim diagnozowaniu problemów z DNS. Dzięki temu z całą pewnością dowiesz się, na czym polegają Twoje problemy po dokonaniu zmiany - w zasadzie, jeśli Twoja delegacja z wyższego szczebla jest poprawna, a twoje 2-3 serwery nazw dają tę samą odpowiedź, a ktoś nie widzi nowego rekordu, będą musieli poczekać, aż ich sieć lokalna zobaczy zmiany. Jeśli ten moduł kontrolny informuje, że jeden z Twoich serwerów nie odpowiada tak samo jak inne, musisz rozwiązać ten problem.

Nie ma możliwości natychmiastowego opublikowania zmian DNS - cóż, możesz opublikować je natychmiast, ale reszta świata pozostanie w tyle zgodnie z ustawieniem TTL każdego rekordu, więc np. Jeśli ustawiłeś rekord TTL na 86400 sekund ( jeden dzień), a ty wprowadzisz zmianę, inni zobaczą stary rekord przez cały dzień, ponieważ lokalna pamięć podręczna nie poprosi cię, dopóki nie wygaśnie jego kopia.

Sugerowałbym, aby przed wszelkimi poważnymi zmianami DNS zmniejszyć TTL do 600 (10 minut), aby zachęcić pamięci podręczne w Internecie, aby nie trzymały się starych rekordów zbyt długo. Ale niektóre pamięci podręczne to zignorują lub przyjmą 1 dzień, a nawet 1 tydzień.

Głupia odpowiedź na głupie pytanie, mam jednak nadzieję, że było w tym coś pożytecznego.

Matthew Bloch
źródło
1
+1. Dla jasności zmiana dotyczy tylko tych klientów DNS, którzy już mają informacje w pamięci podręcznej, dla których TTL nie wygasł. Wszelkie nowe żądania, dla których nie ma danych w pamięci podręcznej, zostaną natychmiast rozpatrzone.
joeqwerty
fyi: dead link - squish.net/dnscheck
Aaron Esau
8

Tak, stare powiedzenie: „Zmiany DNS mogą potrwać 24–48 godzin, aby propagacja przez Internet” była bardziej precyzyjna „Zmiany DNS mogą być buforowane na dowolnych serwerach DNS, które przeszukiwały ten rekord w ciągu ostatnich 86400 sekund”.

Jeśli chcesz zapewnić redundancję swojego DNS w przypadku, gdy Twój serwer przejdzie w tryb offline, powinieneś zajrzeć do zapasowej usługi DNS (np. Na dyndns.com) lub utworzyć własne dodatkowe NS.

willbradley
źródło
5

Wszystkie serwery DNS w Internecie są „kontrolowane przez inne firmy” (przypuszczam, że można uznać, że główne serwery DNS są w jakiś sposób „zastrzeżone” dla Internetu, ale nie ma technicznego powodu, aby założyć własny prywatny root).

Twój serwer DNS zapewnia sugerowany „czas życia” (TTL) w każdej udzielonej odpowiedzi. Zdalne programy tłumaczące (inne serwery DNS wykonujące rozpoznawanie rekurencyjne dla klientów, biblioteki tłumaczące klienta itp.) Powinny buforować odpowiedź do tego TTL przed usunięciem z pamięci podręcznej.

Jeśli nie widzisz zmian, które wprowadzasz w istniejących rekordach, odzwierciedlonych w zapytaniach w świecie rzeczywistym, prawdopodobnie oznacza to, że twoje wartości TTL są na tyle wysokie, że nie czekasz wystarczająco długo, aby zobaczyć, że istniejące odpowiedzi wygasają z resolvera skrytki wokół sieci.

Niektóre informacje o usterce serwera: dlaczego nazywa się to DNS „Propagacja”?

Evan Anderson
źródło
2

Gdy ktoś (lub jakiś komputer) w Internecie, że tak powiem, chce połączyć się z jednym z twoich komputerów, prosi lokalny serwer nazw o adres IP odpowiadający interesującej go nazwie hosta.

Więc jeśli powiesz komuś „hej, spójrz na moją fajną stronę internetową http://www.example.com ”, komputer tego drugiego faceta zapyta lokalny serwer nazw „hej, jaki jest adres IP www.example.com?”

Zakładając, że lokalny serwer nazw nigdy wcześniej nie szukał odpowiedzi na to pytanie, poprosi główne serwery nazw, aby dowiedzieć się, które serwery obsługują wyszukiwania dla „.com”. Gdy otrzyma tę odpowiedź, zapyta te serwery, które serwery obsługują wyszukiwania dla „example.com”. Kiedy otrzyma tę odpowiedź, czy poprosi te serwery o adres IP dla „www.example.com”.

Gdy serwery na przykład.com odpowiedzą adresem IP www.example.com, podadzą również serwerowi nazw, który poprosił o wskazanie, jak długo powinien pamiętać odpowiedź na to pytanie. Ta wskazówka nazywa się „TTL” lub „czasem życia” i jest mierzona w sekundach. Nie ma gwarancji, że jakikolwiek serwer zwróci jakąkolwiek uwagę na TTL - niektóre serwery nazw mogą być skonfigurowane tak, aby nigdy nie zapamiętywały odpowiedzi na wyszukiwania i zawsze powtarzają ten proces, nawet jeśli będą pytane kilka razy na sekundę. Inne serwery nazw mogą być skonfigurowane do przechowywania odpowiedzi przez długi czas, nawet jeśli sugerujesz, że dane będą przechowywane tylko przez krótki czas, być może dlatego, że chcą zminimalizować ruch sieciowy. TTL to tylko sugestia, a nie wymóg lub gwarancja.

Dosłowna odpowiedź na twoje pytanie - dlaczego rekordy DNS nie rozprzestrzeniają się w Internecie - polega na tym, że nie robią tego, ponieważ nie powinny.

Ponadto, jeśli patrzysz na własne informacje DNS za pomocą witryny zaprojektowanej do badania lub debugowania informacji DNS, istnieje szansa, że ​​witryna nie będzie buforować danych przez długi czas lub wcale, niezależnie od tego, co sugerujesz TTL, ponieważ celem witryny jest prawdopodobnie dostarczenie informacji o tym, co system DNS mówi PRAWIDŁOWO TERAZ, a nie 5, 50 czy 500 sekund temu. Właśnie dlatego zmiany są natychmiast odzwierciedlane i usługa przestaje działać, gdy tylko rozłączysz serwery nazw.

Podejrzewam, że Twoim podstawowym pytaniem może być „jak mogę to skonfigurować, aby jeśli mój serwer DNS uruchomił się ponownie lub dysk twardy zginął, inne osoby w Internecie nadal będą mogły zobaczyć moje strony internetowe?”

Odpowiedzią na to pytanie jest skonfigurowanie kilku serwerów nazw dla swojej domeny i uruchomienie ich na różnych komputerach - najlepiej nie na różnych fizycznych komputerach, ale z różnymi połączeniami sieciowymi, być może nawet w różnych miastach, stanach, krajach lub kontynentach. Większość tych serwerów nazw zostanie skonfigurowana jako „slave”, co oznacza, że ​​szukają informacji o serwerze nazw „master”, a następnie powtarzają te informacje każdemu, kto prosi je o dane.

Zatem w danych WHOIS z rejestratorem nazw domen możesz skonfigurować cztery serwery nazw dla swojej domeny:

ns1.example.com ns2.example.com ns1.otherguy.com ns2.otherguy.com

gdzie ns1.przyklad.com to twój obecny serwer DNS. ns2.example.com może być inną maszyną w Twojej firmie / organizacji - najlepiej nie w tej samej podsieci i na tym samym serwerze (lub pod biurkiem tego samego faceta) co ns1.example.com.

ns1.przyklad.com będzie uważany za serwer „główny”, a jeśli chcesz zmienić swój DNS, wprowadzisz zmiany na tym komputerze.

ns2.example.com zostanie skonfigurowany jako serwer „slave”, który po prostu kopiuje wszelkie dane skonfigurowane na ns1.example.com - ale świat zewnętrzny nie dba o rozróżnienie master / slave, ns2.example .com będzie uważany za „oficjalny” jak ns1.example.com.

ns1.otherguy.com i ns2.otherguy.com to maszyny skonfigurowane gdzie indziej - być może umawiasz się z przyjacielem / kolegą z innej organizacji, aby uruchamiać serwery nazw dla siebie, a może konfigurujesz się z dyndns.com lub everydns.net lub dowolny inny bezpłatny lub komercyjny dostawca DNS. Bez względu na to, jak to wymyślisz, skonfigurujesz te maszyny jako urządzenia podrzędne, aby pobierały informacje DNS na przykład.com z ns1.przyklad.com (twój „master”) i podały te informacje DNS na dowolnym komputerze w internet, który o to prosi.

Gdy rejestrator domeny opublikuje nowe rekordy NS dla Twojej domeny (powinno to być w przybliżeniu natychmiastowe), wtedy gdy ktoś w Internecie zapyta, który serwer nazw domen obsługuje „example.com”, otrzyma cztery odpowiedzi -

ns1.example.com, ns2.example.com, ns1.otherguy.com, ns2.otherguy.com

W zależności od konfiguracji serwera nazw drugiego faceta może traktować tych czterech jako listę i pytać ich pojedynczo, jak wejść na „www.example.com” - lub może zadać wszystkim czterem tym samym pytaniom na w tym samym czasie i po prostu weź odpowiedź z dowolnej odpowiedzi maszyny w pierwszej kolejności. Tak czy inaczej, jeśli ns1.przyklad.com nie działa, ponieważ dysk twardy zmarł lub zdecydowałeś się zrestartować komputer, czy cokolwiek innego, wówczas pozostałe 3 maszyny będą dostępne, aby odpowiedzieć na pytanie, a Twoja witryna będzie nadal widoczna.

Najłatwiejszym sposobem rozwiązania tego problemu jest zarejestrowanie się u dostawcy usług DNS, który będzie obsługiwał DNS dla Twojej domeny - cena tego waha się od bezpłatnych do tysięcy (prawdopodobnie nawet dziesiątek lub setek tysięcy) dolarów miesięcznie, w zależności od żądany poziom usług. Możesz uzyskać dość niezawodną usługę za około 30 USD rocznie. Darmowe usługi nie są okropne, a zatem mają całkiem dobry stosunek wygranych do ceny, ale jeśli zależy Ci na zarabianiu na swojej stronie internetowej, możesz wymyślić 30 USD za roczny DNS .

Następnie postępuj zgodnie z instrukcjami dostawcy usług DNS, aby zmienić rekordy NS u rejestratora nazw domen, a wszystko będzie gotowe.

gbroiles
źródło
0

Buforowanie wykonywane przez inne serwery DNS zależą od TTL przypisanego do zapisu. W twoim przypadku TTL może być bardzo niski lub wysoki. Czy możesz podać nam więcej informacji na temat konfiguracji DNS?

promień
źródło