Wyobraź sobie Internet, w którym za każdym razem, gdy chcesz wejść na stronę, musisz wpisać długi ciąg cyfr zamiast prostego adresu typu mojastrona.pl. Brzmi niewygodnie? Właśnie tak wyglądałaby sieć bez systemu nazw domen DNS.
DNS (Domain Name System) można więc przyrównać do „książki telefonicznej Internetu” i to z dobrego powodu. Podobnie jak książka telefoniczna dopasowuje imię osoby do jej numeru telefonu, DNS dopasowuje przyjazne dla człowieka adresy stron internetowych do przyjaznych komputerom adresów IP. Dzięki temu, gdy wpisujesz w przeglądarce nazwę domeny, system DNS błyskawicznie odnajduje odpowiadający jej adres IP i kieruje Cię na właściwy serwer. Dzieje się tak za każdym razem, gdy odwiedzasz stronę internetową, wysyłasz e-mail czy otwierasz aplikację – DNS nieustannie pracuje w tle.
Ten artykuł stanowi wstęp do zrozumienia systemu rozwiązywania nazw DNS. Wyjaśnię, co to jest DNS i jak działa, przyjrzę się jego różnym składnikom, elementom bezpieczeństwa, takim jak DNSSEC oraz DNS over HTTPS (DoH). W kolejnych artykułach pokażę również, jak wygląda zarządzanie serwerem DNS na przykładzie oprogramowania linuxowego BIND9 oraz jak krok po kroku podejść do diagnozowania i rozwiązywania typowych problemów z DNS. Zademonstrowanie zostanie również narzędzie Nslookup oraz DIG.
Definicja DNS
Główną funkcją tego protokołu jest tłumaczenie łatwych do zapamiętania nazw domen na numeryczne adresy IP, których komputery i serwery używają do znajdowania się nawzajem w Internecie.
Prosty przykład: kiedy wpisujesz nazwę domeny w pasek adresu URL w swojej przeglądarce, wówczas przeglądarka kontaktuje się z serwerem DNS, który jest odpowiedzialny za przetłumaczenie tej nazwy na konkretny adres IP. Na tej podstawie przeglądarka kieruję Cię do właściwej strony internetowej.
Protokół DNS działa na porcie 53 zarówno w komunikacji UDP, jak i TCP.
Działanie DNS krok po kroku
Gdy wpisujesz adres internetowy, taki jak https://smiesznekoty.pl w przeglądarce, następuje kilka kroków, które mają przekształcić tę nazwę domeny na adres IP, umożliwiając połączenie się z witryną. Choć cały proces trwa zaledwie ułamek sekundy i odbywa się w tle, w rzeczywistości sporo dzieje się „za kulisami”. Zobaczmy więc, jak działa DNS krok po kroku.

