Powrót do bloga

DNS troubleshooting: nslookup, dig, DoH

· 7 min czytania

Problemy z DNS to jedna z najczęstszych i najtrudniejszych do zdiagnozowania przyczyn awarii. Praktyczne narzędzia: nslookup, dig i DNS-over-HTTPS.

DNS troubleshooting: nslookup, dig, DoH

Najczęstsze problemy DNS

  • Wygasła rejestracja domeny - cały DNS przestaje działać.
  • Nieprawidłowy rekord A/AAAA - zapomniano zaktualizować po migracji serwera.
  • Brakujący CNAME / MX - strona działa, ale email nie.
  • TTL nieobniżony przed planowaną zmianą - cache providerów nadal serwuje stare dane.
  • Błąd DNSSEC - walidatory odrzucają niepodpisane lub źle podpisane rekordy.
  • Awaria Geo-DNS - resolver z określonego regionu dostaje błędną odpowiedź.

nslookup: najprostsze polecenie

Dostępny na wszystkich OS bez instalacji. Używa domyślnego serwera DNS systemu, ale można go jawnie wskazać jako drugi argument.

$ nslookup epulz.io
Server:    127.0.0.53
Address:   127.0.0.53#53

Non-authoritative answer:
Name:      epulz.io
Address:   87.197.115.180

# Jawnie użyć Cloudflare DNS
$ nslookup epulz.io 1.1.1.1

# Konkretny typ rekordu
$ nslookup -type=MX gmail.com 8.8.8.8
$ nslookup -type=TXT _dmarc.epulz.io 1.1.1.1

dig: szczegółowe zapytanie DNS dla Unix

dig (Domain Information Groper) jest znacznie bardziej szczegółowy i elastyczny. Jest częścią pakietu bind-utils lub dnsutils.

$ dig epulz.io

;; QUESTION SECTION:
;epulz.io.                      IN      A

;; ANSWER SECTION:
epulz.io.               300     IN      A       87.197.115.180

;; Query time: 12 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: ...

Kluczowe pola:

  • TTL (300) = liczba sekund, przez które resolver może cachować odpowiedź.
  • ANSWER SECTION = sam wynik.
  • SERVER = który resolver DNS odpowiedział.
  • Query time = czas trwania zapytania - przydatne przy debugowaniu wolnego DNS.

Praktyczne polecenia

# Krótka odpowiedź (tylko IP)
$ dig +short epulz.io
87.197.115.180

# Wszystkie rekordy
$ dig epulz.io ANY

# Trace całej hierarchii DNS (od root nameserverów)
$ dig +trace epulz.io

# Reverse lookup
$ dig -x 87.197.115.180

# Konkretny resolver
$ dig @8.8.8.8 epulz.io
$ dig @1.1.1.1 epulz.io
$ dig @9.9.9.9 epulz.io

# Walidacja DNSSEC
$ dig +dnssec epulz.io

DNS-over-HTTPS (DoH): gdy nie masz UDP/53

W niektórych sieciach (korporacyjne firewalle, dane mobilne z blokowaniem) tradycyjny port DNS 53 jest blokowany. DoH pakuje zapytania DNS w żądania HTTPS, więc przechodzą wszędzie tam, gdzie działa port 443.

# Endpoint DoH Cloudflare
$ curl -s "https://cloudflare-dns.com/dns-query?name=epulz.io&type=A" \
       -H "Accept: application/dns-json" | jq

# Google DoH
$ curl -s "https://dns.google/resolve?name=epulz.io&type=MX" | jq

Online klienta DoH z przejrzystym interfejsem mamy też na /tools/dns-lookup - bez żadnej instalacji.

Procedura przy "domena nie działa"

  1. Sprawdź rejestrację. whois yourdomain.com lub przez rejestratora. Jeśli wygasła, nic innego nie naprawisz.
  2. Sprawdź rekordy NS. dig NS yourdomain.com @8.8.8.8. Czy zwracane są nameservery odpowiedzialne za domenę? Czy zgadzają się z tym, co masz w panelu rejestratora?
  3. Sprawdź rekord A. dig yourdomain.com @8.8.8.8. Czy zwraca prawidłową IP?
  4. Przetestuj z zewnętrznej sieci (dane mobilne, VPN, narzędzie online). Sam możesz mieć w cache stare dane.
  5. Sprawdź TTL. Jeśli właśnie zmieniłeś rekord, poczekaj co najmniej oryginalny TTL (domyślnie od 1 do 24 godzin).
  6. Sprawdź DNSSEC. Jeśli go używasz, łańcuch sygnatur może być uszkodzony. dig +dnssec yourdomain.com przy sukcesie pokazuje flagę ad.

Propagacja DNS: ile trwa?

"Propagacja DNS" to nieco mylący termin. DNS nie propaguje się w twoim kierunku - twoje resolvery pobierają odpowiedź i cachują ją zgodnie z TTL. Dopiero po wygaśnięciu TTL próbują nowego zapytania.

Praktyczne konsekwencje:

  • Planujesz migrację? Obniż TTL do 60-300 sekund co najmniej 48 godzin wcześniej.
  • Stara IP pozostaje w cache niektórych klientów jeszcze długo po zmianie. Nie wyłączaj starego serwera natychmiast.
  • Cloud providerzy (Cloudflare, AWS Route 53) obsługują krótkie wartości TTL i szybką propagację zmian, ale klient końcowy musi czekać na TTL własnego resolvera.

Wnioski

DNS to infrastrukturalny klej, który wszyscy uważają za oczywistość - dopóki nie przestanie działać. Regularny monitoring rekordów DNS (A, NS, MX, ich TTL i walidacja DNSSEC) wykrywa problem, zanim zgłosi go klient telefonem.

Monitoring DNS i wygaśnięcia WHOIS

ePulz.io śledzi rekordy A/AAAA/MX/NS i wygaśnięcie rejestracji domeny. 7 dni za darmo.

Uruchom monitoring →

Udostępnij: Skopiowano link

Wypróbuj ePulz.io za darmo - 7 dni bez karty kredytowej.

Utwórz konto