Sieci komputerowe

DNS

DNS zamienia nazwy domenowe na informacje potrzebne do komunikacji, najczęściej adresy IP. Dzięki temu użytkownik może wpisać nazwę, a komputer ustali, gdzie znajduje się odpowiednia usługa.

Domain Name Systemresolverrekordy DNSTTLreverse DNS

Klasyczny DNS

UDP 53

DNS używa też

TCP 53

Cache

TTL

Reverse

PTR

Podstawy

Czym jest DNS

DNS to Domain Name System. Jego podstawowa rola polega na zamianie nazw domenowych na informacje potrzebne do komunikacji, najczęściej na adresy IP.

Gdy użytkownik wpisuje www.example.com, komputer potrzebuje ustalić adres IP związany z tą nazwą. DNS nie przesyła strony WWW. DNS pomaga ustalić, gdzie znajduje się odpowiednia usługa.

01

Nazwa a adres IP

Nazwa server.example.com jest wygodna dla człowieka. Komunikacja sieciowa wymaga jednak adresu IP, np. dokumentacyjnego adresu 192.0.2.10. W materiałach używamy zakresów dokumentacyjnych: 192.0.2.0/24, 198.51.100.0/24 i 203.0.113.0/24.

server.example.com → DNS → 192.0.2.10
Ludzie łatwiej zapamiętują nazwy, natomiast komunikacja IP wykorzystuje adresy IP.
02

Domena, FQDN i hierarchia DNS

FQDN to Fully Qualified Domain Name, czyli pełna nazwa DNS. W przykładzie www.example.com label www oznacza hosta, example to domena, a com to TLD. Formalnie pełna nazwa może mieć końcową kropkę: www.example.com. Kropka oznacza root DNS.

Tabela: Poziom, Przykład, Znaczenie
PoziomPrzykładZnaczenie
Root.Wskazuje odpowiednią część hierarchii DNS.
TLD.comDomena najwyższego poziomu, podobnie jak .pl albo .org.
Domenaexample.comStrefa obsługiwana przez authoritative DNS.
Hostwww.example.comPełna nazwa hosta używana przez klienta.

Authoritative DNS przechowuje autorytatywne informacje dla swojej strefy, np. dla example.com.

Root DNS wskazuje odpowiednią część hierarchii, ale nie zna adresu IP każdego hosta w Internecie.

Kto pyta DNS

Resolver

Stub resolver, czyli klient DNS, działa na urządzeniu użytkownika. Klient zwykle pyta skonfigurowany recursive resolver, np. serwer DNS operatora, organizacji albo inny wskazany resolver.

Recursive resolver może odpowiedzieć z cache albo wykonać dalsze zapytania DNS. Klient końcowy zwykle nie odpytuje samodzielnie całej hierarchii root, TLD i authoritative.

03

Przepływ zapytania DNS

Tabela: Krok, Co się dzieje
KrokCo się dzieje
1Klient pyta recursive resolver o www.example.com.
2Resolver sprawdza cache.
3Jeżeli nie ma wyniku, resolver pyta serwer root.
4Root wskazuje serwery dla .com.
5Resolver pyta serwer TLD .com.
6TLD wskazuje authoritative DNS dla example.com.
7Resolver pyta authoritative DNS.
8Authoritative DNS zwraca odpowiedź.
9Resolver zapisuje odpowiedź w cache.
10Resolver przekazuje wynik klientowi.
To uproszczony dydaktyczny przebieg: resolver może skorzystać z cache albo zapytać kolejne serwery.

Typy zapytań

Rekurencja a iteracja

W zapytaniu rekurencyjnym klient oczekuje końcowej odpowiedzi od resolvera. Zapytania iteracyjne pojawiają się dalej: resolver może otrzymywać wskazówki, który serwer zapytać jako następny.

Klient → resolver: daj końcową odpowiedź Resolver → root/TLD/authoritative: wskaż kolejny krok albo odpowiedź

Transport

Port DNS

Klasyczny DNS używa UDP 53 oraz TCP 53. UDP jest często używany dla standardowych zapytań. TCP jest również częścią DNS i może być używany m.in. wtedy, gdy odpowiedź wymaga TCP albo przy innych operacjach DNS.

