Moduuli 8 · 8.2
DNS:n kysely dig- ja nslookup-komennoilla
Moduuli 8: Turvallisuus ja ongelmien ratkaisu · Lukuaika: 10 minuuttia
Oppitavoite: Tämän oppitunnin jälkeen osaat hakea tietueita dig- ja nslookup-komennoilla, kysyä tiettyä nimipalvelinta ja lukea tulosteen.
Keskeiset käsitteet: dig, nslookup, Resolve-DnsName, +short, @server, +trace, ANSWER- ja AUTHORITY-osio, status NOERROR, NXDOMAIN, SERVFAIL, dig -x
Miksi kysyä itse?
Hallintapaneeli näyttää sen, mitä olet itse syöttänyt. Se, mitä muu maailma näkee, voi olla eri asia: ehkä DNS:ää hallinnoi joku muu taho, tai välimuistissa on vielä vanha vastaus. Kyselytyökalulla esität saman kysymyksen kuin selain tai sähköpostipalvelin, ja näet todellisen vastauksen.
Käytössä on kolme yleistä ohjelmaa:
| Ohjelma | Where | Comment |
|---|---|---|
dig | macOS, Linux (Windowsissa WSL:n kautta tai erikseen asennettava) | Kattavin, ylläpitäjien vakiotyökalu |
nslookup | Windows, macOS, Linux | Kaikkialla saatavilla, suppeampi tuloste |
Resolve-DnsName | Windows PowerShell | Kätevä Windowsilla ilman lisäohjelmistoja |
Eikö komentorivi ole käden ulottuvilla? Voit tehdä saman verkossa toimivalla dig-työkalulla (oppitunti 8.3).
Ensimmäinen kysely dig-komennolla
Avaa Terminal (macOS/Linux) ja kirjoita:
$ dig example.com ATuloste näyttää lyhennettynä tältä:
;; ->>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)Mitä tulosteesta kannattaa lukea:
- status: tärkein sana. Katso alla oleva taulukko.
- flags:
adtarkoittaa, että resolveri on tarkistanut vastauksen DNSSEC:n avulla (oppitunti 8.1). - ANSWER SECTION: itse tietueet. Sarakkeet ovat samat kuin vyöhykkeessä: nimi, TTL, luokka, tyyppi, arvo.
- TTL (tässä 2847): kuinka monta sekuntia tämä vastaus pysyy vielä resolverin välimuistissa. Jos vyöhykkeessä luki 3600, vastaus on siis jo 753 sekuntia vanha. Kysyt uudelleen, ja näet luvun pienenevän.
- SERVER: mitä resolveria kysyit. Kotona se on usein reitittimesi.
Kolme statusta, jotka kannattaa tuntea
| Status | Merkitys | Mitä tehdä |
|---|---|---|
NOERROR vastauksen kanssa | Kaikki kunnossa, tämä on vastaus | Jos arvo on väärä, tietue on virheellinen, tai näet vanhan välimuistin |
NOERROR ilman vastausta (ANSWER: 0) | Nimi on olemassa, mutta sillä ei ole tämän tyyppistä tietuetta | Usein: kysyt väärää tyyppiä (esimerkiksi A-tietuetta nimeltä, jolla on vain CNAME tai vain MX) |
NXDOMAIN | Tätä nimeä ei ole olemassa lainkaan | Kirjoitusvirhe, unohdettu tietue, tai kaksinkertainen verkkotunnus kuten mail.example.com.example.com |
SERVFAIL | Resolveri ei saanut luotettavaa vastausta | Nimipalvelimet tavoittamattomissa, tai rikkinäinen DNSSEC-ketju (kokeile +cd) |
Hyödyllisiä muunnelmia
Pelkkä vastaus komennolla +short:
$ dig +short MX example.com
10 mail.example.com.
20 mail2.example.com.Toisen resolverin tai nimipalvelimen kysyminen suoraan @-merkillä. Tämä on tärkein kikka ongelmatilanteissa. Kun kysyt autoritatiiviselta nimipalvelimelta itseltään, saat aina tuoreimman vastauksen, ilman välimuistia:
$ 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.10Tästä näet heti, mistä on kyse: nimipalvelin antaa jo uuden osoitteen (.20), julkisella resolverilla on vielä vanha välimuistissa (.10). Sinun ei siis tarvitse tehdä mitään, vain odottaa TTL:n umpeutumista (moduuli 6).
Muut tyypit: lisää tyyppi nimen perään.
$ 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.Koko matkan seuraaminen komennolla +trace. dig tekee silloin itse sen, mitä resolveri tekee: ensin juuri, sitten TLD, sitten autoritatiivinen palvelin (oppitunti 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)+trace-komennolla näet, mitkä nimipalvelimet rekisterinpitäjä todella antaa eteenpäin. Tämä on hyödyllistä, jos epäilet onko nimipalvelinmuutos jo toteutunut.
DNSSEC näkyviin komennolla +dnssec: saat mukaan RRSIG-allekirjoitukset. +cd-komennolla kytket tarkistuksen pois nähdäksesi, johtuuko SERVFAIL DNSSEC:stä.
Käänteinen DNS komennolla -x (oppitunti 4.6):
$ dig +short -x 192.0.2.25
mail.example.com.Sama nslookup-komennolla
nslookup toimii jokaisella tietokoneella. Tärkeimmät muodot:
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.9Toinen osoite nimen perässä (tässä 9.9.9.9) on palvelin, jolta kysyt, aivan kuten @ dig-komennossa. "Non-authoritative answer" tarkoittaa vain sitä, että vastaus tulee resolverilta eikä autoritatiiviselta nimipalvelimelta: tämä on normaalia. Jos nimeä ei ole olemassa, nslookup sanoo Non-existent domain, mikä vastaa NXDOMAIN-statusta.
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 -DnsOnlyOman välimuistin tyhjentäminen
Näkeekö verkkotyökalu jo uuden vastauksen, mutta oma tietokoneesi ei vielä? Silloin vanha vastaus on oman tietokoneesi tai selaimesi välimuistissa.
- Windows:
ipconfig /flushdnskomentokehotteessa. - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderTerminal-ikkunassa. - Linux systemd-resolved:llä:
resolvectl flush-caches. - Selain: yksityinen ikkuna, tai puhelimesi 4G/5G-yhteydellä ja wifi pois päältä.
Operaattorisi tai reitittimesi välimuistia et voi itse tyhjentää; sitä varten odotat TTL:n umpeutumista.
Käytännössä: näin se näkyy hallintapaneelissa
Useimmissa hallintapaneeleissa et voi ajaa dig-komentoa. Käytä digiä siis paneelisi rinnalla: katso ensin paneelista, mitä olet syöttänyt, tarkista sitten komennolla dig @<oma nimipalvelimesi> antaako nimipalvelin todella saman tiedon, ja lopuksi komennolla dig @9.9.9.9 näkeekö ulkomaailma sen jo. Oma WebOké sisältää DNS-diagnoosin, joka vertailee nimipalvelimia keskenään; muilla palveluntarjoajilla on vastaavia "DNS-tarkistus"-painikkeita.
Yhteenveto
dig <nimi> <tyyppi>esittää saman kysymyksen kuin selain tai sähköpostipalvelin; lue ensin status.- NOERROR vastauksen kanssa on hyvä, NOERROR ilman vastausta tarkoittaa "nimi on olemassa, tyyppi ei", NXDOMAIN tarkoittaa "nimeä ei ole olemassa", SERVFAIL tarkoittaa "ei luotettavaa vastausta".
@server-komennolla kysyt tiettyä resolveria tai autoritatiivista nimipalvelinta suoraan; näin näet eron virheen ja välimuistin välillä.+short,+trace,+dnssec,+cdja-xovat muunnelmat, joita tarvitset useimmin.- nslookup ja Resolve-DnsName tekevät saman Windowsilla.
Tietovisa
Tehtävä
Tehtävä Z8.2: dig ja nslookup. Kysy dig-, nslookup- tai Resolve-DnsName-komennolla (tai verkossa toimivalla dig-työkalulla) kolme asiaa:
- status nimelle, jota ei ole olemassa:
bestaat-niet-dnscursus.sidn.nl; wikipedia.org:n MX-tietueet, suoraan yhdeltä wikipedia.org:n nimipalvelimista (etsi se ensin);- TTL, jonka julkinen resolveri antaa juuri nyt
sidn.nl:n A-tietueelle (kysy kahdesti, minuutin välein, ja kirjaa molemmat luvut muistiin).
Täytä vastaukset.
Lue lisää
Nämä artikkelit kuvaavat vaiheet WebOké:n ympäristössä; komennot toimivat samalla tavalla kaikkialla.
