Czym jest resolver DNS?
Resolver DNS, nazywany również resolverem rekurencyjnym lub rekurencyjnym serwerem DNS, to serwer, który odbiera zapytania DNS od urządzeń klienckich i wyszukuje adres IP nazwy domeny. Resolver działa jako pośrednik między klientem a hierarchią DNS, wykonując rekursję przez serwery root, TLD i serwery autorytatywne.
Jak działają resolvery DNS
Proces rozwiązywania
Po wpisaniu w przeglądarce „example.com”:
1. Client → Resolver: "What's the IP for example.com?"
2. Resolver checks cache
→ Cache hit: Return cached result
→ Cache miss: Begin recursion
3. Resolver → Root Server: "Where's .com?"
Root → Resolver: "Ask these .com nameservers"
4. Resolver → .com TLD: "Where's example.com?"
.com → Resolver: "Ask these nameservers"
5. Resolver → Authoritative NS: "What's example.com's IP?"
Auth NS → Resolver: "203.0.113.50"
6. Resolver → Client: "203.0.113.50"
(Also caches result based on TTL)
Zapytania rekurencyjne a iteracyjne
Zapytanie rekurencyjne (klient → resolver):Client: "Give me the final answer for example.com"
Resolver: "Here's the IP: 203.0.113.50"
(Resolver does all the work)
Zapytanie iteracyjne (resolver → serwery nazw):
Resolver: "What's example.com?"
Root: "I don't know, ask .com servers"
Resolver: "What's example.com?"
.com: "I don't know, ask ns1.example.com"
Resolver: "What's example.com?"
ns1: "203.0.113.50"
Typy resolverów
Resolver stub
Wbudowany w systemy operacyjne i aplikacje:
- Przekazuje zapytania do skonfigurowanych serwerów DNS
- Ma minimalną logikę
- Nie wykonuje rekursji
Resolver rekurencyjny
W pełni funkcjonalny serwer wykonujący kompletne rozwiązywanie:
- Przechowuje wyniki w cache
- Podąża za delegacjami
- Implementuje funkcje bezpieczeństwa
Resolver przekazujący
Przekazuje zapytania do innego resolvera zamiast wykonywać rekursję:
- Częsty w sieciach firmowych
- Centralne egzekwowanie polityk
- Mniej zapytań zewnętrznych
Client → Corporate Resolver (forwarding) → ISP Resolver (recursive) → Internet
Popularne publiczne resolvery
| Dostawca | IPv4 | IPv6 | Funkcje |
|---|---|---|---|
| Cloudflare | 1.1.1.1, 1.0.0.1 | 2606:4700:4700::1111 | Szybki, nastawiony na prywatność, bez logowania |
| 8.8.8.8, 8.8.4.4 | 2001:4860:4860::8888 | Niezawodny, globalny anycast | |
| Quad9 | 9.9.9.9 | 2620:fe::fe | Filtrowanie bezpieczeństwa, blokowanie zagrożeń |
| OpenDNS | 208.67.222.222 | 2620:119:35::35 | Filtrowanie treści, ochrona przed phishingiem |
Zmiana resolvera
Windows:Control Panel → Network → Adapter Settings
→ Properties → IPv4 → Use these DNS servers:
Preferred: 1.1.1.1
Alternate: 8.8.8.8
macOS:
System Preferences → Network → Advanced → DNS
→ Add: 1.1.1.1, 8.8.8.8
Linux (/etc/resolv.conf):
nameserver 1.1.1.1
nameserver 8.8.8.8
Funkcje resolvera
Cache
Resolver przechowuje odpowiedzi DNS zgodnie z TTL:
First query: example.com
→ Full recursion (50ms)
→ Cached for 300s (TTL)
Subsequent queries: example.com
→ Cache hit (1ms)
→ Served until TTL expires
Statystyki cache często pokazują współczynnik trafień powyżej 80–90%.
Cache negatywny
Resolver przechowuje także odpowiedzi negatywne (NXDOMAIN):
Query: nonexistent.example.com
Response: NXDOMAIN
Cached: Based on SOA minimum TTL
Zapobiega to powtarzaniu zapytań o nieistniejące domeny.
Minimalizacja zapytań
Nowoczesne resolvery ograniczają ujawnianie informacji:
Tradycyjnie:Query to .com: "What's www.blog.example.com?"
→ Exposes full subdomain structure
Minimalizacja zapytań (RFC 7816):
Query to .com: "What's example.com?"
Query to example.com NS: "What's blog.example.com?"
Query to blog.example.com NS: "What's www.blog.example.com?"
→ Reveals only necessary information at each level
Walidacja DNSSEC
Resolver świadomy bezpieczeństwa weryfikuje podpisy DNSSEC:
Query: example.com (DNSSEC-signed)
→ Resolver validates signatures
→ Returns AD (Authentic Data) flag if valid
→ Returns SERVFAIL if signatures invalid
Funkcje bezpieczeństwa resolvera
DNS przez HTTPS (DoH)
Szyfruje zapytania DNS przez HTTPS:
Traditional DNS:
Client → Resolver (UDP port 53, plaintext)
DNS over HTTPS:
Client → Resolver (TCP port 443, encrypted)
Dostawcy: Cloudflare (https://cloudflare-dns.com/dns-query), Google
DNS przez TLS (DoT)
Szyfruje zapytania DNS przez TLS:
Client → Resolver (TCP port 853, encrypted)
Korzyść: Operatorzy internetu nie mogą zobaczyć ani modyfikować zapytań DNS
Filtrowanie malware/phishingu
Niektóre resolvery blokują znane złośliwe domeny:
Quad9 (9.9.9.9): Blokuje domeny związane z malware i phishingiem Cloudflare for Families: Blokuje malware (1.1.1.2) albo malware i treści dla dorosłych (1.1.1.3)Ograniczanie częstotliwości
Chroni przed atakami amplifikacji DNS:
If source IP sends > threshold queries/second:
→ Temporarily rate limit or block
Sprawdzanie używanego resolvera
Windows:ipconfig /all | findstr "DNS Servers"
macOS/Linux:
cat /etc/resolv.conf
Narzędzia online: browserleaks.com/dns pokazuje, którego resolvera używa przeglądarka
Test rozwiązywania:
dig example.com
# Look at "SERVER:" in output
Wydajność resolvera
Znaczenie opóźnienia
Czas odpowiedzi resolvera wpływa na wydajność stron:
| Resolver | Średnie opóźnienie | Wpływ |
|---|---|---|
| Lokalny operator | 10–30 ms | Szybko, ale zmiennie |
| Cloudflare | 10–20 ms | Stabilnie szybko (anycast) |
| 20–40 ms | Niezawodnie, globalnie | |
| Powolny resolver | 100–200 ms | Zauważalne opóźnienie ładowania |
Routing anycast
Najwięksi resolverzy używają anycastu, aby ograniczyć opóźnienia:
1.1.1.1 anycast IP
→ Routed to nearest Cloudflare datacenter
→ New York query → New York datacenter
→ London query → London datacenter
→ Result: Global low-latency resolution
Pomiar wydajności resolvera
Za pomocą Namebench (test automatyczny):# Tests multiple resolvers with your actual query patterns
namebench
Test ręczny:
# Test Cloudflare
time dig @1.1.1.1 example.com
# Test Google
time dig @8.8.8.8 example.com
# Test ISP (current)
time dig example.com
Typowe problemy z resolverem
Zatrucie DNS
Atakujący wstrzykują fałszywe rekordy do cache resolvera:
Ograniczanie ryzyka:- Używaj resolverów z walidacją DNSSEC
- Włącz losowanie portu źródłowego
- Używaj DoH/DoT, aby zapobiegać atakom man-in-the-middle
Przejęcie resolvera
Operatorzy lub malware przekierowują zapytania DNS:
Objaw: Wyszukiwanie pokazuje reklamy operatora, występują nieoczekiwane przekierowania Rozwiązanie:- Zmień resolver na publiczny (1.1.1.1, 8.8.8.8)
- Używaj DoH/DoT, aby uniemożliwić ingerencję operatora
- Sprawdź obecność malware
Nieaktualny cache
Resolver przechowuje nieaktualne rekordy:
Objaw: Zmiany DNS nie są widoczne Rozwiązanie:- Poczekaj na wygaśnięcie TTL
- Tymczasowo użyj innego resolvera
- Wyczyść lokalny cache
Blokowanie resolvera
Niektóre sieci blokują zewnętrzne resolvery:
Objaw: Nie można połączyć się z 8.8.8.8 ani 1.1.1.1 Rozwiązanie:- Użyj DNS over HTTPS (trudniejsze do zablokowania)
- Użyj punktu końcowego DoH resolvera
Konfigurowanie lokalnego resolvera
Za pomocą Unbound
# Install Unbound (Linux)
sudo apt install unbound
# Basic config (/etc/unbound/unbound.conf)
server:
interface: 127.0.0.1
do-ip4: yes
do-udp: yes
do-tcp: yes
# Enable DNSSEC
auto-trust-anchor-file: "/var/lib/unbound/root.key"
# Privacy (query minimization)
qname-minimisation: yes
# Start service
sudo systemctl start unbound
sudo systemctl enable unbound
Za pomocą Pi-hole
Sieciowy resolver DNS blokujący reklamy:
# Install Pi-hole
curl -sSL https://install.pi-hole.net | bash
# Configure devices to use Pi-hole as resolver
# Set router DHCP to provide Pi-hole IP as DNS
Najlepsze praktyki
1. Używaj renomowanych publicznych resolverów: Cloudflare, Google lub Quad9 dla niezawodności
2. Włącz DoH/DoT: Szyfruj zapytania dla prywatności i bezpieczeństwa
3. Uwzględniaj funkcje resolvera: Wybieraj według potrzeb prywatności, szybkości lub bezpieczeństwa
4. Monitoruj wydajność resolvera: Okresowo testuj opóźnienia
5. Miej zapasowe resolvery: Skonfiguruj dodatkowy DNS dla redundancji
6. Używaj resolverów walidujących DNSSEC: Chroń przed zatruciem cache
7. Poznaj polityki resolvera: Niektóre filtrują treści, inne logują zapytania
8. Testuj po zmianach: Sprawdzaj poprawność rozwiązywania DNS
9. Dokumentuj wybór resolvera: Zapisz przyczynę wyboru konkretnego resolvera
10. Ostrożnie aktualizuj resolv.conf: Błędna konfiguracja całkowicie przerywa działanie DNS
Resolver a autorytatywny serwer nazw
| Cecha | Resolver | Autorytatywny NS |
|---|---|---|
| Rola | Odpowiada na zapytania klientów | Przechowuje rzeczywiste rekordy DNS |
| Rekursja | Tak, odpytuje inne serwery | Nie, odpowiada tylko dla własnych stref |
| Cache | Tak, przechowuje odpowiedzi | Nie (dane autorytatywne) |
| Używany przez | Klientów, użytkowników końcowych | Resolvery podczas rekursji |
| Przykłady | 8.8.8.8, 1.1.1.1 | ns1.example.com |
Resolvery DNS są siłą roboczą systemu DNS. Wybór szybkiego, bezpiecznego i szanującego prywatność resolvera istotnie wpływa na wygodę przeglądania oraz bezpieczeństwo w internecie.