8 modulis · 8.2
DNS užklausos su dig ir nslookup
8 modulis: Saugumas ir problemų sprendimas · Skaitymo trukmė: 10 min.
Mokymosi tikslas: Po šios pamokos galėsite su dig ir nslookup užklausti įrašus, kreiptis į konkretų vardų serverį ir skaityti gautą atsakymą.
Pagrindinės sąvokos: dig, nslookup, Resolve-DnsName, +short, @server, +trace, ANSWER ir AUTHORITY skiltys, būsena NOERROR, NXDOMAIN, SERVFAIL, dig -x
Kodėl verta patiems užklausti?
Valdymo skydelis parodo tai, ką Jūs esate įvedę. Tai, ką mato likęs pasaulis, gali skirtis: galbūt DNS valdo kita šalis, galbūt talpykloje dar yra likęs senas atsakymas. Naudodami užklausos programą užduodate tą patį klausimą, kurį užduotų naršyklė ar pašto serveris, ir matote tikrąjį atsakymą.
Yra trys dažniausiai naudojamos programos:
| Programa | Kur | Komentaras |
|---|---|---|
dig | macOS, Linux (Windows sistemoje per WSL arba įdiegus atskirai) | Išsamiausia, standartiškai naudojama administratorių |
nslookup | Windows, macOS, Linux | Yra visur, atsakymas glaustesnis |
Resolve-DnsName | Windows PowerShell | Patogu Windows sistemoje be papildomos programinės įrangos |
Neturite po ranka komandų lango? Tą patį galite atlikti su internetiniu dig įrankiu (pamoka 8.3).
Pirmoji užklausa su dig
Atidarykite Terminalą (macOS/Linux) ir įveskite:
$ dig example.com AAtsakymas, sutrumpintas, atrodo taip:
;; ->>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)Ką reikia perskaityti:
- status: svarbiausias žodis. Žr. lentelę žemiau.
- flags:
adreiškia, kad resolveris patikrino atsakymą su DNSSEC (pamoka 8.1). - ANSWER SECTION: patys įrašai. Stulpeliai yra tokie patys kaip zonoje: pavadinimas, TTL, klasė, tipas, reikšmė.
- TTL (čia 2847): kiek sekundžių šis atsakymas dar bus resolverio talpykloje. Jei zonoje buvo nurodyta 3600, tai šis atsakymas jau yra 753 sekundžių senumo. Paklausus dar kartą, matysite, kaip skaičius mažėja.
- SERVER: kurio resolverio buvo paklausta. Namuose tai dažnai būna Jūsų maršrutizatorius.
Trys būsenos, kurias reikia žinoti
| Būsena | Reikšmė | Ką daryti |
|---|---|---|
NOERROR su atsakymu | Viskas tvarkoje, tai ir yra atsakymas | Reikšmė neteisinga? Tada įrašas nurodytas klaidingai, arba matote seną talpyklos duomenį |
NOERROR be atsakymo (ANSWER: 0) | Pavadinimas egzistuoja, bet neturi šio tipo įrašo | Dažniausiai: užklausiamas netinkamas tipas (pvz., A, kai yra tik CNAME arba tik MX) |
NXDOMAIN | Šio pavadinimo iš viso nėra | Rašybos klaida, pamirštas įrašas arba dubliuotas domeno pavadinimas, pvz., mail.example.com.example.com |
SERVFAIL | Resolveris negalėjo gauti patikimo atsakymo | Vardų serveriai nepasiekiami, arba sutrikusi DNSSEC grandinė (pabandykite +cd) |
Naudingi variantai
Tik atsakymas su +short:
$ dig +short MX example.com
10 mail.example.com.
20 mail2.example.com.Kito resolverio arba vardų serverio tiesioginė užklausa su @. Tai svarbiausias triukas sprendžiant problemas. Jei užklausiate patį autoritetinį vardų serverį, visada gaunate naujausią atsakymą, be talpyklos:
$ 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.10Čia iš karto matote, kas vyksta: vardų serveris jau pateikia naują adresą (.20), o viešasis resolveris talpykloje vis dar turi seną (.10). Taigi, nieko daryti nereikia, tik palaukti, kol baigsis TTL (modulis 6).
Kiti tipai: po pavadinimo nurodykite tipą.
$ 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.Visos kelionės stebėjimas su +trace. Tada dig pats atlieka tai, ką daro resolveris: pirmiausia root, paskui TLD, tada autoritetinis serveris (pamoka 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)Su +trace matote, kuriuos vardų serverius registras iš tikrųjų pateikia. Tai naudinga, kai abejojate, ar vardų serverio pakeitimas jau įsigaliojo.
DNSSEC matymas su +dnssec: gaunate ir RRSIG parašus. Su +cd išjungiate patikrinimą, kad pamatytumėte, ar SERVFAIL kyla dėl DNSSEC.
Atvirkštinis DNS su -x (pamoka 4.6):
$ dig +short -x 192.0.2.25
mail.example.com.Tas pats su nslookup
nslookup veikia kiekviename kompiuteryje. Svarbiausios formos:
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.9Antrasis adresas po pavadinimo (čia 9.9.9.9) yra serveris, kurio klausiama, lygiai taip pat kaip @ naudojant dig. "Non-authoritative answer" reiškia tik tai, kad atsakymas gautas iš resolverio, o ne iš autoritetinio vardų serverio: tai normalu. Jei pavadinimo nėra, nslookup praneša Non-existent domain, kas atitinka 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 -DnsOnlySavo talpyklos išvalymas
Internetinis įrankis jau rodo naują atsakymą, o Jūsų kompiuteris dar ne? Tada senas atsakymas yra Jūsų paties kompiuterio arba naršyklės talpykloje.
- Windows:
ipconfig /flushdnskomandų eilutėje (Opdrachtprompt). - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderTerminale. - Linux su systemd-resolved:
resolvectl flush-caches. - Naršyklė: privatus langas, arba telefonas per 4G/5G, išjungus wifi.
Jūsų tiekėjo ar maršrutizatoriaus talpyklos patys išvalyti negalite; tenka palaukti, kol baigsis TTL.
Praktikoje: kaip tai atrodo valdymo skydelyje
Daugumoje valdymo skydelių dig paleisti negalima. Todėl naudokite dig šalia valdymo skydelio: pirmiausia pažiūrėkite skydelyje, ką esate įvedę, tada su dig @<jūsų vardų serveris> patikrinkite, ar vardų serveris iš tikrųjų tai pateikia, o tada su dig @9.9.9.9, ar tai jau matyti likusiame pasaulyje. Mano WebOké turi DNS diagnostiką, kuri tarpusavyje palygina vardų serverius; kitos šalys turi panašius „DNS patikros“ mygtukus.
Santrauka
dig <pavadinimas> <tipas>užduoda tą patį klausimą, kurį užduotų naršyklė ar pašto serveris; pirmiausia perskaitykite būseną.- NOERROR su atsakymu reiškia, kad viskas gerai, NOERROR be atsakymo reiškia „pavadinimas egzistuoja, tipo nėra“, NXDOMAIN reiškia „pavadinimo nėra“, SERVFAIL reiškia „patikimo atsakymo negauta“.
- Su
@serveružklausiate konkretaus resolverio arba tiesiogiai autoritetinio vardų serverio; taip pamatote skirtumą tarp klaidos ir talpyklos. +short,+trace,+dnssec,+cdir-xyra dažniausiai reikalingi variantai.- nslookup ir Resolve-DnsName Windows sistemoje atlieka tą patį.
Testas
Užduotis
Užduotis Z8.2: dig ir nslookup. Su dig, nslookup arba Resolve-DnsName (arba internetiniu dig įrankiu) užklauskite tris dalykus:
- neegzistuojančio pavadinimo būseną:
bestaat-niet-dnscursus.sidn.nl; wikipedia.orgMX įrašus, tiesiogiai iš vieno iš wikipedia.org vardų serverių (pirmiausia jį susiraskite);- TTL, kurį viešasis resolveris šiuo metu grąžina
sidn.nlA įrašui (užklauskite du kartus, su minutės pertrauka, ir užsirašykite abu skaičius).
Įveskite atsakymus.
Skaitykite daugiau
Šiuose straipsniuose aprašomi veiksmai WebOké sistemoje; komandos visur veikia vienodai.
