Modul 8 · 8.2
Slå DNS op med dig og nslookup
Modul 8: Sikkerhed og fejlfinding · Læsetid: 10 minutter
Læringsmål: Efter denne lektion kan du bruge dig og nslookup til at slå records op, forespørge en bestemt navneserver og læse resultatet.
Nøglebegreber: dig, nslookup, Resolve-DnsName, +short, @server, +trace, ANSWER- og AUTHORITY-sektion, status NOERROR, NXDOMAIN, SERVFAIL, dig -x
Hvorfor slå det selv op?
Et panel viser, hvad du selv har indtastet. Det, resten af verden ser, kan være noget andet: måske administrerer en anden part DNS'en, måske ligger der stadig et gammelt svar i en cache. Med et opslagsprogram stiller du det samme spørgsmål som en browser eller mailserver, og du ser det reelle svar.
Der findes tre gængse programmer:
| Program | Hvor | Kommentar |
|---|---|---|
dig | macOS, Linux (Windows via WSL eller installeres separat) | Mest omfattende, standard hos administratorer |
nslookup | Windows, macOS, Linux | Findes overalt, mere kortfattet output |
Resolve-DnsName | Windows PowerShell | Praktisk på Windows uden ekstra software |
Har du ikke et kommandovindue ved hånden? Så kan du gøre præcis det samme med et online dig-værktøj (lektion 8.3).
Dit første spørgsmål med dig
Åbn Terminal (macOS/Linux) og skriv:
$ dig example.com AOutputtet ser forkortet sådan ud:
;; ->>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)Det, du skal læse:
- status: det vigtigste ord. Se tabellen nedenfor.
- flags:
adbetyder, at resolveren har kontrolleret svaret med DNSSEC (lektion 8.1). - ANSWER SECTION: selve records. Kolonnerne er de samme som i en zone: navn, TTL, klasse, type, værdi.
- TTL (her 2847): hvor mange sekunder dette svar stadig bliver i resolverens cache. Stod der 3600 i zonen, så er svaret altså allerede 753 sekunder gammelt. Spørger du igen, kan du se tallet tælle ned.
- SERVER: hvilken resolver du har spurgt. Derhjemme er det ofte din router.
De tre statusser, du skal kende
| Status | Betydning | Hvad du skal gøre |
|---|---|---|
NOERROR med svar | Alt er i orden, dette er svaret | Er værdien forkert? Så står der et forkert record, eller du ser en gammel cache |
NOERROR uden svar (ANSWER: 0) | Navnet findes, men har ikke et record af denne type | Ofte: du spørger efter den forkerte type (f.eks. A på et navn med kun et CNAME eller kun MX) |
NXDOMAIN | Dette navn findes slet ikke | Tastefejl, glemt record, eller et dobbelt domænenavn som mail.example.com.example.com |
SERVFAIL | Resolveren kunne ikke få et pålideligt svar | Navneservere utilgængelige, eller en defekt DNSSEC-kæde (prøv +cd) |
Praktiske varianter
Kun svaret med +short:
$ dig +short MX example.com
10 mail.example.com.
20 mail2.example.com.Spørge en anden resolver eller navneserver direkte med @. Dette er det vigtigste trick ved problemer. Spørger du den autoritative navneserver selv, får du altid det friske svar, uden 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.10Her ser du med det samme, hvad der sker: navneserveren giver allerede den nye adresse (.20), den offentlige resolver har stadig den gamle i cachen (.10). Du behøver altså ikke gøre noget, bare vente til TTL'en er gået (modul 6).
Andre typer: sæt typen efter navnet.
$ 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.Følge hele rejsen med +trace. dig gør så selv det, en resolver gør: først roden, så TLD'en, så den autoritative server (lektion 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)Med +trace ser du, hvilke navneservere registryen reelt oplyser. Det er praktisk, hvis du er i tvivl om, hvorvidt en navneserverændring allerede er slået igennem.
Se DNSSEC med +dnssec: du får RRSIG-signaturerne med. Med +cd slår du kontrollen fra for at se, om en SERVFAIL skyldes DNSSEC.
Reverse DNS med -x (lektion 4.6):
$ dig +short -x 192.0.2.25
mail.example.com.Det samme med nslookup
nslookup virker på enhver computer. De vigtigste former:
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.9En anden adresse efter navnet (her 9.9.9.9) er den server, du spørger, ligesom @ ved dig. "Non-authoritative answer" betyder blot, at svaret kommer fra en resolver og ikke fra den autoritative navneserver: det er normalt. Findes navnet ikke, siger nslookup Non-existent domain, hvilket er det samme som 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 -DnsOnlyTøm din egen cache
Ser et online værktøj allerede det nye svar, men din computer gør ikke endnu? Så ligger det gamle svar i cachen på din egen computer eller browser.
- Windows:
ipconfig /flushdnsi kommandoprompten. - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderi Terminal. - Linux med systemd-resolved:
resolvectl flush-caches. - Browser: et privat vindue, eller din telefon via 4G/5G med wifi slået fra.
Cachen hos din udbyder eller router kan du ikke selv tømme; der venter du blot TTL'en ud.
I praksis: sådan ser det ud i et panel
I de fleste paneler kan du ikke køre dig. Brug derfor dig ved siden af dit panel: tjek først i panelet, hvad du har indtastet, kontroller så med dig @<din navneserver>, om navneserveren rent faktisk udleverer det, og brug derefter dig @9.9.9.9 til at se, om omverdenen allerede ser det. Mit WebOké har en DNS-diagnose, der sammenligner navneserverne indbyrdes; andre udbydere har tilsvarende "DNS-kontrol"-knapper.
Opsummering
dig <navn> <type>stiller det samme spørgsmål som en browser eller mailserver; læs først statussen.- NOERROR med svar er godt, NOERROR uden svar betyder "navnet findes, typen ikke", NXDOMAIN betyder "navnet findes ikke", SERVFAIL betyder "intet pålideligt svar".
- Med
@serverspørger du en bestemt resolver eller den autoritative navneserver direkte; sådan ser du forskellen mellem en fejl og en cache. +short,+trace,+dnssec,+cdog-xer de varianter, du oftest har brug for.- nslookup og Resolve-DnsName gør det samme på Windows.
Quiz
Opgave
Opgave Z8.2: dig og nslookup. Slå tre ting op med dig, nslookup eller Resolve-DnsName (eller et online dig-værktøj):
- statussen for et navn, der ikke findes:
bestaat-niet-dnscursus.sidn.nl; - MX-records for
wikipedia.org, direkte hos en af navneserverne for wikipedia.org (find den først); - den TTL, som en offentlig resolver lige nu returnerer for A-recordet for
sidn.nl(spørg to gange, med et minuts mellemrum, og notér begge tal).
Udfyld svarene.
Læs videre
Disse artikler beskriver trinnene hos WebOké; kommandoerne virker ens overalt.
