Jak sprawdzić rekordy DNS (bez zgadywania)

Większość „awarii" DNS to nie awarie. Jak czytać rekordy, szanować TTL i sprawdzać propagację na więcej niż jednym resolverze.

Coś się zepsuło. Strona się nie ładuje, maile się odbijają, albo godzinę temu zmieniłeś rekord i nic się nie dzieje. W dziewięciu przypadkach na dziesięć odpowiedź siedzi w DNS — trzeba tylko wiedzieć, jak spojrzeć.

DNS to książka adresowa internetu: zamienia example.com na IP, z którym przeglądarka faktycznie może się połączyć. Gdy szwankuje, wszystko dalej w łańcuchu wygląda na zepsute, choć serwer jest cały. Przejdźmy przez to, jak czytać go jak należy.

Rekordy, które warto znać

Nie trzeba ich znać wszystkich na pamięć. Oto te, które się przewijają:

Rekord Co robi Kiedy gryzie
A Mapuje nazwę na adres IPv4 Strona wskazuje na zły/stary serwer
AAAA To samo, ale IPv6 Użytkownicy IPv6 cię nie dosięgają
MX Dokąd trafia poczta domeny Maile się odbijają albo znikają
TXT Dowolny tekst — SPF, DKIM, weryfikacja Poczta ląduje w spamie; weryfikacja pada
NS Które serwery nazw są autorytatywne Cała domena rozwiązuje się źle
CNAME Alias wskazujący jedną nazwę na drugą Subdomena się nie rozwiązuje
SOA Metadane administracyjne strefy Rzadko — ale wskazuje główny NS
CAA Które CA mogą wystawiać ci certyfikaty Wydanie certyfikatu zostaje odrzucone

Nasze narzędzie DNS lookup odpytuje wszystkie dziesięć obsługiwanych typów — A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, SRV i PTR — wobec wybranego resolvera: Google (8.8.8.8), Cloudflare (1.1.1.1) lub Quad9 (9.9.9.9), i pokazuje surowy wynik w stylu dig z zachowanymi TTL. Czytasz to samo, co sysadmin widzi w terminalu.

Widzisz rekord A wskazujący na nieznane IP? IP WHOIS w sekundy powie, do kogo należy.

TTL: liczba, którą wszyscy ignorują, dopóki nie zaczyna mieć znaczenia

Każdy rekord niesie TTL — time to live, w sekundach. To jak długo resolverom wolno cache'ować odpowiedź, zanim zapytają ponownie. TTL 3600 znaczy „ufaj temu przez godzinę".

Ta jedna liczba tłumaczy większość paniki „moja zmiana DNS nie działa". Prosty przykład: poprawiasz rekord A o 12:00, ale jego TTL to 86400 (całą dobę). Resolwery, które odpytały twoją domenę o 11:30, przez prawie 24 kolejne godziny wciąż zwracają stare IP — więc dla części użytkowników strona „przenosi się" dopiero następnego dnia. Nic się nie zepsuło; po prostu powiedziałeś im, że mogą cache'ować tę odpowiedź przez dobę.

Praktyczna zasada, której się trzymamy: obniż TTL dzień wcześniej, zanim zaplanujesz zmianę rekordu. Zejdź do 300 sekund, poczekaj, aż wygaśnie stary wysoki TTL, i dopiero wtedy wprowadź zmianę. Teraz przełączenie propaguje się w minuty zamiast w dobę. Potem podnieś TTL z powrotem, żeby resolwery nie odpytywały bez przerwy twoich serwerów nazw.

„Zmieniłem — czemu nie jest na żywo?"

Bo DNS nie ma przycisku „odśwież". Nie ma centralnego serwera, do którego się pushuje. Twój autorytatywny serwer nazw ma nową wartość natychmiast — ale każdy resolver, który już zcache'ował starą, będzie ją podawał, dopóki nie wygaśnie jego TTL. A różne resolwery, w różnych krajach, wygasają w różnych momentach.

Dokładnie dlatego zbudowaliśmy sprawdzarkę propagacji DNS tak, jak ją zbudowaliśmy. Zamiast zapytać jeden resolver i na tym poprzestać, wystrzeliwuje to samo zapytanie równolegle do 15 publicznych resolverów rozsianych po świecie — Google i Cloudflare w USA, Quad9 w Szwajcarii, Mullvad w Szwecji, CZ.NIC w Czechach, Alibaba i DNSPod w Chinach i inne. Widzisz, jak nowy rekord zapala się region po regionie, gdy wygasają cache. Gdy wszystkie 15 się zgadza, naprawdę się spropagowałeś.

Sprawdzenie propagacji DNS: wszystkie 15 resolverów na świecie odpowiedziało (15/15), każdy zwraca te same adresy — zmiana spropagowała się wszędzie

Reguła kciuka: „propagacja" to nie wolny internet. To cache honorujące TTL, który ustawiłeś.

Gdy problemem jest sam resolver

Czasem rekordy są poprawne wszędzie, a strona i tak rozwiązuje się ślamazarnie. To wskazuje na opóźnienie resolvera, nie na wartości rekordów.

Nasze narzędzie czasu odpowiedzi DNS mierzy właśnie to: uruchamia dig wobec tych samych 15 resolverów, po kilka razy każdy, i raportuje minimum, maksimum oraz średni czas zapytania na resolver. Jeśli twoi użytkownicy są w Niemczech, a twoje serwery nazw odpowiadają Frankfurtowi w 8 ms, ale Sydney w 280 ms, to realny, mierzalny sygnał — może czas na dostawcę DNS anycast.

