Rozwiązywanie nazw domenowych - wszystko, co musisz wiedzieć (cz. II)

Rozwiązywanie nazw domenowych to kluczowe zagadnienie dotyczące sieci komputerowych. W poprzedniej części omówiliśmy najważniejszy system rozwiązywania nazw, jakim jest DNS. W części drugiej przedstawione zostaną inne metody.

Sieć komputerowa
Sieć komputerowa
Źródło zdjęć: © Pixabay

Po lekturze pierwszej części poradnika, na początek należy dodatkowo wyjaśnić znaczenie pliku hosts. Jest to plik konfiguracyjny zarówno w systemach Windows jak i Linux, który zawiera spis stron i odpowiadających im adresów IP zdefiniowanych "na sztywno". Przy standardowej konfiguracji kolejności odpytywania klienta DNS, jest to pierwsze miejsce, które zostanie sprawdzone.

  • Domyślna zawartość pliku C:\Windows\System32\drivers\etc\hosts w systemie Windows
  • Domyślna zawartość pliku /etc/hosts w systemie Ubuntu
[1/2] Domyślna zawartość pliku C:\Windows\System32\drivers\etc\hosts w systemie WindowsŹródło zdjęć: © dobreprogramy | Majcher Szymon

Pamięć podręczna

Klient DNS odpytując różne systemy rozwiązywania nazw zapamiętuje wyszukiwane strony na czas określony przez administratorów/twórców systemów, których używamy, i wpisuje je do pamięci podręcznej, o ile oczywiście taka jest zainstalowana. Informacje te przechowywane są w pamięci ulotnej RAM, zatem tracone są przy każdym odłączeniu zasilania.

To na ile czasu rozwiązana nazwa zostanie zapisana w pamięci podręcznej zależne jest od wartości TTL (Time to live) rekordu DNS. Time to live jest sposobem zapewnienia dostępności aktualnej wersji danego zasobu, pomimo częstych aktualizacji. Wartość tą oczywiście możemy zlekceważyć i ustawić własną, zarówno po stronie systemu operacyjnego, jak i serwera DNS, o ile takim zarządzamy.

W przypadku systemu Windows należy ustawić odpowiednie wartości:

  • MaxCacheEntryTtlLimit – dla pozytywnie rozwiązanych nazw,
  • NegativeCacheTime – dla nazw, dla których nie znaleziono translacji na adres IP.

Modyfikacji tej możemy dokonać w kluczu rejestru:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
Wartości konfiguracyjne dla pamięci podręcznej w kluczu rejestru DnsCache
Wartości konfiguracyjne dla pamięci podręcznej w kluczu rejestru DnsCache© dobreprogramy | Majcher Szymon

Pamięć podręczna klienta DNS przydatna jest w sytuacji, w której często odwiedzamy wybrane strony podczas korzystania z komputera. Wówczas adresy stron trafią do pamięci podręcznej i nie będzie potrzeby odpytywania w kółko serwera DNS, co przyspieszy pracę. Ponadto w przypadku awarii serwera DNS adresy rozwiązane i zapisane w pamięci cache są cały czas jeszcze dostępne i możemy się z nich korzystać, podczas gdy serwer DNS z powodu awarii nie rozwiązałby tych nazw.

W przypadku systemów Linux posiadanie domyślnie zainstalowanej pamięci cache jest zależne od posiadanej dystrybucji. Nawet gdy jej nie ma, to nic nie szkodzi, ponieważ serwery DNS również mają pamięć podręczną, z której możemy skorzystać. W sytuacji, w której serwer DNS znajduje się w naszej sieci, mamy z nim doskonała łączność nie stanowi to najmniejszego problemu.

Rozwiązania pozwalające nam na cache’owanie nazw stosowane w systemach Linux to:

  • Dnsmasq
  • Unbound
  • Systemd-resolved
  • Nscd

Jeśli system DNS nie rozwiązał danej nazwy, dalej standardowo podjęta zostanie próba rozwiązania danej nazwy w sieci lokalnej z wykorzystaniem usług LMMNR, mDNS lub NetBIOS.

NetBIOS

