Tips en Trucs 2024

DNS lookups en reverse lookups met dig

De dig opdracht, kort voor Domain Information Groper, is een zeer veelzijdig en nuttig hulpmiddel voor netwerkbeheerders en mensen die met het domeinnaamsysteem (DNS) werken. Hiermee kun je DNS-servers om informatie vragen over hostadressen, mailuitwisselingen, naamservers en andere gerelateerde DNS-records.

Deze krachtige opdracht heeft veel toepassingen en kan gebruikt worden voor verschillende taken, van eenvoudige DNS lookups tot meer geavanceerde probleemoplossing en analyse. Vandaag gaan we een aantal van de meest voorkomende gebruikssituaties voor de dig opdracht verkennen en voorbeelden geven om de functionaliteit te illustreren.

Standaard is de dig opdracht in de meeste distributies standaard geïnstalleerd.

Een voorbeeld: om het MX record voor het domein pindanet.be op te halen met de Google DNS server op 8.8.8.8, zou onze dig opdracht er als volgt uitzien:

dany@pindabook:~$ dig @8.8.8.8 pindanet.be MX
; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> @8.8.8.8 pindanet.be MX
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61569
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;pindanet.be.                   IN      MX

;; ANSWER SECTION:
pindanet.be.            10800   IN      MX      10 mx2.pub.mailpod8-cph3.one.com.
pindanet.be.            10800   IN      MX      10 mx3.pub.mailpod8-cph3.one.com.
pindanet.be.            10800   IN      MX      10 mx1.pub.mailpod8-cph3.one.com.

;; Query time: 36 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Sun Aug 11 16:04:50 CEST 2024
;; MSG SIZE  rcvd: 125

Als er geen optionele opties worden gegeven, zal de dig opdracht standaard de A-record weergeven in de ANSWER-sectie.

dany@pindabook:~$ dig pindanet.be

; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> pindanet.be
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46746
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;pindanet.be.                   IN      A

;; ANSWER SECTION:
pindanet.be.            3237    IN      A       46.30.213.10

;; Query time: 8 msec
;; SERVER: 192.168.128.1#53(192.168.128.1) (UDP)
;; WHEN: Sun Aug 11 16:07:15 CEST 2024
;; MSG SIZE  rcvd: 56

Deze sectie heeft vijf kolommen, die elk staan voor:

Je kunt de hoeveelheid informatie die de dig opdracht weergeeft aanzienlijk verminderen door de optie +nocomments toe te voegen.

dany@pindabook:~$ dig pindanet.be +nocomments

; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> pindanet.be +nocomments
;; global options: +cmd
;pindanet.be.                   IN      A
pindanet.be.            3187    IN      A       46.30.213.10
;; Query time: 0 msec
;; SERVER: 192.168.128.1#53(192.168.128.1) (UDP)
;; WHEN: Sun Aug 11 16:08:05 CEST 2024
;; MSG SIZE  rcvd: 56

Dig biedt een eenvoudige manier om alleen op de ANSWER-sectie te focussen. De combinatie van de opties +noall, waarmee alle weergavevlaggen worden gewist, en +answer, waarmee het ANSWER-gedeelte in het queryantwoord wordt opgenomen, levert een proper en gemakkelijk te lezen resultaat op.

dany@pindabook:~$ dig pindanet.be +noall +answer
pindanet.be.            3126    IN      A       46.30.213.10

We kunnen het verkregen resultaat nog verder vereenvoudigen door de optie +short toe te voegen om alle extra informatie uit het antwoord op onze vraag te verwijderen en alleen het adres terug te krijgen.

dany@pindabook:~$ dig pindanet.be +short
46.30.213.10

Standaard stuurt dig query's naar de DNS server die als standaard is opgegeven voor lokaal gebruik op je Linux systeem. Soms wil je de query echter naar een andere DNS-server sturen dan je standaard. Gebruik hiervoor de syntaxis @server, waarbij server het IP-adres of de naam van de DNS-server is.

In het eerste voorbeeld hebben we de Google DNS-server (8.8.8.8) gebruikt, gebruik het IP-ades 1.1.1.1 om de Cloudflare DNS-server te gebruiken:

dany@pindabook:~$ dig @1.1.1.1 pindanet.be

; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> @1.1.1.1 pindanet.be
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29557
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; EDE: 10 (RRSIGs Missing): (for DNSKEY be., id = 12664)
;; QUESTION SECTION:
;pindanet.be.                   IN      A

;; ANSWER SECTION:
pindanet.be.            3600    IN      A       46.30.213.10

;; Query time: 52 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Sun Aug 11 16:11:56 CEST 2024
;; MSG SIZE  rcvd: 88