Dla zainteresowanych

DNS over TLS używa TCP 853. DNS over HTTPS działa przez HTTPS, zwykle na porcie 443. To rozszerzenia względem podstawowego wyjaśnienia klasycznego DNS.

04

Najważniejsze rekordy DNS

Tabela: Typ, Rola, Przykład
TypRolaPrzykład
AIPv4server.example.com A 192.0.2.10
AAAAIPv6server.example.com AAAA 2001:db8::10
CNAMEalias nazwywww.example.com CNAME server.example.com
MXserwer pocztowyexample.com MX 10 mail.example.com
NSserwer nazwexample.com NS ns1.example.net
PTRreverse DNS192.0.2.10 → server.example.com
TXTdane tekstowetekst do weryfikacji lub konfiguracji usługi

A mapuje nazwę na IPv4. AAAA mapuje nazwę na IPv6. CNAME tworzy alias nazwy i wskazuje inną nazwę, a nie bezpośrednio adres IPv4. MX wskazuje serwer pocztowy, zwykle z preferencją, gdzie niższa liczba oznacza wyższy priorytet. NS wskazuje serwery nazw dla strefy lub delegacji. TXT przechowuje dane tekstowe, używane m.in. przez różne mechanizmy weryfikacji i konfiguracji usług.

Rekord mówi, jaką informację przechowuje DNS dla danej nazwy albo strefy.
05

Cache i TTL

Wynik DNS może zostać zapisany w pamięci cache aplikacji, systemu operacyjnego lub resolvera DNS. Cache zmniejsza liczbę zapytań i zwykle przyspiesza odpowiedź.

TTL = Time To Live TTL 3600 sekund = 1 godzina 3600 to przykład, nie uniwersalna wartość DNS.

Jeżeli administrator zmieni rekord A ze starego 192.0.2.10 na nowy 192.0.2.20, nie wszyscy klienci muszą zobaczyć zmianę natychmiast. Stary wynik może nadal znajdować się w cache do czasu wygaśnięcia TTL.

TTL określa, jak długo dana odpowiedź DNS może być przechowywana w cache.
06

PTR i reverse DNS

Rekord PTR służy do odwrotnego mapowania: IP → nazwa. Dla IPv4 używana jest przestrzeń in-addr.arpa. Przykładowo adres 192.0.2.10 może wskazywać nazwę server.example.com w reverse DNS. Dla IPv6 używana jest przestrzeń ip6.arpa.

Forward: server.example.com → 192.0.2.10 Reverse / PTR: 192.0.2.10 → server.example.com
Reverse DNS nie jest po prostu odwróceniem rekordu A w tej samej strefie.

Powiązanie

DNS z DHCP

DHCP może przekazać klientowi adres serwera DNS. Robi to przez Option 6: DNS Servers. Klient otrzymuje adres resolvera DNS i korzysta z niego przy zapytaniach o nazwy.

Wróć do DHCP
07

Diagnostyka DNS

Tabela: Windows, Zastosowanie
WindowsZastosowanie
nslookup example.comPodstawowe zapytanie DNS.
nslookup example.com 192.0.2.53Zapytanie do jawnie wskazanego serwera DNS.
Resolve-DnsName example.comWspółczesne polecenie PowerShell.
ipconfig /displaydnsWyświetlenie lokalnego cache DNS Windows.
ipconfig /flushdnsUsunięcie lokalnego cache DNS systemu Windows.
Tabela: Linux, Zastosowanie
LinuxZastosowanie
dig example.comPodstawowe zapytanie DNS.
dig example.com AZapytanie o rekord A.
dig example.com AAAAZapytanie o rekord AAAA.
dig @192.0.2.53 example.comZapytanie do jawnie wskazanego resolvera.
dig -x 192.0.2.10Przykład zapytania reverse DNS.
resolvectl statusInformacje o DNS, jeżeli system używa systemd-resolved.
resolvectl flush-cachesCzyszczenie cache w systemd-resolved.

