Lệnh Dig trong Linux: Truy vấn thông tin DNS của Domain

Trong bài này mình sẽ giới thiệu lệnh Dig trong Linux, đây là lệnh dùng để kiểm tra thông tin tên miền cơ bản trong Linux như DNS và các Records.

DIG là viết tắt của Domain Information Groper, có nghĩa là công cụ tìm kiếm thông tin tên miền. Lệnh Dig có tác dụng để kiểm tra và xử lí sự cố DNS Server, tìm kiếm DNS và hiển thị nội dung được yêu cầu ra màn hình terminal. Lệnh Dig được sử dụng để thay thế cho những công cụ cũ trước đây như nslookup và host. Công cụ Dig là có sẵn trên các bản phân phối của Linux.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Bây giờ chúng ta sẽ xem cách sử dụng và hoạt động của lệnh Dig như thế nào nhé.

1. Truy vấn DNS cơ bản

Bây giờ chúng ta sẽ thử đi truy vấn thông tin tên miền của google.com. Các bạn thực hiện theo như ví dụ của mình nha.

[root@admin ~]# dig google.com

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21853
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1452
;; QUESTION SECTION:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		271	IN	A	219.78.222.202

;; Query time: 36 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Mon Apr 15 15:01:53 +07 2020
;; MSG SIZE  rcvd: 55

Mình sẽ giải thích rõ hơn cho các bạn về những gì xuất hiện ở bên trên.

  • Các dòng bắt đầu bằng dấu ; là comment, nó không phải là phần thông tin
  • Dòng đầu tiên nói cho chúng ta biết version của dig là 9.9.4 .
  • Tiếp theo, dig sẽ hiển thị một cái response mà nó nhận được từ DNS Server
  • Tiếp theo là phần question đây là phần hiển thị nội dung truy vấn của chúng ta.
  • Tiếp theo nữa là phần answer đây là phần hiển thị cho chúng ta tên miền google.com trỏ đến địa chỉ IP 219.78.222.202 .
  • Phần cuối cùng là bao gồm những thông tin số liệu về thời gian kết nối bao lâu, thời gian thực hiện truy DNS, kích thước gói tin trả lời truy vấn DNS .

​2. Truy vấn DNS cơ bản với + short

Theo mặc định thì nội dung trả về của lệnh dig là khá dài. Vậy nên có một cách cắt ngắn đi nội dung đó là sử dụng option + short .

Mình sẽ làm ví dụ ở bên dưới các bạn theo dõi nha.

# dig yahoo.com +short

98.139.183.24
72.30.38.140
98.138.253.109

3. Truy vấn MX Record cho tên miền

MX Record (là viết tắt của Mail Exchanged Record) là kiểu truy vấn mà các bạn chỉ muốn truy vấn các tên miền dành riêng cho mail. Để làm được điều đó thì chúng ta thực hiện lệnh như sau.

# dig yahoo.com MX

; <> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <> yahoo.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31450
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 24

;; QUESTION SECTION:
;yahoo.com.                     IN      MX

;; ANSWER SECTION:
yahoo.com.              33      IN      MX      1 mta6.am0.yahoodns.net.
yahoo.com.              33      IN      MX      1 mta7.am0.yahoodns.net.
yahoo.com.              33      IN      MX      1 mta5.am0.yahoodns.net.

4. Truy vấn SOA Record cho tên miền

SOA Record (là viết tắt của Start of Authority) có nghĩa là thông tin xác nhận từ máy chủ tiếp nhận tên miền. Để thực hiện truy vấn SOA Record cho tên miền thì chúng thực hiện như sau.

# dig yahoo.com SOA

; <> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <> yahoo.com SOA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2197
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 7, ADDITIONAL: 7

;; QUESTION SECTION:
;yahoo.com.                     IN      SOA

;; ANSWER SECTION:
yahoo.com.              1800    IN      SOA     ns1.yahoo.com. hostmaster.yahoo-inc.com. 2012081409 3600 300 1814400 600

5. Truy vấn TTL Record cho tên miền

TTL Record (là viết tắt của time to live) là thời gian tồn tại của một bản ghi được ghi nhớ bởi một máy chủ DNS trung gian. Để truy vấn các loại bản ghi TTL cho tên miền, chúng ta thực hiện như sau.

# dig yahoo.com TTL

; <> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <> yahoo.com TTL
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56156
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;yahoo.com.                     IN      A