Network Basic Input/Output System to stara usługa sieciowa umożliwiająca komunikację między aplikacjami na różnych urządzeniach w obrębie lokalnej sieci. W sieciach windowsowych wykorzystujących NetBIOS, w celu rejestracji i rozpoznawania nazw komputerów stosuje się usługę WINS (Windows Internet Name Service).

Usługa ta pozwala na trzymanie nazw urządzeń z powiązanymi adresami IP w bazie danych dostępnej dla urządzeń w sieci lokalnej. NetBIOS może wykorzystywać jedynie IP w wersji 4. Działa w 4 trybach:

  • Broadcast (b-node) – klient używa tylko zapytań broadcastowych (pyta wszystkich w sieci lokalnej)
  • Point–to–point (p–node) – klient pyta serwer WINS
  • Mixed (m-node) – klient najpierw pyta wszystkich w sąsiedztwie, a potem serwer WINS
  • Hybrid (h-node) – klient pyta najpierw serwer WINS, później rozgłasza swoje zapytanie w sieci lokalnej 

NetBIOS w najnowszych systemach z rodziny Windows nie jest już domyślnie włączony. Mamy jednak możliwość włączenia go w ustawieniach karty sieciowej. W systemach linux pakietem pozwalającym na korzystanie z usługi NETBIOS jest samba, a konkretnie demon nmbd, realizujący komunikację między hostami w sieci NetBIOS. Usługa samba jest usługą pozwalającą na tworzenie środowiska, w którym komputery z systemami Windows i Linux mogą współdzielić ze sobą zasoby.

Włączanie usługi NetBIOS w ustawieniach karty sieciowej systemu Windows
Włączanie usługi NetBIOS w ustawieniach karty sieciowej systemu Windows© dobreprogramy | Majcher Szymon

LLMNR i mDNS

LLMNR i mDNS to zdecentralizowane systemy rozwiązywania nazw, czyli takie, w których nie wykorzystujemy architektury klient-serwer. Działają one jedynie w obrębie sieci lokalnej. Oba protokoły wysyłają zapytanie o nazwę za pomocą transmisji grupowej. Wszystkie urządzenia będące w segmencie sieci lokalnej widzą zapytanie, a urządzenie posiadające daną nazwę odpowiada adresem IP.

LLMNR działa w obrębie sieci zdecentralizowanej, lokalnej (jednego jej segmentu np. tylko w obrębie VLAN) tłumacząc nazwy urządzeń w multicastowej sieci na lokalne adresy IP. Jest on stosowany przede wszystkim w systemach z rodziny Microsoft od Windowsa Visty, chociaż systemd-resolved pozwala na wykorzystywanie tej usługi również w linuxach.

Schemat działania protokołów llmnr i mDNS
Schemat działania protokołów llmnr i mDNS© dobreprogramy | Szymon Majcher

Protokół LLMNR jest przystosowany do pracy zarówno z adresami ipv6 jak i ipv4. W celu rozwiązania nazwy lokalnej urządzenia nasłuchują na porcie 5355 multicastowych adresów: 224.0.0.252 (dla ipv4) i ff02:0:0:0:0:0:1:3 (dla ipv6).

mDNS jest to apple’owa usługa translacyjna dla nazw hostów w sieci lokalnej. Był on stosowany w systemach MAC OS jeszcze przed powstaniem protokołu LLMNR. Systemy linux również go używają. Protokół mDNS wykorzystuje port UDP 5353 podczas nasłuchiwania na adresach: 224.0.0.251 (dla ipv4) i ff02::fb (dla ipv6).

  • Local Group Policy – wyłączanie opcji multicast name resolution
  • Local Group Policy – wyłączanie opcji multi-homed name resolution
[1/2] Local Group Policy – wyłączanie opcji multicast name resolutionŹródło zdjęć: © dobreprogramy | Szymon Majcher

Żeby włączyć lub wyłączyć usługi LLMNR i mDNS należy w systemie windows posłużyć się lokalnymi politykami grupy (Local Group Policy) i wybrać odpowiednią konfigurację dla opcji: Turn off smart multi-homed name resolution oraz Turn off multicast name resolution.

Szymon Majcher, współpracownik dobreprogramy.pl

Programy

Zobacz więcej
internetdnsit.pro
Wybrane dla Ciebie
Komentarze (26)