Modul 8 · 8.2
Slå opp DNS med dig og nslookup
Modul 8: Sikkerhet og feilsøking · Lesetid: 10 minutter
Læringsmål: Etter denne leksjonen kan du bruke dig og nslookup til å slå opp poster, spørre en bestemt navnetjener direkte og lese svaret.
Nøkkelbegreper: dig, nslookup, Resolve-DnsName, +short, @server, +trace, ANSWER- og AUTHORITY-seksjonen, status NOERROR, NXDOMAIN, SERVFAIL, dig -x
Hvorfor slå opp selv?
Et panel viser deg det du selv har fylt inn. Det resten av verden ser, kan være annerledes: kanskje forvalter en annen part DNS-en, kanskje ligger det fortsatt et gammelt svar i en cache. Med et oppslagsprogram stiller du det samme spørsmålet som en nettleser eller e-postserver gjør, og du ser det ekte svaret.
Det finnes tre vanlige programmer:
| Program | Where | Comment |
|---|---|---|
dig | macOS, Linux (Windows via WSL eller kan installeres separat) | Mest omfattende, standard hos driftsansvarlige |
nslookup | Windows, macOS, Linux | Finnes overalt, mer kompakt svar |
Resolve-DnsName | Windows PowerShell | Praktisk på Windows uten ekstra programvare |
Har du ikke et kommandovindu for hånden? Da kan du gjøre nøyaktig det samme med et online dig-verktøy (leksjon 8.3).
Ditt første spørsmål med dig
Åpne Terminal (macOS/Linux) og skriv:
$ dig example.com AResultatet ser forkortet slik ut:
;; ->>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 må lese:
- status: det viktigste ordet. Se tabellen under.
- flags:
adbetyr at resolveren har kontrollert svaret med DNSSEC (leksjon 8.1). - ANSWER SECTION: selve postene. Kolonnene er de samme som i en sone: navn, TTL, klasse, type, verdi.
- TTL (her 2847): hvor mange sekunder dette svaret fortsatt blir i cachen til resolveren. Sto det 3600 i sonen, er svaret altså allerede 753 sekunder gammelt. Spør du på nytt, ser du tallet telle nedover.
- SERVER: hvilken resolver du har spurt. Hjemme er det ofte ruteren din.
De tre statusene du bør kjenne til
| Status | Betydning | Hva du bør gjøre |
|---|---|---|
NOERROR med svar | Alt i orden, dette er svaret | Stemmer ikke verdien? Da står det en feil post, eller du ser en gammel cache |
NOERROR uten svar (ANSWER: 0) | Navnet finnes, men har ingen post av denne typen | Ofte: du spør etter feil type (for eksempel A på et navn som bare har en CNAME eller bare MX) |
NXDOMAIN | Dette navnet finnes ikke i det hele tatt | Skrivefeil, glemt post, eller et dobbelt domenenavn som mail.example.com.example.com |
SERVFAIL | Resolveren klarte ikke å få et pålitelig svar | Navnetjenere utilgjengelige, eller en ødelagt DNSSEC-kjede (prøv +cd) |
Nyttige varianter
Bare svaret med +short:
$ dig +short MX example.com
10 mail.example.com.
20 mail2.example.com.Spørre en annen resolver eller en navnetjener direkte med @. Dette er det viktigste trikset ved problemer. Spør du den autoritative navnetjeneren selv, får du alltid det ferskeste svaret, uten 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 ett blikk hva som skjer: navnetjeneren gir allerede den nye adressen (.20), den offentlige resolveren har fortsatt den gamle i cachen (.10). Du trenger altså ikke å gjøre noe, bare vente til TTL-en er gått ut (modul 6).
Andre typer: sett typen etter 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 reisen med +trace. Da gjør dig selv det en resolver gjør: først roten, så toppdomenet (TLD), så den autoritative serveren (leksjon 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 navnetjenere registry faktisk oppgir. Det er praktisk hvis du er i tvil om en navnetjenerendring allerede er gjennomført.
Se DNSSEC med +dnssec: da får du RRSIG-signaturene med. Med +cd slår du av kontrollen for å se om en SERVFAIL kommer av DNSSEC.
Reverse DNS med -x (leksjon 4.6):
$ dig +short -x 192.0.2.25
mail.example.com.Det samme med nslookup
nslookup fungerer på enhver datamaskin. De viktigste formene:
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 andre adresse etter navnet (her 9.9.9.9) er serveren du spør, akkurat som @ hos dig. «Non-authoritative answer» betyr bare at svaret kommer fra en resolver og ikke fra den autoritative navnetjeneren: det er normalt. Finnes ikke navnet, sier nslookup Non-existent domain, som 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 verktøy allerede det nye svaret, men ikke datamaskinen din ennå? Da ligger det gamle svaret i cachen på din egen datamaskin eller nettleser.
- Windows:
ipconfig /flushdnsi ledeteksten. - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderi Terminal. - Linux med systemd-resolved:
resolvectl flush-caches. - Nettleser: et privat vindu, eller mobilen din via 4G/5G med wifi avslått.
Cachen hos leverandøren din eller ruteren kan du ikke tømme selv, der venter du til TTL-en går ut.
I praksis: slik ser det ut i et panel
I de fleste paneler kan du ikke kjøre dig. Bruk derfor dig ved siden av panelet: se først i panelet hva du har fylt inn, kontroller deretter med dig @<din navnetjener> om navnetjeneren faktisk gir det samme ut, og kontroller så med dig @9.9.9.9 om omverdenen allerede ser det. Min side har en DNS-diagnose som sammenligner navnetjenerne innbyrdes; andre leverandører har lignende «DNS-sjekk»-knapper.
Oppsummering
dig <navn> <type>stiller det samme spørsmålet som en nettleser eller e-postserver; les først status.- NOERROR med svar er bra, NOERROR uten svar betyr «navnet finnes, typen ikke», NXDOMAIN betyr «navnet finnes ikke», SERVFAIL betyr «ikke noe pålitelig svar».
- Med
@serverspør du en bestemt resolver eller den autoritative navnetjeneren direkte; slik ser du forskjellen mellom en feil og en cache. +short,+trace,+dnssec,+cdog-xer de variantene du trenger oftest.- nslookup og Resolve-DnsName gjør det samme på Windows.
Quiz
Oppgave
Oppgave Z8.2: dig og nslookup. Slå opp tre ting med dig, nslookup eller Resolve-DnsName (eller et online dig-verktøy):
- statusen til et navn som ikke finnes:
bestaat-niet-dnscursus.sidn.nl; - MX-postene til
wikipedia.org, direkte hos en av navnetjenerne til wikipedia.org (slå den opp først); - TTL-en som en offentlig resolver akkurat nå gir tilbake for A-posten til
sidn.nl(spør to ganger, med et minutt mellom, og noter begge tallene).
Fyll inn svarene.
Les mer
Disse artiklene beskriver trinnene hos WebOké; kommandoene fungerer likt overalt.