Gdy wpisujesz nazwę domeny w przeglądarce, ta musi ustalić, gdzie hostowana jest dana witryna – czyli odnaleźć jej adres IP. Proces tłumaczenia nazwy domeny na adres IP nazywa się rozpoznawaniem nazw domen (DNS resolution) i zazwyczaj przebiega według poniższych etapów:
- Sprawdzenie lokalnej pamięci podręcznej (cache)
Zanim komputer skontaktuje się z jakimkolwiek serwerem DNS, najpierw sprawdza swoją pamięć podręczną DNS. Jeśli adres IP dla danej domeny jest już tam zapisany, przeglądarka od razu go używa, a strona ładuje się bardzo szybko – bez potrzeby dalszego rozwiązywania nazw. - Zapytanie do rekurencyjnego resolvera DNS
Jeśli lokalnie nie znaleziono żadnego buforowanego adresu IP, komputer wysyła zapytanie DNS do rekurencyjnego resolvera DNS. Zazwyczaj jest on dostarczany przez dostawcę Internetu (ISP) lub firmę, w której pracujesz. Można też ręcznie wskazać adres takiego serwera w ustawieniach karty sieciowej. - Sprawdzenie cache po stronie serwera rekurencyjnego
Serwer rekurencyjny również sprawdza swoją pamięć podręczną. Jeżeli ma już zapisany adres IP dla tej domeny, zwraca go do klienta, a przeglądarka wyświetla stronę. Jeśli nie ma odpowiedniego wpisu, wysyła zapytanie do jednego z głównych (root) serwerów DNS. - Odpowiedź serwera głównego – wskazanie serwera TLD
Root serwer nie zna konkretnego adresu IP szukanej domeny, ale wie, gdzie znajdują się serwery odpowiedzialne za daną końcówkę domeny (TLD), np. .pl. Zwraca więc do serwera rekurencyjnego informację o lokalizacji odpowiedniego serwera TLD. - Zapytanie do serwera TLD (np. .pl)
Po otrzymaniu informacji z root serwera, rekurencyjny resolver wysyła zapytanie do właściwego serwera TLD, w tym przypadku obsługującego domeny z końcówką .pl. - Wskazanie autorytatywnego serwera DNS
Serwer TLD również nie przechowuje pełnych informacji o każdej domenie, ale wie, który autorytatywny serwer DNS obsługuje daną domenę, np.smiesznekoty.pl. Zwraca więc do serwera rekurencyjnego adres tego autorytatywnego serwera. - Zapytanie do autorytatywnego serwera DNS i zwrócenie adresu IP
Rekurencyjny resolver wysyła kolejne zapytanie – tym razem do autorytatywnego serwera DNS dlasmiesznekoty.pl. Ten serwer przechowuje właściwe rekordy DNS i odpowiada adresem IP powiązanym z tą domeną (np.192.0.2.1). Serwer rekurencyjny zapisuje tę informację w swojej pamięci podręcznej i odsyła ją do przeglądarki, która następnie łączy się z odpowiednim serwerem WWW. Komputer użytkownika również zapisuje ten adres w swojej pamięci podręcznej DNS.
Jakie serwery biorą udział w działaniu DNS
W tym procesie biorą udział cztery główne typy serwerów DNS..
- Resolver rekurencyjny – Jest to serwer, który pomaga komputerowi znaleźć prawidłowy adres IP. Serwer ten wskazany jest ręcznie przez administratora lub przypisany automatycznie przez serwer DHCP. Jeśli resolver rekurencyjny nie posiada informacji na temat nazwy DNS wówczas wysyła zapytania do wielu serwerów w sieci globalnej, aż otrzyma odpowiedź lub zwraca błąd jeśli domena nie istnieje.
- Serwer główny DNS (Root server) – Są to serwery najwyższego poziomu w hierarchii DNS. Nie znają dokładnego adresu IP domeny, ale mogą skierować resolver rekurencyjny do serwera najwyższego poziomu odpowiedzialnego za rozszerzenie domeny (takie jak .com, .org lub .pl).
- Serwer domeny najwyższego poziomu (TLD) – Serwery TLD zarządzają informacjami dla domen na podstawie ich rozszerzeń (takich jak .com, .org lub .pl). Pomagają one kierować resolver rekurencyjny do autorytatywnego serwera DNS dla określonej nazwy domeny.
- Autorytatywny serwer DNS – Przechowuje rzeczywiste rekordy DNS (takie jak adres IP, szczegóły serwera poczty itp.) dla domeny i odpowiada prawidłowym adresem IP po zapytaniu.
Rekordy DNS

