Dig (Domain Information Groper) adalah alat baris perintah yang powerful untuk meminta informasi  tentang DNS name server.

Bagi Anda yang berkecimpung di dunia IT security (bahasa keren : hacker), tentu sudah tidak asing dengan perintah dig di baris perintah linux.  Dengan perintah dig, Anda dapat meminta informasi tentang berbagai DNS records termasuk alamat host, mail exchanges, dan name servers. Yang tentyn

Bagi seorang administrator sistem, perintah dig adalah alat yang paling umum digunakan untuk mengatasi masalah DNS karena fleksibilitas dan kemudahan dalam penggunaannya. Dalam area jaringan yang luas, tentu akan sangat kesulitan memeriksa setiap perangkat yang tersedia. Jika hanya puluhan? kalau ribuan perangkat?

Dalam tutorial ini, kami akan menunjukkan kepada Anda bagaimana menggunakan utilitas dig melalui contoh-contoh praktis dan penjelasan rinci tentang opsi perintah dig paling umum.

Instal Dig

Untuk memeriksa apakah perintah dig tersedia pada sistem operasi Anda:

dig -v

Outputnya akan terlihat seperti ini:

DiG 9.11.3-1ubuntu1.1-Ubuntu

Jika tool dig tidak ada di sistem Anda, perintah di atas akan mencetak pesan dig: command not found, Jika mendapat pesan error seperti itu, Anda dapat dengan mudah menginstalnya menggunakan manajer paket distro Anda.

Cara Install Dig di Ubuntu dan Debian

sudo apt install dnsutils

Cara Install Dig di CentOS dan Fedora

sudo yum install bind-utils

Cara Install Dig di Arch Linux

sudo pacman -S bind-tools

Memahami Hasil Perintah Dig

Dalam bentuknya yang paling sederhana, ketika perintah dig digunakan untuk query satu host (domain) tanpa argumen tambahan, perintah dig cukup informatif.

Dalam contoh berikut, kami akan melakukan kueri untuk mengambil informasi tentang domain linux.org.

dig linux.org

Outputnya akan terlihat seperti ini:

~# dig linux.org                                                               
                                                                                           
; <<>> DiG 9.11.4-2-Debian <<>> linux.org                                                  
;; global options: +cmd                                                                    
;; Got answer:                                                                             
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8169                                   
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5                       
                                                                                           
;; OPT PSEUDOSECTION:                                                                      
; EDNS: version: 0, flags:; MBZ: 0x0005, udp: 4096                                         
;; QUESTION SECTION:                                                                       
;linux.org.                     IN      A                                                  
                                                                                           
;; ANSWER SECTION:                                                                         
linux.org.              5       IN      A       104.27.167.219                             
linux.org.              5       IN      A       104.27.166.219                             
                                                                                           
;; AUTHORITY SECTION:                                                                      
linux.org.              5       IN      NS      mark.ns.cloudflare.com.                    
linux.org.              5       IN      NS      lia.ns.cloudflare.com.                     
                                                                                           
;; ADDITIONAL SECTION:                                                                     
lia.ns.cloudflare.com.  5       IN      A       173.245.58.185                             
lia.ns.cloudflare.com.  5       IN      AAAA    2400:cb00:2049:1::adf5:3ab9                
mark.ns.cloudflare.com. 5       IN      A       173.245.59.130                             
mark.ns.cloudflare.com. 5       IN      AAAA    2400:cb00:2049:1::adf5:3b82                
                                                                                           
;; Query time: 58 msec                                                                    
;; SERVER: 192.168.1.1#53(192.168.1.1)                                                   
;; WHEN: Fri Oct 12 1146 WIB 2018                                                      
;; MSG SIZE  rcvd: 212                                                                     
                                                                                           

