Modulul 8 · 8.2
Interogarea DNS cu dig și nslookup
Modulul 8: Securitate și rezolvarea problemelor · Timp de citire: 10 minute
Obiectiv de învățare: După această lecție veți putea interoga înregistrări cu dig și nslookup, veți putea interoga un server de nume specific și veți putea citi rezultatul.
Concepte-cheie: dig, nslookup, Resolve-DnsName, +short, @server, +trace, secțiunile ANSWER și AUTHORITY, status NOERROR, NXDOMAIN, SERVFAIL, dig -x
De ce să interogați dumneavoastră înșivă?
Un panou de control vă arată ce ați completat dumneavoastră. Ce vede restul lumii poate fi diferit: poate o altă parte administrează DNS-ul, poate există încă un răspuns vechi într-un cache. Cu un program de interogare puneți aceeași întrebare ca un browser sau un server de mail și vedeți răspunsul real.
Există trei programe uzuale:
| Program | Where | Comment |
|---|---|---|
dig | macOS, Linux (pe Windows prin WSL sau instalabil separat) | Cel mai complet, standard pentru administratori |
nslookup | Windows, macOS, Linux | Prezent peste tot, rezultat mai concis |
Resolve-DnsName | Windows PowerShell | Util pe Windows fără software suplimentar |
Nu aveți la îndemână o fereastră de comandă? Atunci puteți face exact același lucru cu un instrument dig online (lecția 8.3).
Prima dumneavoastră interogare cu dig
Deschideți Terminal (macOS/Linux) și tastați:
$ dig example.com ARezultatul arată, pe scurt, așa:
;; ->>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)Ce trebuie să citiți:
- status: cel mai important cuvânt. Vedeți tabelul de mai jos.
- flags:
adînseamnă că resolverul a verificat răspunsul cu DNSSEC (lecția 8.1). - ANSWER SECTION: înregistrările propriu-zise. Coloanele sunt aceleași ca într-o zonă: nume, TTL, clasă, tip, valoare.
- TTL (aici 2847): câte secunde mai rămâne acest răspuns în cache-ul resolverului. Dacă în zonă era 3600, atunci răspunsul are deja 753 de secunde vechime. Dacă îl interogați din nou, veți vedea numărul scăzând.
- SERVER: ce resolver ați interogat. Acasă, acesta este adesea routerul dumneavoastră.
Cele trei statusuri pe care trebuie să le cunoașteți
| Status | Semnificație | Ce să faceți |
|---|---|---|
NOERROR cu răspuns | Totul este în regulă, acesta este răspunsul | Valoarea nu este corectă? Atunci există o înregistrare greșită, sau vedeți un cache vechi |
NOERROR fără răspuns (ANSWER: 0) | Numele există, dar nu are o înregistrare de acest tip | Adesea: interogați tipul greșit (de exemplu A pentru un nume care are doar un CNAME sau doar MX) |
NXDOMAIN | Acest nume nu există deloc | Greșeală de tastare, înregistrare uitată, sau un nume de domeniu dublat precum mail.example.com.example.com |
SERVFAIL | Resolverul nu a putut obține un răspuns de încredere | Servere de nume inaccesibile, sau un lanț DNSSEC defect (încercați +cd) |
Variante utile
Doar răspunsul cu +short:
$ dig +short MX example.com
10 mail.example.com.
20 mail2.example.com.Interogarea directă a altui resolver sau a unui server de nume cu @. Acesta este cel mai important truc în cazul problemelor. Dacă interogați chiar serverul de nume autoritar, obțineți întotdeauna răspunsul proaspăt, fără 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.10Aici vedeți dintr-o privire ce se întâmplă: serverul de nume oferă deja adresa nouă (.20), resolverul public mai are încă în cache adresa veche (.10). Deci nu trebuie să faceți nimic, doar să așteptați trecerea TTL-ului (modulul 6).
Alte tipuri: adăugați tipul după nume.
$ 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.Urmărirea întregului traseu cu +trace. dig face atunci exact ce face un resolver: mai întâi root-ul, apoi TLD-ul, apoi serverul autoritar (lecția 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)Cu +trace vedeți ce servere de nume transmite de fapt registrul. Este util dacă aveți dubii dacă o modificare de server de nume a fost deja aplicată.
Vizualizarea DNSSEC cu +dnssec: primiți și semnăturile RRSIG. Cu +cd dezactivați verificarea pentru a vedea dacă un SERVFAIL provine din DNSSEC.
Reverse DNS cu -x (lecția 4.6):
$ dig +short -x 192.0.2.25
mail.example.com.Același lucru cu nslookup
nslookup funcționează pe orice computer. Formele cele mai importante:
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.9O a doua adresă după nume (aici 9.9.9.9) este serverul pe care îl interogați, la fel ca @ la dig. "Non-authoritative answer" înseamnă doar că răspunsul provine de la un resolver și nu de la serverul de nume autoritar: acest lucru este normal. Dacă numele nu există, nslookup spune Non-existent domain, ceea ce este echivalent cu 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 -DnsOnlyGolirea propriului cache
Un instrument online vede deja noul răspuns, dar computerul dumneavoastră încă nu? Atunci răspunsul vechi se află în cache-ul propriului computer sau browser.
- Windows:
ipconfig /flushdnsîn Command Prompt. - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderîn Terminal. - Linux cu systemd-resolved:
resolvectl flush-caches. - Browser: o fereastră privată, sau telefonul prin 4G/5G cu wifi dezactivat.
Cache-ul furnizorului dumneavoastră sau al routerului nu îl puteți goli chiar dumneavoastră; acolo așteptați trecerea TTL-ului.
În practică: cum arată într-un panou de control
În majoritatea panourilor de control nu puteți executa dig. De aceea, folosiți dig alături de panoul dumneavoastră: mai întâi verificați în panou ce ați completat, apoi cu dig @<serverul dumneavoastră de nume> verificați dacă serverul de nume chiar oferă acest răspuns, iar apoi cu dig @9.9.9.9 verificați dacă lumea exterioară îl vede deja. Contul meu WebOké are o funcție de diagnoză DNS care compară între ele serverele de nume; alte furnizoare au butoane similare de "verificare DNS".
Rezumat
dig <nume> <tip>pune aceeași întrebare ca un browser sau un server de mail; citiți mai întâi statusul.- NOERROR cu răspuns este bine, NOERROR fără răspuns înseamnă "numele există, tipul nu", NXDOMAIN înseamnă "numele nu există", SERVFAIL înseamnă "niciun răspuns de încredere".
- Cu
@serverinterogați direct un anumit resolver sau serverul de nume autoritar; astfel vedeți diferența dintre o eroare și un cache. +short,+trace,+dnssec,+cdși-xsunt variantele de care veți avea cel mai des nevoie.- nslookup și Resolve-DnsName fac același lucru pe Windows.
Quiz
Exercițiu
Exercițiul Z8.2: dig și nslookup. Interogați cu dig, nslookup sau Resolve-DnsName (sau un instrument dig online) trei lucruri:
- statusul unui nume care nu există:
bestaat-niet-dnscursus.sidn.nl; - înregistrările MX ale
wikipedia.org, direct la unul dintre serverele de nume ale wikipedia.org (căutați-l mai întâi); - TTL-ul pe care un resolver public îl returnează în acest moment pentru înregistrarea A a
sidn.nl(interogați de două ori, cu un minut între ele, și notați ambele numere).
Completați răspunsurile.
Lecturi suplimentare
Aceste articole descriu pașii la WebOké; comenzile funcționează la fel peste tot.
