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.
- DirectAdmin vejledning 18.7: Mit domæne virker ikke endnu efter en flytning eller ændring
- En nameserver eller DNS-ændring kan tage op til 24 til 48 timer, før den er fuldt synlig overalt. Ser du ændringen ikke efter denne periode, så kontakt vores support, så hjælper vi dig videre.
- Send mails fra din VPS og indstil reverse DNS