;; ANSWER SECTION:
yahoo.com.              3589    IN      A       98.138.253.109
yahoo.com.              3589    IN      A       98.139.183.24
yahoo.com.              3589    IN      A       72.30.38.140

6. Chỉ truy phần answer

Nếu chúng ta chỉ muốn truy vấn phần answer trong câu lệnh truy vấn thì thực hiện lệnh như sau.

# dig yahoo.com +nocomments +noquestion +noauthority +noadditional +nostats

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> yahoo.com +nocomments +noquestion +noauthority +noadditional +nostats
;; global options: +cmd
yahoo.com.              3442    IN      A       72.30.38.140
yahoo.com.              3442    IN      A       98.138.253.109
yahoo.com.              3442    IN      A       98.139.183.24

7. Truy vấn tất cả các loại DNS Record

Xem tất cả thông tin DNS Record của domain bằng lệnh Dig trong Linux.

# dig yahoo.com ANY +noall +answer

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> yahoo.com ANY +noall +answer
;; global options: +cmd
yahoo.com.              3509    IN      A       72.30.38.140
yahoo.com.              3509    IN      A       98.138.253.109
yahoo.com.              3509    IN      A       98.139.183.24
yahoo.com.              1709    IN      MX      1 mta5.am0.yahoodns.net.
yahoo.com.              1709    IN      MX      1 mta6.am0.yahoodns.net.
yahoo.com.              1709    IN      MX      1 mta7.am0.yahoodns.net.
yahoo.com.              43109   IN      NS      ns2.yahoo.com.
yahoo.com.              43109   IN      NS      ns8.yahoo.com.
yahoo.com.              43109   IN      NS      ns3.yahoo.com.
yahoo.com.              43109   IN      NS      ns1.yahoo.com.
yahoo.com.              43109   IN      NS      ns4.yahoo.com.
yahoo.com.              43109   IN      NS      ns5.yahoo.com.
yahoo.com.              43109   IN      NS      ns6.yahoo.com.

8. Truy vấn DNS ngược

Để truy vấn tên máy chủ được liên kết với một địa chỉ IP xác định, thì chúng ta sử dụng option -x.

Như hình bên dưới chúng ta muốn tra cứu từ địa chỉ IP 72.30.38.140 thành tên miền chúng ta thực hiện lệnh như sau.

# dig -x 72.30.38.140 +short

ir1.fp.vip.sp2.yahoo.com.

9. Truy vấn nhiều DNS Record

Ví như bên dưới chúng ta muốn truy vấn đến MX Record của yahoo.comredhat.com thì sử dụng lệnh như sau.

# dig yahoo.com mx +noall +answer redhat.com ns +noall +answer

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> yahoo.com mx +noall +answer redhat.com ns +noall +answer
;; global options: +cmd
yahoo.com.              1740    IN      MX      1 mta6.am0.yahoodns.net.
yahoo.com.              1740    IN      MX      1 mta7.am0.yahoodns.net.
yahoo.com.              1740    IN      MX      1 mta5.am0.yahoodns.net.
redhat.com.             132     IN      NS      ns1.redhat.com.
redhat.com.             132     IN      NS      ns4.redhat.com.
redhat.com.             132     IN      NS      ns3.redhat.com.
redhat.com.             132     IN      NS      ns2.redhat.com.

10. Tạo file .digrc

Tạo một file .digrc trong thư mục chính ~/.digrc để lưu trữ những option mà chúng ta muốn lệnh dig thực hiện.

Ví dụ như trong thư .digrc chúng lưu +short vào file ~/.digrc thì khi sử dụng lệnh dig thì chúng ta không cần phải gõ thêm lệnh +short vào màn hình terminal nữa.

[root@test1 ~]# cat .digrc
+short
[root@test1 ~]# dig amazon.com
176.32.98.166
176.32.103.205
205.251.242.103

Vậy là xong, bài ngày hôm nay chúng ta đã đi qua 10 ví dụ về sử dụng lệnh dig để thực hiện truy vấn DNS trên hệ điều hành Linux. Hi vọng là bài viết này giúp ích được cho các bạn. Chúc các bạn thành công.

Cùng chuyên mục:

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Vòng lặp while trong Shell Script

Vòng lặp while trong Shell Script

Trong Linux script, vòng lặp while được sử dụng trong ...

Top