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 :
- 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. - 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. - 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
. - 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
. - 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
. - 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
. - 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
- 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.