Czym jest DNS?
DNS (Domain Name System) to książka telefoniczna internetu. Tłumaczy czytelne dla człowieka nazwy domen, takie jak "example.com", na adresy IP, takie jak "93.184.216.34", których komputery używają do lokalizowania i komunikowania się ze sobą. Bez DNS trzeba byłoby zapamiętywać adresy IP, aby odwiedzać strony.
Jak działa DNS?
Po wpisaniu nazwy domeny w przeglądarce zachodzi szybki, wieloetapowy proces.
Proces rozwiązywania DNS
1. Sprawdzenie lokalnego cache: przeglądarka i system operacyjny sprawdzają ostatni wynik w lokalnym cache DNS.
2. Zapytanie do resolvera rekurencyjnego: jeśli wyniku nie ma w cache, zapytanie trafia do resolvera, zwykle operatora internetu albo usługi takiej jak Cloudflare 1.1.1.1 lub Google 8.8.8.8.
3. Zapytanie do serwera głównego: resolver pyta serwer główny, który wskazuje właściwy serwer TLD.
4. Zapytanie do serwera TLD: serwer TLD, na przykład dla .com, zwraca autorytatywne serwery nazw domeny.
5. Zapytanie do serwera autorytatywnego: serwer autorytatywny zwraca właściwy adres IP domeny.
6. Buforowanie odpowiedzi: wynik jest przechowywany na wielu poziomach zgodnie z wartością TTL (Time To Live).
Cały proces zwykle trwa kilka milisekund.
Typy rekordów DNS
DNS przechowuje różne rekordy, z których każdy pełni inną funkcję.
| Typ rekordu | Zastosowanie | Przykład |
|---|---|---|
| A | Mapuje domenę na adres IPv4 | example.com → 93.184.216.34 |
| AAAA | Mapuje domenę na adres IPv6 | example.com → 2606:2800:220:1:... |
| CNAME | Alias wskazujący inną domenę | www.example.com → example.com |
| MX | Wskazuje serwer pocztowy | example.com → mail.example.com |
| TXT | Dane tekstowe (SPF, DKIM, weryfikacja) | Różne ciągi weryfikacyjne |
| NS | Delegowanie serwerów nazw | example.com → ns1.provider.com |
Hierarchia DNS
DNS działa jako rozproszona, hierarchiczna baza danych.
. (root)
├── com (TLD)
│ ├── example (SLD)
│ │ ├── www (subdomain)
│ │ └── mail (subdomain)
│ └── google
├── org (TLD)
└── io (TLD)
Ta hierarchia umożliwia rozproszoną obsługę miliardów nazw domen przez tysiące organizacji.
DNS dla programistów
Zrozumienie DNS jest kluczowe przy tworzeniu usług internetowych.
Typowe zadania
Konfiguracja domeny: ustawienie rekordów A, CNAME dla subdomen i rekordów MX dla poczty wymaga znajomości DNS. Weryfikacja SSL/TLS: wiele urzędów certyfikacji używa rekordów DNS (TXT lub CNAME) do potwierdzenia własności domeny. Konfiguracja CDN: sieci dostarczania treści często wymagają rekordów CNAME do kierowania ruchu przez serwery brzegowe. Dostarczalność poczty: rekordy SPF, DKIM i DMARC są rekordami TXT DNS niezbędnymi do uwierzytelniania poczty.Propagacja DNS
Po aktualizacji rekordów DNS zmiany nie obowiązują natychmiast. Propagacja DNS, czyli rozchodzenie się zmian w globalnej infrastrukturze, może trwać od kilku minut do 48 godzin zależnie od TTL i sposobu buforowania.
Kwestie bezpieczeństwa DNS
DNS wiąże się z zagrożeniami, które programiści powinni rozumieć.
Podszywanie się pod DNS: napastnicy mogą zwracać fałszywe odpowiedzi DNS i przekierowywać użytkowników na złośliwe strony. DNSSEC (DNS Security Extensions) ogranicza to ryzyko za pomocą podpisów kryptograficznych. Wycieki DNS: użytkownicy VPN mogą przypadkowo wysyłać zapytania DNS poza szyfrowanym tunelem, ujawniając aktywność przeglądania. Wzmocnienie DDoS: DNS może być wykorzystywany w atakach amplifikacyjnych, ponieważ protokół pozwala zwracać odpowiedzi większe od zapytań.DNS a dostępność domeny
Stan rozwiązywania DNS może sugerować dostępność domeny, ponieważ brak rekordów DNS może oznaczać brak rejestracji. Zapytania RDAP/WHOIS dostarczają jednak bardziej wiarygodnych informacji, gdyż zarejestrowana domena może jeszcze nie mieć skonfigurowanych rekordów DNS.