Modul 8 · 8.2
Zjišťování DNS pomocí dig a nslookup
Modul 8: Bezpečnost a řešení problémů · Doba čtení: 10 min
Cíl lekce: Po této lekci budete umět pomocí dig a nslookup zjišťovat záznamy, dotazovat konkrétní jmenný server a číst výstup.
Klíčové pojmy: dig, nslookup, Resolve-DnsName, +short, @server, +trace, sekce ANSWER a AUTHORITY, status NOERROR, NXDOMAIN, SERVFAIL, dig -x
Proč si to ověřovat sami?
Panel Vám ukáže, co jste vyplnili Vy. To, co vidí zbytek světa, může být jiné: možná DNS spravuje jiná strana, možná je v cache ještě stará odpověď. Pomocí dotazovacího programu položíte stejný dotaz jako prohlížeč nebo mailový server a uvidíte skutečnou odpověď.
Existují tři běžné programy:
| Program | Kde | Komentář |
|---|---|---|
dig | macOS, Linux (Windows přes WSL nebo lze nainstalovat samostatně) | Nejpodrobnější, standard mezi správci |
nslookup | Windows, macOS, Linux | Dostupný všude, stručnější výstup |
Resolve-DnsName | Windows PowerShell | Praktické na Windows bez dalšího softwaru |
Nemáte po ruce příkazové okno? Pak můžete udělat úplně totéž pomocí online dig nástroje (lekce 8.3).
Váš první dotaz pomocí dig
Otevřete Terminál (macOS/Linux) a napište:
$ dig example.com AVýstup vypadá zkráceně takto:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41872
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 2847 IN A 192.0.2.10
;; Query time: 12 msec
;; SERVER: 192.168.1.1#53(192.168.1.1) (UDP)Co si přečíst:
- status: nejdůležitější slovo. Viz tabulka níže.
- flags:
adznamená, že resolver odpověď ověřil pomocí DNSSEC (lekce 8.1). - ANSWER SECTION: samotné záznamy. Sloupce jsou stejné jako v zóně: název, TTL, třída, typ, hodnota.
- TTL (zde 2847): kolik sekund tato odpověď ještě zůstane v cache resolveru. Pokud bylo v zóně nastaveno 3600, znamená to, že odpověď je už 753 sekund stará. Zeptáte-li se znovu, uvidíte, jak se číslo odpočítává.
- SERVER: kterého resolveru jste se ptali. Doma je to často Váš router.
Tři stavy, které byste měli znát
| Status | Význam | Co dělat |
|---|---|---|
NOERROR s odpovědí | Vše v pořádku, toto je odpověď | Nesedí hodnota? Pak je nastaven špatný záznam, nebo vidíte starou cache |
NOERROR bez odpovědi (ANSWER: 0) | Název existuje, ale nemá záznam tohoto typu | Často: ptáte se na špatný typ (například A u názvu, který má jen CNAME nebo jen MX) |
NXDOMAIN | Tento název vůbec neexistuje | Překlep, chybějící záznam, nebo zdvojená doména jako mail.example.com.example.com |
SERVFAIL | Resolver nemohl získat spolehlivou odpověď | Jmenné servery nedostupné, nebo porušený DNSSEC řetězec (zkuste +cd) |
Užitečné varianty
Pouze odpověď pomocí +short:
$ dig +short MX example.com
10 mail.example.com.
20 mail2.example.com.Dotaz na jiný resolver nebo přímo na jmenný server pomocí @. Toto je nejdůležitější trik při řešení problémů. Zeptáte-li se přímo autoritativního jmenného serveru, dostanete vždy čerstvou odpověď, bez cache:
$ dig +short NS example.com
ns1.hosting.example.
ns2.hosting.example.
$ dig +short A www.example.com @ns1.hosting.example
192.0.2.20
$ dig +short A www.example.com @9.9.9.9
192.0.2.10Zde na první pohled vidíte, co se děje: jmenný server už vrací novou adresu (.20), veřejný resolver má v cache ještě starou (.10). Nemusíte tedy nic dělat, jen počkat, až uplyne TTL (modul 6).
Jiné typy: za název uveďte typ.
$ dig +short TXT example.com
"v=spf1 a mx include:_spf.hosting.example ~all"
"google-site-verification=AbC123..."
$ dig +short TXT _dmarc.example.com
"v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"
$ dig +short CNAME shop.example.com
shops.platform.example.Sledování celé cesty pomocí +trace. dig pak sám dělá to, co dělá resolver: nejprve root, pak TLD, pak autoritativní server (lekce 1.4):
$ dig +trace example.com A
. 518400 IN NS a.root-servers.net.
;; Received 239 bytes from 192.168.1.1#53
com. 172800 IN NS a.gtld-servers.net.
;; Received 708 bytes from 198.41.0.4#53(a.root-servers.net)
example.com. 172800 IN NS ns1.hosting.example.
;; Received 412 bytes from 192.5.6.30#53(a.gtld-servers.net)
example.com. 3600 IN A 192.0.2.10
;; Received 57 bytes from 198.51.100.53#53(ns1.hosting.example)Pomocí +trace uvidíte, které jmenné servery registr skutečně předává. To se hodí, pochybujete-li, zda už byla změna jmenných serverů provedena.
Zobrazení DNSSEC pomocí +dnssec: navíc dostanete podpisy RRSIG. Pomocí +cd vypnete kontrolu, abyste zjistili, zda SERVFAIL způsobuje DNSSEC.
Reverzní DNS pomocí -x (lekce 4.6):
$ dig +short -x 192.0.2.25
mail.example.com.Totéž pomocí nslookup
nslookup funguje na každém počítači. Nejdůležitější tvary:
C:\> nslookup example.com
Server: router.lan
Address: 192.168.1.1
Non-authoritative answer:
Name: example.com
Address: 192.0.2.10
C:\> nslookup -type=mx example.com
example.com MX preference = 10, mail exchanger = mail.example.com
C:\> nslookup -type=txt _dmarc.example.com 9.9.9.9Druhá adresa za názvem (zde 9.9.9.9) je server, kterého se ptáte, stejně jako @ u dig. "Non-authoritative answer" znamená pouze to, že odpověď pochází od resolveru, a ne od autoritativního jmenného serveru: to je normální. Pokud název neexistuje, nslookup oznámí Non-existent domain, což je totéž co NXDOMAIN.
Windows PowerShell: Resolve-DnsName
PS> Resolve-DnsName example.com -Type MX
PS> Resolve-DnsName _dmarc.example.com -Type TXT -Server 9.9.9.9
PS> Resolve-DnsName example.com -Type A -DnsOnlyVymazání vlastní cache
Vidí online nástroj už novou odpověď, ale Váš počítač ještě ne? Pak je stará odpověď v cache Vašeho vlastního počítače nebo prohlížeče.
- Windows:
ipconfig /flushdnsv příkazovém řádku. - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderv Terminálu. - Linux se systemd-resolved:
resolvectl flush-caches. - Prohlížeč: anonymní okno, nebo telefon přes 4G/5G s vypnutou wifi.
Cache svého poskytovatele nebo routeru si sami vymazat nemůžete; tam musíte počkat na uplynutí TTL.
V praxi: jak to vypadá v panelu
Ve většině panelů nelze dig přímo spustit. Používejte proto dig vedle svého panelu: nejprve se v panelu podívejte, co jste vyplnili, pak pomocí dig @<Váš jmenný server> ověřte, zda to jmenný server skutečně vydává, a nakonec pomocí dig @9.9.9.9 zjistěte, zda to už vidí vnější svět. Můj WebOké má DNS diagnostiku, která vzájemně porovnává jmenné servery; jiné služby mají podobná tlačítka "kontrola DNS".
Shrnutí
dig <název> <typ>pokládá stejný dotaz jako prohlížeč nebo mailový server; nejprve si přečtěte status.- NOERROR s odpovědí je v pořádku, NOERROR bez odpovědi znamená "název existuje, typ ne", NXDOMAIN znamená "název neexistuje", SERVFAIL znamená "žádná spolehlivá odpověď".
- Pomocí
@serverse zeptáte konkrétního resolveru nebo přímo autoritativního jmenného serveru; tak uvidíte rozdíl mezi chybou a cache. +short,+trace,+dnssec,+cda-xjsou varianty, které budete potřebovat nejčastěji.- nslookup a Resolve-DnsName dělají totéž na Windows.
Kvíz
Úkol
Úkol Z8.2: dig a nslookup. Pomocí dig, nslookup nebo Resolve-DnsName (případně online dig nástroje) zjistěte tři věci:
- status názvu, který neexistuje:
bestaat-niet-dnscursus.sidn.nl; - záznamy MX domény
wikipedia.org, přímo od jednoho ze jmenných serverů wikipedia.org (nejprve je vyhledejte); - TTL, kterou v tuto chvíli vrací veřejný resolver pro záznam A domény
sidn.nl(zeptejte se dvakrát s minutovým odstupem a obě čísla si zapište).
Vyplňte odpovědi.
Doporučená literatura
Tyto články popisují postup ve WebOké; příkazy fungují všude stejně.
