Modul 8 · 8.2
DNS opýtať pomocou dig a nslookup
Modul 8: Bezpečnosť a riešenie problémov · Čas čítania: 10 min
Cieľ lekcie: Po tejto lekcii dokážete pomocou dig a nslookup zisťovať záznamy, opýtať konkrétny menný server a čítať výstup.
Kľúčové pojmy: dig, nslookup, Resolve-DnsName, +short, @server, +trace, sekcia ANSWER a AUTHORITY, stav NOERROR, NXDOMAIN, SERVFAIL, dig -x
Prečo si to zisťovať sami?
Panel ukazuje, čo ste vy sami zadali. To, čo vidí zvyšok sveta, môže byť iné: možno DNS spravuje iná strana, možno je v cache ešte staršia odpoveď. Pomocou programu na zisťovanie položíte rovnakú otázku ako prehliadač alebo mailový server, a uvidíte skutočnú odpoveď.
Existujú tri bežné programy:
| Program | Kde | Komentár |
|---|---|---|
dig | macOS, Linux (vo Windows cez WSL alebo sa dá nainštalovať samostatne) | Najrozsiahlejší, štandardne používaný správcami |
nslookup | Windows, macOS, Linux | Dostupný všade, stručnejší výstup |
Resolve-DnsName | Windows PowerShell | Praktický vo Windows bez ďalšieho softvéru |
Nemáte poruke príkazové okno? Potom môžete urobiť presne to isté pomocou online dig nástroja (lekcia 8.3).
Vaša prvá otázka pomocou dig
Otvorte Terminal (macOS/Linux) a napíšte:
$ dig example.com AVýstup vyzerá v skrátenej podobe 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)Čo si treba všimnúť:
- status: najdôležitejšie slovo. Pozrite si tabuľku nižšie.
- flags:
adznamená, že resolver odpoveď skontroloval pomocou DNSSEC (lekcia 8.1). - ANSWER SECTION: samotné záznamy. Stĺpce sú rovnaké ako v zóne: názov, TTL, trieda, typ, hodnota.
- TTL (tu 2847): koľko sekúnd táto odpoveď ešte zostane v cache resolvera. Ak bola v zóne hodnota 3600, znamená to, že odpoveď je už 753 sekúnd stará. Ak sa opýtate znova, uvidíte, ako sa číslo odpočítava.
- SERVER: ktorého resolvera ste sa opýtali. Doma je to často váš router.
Tri stavy, ktoré by ste mali poznať
| Stav | Význam | Čo robiť |
|---|---|---|
NOERROR s odpoveďou | Všetko v poriadku, toto je odpoveď | Nesedí hodnota? Potom je zadaný nesprávny záznam, alebo vidíte starú odpoveď z cache |
NOERROR bez odpovede (ANSWER: 0) | Názov existuje, ale nemá záznam tohto typu | Často: pýtate sa na nesprávny typ (napríklad A pri názve, ktorý má len CNAME alebo len MX) |
NXDOMAIN | Tento názov vôbec neexistuje | Preklep, zabudnutý záznam, alebo zdvojená doména ako mail.example.com.example.com |
SERVFAIL | Resolver nedostal spoľahlivú odpoveď | Menné servery nedostupné, alebo porušený DNSSEC reťazec (skúste +cd) |
Užitočné varianty
Len odpoveď pomocou +short:
$ dig +short MX example.com
10 mail.example.com.
20 mail2.example.com.Opýtať sa iného resolvera alebo menného servera priamo pomocou @. Toto je najdôležitejší trik pri riešení problémov. Ak sa opýtate priamo autoritatívneho menného servera, vždy dostanete čerstvú odpoveď, 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.10Tu na prvý pohľad vidíte, čo sa deje: menný server už dáva novú adresu (.20), verejný resolver má ešte v cache starú (.10). Nemusíte teda nič robiť, len počkať, kým uplynie TTL (modul 6).
Iné typy: dajte typ za názov.
$ 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.Sledovanie celej cesty pomocou +trace. dig potom sám robí to, čo robí resolver: najprv root, potom TLD, potom autoritatívny server (lekcia 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)Pomocou +trace vidíte, ktoré menné servery register skutočne uvádza. Hodí sa to vtedy, keď si nie ste istí, či už bola zmena menných serverov vykonaná.
Zobrazenie DNSSEC pomocou +dnssec: dostanete aj RRSIG podpisy. Pomocou +cd vypnete kontrolu, aby ste zistili, či SERVFAIL spôsobuje DNSSEC.
Reverzné DNS pomocou -x (lekcia 4.6):
$ dig +short -x 192.0.2.25
mail.example.com.To isté pomocou nslookup
nslookup funguje na každom počítači. Najdôležitejšie formy:
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ázvom (tu 9.9.9.9) je server, ktorého sa pýtate, rovnako ako @ pri dig. „Non-authoritative answer“ znamená len to, že odpoveď pochádza od resolvera, nie od autoritatívneho menného servera: to je normálne. Ak názov neexistuje, nslookup povie Non-existent domain, čo je to isté ako 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 -DnsOnlyVymazanie vlastnej cache
Vidí online nástroj už novú odpoveď, ale váš počítač ešte nie? Potom je stará odpoveď v cache vášho vlastného počítača alebo prehliadača.
- Windows:
ipconfig /flushdnsv príkazovom riadku. - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderv Terminali. - Linux so systemd-resolved:
resolvectl flush-caches. - Prehliadač: súkromné okno, alebo telefón cez 4G/5G s vypnutým wifi.
Cache vášho poskytovateľa alebo routera sami vymazať nemôžete; tam musíte počkať na uplynutie TTL.
V praxi: takto to vyzerá v paneli
Vo väčšine panelov nemôžete spustiť dig. Používajte preto dig popri vašom paneli: najprv sa v paneli pozrite, čo ste zadali, potom pomocou dig @<váš menný server> skontrolujte, či to menný server skutočne aj vydáva, a potom pomocou dig @9.9.9.9, či to už vidí aj zvyšok sveta. Môj WebOké má DNS diagnostiku, ktorá vzájomne porovnáva menné servery; iné spoločnosti majú podobné tlačidlá „kontrola DNS“.
Zhrnutie
dig <názov> <typ>kladie rovnakú otázku ako prehliadač alebo mailový server; najprv si prečítajte stav.- NOERROR s odpoveďou je v poriadku, NOERROR bez odpovede znamená „názov existuje, typ nie“, NXDOMAIN znamená „názov neexistuje“, SERVFAIL znamená „žiadna spoľahlivá odpoveď“.
- Pomocou
@serversa opýtate konkrétneho resolvera alebo priamo autoritatívneho menného servera; takto uvidíte rozdiel medzi chybou a cache. +short,+trace,+dnssec,+cda-xsú varianty, ktoré budete potrebovať najčastejšie.- nslookup a Resolve-DnsName robia to isté vo Windows.
Kvíz
Úloha
Úloha Z8.2: dig a nslookup. Pomocou dig, nslookup alebo Resolve-DnsName (alebo online dig nástroja) zistite tri veci:
- stav názvu, ktorý neexistuje:
bestaat-niet-dnscursus.sidn.nl; - MX záznamy domény
wikipedia.org, priamo z jedného z menných serverov wikipedia.org (najprv ho vyhľadajte); - TTL, ktorú verejný resolver práve teraz vracia pre A záznam domény
sidn.nl(zistite to dvakrát, s odstupom jednej minúty, a zapíšte si obidve čísla).
Zadajte odpovede.
Ďalšie čítanie
Tieto články popisujú postup vo WebOké; príkazy fungujú všade rovnako.