Mari kita melihat bagian demi bagian dari output perintah dig di atas :

  1. Baris pertama dari output adalah versi dig yang terinstal, dan permintaan yang dipanggil. Baris kedua menunjukkan opsi global (secara default hanya cmd).
    ; <<>> DiG 9.13.3 <<>> linux.org
    ;; global options: +cmd

    Jika Anda tidak ingin baris-baris itu dimasukkan dalam output gunakan opsi +nocmd. Opsi ini harus menjadi argumen pertama setelah perintah dig.

  2. Bagian ini mencakup perincian teknis tentang jawaban yang diterima dari otoritas yang diminta (DNS server). Baris pertama bagian ini adalah header, termasuk opcode (tindakan yang dilakukan oleh dig) dan status tindakan. Dalam hal ini statusnya adalah NOERROR yang berarti bahwa otoritas yang diminta melayani permintaan tanpa masalah.
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37159
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5

    Bagian dari output ini dapat dihapus dengan menggunakan opsi +nocomments. Ketika opsi ini digunakan, ia juga menonaktifkan beberapa bagian header lainnya.

  3. Bagian PSEUDOSECTION ditampilkan secara default hanya pada versi yang lebih baru. Anda dapat membaca lebih lanjut tentang mekanisme ekstensi untuk DNS (EDNS) di sini.
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096

    Jika Anda tidak ingin bagian ini dimasukkan dalam output, gunakan opsi +noedns.

  4. Ini adalah bagian di mana dig menunjukkan kueri (pertanyaan) kita. Secara default, dig akan meminta data A record.
    ;; QUESTION SECTION:
    ;linux.org.			IN	A

    Anda dapat menonaktifkan bagian ini menggunakan opsi +noquestion.

  5. Bagian answer, memberi kita jawaban untuk pertanyaan kita. Seperti yang telah kami sebutkan, secara default dig akan meminta data A record. Di sini, domain linux.org menunjuk ke alamat IP 104.18.59.123.
    ;; ANSWER SECTION:
    linux.org.		300	IN	A	104.18.59.123
    linux.org.		300	IN	A	104.18.58.123

    Biasanya, Inilah yang menampilkan informasi berharga, namun jika tidak ingin melihat bagian ini, Anda dapat menghapus bagian ini dari output menggunakan opsi +noanswer.

  6. Bagian Authority akan memberi tahu kita server apa yang berwenang untuk menjawab pertanyaan DNS tentang domain yang ditanyakan.
    ;; AUTHORITY SECTION:
    linux.org.		86379	IN	NS	lia.ns.cloudflare.com.
    linux.org.		86379	IN	NS	mark.ns.cloudflare.com.

    Anda dapat menonaktifkan bagian output ini menggunakan opsi +noauthority.

  7. Bagian tambahan memberi kami informasi tentang alamat IP dari DNS server otoritatif yang ditunjukkan di bagian otoritas.
    ;; ADDITIONAL SECTION:
    lia.ns.cloudflare.com.	84354	IN	A	173.245.58.185
    lia.ns.cloudflare.com.	170762	IN	AAAA	240020493ab9
    mark.ns.cloudflare.com.	170734	IN	A	173.245.59.130
    mark.ns.cloudflare.com.	170734	IN	AAAA	240020493b82
  8. Ini adalah bagian terakhir dari output perintah dig yang mencakup statistik tentang kueri.
    ;; Query time: 58 msec
    ;; SERVER: 192.168.1.1#53(192.168.1.1)
    ;; WHEN: Fri Oct 12 1146 WIB 2018
    ;; MSG SIZE  rcvd: 212

    Anda dapat menonaktifkan bagian ini dengan opsi +nostats.

Cetak Hanya Jawaban Perintah Dig

Dalam kebanyakan kasus, Anda hanya ingin mendapatkan jawaban cepat untuk kueri perintah dig Anda.

1. Dapatkan Jawaban Singkat

Untuk mendapatkan jawaban singkat atas permintaan Anda, gunakan opsi +short:

dig linux.org +short
104.18.59.123
104.18.58.123

Output akan mencakup hanya alamat IP dari A record.

2. Dapatkan Jawaban Detail

Untuk jawaban yang lebih terperinci matikan semua hasil menggunakan opsi +noall dan kemudian gunakan bagian jawaban dengan opsi +answer.

dig linux.org +noall +answer
; <<>> DiG 9.13.3 <<>> linux.org +noall +answer
;; global options: +cmd
linux.org.		67	IN	A	104.18.58.123
linux.org.		67	IN	A	104.18.59.123

Kueri Name Server Spesifik

Secara default jika tidak ada name server yang ditentukan, perintah dig akan menggunakan server yang terdaftar dalam file /etc/resolv.conf.

Untuk menentukan name server yang akan dijalankan kueri, dapat menggunakan simbol @ (at) dan  diikuti dengan alamat IP name server atau hostname.

Misalnya untuk mencari informasi tentang domain linux.org dengan menggunakan name server Google (8.8.8.8) :

dig linux.org @8.8.8.8
; <<>> DiG 9.13.3 <<>> linux.org @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39110
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;linux.org.			IN	A

;; ANSWER SECTION:
linux.org.		299	IN	A	104.18.58.123
linux.org.		299	IN	A	104.18.59.123

;; Query time: 54 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Oct 12 14:28:01 WIB 2018
;; MSG SIZE  rcvd: 70

Jenis Query Record di Domain Menggunakan Dig

Dig memungkinkan Anda melakukan kueri DNS yang valid dengan menambahkan tipe records ke akhir kueri. Di bagian berikut, kami akan menunjukkan kepada Anda contoh cara mencari catatan paling umum seperti A (alamat IP), CNAME (nama canonical ) TXT (text record), MX (mail exchanger) dan NS (name servers).

1. Melihat Informasi A records dengan Perintah dig

Untuk mendapatkan daftar semua alamat yang tersedia untuk nama domain, gunakan opsi a:

dig +nocmd google.com a +noall +answer
google.com.		128	IN	A	216.58.206.206