Dostępność konkretnych poleceń zależy od systemu i zainstalowanych narzędzi. Nie zakładamy, że dig jest zawsze fabrycznie zainstalowany.

ping do adresu IP działa nazwa domenowa nie jest rozwiązywana → sprawdź DNS
Jeżeli ping do IP działa, a nazwa nie jest rozwiązywana, to wskazówka diagnostyczna, nie absolutny dowód.

Troubleshooting

Najczęstsze problemy DNS

  • - błędny adres serwera DNS
  • - brak łączności z resolverem
  • - błędny rekord
  • - nieaktualny cache
  • - błędna delegacja
  • - problem z authoritative DNS
  • - firewall
  • - błędny VLAN lub routing
  • - literówka w nazwie
  • - błędny rekord A, AAAA albo CNAME

Ćwiczenia

Sprawdź samodzielnie

Odpowiedzi ukryte

Najpierw wykonaj obliczenia samodzielnie. Odpowiedzi rozwiń dopiero wtedy, gdy masz własny wynik.

Zadanie 1łatwyDopasuj rekordy A, AAAA, CNAME, MX, NS i PTR do ich funkcji.
Sprawdź odpowiedź: A → IPv4, AAAA → IPv6, CNAME → alias nazwy, MX → serwer pocztowy, NS → serwer nazw, PTR → reverse DNS.
Zadanie 2łatwyRozpisz hierarchię nazwy www.example.com.
Sprawdź odpowiedź: Root: ., TLD: com, domena: example.com, host/label: www.
Zadanie 3łatwyCo oznacza TTL 3600?
Sprawdź odpowiedź: Odpowiedź DNS może być przechowywana w cache przez 3600 sekund, czyli 1 godzinę. To przykład, nie wartość uniwersalna.
Zadanie 4średniDlaczego zmiana rekordu A może nie być widoczna od razu u wszystkich klientów?
Sprawdź odpowiedź: Część klientów, systemów lub resolverów może nadal mieć stary wynik w cache do czasu wygaśnięcia TTL.
Zadanie 5średniJaki rekord zastosujesz dla adresu IPv6?
Sprawdź odpowiedź: Rekord AAAA, np. server.example.com AAAA 2001:db8::10.
Zadanie 6średniJaki rekord służy do reverse DNS?
Sprawdź odpowiedź: PTR. Dla IPv4 używana jest przestrzeń in-addr.arpa, a dla IPv6 ip6.arpa.
Zadanie 7średniZinterpretuj wynik nslookup, w którym example.com zwraca 192.0.2.10.
Sprawdź odpowiedź: Resolver zwrócił adres IPv4 powiązany z nazwą. To nie oznacza jeszcze, że usługa WWW działa, tylko że nazwa została rozwiązana.
Zadanie 8trudniejszyZinterpretuj uproszczony wynik dig: status NOERROR, ANSWER: server.example.com. A 192.0.2.10.
Sprawdź odpowiedź: Zapytanie zakończyło się powodzeniem, a odpowiedź zawiera rekord A mapujący nazwę na 192.0.2.10.
Zadanie 9trudniejszyPing do adresu IP działa, ale nazwa nie jest rozwiązywana. Co sprawdzić?
Sprawdź odpowiedź: To wskazówka, że łączność IP może działać, a problem może dotyczyć DNS. Sprawdź resolver, konfigurację DNS z DHCP, rekord, cache, routing/VLAN i filtrację.

Pytania kontrolne

Zatrzymaj się i odpowiedz

  1. 1Czym jest DNS?
  2. 2Czym jest resolver?
  3. 3Czym różni się root DNS od authoritative DNS?
  4. 4Czym jest rekord A?
  5. 5Czym różni się rekord A od CNAME?
  6. 6Czym jest TTL?
  7. 7Do czego służy rekord PTR?
  8. 8Dlaczego klasyczny DNS używa zarówno UDP 53, jak i TCP 53?
Diagnostyka

Myśl najpierw warstwami

Jeżeli adres IP działa, a nazwa nie, sprawdź resolver, cache, rekordy i łączność z DNS. To zawęża problem bez zgadywania.