DNS-recordtypes variëren, de meest voorkomende zijn A, CNAME, MX, NS, TXT, enz. De volledige lijst is hier beschikbaar. Daarnaast kun je de dig opdracht gebruiken om naar een specifiek DNS-recordtype te zoeken door de naam ervan aan het einde van de opdracht toe te voegen.

Bijvoorbeeld om informatie over het MX-record (Mail Exchanger) te verkrijgen:

dany@pindabook:~$ dig pindanet.be MX

; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> pindanet.be MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36104
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;pindanet.be.                   IN      MX

;; ANSWER SECTION:
pindanet.be.            10800   IN      MX      10 mx2.pub.mailpod8-cph3.one.com.
pindanet.be.            10800   IN      MX      10 mx1.pub.mailpod8-cph3.one.com.
pindanet.be.            10800   IN      MX      10 mx3.pub.mailpod8-cph3.one.com.

;; Query time: 16 msec
;; SERVER: 192.168.128.1#53(192.168.128.1) (UDP)
;; WHEN: Sun Aug 11 16:14:02 CEST 2024
;; MSG SIZE  rcvd: 125

Als je niet zeker weet waar een verkeerde configuratie een probleem kan veroorzaken, kun je een +trace doen om te zien wat er gebeurt bij elke stap van het opzoekproces.

dany@pindabook:~$ dig pindanet.be +trace

; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> pindanet.be +trace
;; global options: +cmd
.                       62826   IN      NS      c.root-servers.net.
.                       62826   IN      NS      d.root-servers.net.
.                       62826   IN      NS      e.root-servers.net.
.                       62826   IN      NS      f.root-servers.net.
.                       62826   IN      NS      g.root-servers.net.
.                       62826   IN      NS      h.root-servers.net.
.                       62826   IN      NS      i.root-servers.net.
.                       62826   IN      NS      j.root-servers.net.
.                       62826   IN      NS      k.root-servers.net.
.                       62826   IN      NS      l.root-servers.net.
.                       62826   IN      NS      m.root-servers.net.
.                       62826   IN      NS      a.root-servers.net.
.                       62826   IN      NS      b.root-servers.net.
.                       62826   IN      RRSIG   NS 8 0 518400 20240824050000 20240811040000 20038 . CZjL/JS9/gZlpd/tCH6YD2jRP7LTzZI/DVOI9f2a9q0P3weTqwz2TB40 QysOFaMuaQLGDJSwPHo1tLqTU6eg7hXXJ3bL47QSbstLbsJjnsNbjdca aOxf3aH2GE7BzsWxJ7dB0W9FqjeoPJDYZCgf7FdczVXAftAnh7ZQaLn4 A43r9GG/WxCkQs3WgJ8uZ4USEiGBEaPHaVV9jdAaXzl76go1rqPmRUz2 VKuKSo97fiVWQ6ZHmX4A3I+ZFv9kXP1+1WWQTcSnuvsg/lZTnwMMsejB Xo1aK1B3pNrZZNUi78NvkY2jmOUw4JSdg7ubvZvUbsAiaotvngbK5eRr t79y5Q==
;; Received 525 bytes from 192.168.128.1#53(192.168.128.1) in 4 ms

be.                     172800  IN      NS      d.nsset.be.
be.                     172800  IN      NS      a.nsset.be.
be.                     172800  IN      NS      z.nsset.be.
be.                     172800  IN      NS      b.nsset.be.
be.                     172800  IN      NS      c.nsset.be.
be.                     172800  IN      NS      y.nsset.be.
be.                     86400   IN      DS      52756 8 2 5485AC33DD7C7ED237EA2A4BD269731C816960FE181042024484B5CE CA6ECC9F
be.                     86400   IN      DS      12664 8 2 75141E9B1188A95A7A855BF47E278A742A5E3F2DDEED8E995D749D48 F2F0E72D
be.                     86400   IN      RRSIG   DS 8 1 86400 20240824050000 20240811040000 20038 . Vj5cxZgAbPF5XyAtO957mqei+8miUVWKkf0NZUt4/nN8wcFk40y9B1q4 G3FIMQjHmLpBufu6qdSnPoxvw9FJ2zPHLer3RUNeX3UXF9y34bc8LsO8 v5F41vv7pPRmz1Yb8vVXnixFGONFoYrSqXQP0+rL8TCnjmnhn+H51M7y 02LjPCzCbZ7tejdmA8KmVnPDAHExwz0mCDc2j8PflFsUbKieox/IbfLZ s76uY1hPmPdQRQetdtlGSzAvleDOIbq9fuHNzmjZ0/ntpdtndj88vCxl 0AC42IqQ3h49za438oxeBrfkARWyCM5av59oI2AXSi4oI2fAjqlcbI41 1vInAw==
;; Received 819 bytes from 2001:500:12::d0d#53(g.root-servers.net) in 60 ms

