Pamięć podręczna DNS

Protokoły i standardy
Tymczasowe przechowywanie wyników zapytań DNS przez resolvery lub klientów w celu przyspieszenia powtórnych wyszukiwań.
← Wróć do słownika

Czym jest pamięć podręczna DNS?

Pamięć podręczna DNS to tymczasowe przechowywanie wyników zapytań DNS przez resolvery, systemy operacyjne, przeglądarki i aplikacje. Po wykonaniu wyszukiwania DNS wynik jest przechowywany przez okres określony wartością TTL (Time To Live) rekordu, dzięki czemu kolejne żądania dotyczące tej samej domeny mogą otrzymać natychmiastową odpowiedź bez odpytywania serwerów autorytatywnych.

Dlaczego pamięć podręczna DNS ma znaczenie

Bez pamięci podręcznej każde pojedyncze żądanie internetowe wymagałoby pełnego wyszukiwania DNS, co zwiększałoby opóźnienia i generowało ogromny ruch DNS. Pamięć podręczna DNS zapewnia:

Jak działa pamięć podręczna DNS

Hierarchia pamięci podręcznej

Pamięć podręczna DNS działa na wielu poziomach:

Browser Cache (seconds to minutes)

OS Cache (seconds to minutes)

Local Resolver Cache (minutes to hours)

ISP Resolver Cache (minutes to hours)

Authoritative Name Server (source of truth)

Proces wyszukiwania w pamięci podręcznej

1. Użytkownik żąda example.com

2. Przeglądarka sprawdza własną pamięć podręczną

3. W przypadku braku wyniku system operacyjny sprawdza własną pamięć podręczną

4. W przypadku braku wyniku resolver sprawdza własną pamięć podręczną

5. W przypadku braku wyniku zapytanie rekurencyjne trafia do serwerów autorytatywnych

6. Wynik jest przechowywany na każdym poziomie zgodnie z TTL

7. Odpowiedź wraca do użytkownika

Wygaśnięcie na podstawie TTL

Każdy rekord DNS zawiera wartość TTL:

example.com.    300    IN    A    203.0.113.50

^^^

TTL in seconds (5 minutes)

Pamięci podręczne przechowują ten rekord przez 300 sekund, a następnie go usuwają. Kolejne zapytanie uruchamia świeże wyszukiwanie.

Warstwy pamięci podręcznej DNS

Pamięć podręczna przeglądarki

Nowoczesne przeglądarki niezależnie przechowują wyniki DNS w pamięci podręcznej:

Chrome: korzysta z własnej pamięci podręcznej DNS (chrome://net-internals/#dns) Firefox: utrzymuje wewnętrzną pamięć podręczną (about:networking#dns) Safari: korzysta z resolvera systemowego

Typowy TTL pamięci podręcznej przeglądarki: 60 sekund (niezależnie od TTL DNS)

Pamięć podręczna systemu operacyjnego

Windows: usługa DNS Client przechowuje wyniki w pamięci podręcznej
# View cache

ipconfig /displaydns

# Flush cache

ipconfig /flushdns

macOS: usługa mDNSResponder obsługuje buforowanie
# Flush cache (macOS 10.15+)

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Linux: zależy od systemu, często używany jest systemd-resolved
# Flush systemd-resolved cache

sudo systemd-resolve --flush-caches

# Check statistics

sudo systemd-resolve --statistics

Pamięć podręczna resolvera

Rekursywne resolvery DNS (DNS dostawców internetu, 8.8.8.8, 1.1.1.1) utrzymują duże pamięci podręczne obsługujące miliony użytkowników:

ResolverStrategia pamięci podręcznej
Google (8.8.8.8)Respektuje TTL, pamięć globalna
Cloudflare (1.1.1.1)Respektuje TTL, pamięć rozproszona
Resolvery dostawców internetuMogą ignorować niskie wartości TTL

Przykłady działania pamięci podręcznej

Normalne działanie

Query 1: example.com

→ Full lookup: 50ms

→ Cached for 300s (TTL)

Query 2: example.com (1 minute later)

→ Cache hit: 1ms

Query 3: example.com (10 minutes later)

→ Cache expired, full lookup: 50ms

→ Re-cached for 300s

Aktualizacja rekordu DNS

Original: example.com → 203.0.113.50 (TTL: 300s)

Time: 10:00 - DNS updated to 203.0.113.51

Client queries at 10:02

→ Still cached: 203.0.113.50 (expires 10:05)

Client queries at 10:06

→ Cache expired, new lookup: 203.0.113.51

→ Cached until 10:11

Strategia TTL i buforowanie

Wybór wartości TTL

ZastosowanieZalecany TTLUzasadnienie
Infrastruktura statyczna3600-86400s (1-24 hours)Rzadko się zmienia, mniejsze obciążenie DNS
Witryna produkcyjna300-1800s (5-30 minutes)Równowaga między wydajnością a elastycznością
Aktywna migracja60-300s (1-5 minutes)Szybsza propagacja podczas zmian
Równoważenie obciążenia60-120sSzybkie przełączenie awaryjne po zmianie serwerów

Obniżenie TTL przed migracją

Najlepsza praktyka podczas planowania zmian DNS:

Day -7: example.com TTL 3600s (1 hour)

Day -2: Reduce to 300s (5 minutes)

Day 0: Make DNS change

→ Max 5 minute cache retention

Day +1: Restore TTL to 3600s

Zatruwanie pamięci podręcznej i bezpieczeństwo

Atak polegający na zatruciu pamięci podręcznej DNS

Napastnicy próbują wprowadzić fałszywe rekordy DNS do pamięci podręcznych:

1. Napastnik zalewa resolver fałszywymi odpowiedziami

2. Jeśli jedna z nich pasuje do oczekującego zapytania, zostaje zapisana w pamięci podręcznej

3. Użytkownicy otrzymują złośliwy adres IP dla legalnej domeny

4. Zatruta odpowiedź z pamięci podręcznej jest dostarczana wielu użytkownikom

Środki ograniczające ryzyko

DNSSEC: podpisane kryptograficznie rekordy zapobiegają zatruciu pamięci podręcznej
example.com.    IN    A      203.0.113.50

IN RRSIG A 8 2 300 ...

Losowanie portu źródłowego: utrudnia fałszowanie odpowiedzi Kodowanie 0x20: losowa wielkość liter w zapytaniach ułatwia walidację Bezpieczeństwo resolvera: korzystaj z renomowanych resolverów (Cloudflare, Google, Quad9)

Sprawdzanie pamięci podręcznej DNS

Wyświetlanie zawartości pamięci podręcznej

Windows:
ipconfig /displaydns | more
macOS (ograniczone informacje):
sudo killall -INFO mDNSResponder

# Check Console.app for logs

Linux (systemd-resolved):
sudo systemd-resolve --statistics

Testowanie działania pamięci podręcznej

# First query (cache miss)

time dig example.com

# Immediate repeat (cache hit)

time dig example.com

# Compare times

Problemy związane z pamięcią podręczną

Nieaktualna pamięć podręczna po zmianie DNS

Problem: zaktualizowane rekordy DNS nie są widoczne dla użytkowników Rozwiązanie:

1. Poczekaj na wygaśnięcie TTL

2. Obniż TTL przed przyszłymi zmianami

3. Poproś użytkowników o wyczyszczenie lokalnej pamięci podręcznej

Nadmiernie agresywne buforowanie

Niektórzy dostawcy internetu ignorują TTL i przechowują dane dłużej:

Problem: zmiany propagują się przez wiele godzin lub dni Rozwiązanie:

Buforowanie negatywne

Nieudane wyszukiwania (NXDOMAIN) również są przechowywane w pamięci podręcznej:

Query: newsubdomain.example.com

Response: NXDOMAIN (does not exist)

Cached: 3600s (SOA minimum TTL)

Result: New subdomain won't resolve for 1 hour

Rozwiązanie: obniż minimalny TTL SOA przed dodaniem nowych rekordów

Czyszczenie pamięci podręcznej DNS

Kiedy czyścić pamięć podręczną

Jak wyczyścić pamięć podręczną

Windows:
ipconfig /flushdns
macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux (systemd-resolved):
sudo systemd-resolve --flush-caches
Chrome:
Navigate to: chrome://net-internals/#dns

Click: "Clear host cache"

Firefox:
Toggle network.dnsCacheExpiration in about:config

Or restart browser

Najlepsze praktyki

1. Ustaw odpowiednie wartości TTL: zachowaj równowagę między wydajnością a szybkością wprowadzania zmian

2. Obniż TTL przed zmianami: zmniejsz TTL 24-48 godzin przed aktualizacjami DNS

3. Monitoruj propagację: używaj narzędzi do sprawdzania globalnego rozwiązywania DNS

4. Dokumentuj działanie pamięci podręcznej: poznaj warstwy buforowania swojej infrastruktury

5. Używaj DNSSEC: chroń się przed zatruciem pamięci podręcznej

6. Testuj dokładnie: sprawdź, czy zmiany DNS działają zgodnie z oczekiwaniami, zanim uznasz je za zakończone

7. Edukuj użytkowników: w razie potrzeby przekazuj jasne instrukcje czyszczenia pamięci podręcznej

Zaawansowane koncepcje buforowania

Wstępne pobieranie

Przeglądarki i resolvery mogą wstępnie pobierać DNS dla linków znajdujących się na stronie:

<!-- Hint to browser -->

<link rel="dns-prefetch" href="//cdn.example.com">

Rozgrzewanie pamięci podręcznej

Load balancery i sieci CDN mogą wstępnie wypełniać pamięci podręczne dla krytycznych rekordów.

Anycast i buforowanie

DNS anycast kieruje zapytania do najbliższego serwera, tworząc rozproszone geograficznie pamięci podręczne dla optymalnej wydajności.

Buforowanie DNS ma fundamentalne znaczenie dla wydajności internetu. Zrozumienie i prawidłowe konfigurowanie TTL zapewnia sprawne propagowanie zmian DNS przy jednoczesnym utrzymaniu szybkiego rozwiązywania nazw.

Wykorzystaj tę wiedzę w praktyce

Użyj API DomScan, aby sprawdzić dostępność domen, ich kondycję i więcej.