Rekordy DNS są podstawowymi elementami składowymi systemu nazw domen. To właśnie one mówią serwerom DNS, dokąd kierować ruch i jak obsługiwać różne usługi powiązane z domeną. Wpisy te przechowywane są na autorytatywnych serwerach DNS w tzw. plikach stref.
Każdy typ rekordu DNS pełni inną funkcję, od wskazywania adresu IP serwera do obsługi poczty e-mail dla domeny. Każda aplikacja wysyła zapytanie o tą samą nazwę DNS ale może prosić o inny typ rekordu dlatego otrzymuje inną odpowiedź.
- klient pocztowy pyta np. o rekord MX,
- przeglądarka www – o rekord A lub AAAA.
Typy rekordów DNS
Przyjrzyjmy się najpopularniejszym typom rekordów DNS i ich zastosowaniu:
- Rekord A – Łączy nazwę domeny z adresem IPv4.
- Rekord AAAA – Łączy nazwę domeny z adresem IPv6.
- Rekord CNAME – Tworzy alias dla domeny. Zamiast wskazywać bezpośrednio na adres IP, rekord ten kieruje jedną nazwę domeny na inną. Na przykład blog.example.com może używać rekordu CNAME, aby wskazywać na www.example.com.
- Rekord MX – Informuje system DNS, dokąd dostarczać wiadomości e-mail wysłane na adresy w danej domenie. Kieruje ruch pocztowy do odpowiedniego serwera poczty dla danej domeny, zapewniając, że e-maile trafią do właściwej skrzynki odbiorczej.
- Rekord TXT – Służy do przechowywania dowolnych danych tekstowych, które mogą służyć różnym celom. Najczęściej służą do weryfikacji własności domeny i bezpieczeństwa poczty e-mail. Przykładowo Microsoft używa tego rekordu do weryfikacji własności domeny.
- Rekord NS – Określa, które serwery DNS są autorytatywne dla danej domeny. Są to serwery DNS, które przechowują rekordy DNS dla danej domeny i odpowiadają na zapytania dotyczące tej strefy. Każdy rekord NS musi posiadać tak zwany glue records. Jest to nazwa określająca doklejony adres IP za pomocą rekordu A wskazujący na rekord NS.
- Rekord PTR – Działa odwrotnie do rekordu A. Zamiast mapować nazwę domeny na adres IP, mapuje adres IP na nazwę domeny. Nazywa się to odwrotnym DNS i jest często używane do weryfikacji tożsamości serwera, szczególnie w systemach pocztowych.
- Rekord SRV – Określa lokalizację konkretnych usług, takich jak Skype, komunikatorów głosowych czy serwerów VoIP. Podaje zarówno nazwę domeny, jak i numer portu, na którym działa dana usługa.
- Rekord SOA – Zawiera ważne informacje administracyjne o strefie DNS, takie jak ostatnia aktualizacja rekordów DNS oraz adres e-mail administratora strefy. Kontroluje również, jak często zapasowe serwery DNS będą aktualizować dane z serwera nadrzędnego DNS.
Rekord SOA i jego pola
W rekordzie SOA znajdują się między innymi następujące pola:
- Serial – Nr seryjny strefy dostarcza informacji o tym czy coś się zmieniło na serwerze nadrzędnym. Serwer zapasowy porównuje swój nr seryjny z serwerem głównym. Jeśli ma niższy to znaczy, że coś się zmieniło w serwerze nadrzędnym i musi wysłać prośbę do niego o pobranie strefy nadrzędnej. Należy pamiętać aby zmieniać ten numer ręcznie na serwerze głównym po każdej zmianie.
- Refresh – Określa w sekundach jak często serwer zapasowy musi się pytać serwera głównego czy się coś zmieniło.
- Retry – Określa, jak długo serwer zapasowy DNS powinien czekać przed ponowną próbą nawiązania kontaktu z serwerem głównym, jeśli ostatnia próba transferu strefy się nie powiodła.
- Expire – Określa czas po upływie, którego serwer zapasowy uznaje serwer główny jako strefę wygasłą i przestaje go odpytywać.
- TTL – Określa czas życia rekordu. Określa jak długo wpis ma być przechowywany w pamięci podręcznej DNS przez inne serwery i klientów.
Metaznaki w pliku strefy DNS
W plikach stref DNS stosuje się również tzw. metaznaki, które ułatwiają zapis konfiguracji:
- znak @ – Oznacza nazwę strefy DNS, np. mojafirma.pl.
- znak . na końcu domeny – Wskazuje na serwer główny. Jeśli nie ma kropki to serwer zakłada, że jest to nazwa hosta, którą trzeba uzupełnić o sufiks DNS serwera.
Przykładowo wpis ftp w strefie mojafirma.pl. zostanie zinterpretowany jako ftp.mojafirma.pl.
Pamięć podręczna systemu DNS
To lista nazw hostów ostatnio przetłumaczonych na adresy IP, przechowywana w pamięci operacyjnej komputera. Przechowywane tu są również mapowania nazw hostów na adresy IP wczytane z pliku hosts. Dzięki temu kolejne odwołania do tych samych domen są znacznie szybsze, bo system nie musi za każdym razem pytać zewnętrznych serwerów DNS.
W systemie Windows zawartość pamięci podręcznej DNS można podejrzeć i wyczyścić za pomocą następujących poleceń w wierszu poleceń:
ipconfig /displaydns
ipconfig /flushdns
Plik hosts