Czas odpowiedzi DNS na 15 resolverach: te bliskie odpowiadają w jednocyfrowych milisekundach (Quad9 — 12 ms), odległe są zauważalnie wolniejsze (Canadian Shield — 92 ms)

Kto rządzi strefą: WHOIS i serwery nazw

Jeśli rekordy NS wyglądają źle, pytanie brzmi kto je ustawił. Domain WHOIS daje ci rejestratora, daty rejestracji i wygaśnięcia, kody statusu domeny, czy DNSSEC jest włączony i — co kluczowe — serwery nazw, które rejestr ma w aktach.

Jedna rzecz warta wiedzy, bo tańsze narzędzia robią to źle: wiele nowszych rozszerzeń jak .tools, .app i .dev w ogóle nie prowadzi tradycyjnego serwera WHOIS. Zapytasz je po staremu — nic nie dostaniesz. Nasz lookup automatycznie przechodzi na RDAP — nowoczesny zamiennik oparty na JSON — gdy tylko wykryje chudą lub brakującą odpowiedź WHOIS, więc domena .tools zwraca ten sam uporządkowany wynik co .com. Natknęliśmy się na to zresztą na własnej domenie. Poprawka stała się funkcją.

Jeśli serwery nazw w rejestrze nie zgadzają się z tym, co ustawiłeś u swojego hosta DNS, znalazłeś swój błąd: domena wskazuje zupełnie gdzie indziej i żadna edycja rekordów nie pomoże, dopóki nie naprawi się delegacji NS.

Szybka lista kontrolna, gdy DNS „nie działa"

  1. Sprawdź rekord, który zmieniłeś, narzędziem lookup. Czy nowa wartość w ogóle tam jest?
  2. Sprawdź TTL. Wysoki? Po prostu czekasz na wygaśnięcie cache'a.
  3. Zrób sprawdzenie propagacji. Mieszane wyniki po regionach = cache jeszcze wygasają; spójne wszędzie = jest na żywo.
  4. Zweryfikuj rekordy NS wobec swojego hosta DNS przez WHOIS. Rozbieżność delegacji jest prawdziwym winowajcą częściej, niż myślisz.
  5. Wciąż wolno? Zmierz czas odpowiedzi resolvera, zanim obwinisz swoją aplikację.

Podsumowując

Większość „awarii" DNS to nie awarie. To TTL robiące dokładnie to, co im kazałeś, albo delegacja wskazująca gdzieś, o czym zapomniałeś. Czytaj rekordy, szanuj TTL i sprawdzaj propagację na więcej niż jednym resolverze, zanim cokolwiek stwierdzisz. Zacznij od lookupu — odpowiedź zwykle jest tuż tam, w wyniku.

— zespół checkbox.tools

Najczęstsze pytania

Ile naprawdę trwa propagacja DNS?

Dokładnie tyle, ile TTL starego rekordu — nie więcej, nie mniej. Nie ma magicznych „24–48 godzin": jeśli TTL wynosił 300, większość resolverów odświeży się w pięć minut; jeśli 86400 — czekasz do doby. Właśnie dlatego obniżasz TTL z wyprzedzeniem, zanim w ogóle ruszysz sam rekord.

Czemu różne „sprawdzarki" pokazują różne wyniki dla tej samej domeny?

Bo każda odpytuje inny resolver, a resolwery odświeżają swoje cache w różnych momentach. Jeden węzeł już widzi nowy rekord; ten obok wciąż podaje starą wartość z cache. To nie błąd — to właśnie jest propagacja. Żeby zobaczyć cały obraz, spójrz na wiele resolverów naraz sprawdzarką propagacji DNS, zamiast ufać jednej stronie.

Czym jest TTL, po ludzku?

To data ważności odpowiedzi. Zapisując rekord, mówisz resolwerom: „możesz traktować to jako poprawne przez tyle a tyle sekund". Dopóki TTL nie wygaśnie, nie pytają twojego serwera ponownie — zwracają zapisaną kopię. Niski TTL to szybsze zmiany, ale więcej zapytań do twoich serwerów nazw; wysoki — odwrotnie.

Czym DNS Lookup różni się od sprawdzenia propagacji?

DNS Lookup pokazuje, co jeden resolver zwraca w tej chwili — przydatne do odczytania konkretnych wartości rekordów i TTL. Sprawdzenie propagacji zadaje to samo pytanie wielu resolverom na świecie naraz — przydatne do potwierdzenia, że zmiana dotarła wszędzie. Pierwsze odpowiada „co jest w rekordzie?"; drugie — „czy wszyscy już to widzą?".

Strona ładuje się u mnie, ale nie u znajomego — to DNS?

Bardzo możliwe. Jeśli niedawno zmieniłeś rekord, twój resolver mógł już pobrać nową wartość, podczas gdy resolver znajomego wciąż trzyma w cache starą, dopóki nie wygaśnie TTL. Przepuść domenę przez sprawdzenie propagacji: jeśli wyniki różnią się między regionami, to cache — po prostu daj im czas. Jeśli wszędzie jest spójnie, a strona nadal się nie ładuje, przyczyną nie jest już DNS.