Propagacja zmian serwerów DNS – dlaczego trzeba czekać ?

Dlaczego po zmianie DNS danej domeny czasem trzeba czekać 24 godziny, a czasem zmiana widoczna jest od razu? Dlaczego widzę stronę ze starego serwera, a mój sąsiad już z nowego?

Zacznijmy od początku, czyli co to są serwery DNS?

Aby strona www była widoczna w internecie, musi istnieć serwer na którym znajdują się pliki strony. Serwer taki posiada publiczny adres IP, dzięki czemu dowolne urządzenie w internecie może się z nim połączyć i pobrać stronę. Jednak adres IP nie wygląda zbyt korzystnie i jest dość trudny do zapamiętania, przykładowo: 91.211.222.16

W celu uczynienia internetu bardziej przyjaznym miejscem, wymyślono domeny. Domena to przyjazna nazwa, dzięki której nie musimy pamiętać adresu IP.

Przykładowa domena to: domena-klienta.pl

Skąd jednak przeglądarka wie, z jakim serwerem, a więc z jakim adresem IP ma się połączyć aby pobrać stronę?

Każda domena powinna wskazywać co najmniej dwa DNSy (domain name server), czyli serwery zamieniające nazwę domeny na adres IP. Przykładowo firma hostingowa Smarthost posiada trzy własne niezależne serwery DNS:

dns.smarthost.pl

dns2.smarthost.pl

dns3.smarthost.pl

Adresy serwerów DNS podaje się w panelu rejestratora domeny. Zapisywane są one u nadrzędnego rejestratora. W przypadku domen z końcówką .pl głównym rejestratorem jest NASK.

Jeśli zakupiłeś domenę w Smarthost, domyślnie ustawione są nasze DNSy. Wystarczy więc dodać domenę poprzez cPanel → Domeny dodatkowe, aby nasze DNSy przypisały domenie właściwy adres IP na naszym konkretnym serwerze, na którym umieścisz swoją stronę www.

Możesz sprawdzić, jakie DNSy ma ustawiona konkretna polska domena poprzez narzędzie NASK whois, dostępne pod adresem: https://www.dns.pl/cgi-bin/whois.pl

Jak dokładnie przeglądarka internetowa odpytuje serwery DNS ?

Droga, jaką musi pokonać przeglądarka, aby dowiedzieć się jaki adres IP kryje się za przyjazną domeną, została pokazana na diagramie:

Czy wpisy w DNS posiadają cache ? Co znaczy TTL?

Okazuje się jednak, że taka droga nie jest pokonywana zawsze. Aby odciążyć serwery DNS i uchronić je przed milionami zapytań na sekundę z całego świata uznano, że adres IP kryjący się za domeną będzie zapamiętywany w pamięci podręcznej urządzeń na drodze przeglądarka → DNS domeny.

Czas, przez jaki adres jest trzymany w tej pamięci podręcznej to TTL. Można go ustawić dla poszczególnych rekordów poprzez np. Zone Editor w cPanelu.

W każdym z miejsc po lewej stronie diagramu adres strony może zapisać się w pamięci podręcznej. Pamięci podręczne są niezależne, a więc niezależnie zapisuje się wartość TTL. Odmierzanie czasu do ponownego pobrania adresu również jest więc niezależne.

Oznacza to, że gdy np. pierwszy raz wchodzisz na daną stronę, to przy TTL wynoszącym 4 godziny, kolejne odświeżenie nastąpi za 4 godziny we wszystkich miejscach po drodze, o ile nikt wcześniej nie wszedł na tę stronę.

Jeśli przykładowo ktoś w Twoim domu wcześniej wszedł na tę stronę z innego komputera, będzie ona w pamięci podręcznej Twojego routera, urządzeń sieciowych Twojego dostawcy internetu, oraz w pamięci podręcznej DNS publicznych, z których korzystacie. Ty wchodząc ze swojego komputera otrzymasz adres zapisany w pamięci podręcznej routera, i zapiszesz go w swoim komputerze i przeglądarce ze świeżym czasem TTL, a więc w omawianym przypadku 4 godziny. W tym czasie wartość TTL na routerze i dalszych urządzeniach będzie już niższa niż 4 godziny, a więc może się zdarzyć, że inni domownicy będą widzieć stronę na nowym adresie IP, a Ty na swoim komputerze jeszcze na poprzednim.

Podobnie sytuacja wygląda, gdy ktoś korzystający z usług dostawcy Twojego internetu wejdzie na daną stronę, lub gdy ktoś na świecie wejdzie na tę stronę korzystając z DNS publicznych tych samych co Ty. Wtedy również będziecie na innych etapach odmierzania TTL, więc jeśli zmieni się adres IP strony, będziecie na innych etapach propagacji.

Propagacja jest to więc rozgłaszanie się nowego adresu strony, będące na różnym etapie na różnych urządzeniach w internecie. Propagacja zależy od wartości TTL.

Zmiana serwerów DNS, czyli propagacja

Propagacja występuje zawsze, gdy zmienia się rekord DNS, a więc nie musi to być zmiana DNS domeny. Może to być również np. przeniesienie konta hostingowego z jednego serwera na drugi wewnątrz serwerowni jednego hostingodawcy. Wtedy DNSy u rejestratora domeny pozostają niezmienione, ale adres IP serwera się zmienia.

Jak przyspieszyć propagację DNS?

  • Jeżeli stary adres IP zapisany jest w Twojej przeglądarce, wystarczy ją wyłączyć i włączyć, czasem trzeba również wyczyścić pamięć podręczną.
  • Jeśli na komputerze, można go uruchomić ponownie lub użyć polecenia np. w systemie Windows jest to komenda ipconfig /flushdns.
  • W przypadku routera, można odłączyć go od prądu i podłączyć ponownie, co powinno wyczyścić jego pamięć podręczną DNS.
  • W urządzeniach położonych dalej (operator internetu, DNS publiczne) nie mamy możliwości wyczyszczenia pamięci podręcznej, musimy więc czekać aż odmierzane przez nich TTL wygaśnie i pobiorą świeży adres.

Jak można uniknąć długiej propagacji DNS?

Jeśli przed zmianą DNS domeny zmienisz TTL na niską wartość np. 300 czyli 5 minut, propagacja na wszystkich urządzeniach będzie wynosić nie więcej niż 5 minut.

Uwaga!

Zmianę TTL musisz wykonać odpowiednio wcześniej, a więc doliczyć obecny TTL, ponieważ to z obecnym TTL jest trzymana obecna pamięć podręczna. Najlepiej ustawić TTL dzień lub dwa przed zmianą DNS domeny, wtedy jej przeniesienie na inny serwer, a więc zmiana adresu IP strony na inny odbywa się już z nowymi TTL.

Zaktualizowanie rekordów DNS na poprzednim hostingu – w jakim celu?

Warto również przy zmianie DNS domeny zmienić poszczególne rekordy A oraz MX na nowe również na starym hostingu, tak aby trafiające na serwery DNS poprzedniego hostingu zapytania również widziały nowy adres IP. Powinno to przyspieszyć propagację w niektórych sytuacjach.

Rozwiązuje to również późniejszy problem z niedocierającymi wiadomościami email wysłanymi przez innych użytkowników starego hostingu. Korzystają oni bowiem z DNS starego hostingu i może on nie wychodzić poza swoje własne rekordy, a więc nie widzieć nowych DNSów ustawionych dla domeny u rejestratora domeny.

Michał

Dodaj komentarz