Seperti yang telah Anda ketahui, jika tidak ada tipe DNS record yang ditentukan, perintah dig akan meminta data A record. Anda juga dapat meminta data A record tanpa menentukan opsi a.

2. Melihat Informasi CNAME records dengan Perintah dig

Untuk menemukan nama domain alias gunakan opsi cname:

dig +nocmd mail.google.com cname +noall +answer
mail.google.com.	553482	IN	CNAME	googlemail.l.google.com.

3. Melihat Informasi TXT records dengan Perintah dig

Gunakan opsi txt untuk mengambil semua TXT records untuk domain tertentu:

dig +nocmd google.com txt +noall +answer
google.com.		300	IN	TXT	"facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com.		300	IN	TXT	"v=spf1 include:_spf.google.com ~all"
google.com.		300	IN	TXT	"docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"

4. Melihat Informasi MX records dengan Perintah dig

Untuk mendapatkan daftar semua server email untuk domain tertentu gunakan opsi mx:

dig +nocmd google.com mx +noall +answer
google.com.		494	IN	MX	30 alt2.aspmx.l.google.com.
google.com.		494	IN	MX	10 aspmx.l.google.com.
google.com.		494	IN	MX	40 alt3.aspmx.l.google.com.
google.com.		494	IN	MX	50 alt4.aspmx.l.google.com.
google.com.		494	IN	MX	20 alt1.aspmx.l.google.com.

5. Melihat Informasi NS records dengan Perintah dig

Untuk menemukan name servers resmi untuk domain spesifik, gunakan opsi ns:

dig +nocmd google.com ns +noall +answer
google.com.		84527	IN	NS	ns1.google.com.
google.com.		84527	IN	NS	ns2.google.com.
google.com.		84527	IN	NS	ns4.google.com.
google.com.		84527	IN	NS	ns3.google.com.

6. Melihat Informasi Semua DNS Records dengan Perintah dig

Gunakan opsi any untuk mendapatkan daftar semua DNS records untuk domain tertentu:

dig +nocmd google.com any +noall +answer
google.com.		299	IN	A	216.58.212.14
google.com.		299	IN	AAAA	2a00:1450:4017:804::200e
google.com.		21599	IN	NS	ns2.google.com.
google.com.		21599	IN	NS	ns1.google.com.
google.com.		599	IN	MX	30 alt2.aspmx.l.google.com.
google.com.		21599	IN	NS	ns4.google.com.
google.com.		599	IN	MX	50 alt4.aspmx.l.google.com.
google.com.		599	IN	MX	20 alt1.aspmx.l.google.com.
google.com.		299	IN	TXT	"docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com.		21599	IN	CAA	0 issue "pki.goog"
google.com.		599	IN	MX	40 alt3.aspmx.l.google.com.
google.com.		3599	IN	TXT	"facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com.		21599	IN	NS	ns3.google.com.
google.com.		599	IN	MX	10 aspmx.l.google.com.
google.com.		3599	IN	TXT	"v=spf1 include:_spf.google.com ~all"
google.com.		59	IN	SOA	ns1.google.com. dns-admin.google.com. 216967258 900 900 1800 60

Reverse DNS Lookup dengan Perintah Dig

Untuk query hostname  yang terkait dengan alamat IP tertentu, gunakan opsi -x.

Misalnya, untuk melakukan reverse lookup pada 208.118.235.148 Anda dapat menggunakan perintah :

dig -x 208.118.235.148 +noall +answer

Seperti yang Anda lihat dari output di bawah alamat IP 208.118.235.148 dikaitkan dengan hostname  wildebeest.gnu.org.

; <<>> DiG 9.13.3 <<>> -x 208.118.235.148 +noall +answer
;; global options: +cmd
148.235.118.208.in-addr.arpa. 245 IN	PTR	wildebeest.gnu.org.

Perintah dig untuk Query Massal

Jika Anda ingin menanyakan sejumlah besar domain, Anda dapat menambahkannya dalam file (satu domain per baris) dan menggunakan opsi -f diikuti dengan nama file.

Dalam contoh berikut, kita akan meminta informasi domain yang tercantum dalam file domains.txt.

lxer.com
linuxtoday.com
tuxmachines.org
dig -f domains.txt +short
108.166.170.171
70.42.23.121
204.68.122.43

File .digrc Untuk Mengatur Perintah Dig

Perilaku perintah dig dapat dikontrol dengan mengatur opsi per user di file ${HOME}/.digrc.

Jika file .digrc ada di direktori home user, opsi yang ditentukan di dalamnya diterapkan sebelum argumen baris perintah.

Misalnya, jika Anda hanya ingin menampilkan bagian jawaban, buka editor teks Anda dan buat file ~/.digrc berikut:

sudo nano ~/.digrc

copy dan paste kode berikut :

+nocmd +noall +answer

Kesimpulan

Sekarang Anda telah memiliki pemahaman yang baik tentang bagaimana menggunakan perintah dig di Linux dan belajar cara memecahkan sebagian besar masalah terkait DNS.