Czym jest propagacja DNS?
Propagacja DNS to okres, w którym zmiana opublikowana przez autorytatywny serwer nazw staje się widoczna za pośrednictwem innych serwerów autorytatywnych, resolverów rekurencyjnych i lokalnych pamięci podręcznych. Serwer nazw publikujący zmianę może obsługiwać nowy rekord od chwili jej opublikowania, podczas gdy inne serwery autorytatywne mogą być jeszcze w trakcie aktualizacji, a resolvery rekurencyjne mogą zwracać starszą odpowiedź zapisaną w pamięci podręcznej. Wartości TTL określają czas przechowywania danych w pamięci podręcznej, ale zachowanie resolverów może się różnić, dlatego nieaktualne odpowiedzi mogą czasami utrzymywać się dłużej niż nominalny TTL.
Rozumienie „propagacji”
Termin „propagacja” jest nieco mylący, ponieważ zmiany DNS nie „rozchodzą się” aktywnie. Zamiast tego:
1. Aktualizujesz rekordy na autorytatywnym serwerze nazw
2. Kopie w pamięci podręcznej wygasają zgodnie z TTL (Time To Live)
3. Nowe zapytania pobierają zaktualizowane rekordy z serwerów autorytatywnych
4. Stare kopie w pamięci podręcznej są używane do wygaśnięcia TTL
Dokładniej byłoby mówić o „wygasaniu pamięci podręcznej DNS”, ale termin propagacja jest powszechnie używany.
Jak działają zmiany DNS
Proces aktualizacji
Step 1: Update DNS records
example.com A record: 203.0.113.50 → 203.0.113.51
Step 2: Authoritative nameserver immediately serves new record
Step 3: Existing cached copies remain valid until TTL expires
Step 4: New queries after TTL expiration receive updated record
Step 5: All caches eventually expire and refresh
→ "Propagation complete"
Przykład osi czasu
Time: 10:00 - DNS updated (TTL: 300s / 5 minutes)
Resolver A (cached at 09:58):
09:58 - Cached old IP, expires 10:03
10:03 - Cache expires, queries again, gets new IP
Resolver B (cached at 10:01):
10:01 - Cached old IP, expires 10:06
10:06 - Cache expires, queries again, gets new IP
Resolver C (queries at 10:05):
10:05 - No cache, queries immediately, gets new IP
All resolvers have new IP by: 10:06
Propagation time: 6 minutes (worst case based on TTL)
Czynniki wpływające na czas propagacji
TTL (czas życia)
To najważniejszy pojedynczy czynnik:
| Wartość TTL | Czas propagacji | Zastosowanie |
|---|---|---|
| 60s | 1-2 minuty | Aktywne migracje, równoważenie obciążenia |
| 300s (5 min) | 5-10 minut | Zmiany produkcyjne, rozsądna wartość domyślna |
| 3600s (1 godzina) | 1-2 godziny | Stabilna infrastruktura |
| 86400s (24 godziny) | 24-48 godzin | Rzadko zmieniane rekordy |
Zmiany serwerów nazw
Zmiana serwerów nazw trwa dłużej niż inne zmiany DNS:
Registry Level: 24-48 hours (TLD nameserver cache)
Resolver Level: Based on NS record TTL
Total Time: Up to 48 hours worst case
Zachowanie dostawców internetu i resolverów
Nie wszystkie resolvery DNS respektują wartości TTL:
Resolvery przestrzegające zasad: Google (8.8.8.8), Cloudflare (1.1.1.1), OpenDNS- Ściśle przestrzegają TTL
- Zapewniają szybką propagację
- Mogą ignorować niskie wartości TTL
- Mogą przechowywać dane dłużej, niż określono
- Mogą opóźnić propagację o kilka godzin
Rozkład geograficzny
Różne regiony aktualizują dane w różnym czasie, zależnie od lokalnej pamięci podręcznej resolvera:
North America: 10:05 - Updated
Europe: 10:08 - Updated
Asia: 10:12 - Updated
Pamięć podręczna po stronie klienta
Nawet po aktualizacji serwerów DNS lokalne pamięci podręczne mogą przechowywać stare wartości:
- Pamięć podręczna przeglądarki: zwykle 60 sekund
- Pamięć podręczna systemu operacyjnego: od kilku minut do kilku godzin
- Pamięć podręczna aplikacji: zależnie od aplikacji
Sprawdzanie propagacji DNS
Internetowe sprawdzarki propagacji
whatsmydns.net: pokazuje rozwiązywanie DNS z ponad 20 lokalizacji na świecie dnschecker.org: globalnie sprawdza rekordy A, AAAA, CNAME, MX i TXT Kontrola kondycji DomScan:curl "https://domscan.net/v1/health?domain=example.com"
# Shows current DNS configuration
Sprawdzanie z wiersza poleceń
Sprawdzanie wielu resolverów:# Google DNS
dig @8.8.8.8 example.com
# Cloudflare DNS
dig @1.1.1.1 example.com
# Your ISP (no @ server specified)
dig example.com
# Compare results
Bezpośrednie zapytanie do autorytatywnego serwera nazw:
# Find nameservers
dig example.com NS
# Query authoritative NS directly
dig @ns1.example.com example.com
Pokazuje to „prawdę” natychmiast, bez udziału pamięci podręcznej.
Sprawdzanie z wielu lokalizacji
# Using curl with DNS over HTTPS
curl -H 'accept: application/dns-json' 'https://cloudflare-dns.com/dns-query?name=example.com&type=A'
Minimalizowanie czasu propagacji
Przed wprowadzeniem zmian
Krok 1: Obniż TTL (24-48 godzin przed zmianą)Old: example.com. 3600 IN A 203.0.113.50
New: example.com. 300 IN A 203.0.113.50
^^^
Reduced to 5 minutes
Krok 2: Poczekaj na wygaśnięcie starego TTL
Poczekaj pełny czas trwania starego TTL (3600s = 1 godzina).
Krok 3: Zmień DNSexample.com. 300 IN A 203.0.113.51
Krok 4: Monitoruj propagację
Sprawdzaj resolvery na całym świecie.
Krok 5: Przywróć TTL (po potwierdzeniu powodzenia)example.com. 3600 IN A 203.0.113.51
W trakcie zmian
Użyj DNS anycast: dostawcy tacy jak Cloudflare korzystają z sieci anycast, które niemal natychmiast aktualizują dane w całej swojej globalnej sieci. Monitoruj stale: śledź propagację w kluczowych regionach i resolverach. Miej plan wycofania: utrzymuj starą infrastrukturę do zakończenia propagacji.Typowe scenariusze propagacji
Zmiana rekordu A
Przewidywany czas: 5-30 minut (zależnie od TTL)# Before
example.com → 203.0.113.50
# After
example.com → 203.0.113.51
# Propagation: 1x TTL duration
Zmiana rekordu MX
Przewidywany czas: 5-30 minut (zależnie od TTL) Ryzyko: podczas propagacji poczta może być dostarczana do starego serwera Ograniczenie ryzyka: utrzymuj stary serwer pocztowy aktywny przez 24-48 godzinZmiana serwerów nazw
Przewidywany czas: 24-48 godzinWhy so long?
- TLD registry caches NS records
- Registry TTL often 24-48 hours
- No control over registry cache
Dobra praktyka: skonfiguruj wszystkie rekordy na nowych serwerach nazw przed ich przełączeniem.
Dodanie nowej subdomeny
Przewidywany czas: od chwili natychmiastowej do 1 godziny Pułapka: buforowanie negatywneIf subdomain was queried and didn't exist:
→ NXDOMAIN cached (SOA minimum TTL)
→ New subdomain won't resolve until cache expires
Ograniczenie ryzyka: obniż minimalny TTL SOA przed dodaniem nowych rekordów.
Rozwiązywanie problemów z propagacją
Zmiana się nie propaguje
Sprawdzenie 1: Zweryfikuj autorytatywny serwer nazwdig @ns1.example.com example.com
# Should show new value
Sprawdzenie 2: Zweryfikuj TTL
dig example.com | grep -i ttl
Sprawdzenie 3: Sprawdź SOA pod kątem pamięci podręcznej negatywnej
dig example.com SOA
# Look at minimum TTL field
Sprawdzenie 4: Wyczyść lokalną pamięć podręczną
Wyczyść pamięć podręczną przeglądarki, systemu operacyjnego i aplikacji.
Częściowa propagacja
Objaw: niektórzy użytkownicy widzą nowe rekordy, a inni stare Przyczyna: różne resolvery zapisały dane w pamięci podręcznej w różnym czasie Rozwiązanie: poczekaj maksymalny czas TTL, a następnie wyczyść pamięci podręczne klientówZatrzymana propagacja
Objaw: po kilku dniach niektóre resolvery nadal zwracają stare rekordy Przyczyna: resolver dostawcy internetu ignoruje TTL albo jest nieprawidłowo skonfigurowany Rozwiązanie:1. Sprawdź, czy autorytatywny serwer nazw jest prawidłowy
2. Jeśli problem trwa, skontaktuj się z dostawcą internetu
3. Użytkownicy mogą przełączyć się na publiczny DNS (8.8.8.8, 1.1.1.1)
Propagacja DNS a TTL pamięci podręcznej
| Pojęcie | Znaczenie | Czas trwania |
|---|---|---|
| TTL | Jak długo rekord może być przechowywany w pamięci podręcznej | Ustawia właściciel domeny |
| Propagacja | Czas potrzebny na wygaśnięcie wszystkich pamięci podręcznych | Około 2x TTL |
| TTL serwera nazw | Jak długo rekordy NS są przechowywane w pamięci podręcznej | Często 24-48 godzin (rejestr) |
| Pamięć podręczna negatywna | Jak długo przechowywany jest NXDOMAIN | Minimalny TTL SOA |
Dobre praktyki
1. Obniż TTL przed zmianami: zmniejszaj TTL 24-48 godzin przed aktualizacjami DNS
2. Używaj odpowiednich wartości TTL: równoważ wydajność (wysoki TTL) i elastyczność (niski TTL)
3. Monitoruj globalnie: sprawdzaj DNS z wielu regionów geograficznych
4. Utrzymuj stare usługi: pozostaw poprzednie serwery do zakończenia propagacji
5. Dokumentuj zmiany: zapisuj co i kiedy się zmieniło na potrzeby diagnozowania
6. Testuj dokładnie: sprawdź działanie nowych rekordów DNS przed przełączeniem
7. Komunikuj się z użytkownikami: ostrzegaj o możliwych krótkich przerwach
8. Używaj zarządzanego DNS: dostawcy z sieciami anycast minimalizują czas propagacji
9. Automatyzuj monitoring: skonfiguruj alerty zmian DNS i stanu propagacji
10. Miej plan wycofania: wiedz, jak cofnąć zmiany w razie problemów
Lista kontrolna propagacji
☐ Lower TTL 24-48 hours before change
☐ Wait for old TTL to expire
☐ Make DNS change
☐ Verify on authoritative nameservers
☐ Check multiple public resolvers
☐ Test from multiple geographic locations
☐ Monitor for 2x TTL duration
☐ Verify no errors reported
☐ Restore higher TTL if desired
☐ Document change completion
Propagacja DNS jest naturalnym skutkiem buforowania DNS. Zrozumienie działania TTL i odpowiednie planowanie zmian zapewniają płynne, przewidywalne aktualizacje przy minimalnych zakłóceniach.