Rozwiązywanie nazw domenowych - wszystko, co musisz wiedzieć (cz. I)
Korzystając z zasobów internetu, zwykle nie zastanawiamy się nad tym, co dzieje się, gdy w pole wyszukiwarki wpisujemy nazwy naszych ulubionych serwisów internetowych lub ich adresy URL. Wyszukiwanie informacji, chociaż z perspektywy użytkownika jest bardzo proste, kryje w sobie skomplikowany proces zapytań, odpowiedzi i translacji.
16.06.2022 | aktual.: 21.06.2022 07:59
Zacznijmy od tego, że przeglądarka internetowa sama z siebie nie rozumie czym jest wpisana przez nas nazwa domenowa (np. dobreprogramy.pl). Żeby się tego dowiedzieć musi istnieć system rozwiązywania nazw, do którego aplikacja kliencka, taka jak przeglądarka, będzie się mogła odwołać z zapytaniem.
System rozwiązywania nazw służy do tłumaczenia nazw adresów domenowych, takich, do jakich przywykliśmy (np. wp.pl) na adresy IP docelowych serwerów (np. 212.77.98.9). Gdy nazwa mnemoniczna zostanie przetłumaczona na adres IP, aplikacja kliencka (taka jak przeglądarka) będzie mogła połączyć się ze wskazanym adresem. Gdyby systemy rozwiązywania nazw nie istniały, prawdopodobnie musielibyśmy posługiwać się adresami IP w przeglądarkach, a nie bliskimi nam już nazwami takimi jak adresy URL.
Najpopularniejszym, bo używanym w każdym systemie operacyjnym i najczęściej priorytetyzowanym tego typu systemem jest usługa DNS, ale warto też wspomnieć tutaj o starszych rozwiązaniach, typu NetBIOS, mDNS i LLMNR.
Jak działa system rozwiązywania nazw?
Podczas wyszukiwania adresów (np. tech.wp.pl) stawiamy naszego klienta rozwiązywania nazw przed problemem ustalenia pod jakim adresem IP dostępny jest szukany zasób. Domyślna lista kroków jaką wykona klient DNS systemu Windows 10, w celu translacji adresów domenowych na adresy IP prezentuje się następująco:
- Sprawdzenie, czy nazwą hosta, którego dotyczy zapytanie, nie jest komputer pytający,
- Odwołanie się do pliku hosts lub/i pamięci podręcznej,
- Przekazanie zapytania do serwera DNS,
- Próba rozwiązania nazwy z wykorzystaniem usług LLMNR, mDNS i NetBIOS, w zależności od używanej wersji protokołu IP.
Kolejność tę oczywiście można zmieniać. W Windowsach należy w tym celu zmodyfikować priorytety w kluczu rejestru:
KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\ServiceProvider
W systemach Linux konfiguracja ta jest bardzo podobna. Można ją znaleźć i edytować w pliku /etc/nsswitch.conf.
DNS
W sytuacji, w której klient DNS nie odnajdzie wpisu dotyczącego szukanej strony w pliku hosts, ani pamięci cache (o ile istnieje) standardowo następnym krokiem będzie odpytanie usługi systemu DNS. System ten jest hierarchiczny, składa się z dwóch typów serwerów: root (serwery domeny głównej), oraz serwerów autorytatywnych, które posiadają wszystkie aktualne informacje o komputerach dostępnych w danej domenie:
- Użytkownik internetu łącząc się z daną stroną internetową (po odpytaniu pamięci cache i hosts) za pomocą klienta DNS odwołuje się do rekursywnego resolvera DNS. Może to być lokalny serwer DNS dostępny w naszej sieci lub sieci firmowej, serwer DNS oferowany przez naszego dostawcę internetowego lub ogólnodostępne serwery DNS oferowane przez Google, Cloudflare, OpenDNS itp...),
- Resolver DNS w sytuacji, gdy nie wie jaki adres ma dana strona odpytuje serwery główne (Root servers), które zwracają listę autorytatywnych serwerów nazw dla odpowiedniej domeny najwyższego poziomu – top level domain (np. pl lub com),
- Resolver DNS łączy się Domenowym serwerem DNS, który przechowuje informacje o tym pod jakim adresem znajduje się strona z jego domeny. Wskazuje więc Serwer wyszukiwanego hosta Resolverowi DNS,
- Resolver DNS łączy się z Serwerem strony i sprawdza czy dana usługa z jaką chce się połączyć jest tam rzeczywiście dostępna. Jeśli tak, to Resolver DNS zapisuje daną stronę w swojej pamięci podręcznej i odsyła informację zwrotną do klienta DNS i możemy wyświetlić stronę.
Rozwiązując to na konkretnym przykładzie adresu tech.wp.pl:
- Najpierw pytane są root servers o autorytatywny serwer DNS dla TLD .pl,
- Pytany jest serwer dla TLD, aby dowiedzieć się jaki serwer niższego rzędu posiada informacje co kryje się pod tech.wp.pl. Jako odpowiedź zwracany jest domenowy serwer DNS Wirtualnej Polski – wp.pl,
- Potem pytany jest serwer dns wp.pl, wynikiem czego jest rozwiązywanie tech.wp.pl na adres IP 193.222.135.28.
Konfiguracja klienta DNS
Jeśli w sieci skonfigurowany jest serwer DHCP to powinniśmy mieć możliwość pobrania automatycznej konfiguracji adresów serwerów DNS. W celu wskazania alternatywnej konfiguracji należy wprowadzić wybrane adresy serwerów DNS w ustawieniach karty sieciowej (Windows) lub w pliku konfiguracyjnym /etc/resolv.conf (Ubuntu).
Strefa DNS
Strefa DNS jest to baza danych zawierająca rekordy z informacjami o danej domenie DNS.
Przykładem strefy DNS może być domain.com. W strefie mogą znajdować się urządzenia o nazwach: ftpserver, mailserver, wówczas będą one nosiły nazwy na przykład: ftpserver.domain.com, mailserver.domain.com.
Nieważne są nazwy, ważna jest kolejność. Informacja o domenie najwyższego rzędu - o domenie światowej, krajowej, regionalnej, czy lokalnej znajduje się na końcu (.com). Potem znajdujemy informacje o nazwie strefy (domain). Niższe w hierarchii strefy takie jak subdomeny i urządzenia w (sub)domenie dopisywane są przed nimi, jak zaprezentowano na przykładzie ftpserver.domain.com.
Rekordy DNS
Do poprawnego działania strefy DNS potrzebna jest jej odpowiednia konfiguracja. Regułami konfiguracyjnymi dla domeny są Rekordy DNS. Możemy z nich odczytać informacje o tym: pod jakimi adresami IP w wersji 4 i 6 dostępna jest domena (Rekord A i AAAA), jakie dana domena ma aliasy (CNAME), jakie serwery pocztowe działają w obrębie domeny (MX), jaki adres używany będzie w celu rozwiązania adresu IP na nazwę domenową (PTR) oraz jakie podmioty mogą wystawiać certyfikaty (CAA) lub wysyłać wiadomości email w imieniu domeny (SPF w rekordzie TXT).
Dbanie o rekordy DNS jest ważnym obowiązkiem administratorów z punktu widzenia dostępności, ponieważ nieaktualność wpisów lub brak płynnego przejścia pomiędzy adresami IP pod jakimi dostępna będzie domena może skutkować brakiem dostępu do domeny na określony czas.
Szymon Majcher, współpracownik dobreprogramy.pl