Wspomniałem wyżej o pliku hosts. Jest to zwykły plik tekstowy znajdujący się na dysku komputera, w którym można ręcznie zdefiniować mapowania adresów IP na jedną lub więcej nazw domenowych dla danego hosta. Zawartość pliku hosts jest ładowana do pamięci podręcznej DNS systemu i brana pod uwagę przy rozwiązywaniu nazw.
Typowe lokalizacje pliku hosts:
Windows - C:\Windows\system32\drivers\etc\hosts
Linux - /etc/hosts
Oprócz pliku hosts można spotkać jeszcze starszy plik lmhosts. To również plik tekstowy znajdujący się na dysku komputera, w którym zmapowane są nazwy NetBIOS na adresy IP hostów spoza podsieci lokalnej.
NetBIOS to starszy protokół sieciowy używany do komunikacji między urządzeniami w tej samej sieci lokalnej, m.in. do udostępniania plików i drukarek. Umożliwia hostom w tym samym segmencie sieci wzajemne rozpoznawanie nazw bez udziału serwera DNS. Protokół ten jest dziś uznawany za przestarzały i jest stopniowo wypierany przez nowsze mechanizmy.
Lokalizacja pliku lmhosts w systemie Windows:
Windows - C\Windows\system32\drivers\etc\lmhost
Oprócz protokołu NetBIOS istnieje jeszcze protokół LLMNR, działa na podobnej zasadzie i również tylko w obrębie sieci lokalnej. Aby LLMNR działał w systemach Microsoft Windows, musi być włączona funkcja odnajdywania sieci (Network Discovery).
Sufix DNS
Sufiks DNS to automatycznie dopisywane rozszerzenie do nazwy domeny, gdy próbujesz uzyskać dostęp do witryny lub usługi w sieci. Umożliwia komputerowi uzupełnianie nazw domen bez konieczności wpisywania ich w pełnej postaci.
Załóżmy, że jesteś w sieci firmowej, a domeną Twojej firmy jest example.com. Jeśli w przeglądarce wpiszesz tylko intranet, komputer sam z siebie nie wie, czym jest „intranet”, ponieważ nie jest to pełna nazwa domenowa. System automatycznie doda skonfigurowany sufiks DNS, w tym przypadku example.com i przekształci wpisaną nazwę w intranet.example.com.
Połączenie nazwy hosta z sufiksem tworzy w pełni kwalifikowaną domenę (FQDN). Obejmuje ona wszystkie części nazwy domeny, i jest zakończona znakiem kropki.
Przykład:
serwer1.firma.pl. – W pełni kwalifikowana nazwa domeny.
serwer1 – nazwa hosta.
firma.pl. – sufiks DNS.
Przypisanie adresu DNS w systemie Windows oraz Linux
W systemie Windows, aby przypisać adresy serwerów DNS, z których chcemy korzystać, należy w właściwościach wybranego połączenia sieciowego edytować ustawienia TCP/IPv4 i ręcznie wpisać preferowany oraz alternatywny serwer DNS. Dzięki temu system zamiast domyślnych adresów (np. od dostawcy internetu) będzie korzystał z serwerów DNS, które sam wskażesz.

