Uwaga! Wszystkie informacje i solucje zawarte w postach typu DYI mogą z czasem przestać być aktualne. Niektóre publikowane kody źródłowe, będąc zależnymi od używanych konfiguracji platform i sprzętu, mogą nie działać, lub działać nieprawidłowo u niektórych użytkowników. Stosując opisane rozwiązania przyjmujesz do wiadomości i zgadzasz się, że nie ponoszę odpowiedzialności za ich finalne efekty.
Co było, kiedy nie było niczego
To, jak działa dzisiaj Internet zawdzięczamy głównie Paulowi Mockapetrisowi – twórcy systemu DNS. Koncepcję zarządzania domenami opracował on w 1983 jako odpowiedź na problem z rosnącą liczbą komputerów w sieci ARPANET (prekursor współczesnego Internetu). Dostrzegł wtedy niedoskonałości powszechnie używanego wówczas rozwiązania opartego na użytkowaniu pliku „hosts”.
Rozwiązanie oparte o plik „hosts” polegało na wpisywaniu w wierszach pliku tekstowego adresu IP i jednej lub więcej nazw domenowych danego hosta. Aktualny plik „hosts” można było pobrać na swój komputer ze zdalnego serwera, a że w przypadku milionów nazw domenowych w sieci Internet jest to bardzo niewydajne rozwiązanie, Mockapetris i jego kolega – Jon Postel opracowali system DNS oparty o rozproszoną bazę danych umieszczoną na serwerach. W skrócie więc: zadaniem serwerów DNS jest tłumaczenie przyjaznych użytkownikom nazw domenowych (np. staropietka.com) na ich numeryczne odpowiedniki (zwane adresami IP) identyfikujące dany komputer (serwer) w sieci.
Dobry rejestr nie jest zły
Istnieją dwa rejestry powiązane z dzisiejszym tematem: rejestr domeny i rejestr DNS.
Rejestr domeny jest centralną bazą danych, która przechowuje informacje o wszystkich zarejestrowanych domenach w danej końcówce. Zawiera m.in. dane właściciela, termin ważności domeny, a także informacje o serwerach DNS. Rejestr domeny jest w posiadaniu organizacji obsługującej daną końcówkę domeny – np. NASK dla końcówki „.pl” czy Verisign dla końcówki „.com”. Rejestratorzy domen pośredniczą w jego obsłudze – umieszczają w nim dane dane właściciela danej nazwy (kontakt rejestrowy), termin jej ważności oraz informacje, które serwery nazw obsługują domenę. Użytkownik domeny samodzielnie nie jest w stanie dokonać żadnych zmian w tym obszarze (działa to tak, że po aktualizacji przez użytkownika danych w rekordach DNS w panelu domeny, rejestrator wysyła zapytanie do odpowiedniego rejestru domeny – np. NASK, czy Verisign i po stwierdzeniu nieaktualnych danych, aktualizuje je nową zawartością – zmiany dotyczą m.in. danych rejestrowych, czy serwerów DNS obsługujących daną nazwę).
Z kolei rejestr DNS (a dokładniej, strefa DNS domeny) przechowuje natomiast informacje techniczne o danej domenie. To tutaj dokonuje się wpisów, które kierują ruchem internetowym do odpowiednich serwerów lub usług. Tymi danymi zarządza już właściciel domeny, odbywa się to poprzez specjalny panel udostępniony przez rejestratora danej nazwy, ale częściej w panelu serwera, z którego korzystamy.
Rekordów DNS jest ok. 60, podstawowe z nich to:
A – adres IP v4 serwera
AAAA – adres IP v6 serwera (nie jest obligatoryjny)
MX – serwer obsługujący pocztę elektroniczną – może być ich wiele
NS – adres serwera DNS
CNAME – alternatywny dla rekordu A, różnica między nimi jest taka, że rekord CNAME zawsze kieruje na adres hosta, podczas gdy rekord A zawsze kieruje na adres IP
TXT – służy np. do weryfikacji prawa własności domeny w usługach Google, do implementacji specyfikacji Sender Policy Framework (SPF) lub Domain-based Message Authentication Reporting and Conformance (DMARC)
Ale po co w ogóle w tym grzebać?
Ano dlatego, że czasem trzeba utworzyć subdomenę, albo zmienić dane serwera www, czy poczty elektronicznej. Również usługi zewnętrzne, takie jak Google Workspace, Microsoft 365, czy usługi CDN (Content Delivery Network), często wymagają dodania specyficznych rekordów DNS (np. TXT, CNAME) w celu prawidłowej integracji i weryfikacji domeny.
Serwer serwerowi nierówny!
Kiedy wprowadzasz zmiany w rekordach domeny (zmieniasz np. adres IP serwera ze starego na nowy), zapisują się one na tzw. autorytatywnych serwerach DNS. Serwery ISP (dostarczycieli Internetu) i innych podmiotów mają zawsze ustawiony tzw. TTL (time to live – przez jaki czas dane o danej nazwie będą uznawane za aktualne). Gdy po wygaśnięciu TTL użytkownik sieci ponownie wywoła dany adres (np. w przeglądarce), lokalne serwery DNS (takie jak te u ISP) skontaktują się ponownie z autorytatywnym serwerem DNS, skąd uzyskają najnowsze informacje.
Ponieważ różni operatorzy mają ustawiony różny TTL, propagacja zmian może zająć od kilku minut do 48 godzin. To właśnie dlatego zdarza się czasem, że wywołując daną stronę widzisz nieprawidłową zawartość (lub jej zupełny brak) podczas gdy tak naprawdę strona istnieje i ma się dobrze. Co ciekawe, czasem serwery DNS operatorów internetowych padają i mimo, że wciąż masz Internet w komputerze, wiele stron (lub wszystkie się nie wczytują).
Na szczęście istnieją publiczne serwery DNS, które zapewniają w zasadzie bezawaryjne działanie. Najbardziej popularnymi są DNS’y Cloudflare (IP: 1.1.1.1 oraz 1.1.1.2) i Google (IP: 8.8.8.8 oraz 8.8.4.4). Wpisanie ich we właściwościach karty sieciowej (protokół IPv4) (lub w panelu połączenia na routerze) powoduje rozwiązanie problemu raz na zawsze.
Publiczne serwery DNS to jednak nie tylko Cloudflare i Google, bo istnieją również serwery filtrujące złośliwe strony, treści dla dorosłych czy serwery emitujące irytujące reklamy. Przyznam jednak, że niespecjalnie chce mi się bawić w testowanie ich funkcjonalności.
Pytanie jeszcze, dlaczego w ogóle wspominam o publicznych serwerach. Ano dlatego, że wykonując często modyfikacje rekordów różnych domen, nie chcę tracić 24 czy 48 godzin na weryfikację, czy dokonane zmiany są prawidłowe. Używam błyskawicznych DNS’ów Cloudflare i zmiany widzę w zasadzie po kilku minutach.