Modul 8 · 8.2
DNS poizvedovanje z dig in nslookup
Modul 8: Varnost in odpravljanje težav · Čas branja: 10 minut
Učni cilj: Po tej lekciji boste znali z dig in nslookup poizvedovati zapise, povprašati določen imenski strežnik in brati izpis.
Ključni pojmi: dig, nslookup, Resolve-DnsName, +short, @server, +trace, oddelka ANSWER in AUTHORITY, status NOERROR, NXDOMAIN, SERVFAIL, dig -x
Zakaj poizvedovati sami?
Nadzorna plošča prikaže tisto, kar ste Vi vnesli. Kar vidi preostali svet, je lahko drugačno: morda DNS upravlja druga stranka, morda je v predpomnilniku še star odgovor. S programom za poizvedovanje postavite isto vprašanje kot brskalnik ali poštni strežnik, in vidite pravi odgovor.
Obstajajo trije uveljavljeni programi:
| Program | Kje | Komentar |
|---|---|---|
dig | macOS, Linux (Windows prek WSL ali ločena namestitev) | Najbolj obsežen, privzeto orodje skrbnikov |
nslookup | Windows, macOS, Linux | Prisoten povsod, bolj jedrnat izpis |
Resolve-DnsName | Windows PowerShell | Priročen na Windows brez dodatne programske opreme |
Nimate pri roki ukazne vrstice? Potem lahko popolnoma enako storite s spletnim orodjem dig (lekcija 8.3).
Vaše prvo vprašanje z dig
Odprite Terminal (macOS/Linux) in vtipkajte:
$ dig example.com AIzpis v skrajšani obliki je videti takole:
;; ->>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)Kaj morate prebrati:
- status: najpomembnejša beseda. Glejte spodnjo tabelo.
- flags:
adpomeni, da je razreševalnik odgovor preveril z DNSSEC (lekcija 8.1). - ANSWER SECTION: zapisi sami. Stolpci so enaki kot v coni: ime, TTL, razred, vrsta, vrednost.
- TTL (tukaj 2847): koliko sekund ta odgovor še ostane v predpomnilniku razreševalnika. Če je bilo v coni nastavljeno 3600, je odgovor torej star že 753 sekund. Če poizvedbo ponovite, boste videli, da se število zmanjšuje.
- SERVER: kateri razreševalnik ste povprašali. Doma je to pogosto Vaš usmerjevalnik.
Trije statusi, ki jih morate poznati
| Status | Pomen | Kaj storiti |
|---|---|---|
NOERROR z odgovorom | Vse je v redu, to je odgovor | Vrednost ni pravilna? Potem je zapis napačen, ali pa vidite star predpomnilnik |
NOERROR brez odgovora (ANSWER: 0) | Ime obstaja, vendar nima zapisa te vrste | Pogosto: poizvedujete po napačni vrsti (na primer A pri imenu, ki ima samo CNAME ali samo MX) |
NXDOMAIN | To ime sploh ne obstaja | Tipkarska napaka, pozabljen zapis, ali podvojeno ime domene, kot je mail.example.com.example.com |
SERVFAIL | Razreševalnik ni mogel dobiti zanesljivega odgovora | Imenski strežniki nedosegljivi, ali pokvarjena veriga DNSSEC (poskusite +cd) |
Priročne različice
Samo odgovor z +short:
$ dig +short MX example.com
10 mail.example.com.
20 mail2.example.com.Neposredno vprašanje drugemu razreševalniku ali imenskemu strežniku z @. To je najpomembnejši trik pri odpravljanju težav. Če povprašate neposredno avtoritativni imenski strežnik, vedno dobite svež odgovor, brez predpomnilnika:
$ 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.10Tukaj v enem pogledu vidite, kaj se dogaja: imenski strežnik že daje nov naslov (.20), javni razreševalnik ima v predpomnilniku še starega (.10). Zato Vam ni treba storiti ničesar, le počakati, da mine TTL (modul 6).
Druge vrste: vrsto postavite za imenom.
$ 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.Sledenje celotni poti z +trace. dig tedaj sam počne to, kar počne razreševalnik: najprej vpraša koren, nato TLD, nato avtoritativni strežnik (lekcija 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)Z +trace vidite, katere imenske strežnike register dejansko posreduje. To je priročno, kadar dvomite, ali je sprememba imenskega strežnika že izvedena.
Prikaz DNSSEC z +dnssec: poleg dobite še podpise RRSIG. Z +cd izklopite preverjanje, da vidite, ali SERVFAIL povzroča DNSSEC.
Povratni DNS z -x (lekcija 4.6):
$ dig +short -x 192.0.2.25
mail.example.com.Enako z nslookup
nslookup deluje na vsakem računalniku. Najpomembnejše oblike:
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.9Drugi naslov za imenom (tukaj 9.9.9.9) je strežnik, ki ga povprašate, enako kot @ pri dig. »Non-authoritative answer« pomeni le, da odgovor prihaja od razreševalnika in ne od avtoritativnega imenskega strežnika: to je normalno. Če ime ne obstaja, nslookup sporoči Non-existent domain, kar je enako kot 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 -DnsOnlyPraznjenje lastnega predpomnilnika
Spletno orodje že vidi nov odgovor, Vaš računalnik pa še ne? Potem je star odgovor v predpomnilniku Vašega lastnega računalnika ali brskalnika.
- Windows:
ipconfig /flushdnsv ukaznem pozivu. - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderv Terminalu. - Linux s systemd-resolved:
resolvectl flush-caches. - Brskalnik: zasebno okno, ali Vaš telefon prek 4G/5G z izklopljenim wifi.
Predpomnilnika Vašega ponudnika ali usmerjevalnika ne morete sami izprazniti; tam počakate, da mine TTL.
V praksi: tako je videti v nadzorni plošči
V večini nadzornih plošč dig ni mogoče izvesti. Zato dig uporabljajte poleg nadzorne plošče: najprej v nadzorni plošči preverite, kaj ste vnesli, nato z dig @<Vaš imenski strežnik> preverite, ali imenski strežnik res to izdaja, in nato z dig @9.9.9.9, ali to že vidi tudi zunanji svet. Moj WebOké ima diagnostiko DNS, ki med seboj primerja imenske strežnike; druge stranke imajo podobne gumbe »preverjanje DNS«.
Povzetek
dig <ime> <vrsta>postavi isto vprašanje kot brskalnik ali poštni strežnik; najprej preberite status.- NOERROR z odgovorom je v redu, NOERROR brez odgovora pomeni »ime obstaja, vrsta ne«, NXDOMAIN pomeni »ime ne obstaja«, SERVFAIL pomeni »ni zanesljivega odgovora«.
- Z
@serverpovprašate določen razreševalnik ali neposredno avtoritativni imenski strežnik; tako vidite razliko med napako in predpomnilnikom. +short,+trace,+dnssec,+cdin-xso različice, ki jih boste najpogosteje potrebovali.- nslookup in Resolve-DnsName na Windows počneta isto.
Kviz
Naloga
Naloga Z8.2: dig in nslookup. Z dig, nslookup ali Resolve-DnsName (ali spletnim orodjem dig) poizvedite tri stvari:
- status imena, ki ne obstaja:
bestaat-niet-dnscursus.sidn.nl; - zapise MX za
wikipedia.org, neposredno pri enem od imenskih strežnikov wikipedia.org (najprej ga poiščite); - TTL, ki ga javni razreševalnik trenutno vrača za zapis A domene
sidn.nl(poizvedite dvakrat, z minuto vmes, in zabeležite obe številki).
Vnesite odgovore.
Za nadaljnje branje
Ti članki opisujejo korake pri WebOké; ukazi delujejo povsod enako.