W systemie Linux aby skonfigurować DNSy należy posłużyć się plikiem /etc/resolv.conf. W środku pliku umieszcza się adresy IP serwerów DNS w postaci wpisów nameserver. Przykładowo można wskazać publiczne serwery DNS Cloudflare oraz Google:

Bezpieczeństwo DNS
DNS jest kluczowym elementem działania Internetu, ale został zaprojektowany w czasach, gdy bezpieczeństwo nie było priorytetem. Obecnie, w obliczu rosnących zagrożeń online, takich jak ataki typu man-in-the-middle, przechwytywanie danych i podszywanie się pod serwery DNS, zabezpieczanie zapytań DNS stało się koniecznością.
Aby sprostać tym wyzwaniom, wprowadzono kilka technologii mających na celu poprawę bezpieczeństwa DNS. Poniżej omówimy sobie najważniejsze z nich.
- DNSSec – Mechanizm zabezpieczający przed podmianą odpowiedzi DNS. Używa podpisów kryptograficznych, aby zweryfikować, czy odpowiedź na zapytanie DNS nie została naruszona po drodze. W momencie, gdy wysyłamy żądanie DNS wówczas serwer z włączonym DNSSEC odpowiada adresem IP i podpisem cyfrowym. Na jego podstawie jesteśmy w stanie sprawdzić czy odpowiedź jest autentyczna. Przeglądarka sprawdza podpis, aby upewnić się, że jest zgodny. Jeśli tak, przechodzisz do właściwej witryny. Jeśli nie, Twoja przeglądarka wie, że coś jest nie tak i blokuje połączenie. Tak więc DNSSEC nie ukrywa ani nie szyfruje informacji, ale zapewnia, że otrzymane informacje są wiarygodne i nie zostały zmienione przez atakującego.
- DoT (DNS over TLS) – Szyfruje komunikację za pomocą protokołu TLS. Cała komunikacja DNS między klientem a serwerem jest zaszyfrowana, Nie są widoczne żadne przesyłane żądania DNS. To tak, jakby wysyłać żądania DNS w zamkniętej kopercie, którą może otworzyć tylko docelowy serwer DNS. Domyślnie działa na porcie 853, który często jest blokowany przez zapory ogniowe.
- DoH (DNS over HTTPS) – Podobnie jak w DoT żądania DNS są ukrywane w ruchu sieciowym, w tym przypadku jednak za pomocą protokołu HTTPS, co znacznie utrudnia komukolwiek szpiegowanie odwiedzanych przez Ciebie stron internetowych. Działa na porcie 443, dzięki czemu wygląda dla sieci jak standardowy ruch WWW i jest rzadziej blokowany przez zapory ogniowe. Aby ukryć żądania DNS można skorzystać z aplikacji Simple DNSCrypt.
Podsumowanie
DNS to podstawowy system, który umożliwia płynne poruszanie się po Internecie zamieniając czytelne dla człowieka nazwy domen na adresy IP zrozumiałe dla komputerów. Proces ten obejmuje serię zapytań na różnych serwerach DNS, w tym serwerach głównych, serwerach najwyższego poziomu i serwerach autorytatywnych, które współpracują ze sobą, aby zapewnić Ci uzyskanie właściwego adresu IP w milisekundach. Chociaż proces ten odbywa się w tle, to właśnie on umożliwia płynne działanie Internetu za każdym razem, gdy klikniesz łącze lub wpiszesz nazwę witryny. W kolejnym artykule pokaże Ci jak skonfigurować główny oraz podrzędny serwer DNS wykorzystując do tego wirtualne maszyny.