pindanet.be.            86400   IN      NS      ns02.one.com.
pindanet.be.            86400   IN      NS      ns01.one.com.
pindanet.be.            86400   IN      DS      47146 13 2 8490B0AFF65DFF059C8436184617924E9650587AE95386783019FCC8 B8444C74
pindanet.be.            86400   IN      RRSIG   DS 8 2 86400 20240826000653 20240804205434 23343 be. Uz+ZX4DcztLfgtmZds5CLN/9u5vPmwGyswrNJw3RSTH3WKYXfusnfzJN mdos/uK0PYAV7Quwn1LPwhgyCDoPihFJBfxVybnGSIyXZMDdiDL01dVT RYQoyfrw56fnsiqC0VLlzyKAIO4/1DT0RQfZ+wQ5mYRPx93Qew3IE8hT iRQ=
;; Received 295 bytes from 194.0.43.1#53(c.nsset.be) in 8 ms

pindanet.be.            3600    IN      A       46.30.213.10
pindanet.be.            3600    IN      RRSIG   A 13 2 3600 20240822000000 20240801000000 17876 pindanet.be. 4urg/00IiV/uW0ysvFQC+FYZRNLVX8c3Dhl7fZWnn2TSA063w+7rWa5t V6E4rzo9DN+l2laG6snQv7CWXUZ/XA==
;; Received 163 bytes from 2001:67c:28cc::10#53(ns01.one.com) in 16 ms

Gebruik de optie -x van dig om een domeinnaam op te zoeken aan de hand van het IP-adres. Deze optie stelt vereenvoudigde reverse DNS lookups in om adressen aan namen te koppelen. Het adres kan een IPv4-adres in punt notatie of een IPv6-adres met dubbele punt zijn.

dany@pindabook:~$ dig -x 46.30.213.10

; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> -x 46.30.213.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12491
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;10.213.30.46.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
10.213.30.46.in-addr.arpa. 3600 IN      PTR     webcluster1.webpod12-cph3.one.com.

;; Query time: 16 msec
;; SERVER: 192.168.128.1#53(192.168.128.1) (UDP)
;; WHEN: Sun Aug 11 16:17:11 CEST 2024
;; MSG SIZE  rcvd: 101

In plaats van voor elk domein afzonderlijk een dig query uit te voeren, kan je dig gebruiken om een DNS zoekopdracht uit te voeren voor een lijst van domeinen (batch query's). Hiervoor voeg je de domeinnamen in een tekstbestand in, één per regel, en voer je de dig query uit op het bestand met de optie -f.

Laten we beginnen met het aanmaken van een tekstbestand:

dany@pindabook:~$ nano domeinen.txt

Met een lijst van op te vragen domeinen:

pindanet.be
debian.org
debian.be

Sla het bestand op en sluit af. We hebben aan de volgende dig opdracht ook de optie +short toegevoegd om de queryresultaten overzichtelijk weer te geven.

dany@pindabook:~$ dig -f domeinen.txt +short
46.30.213.10
151.101.130.132
151.101.2.132
151.101.66.132
151.101.194.132
94.250.201.199

Het kan vervelend zijn om de dig opdracht herhaaldelijk met dezelfde opties te typen als we het vaak gebruiken. Gelukkig kunnen we met het bestand ~/.digrc alle standaardwaarden waarmee de opdracht wordt uitgevoerd opnieuw definiëren, zodat we ze niet elke keer hoeven te typen.

Stel dat je wilt dat dig altijd de uitvoer van de query toont, waarbij het commentaar standaard wordt verwijderd. Maak een “.digrc” bestand aan in je home directory

dany@pindabook:~$ nano .digrc

En voeg de juiste optie toe, in dit voorbeeld +nocomments. Als je meer opties wilt toevoegen, plaats ze dan onder elkaar telkens op een aparte regel.

+nocomments

Sla het bestand op en sluit af. De volgende keer dat je de dig opdracht uitvoert zonder optionele opties, krijg je alleen het korte antwoord op je DNS query.

dany@pindabook:~$ dig pindanet.be

; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> pindanet.be
;; global options: +cmd
;pindanet.be.                   IN      A
pindanet.be.            2443    IN      A       46.30.213.10
;; Query time: 4 msec
;; SERVER: 192.168.128.1#53(192.168.128.1) (UDP)
;; WHEN: Sun Aug 11 16:34:05 CEST 2024
;; MSG SIZE  rcvd: 56
dig