Các ví dụ về lệnh dig Image Các ví dụ về lệnh dig

Bài viết này giới thiệu các ví dụ về lệnh dig trên hệ điều hành Linux giúp các bạn có thể tự học Linux dễ dàng.

1. Giới thiệu về lệnh dig

Domain Information Groper(dig) là một công cụ mạng mạnh mẽ để truy vấn máy chủ tên DNS.

Lệnh dig có thể truy vấn thông tin về các bản ghi DNS khác nhau bao gồm địa chỉ máy chủ. Đây là công cụ được sử dụng phổ biến để khắc phục sự cố DNS vì tính linh hoạt và dễ sử dụng của nó.

2. Cài đặt dig

Để kiểm tra xem lệnh dig có khả dụng trên loại hệ thống của bạn không sử dụng lệnh sau:

dig -v

Nếu lệnh dig không có trên hệ thống của bạn, bạn có thể dễ dàng cài đặt lệnh dig như sau:

  • Đối với bản phân phối Debian/Ubuntu:

    apt install dnsutils
    
  • Đối với với bản phân phối RHEL/CentOS:

    yum install bind-utils
    

3. Cách sử dụng dig

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

Trong ví dụ sau, chúng ta sẽ thực hiện một truy vấn để lấy thông tin tên miền google.com. Chúng ta thực hiện như sau:

[root@test1 ~]# 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	216.58.220.206

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

Ý nghĩa các phần:

  • Dòng đầu tiên của đầu ra hiển thị version đã cài đặt và truy vấn được gọi. Dòng thứ hai hiển thị các tùy chọn(theo mặc định chỉ cmd).

    ; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> google.com
    ;; global options: +cmd
    
  • Phần tiếp thep, dòng đầu tiên của phần này là tiêu đề, bao gồm opcode và trạng thái của hành động. Trong trường hợp này, trạng thái NOERROR có nghĩa là yêu cầu truy vấn truy vấn DNS không gặp lỗi.

    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21853
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
  • Phần này được hiển thị theo mặc định chỉ trên các phiên bản mới hơn.

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1452
    
  • Đây là phần mà lệnh dig hiển thị truy vấn của chúng ta. Theo mặc định, dig sẽ yêu cầu bản ghi A.

    ;; QUESTION SECTION:
    ;google.com.            IN  A
    
  • Phần trả lời cung cấp cho chúng ta tên miền google.com. trỏ đến địa chỉ IP 216.58.220.206.

    ;; ANSWER SECTION:
    google.com.     271 IN  A   216.58.220.206
    
  • Đây là phần cuối cùng của đầu ra bao gồm số liệu thống kê về truy vấn.

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

    Trong đó :

    Query time: Cho biết thời gian của kết nối tốn bao lâu.

    SERVER: 1.1.1.1: Cho biết name resolver đang dùng.

    WHEN: Thời gian thực hiện truy vấn DNS.

    MSG SIZE rcvd: Kích thước gói tin trả lời truy vấn DNS.

3.2. Truy vấn địa chỉ ip

Để có kết quả ngắn cho truy vấn của bạn, hãy sử dụng tùy chọn +short tùy chọn:

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

Kết quả chỉ bao gồm các địa chỉ IP của bản ghi A.

Để có kết quả chi tiết hơn bằng cách sử dụng các tùy chọn +noall và tùy chọn +answer.

[root@test1 ~]# dig amazon.com +noall +answer

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> amazon.com +noall +answer
;; global options: +cmd
amazon.com.		25	IN	A	205.251.242.103
amazon.com.		25	IN	A	176.32.98.166
amazon.com.		25	IN	A	176.32.103.205

Trong đó:

  • +noall: Tắt tất cả các section
  • +answer: Chỉ mở answer section

3.3. Truy vấn bản ghi MX cho tên miền

Chỉ truy vấn các loại bản ghi MX cho tên miền. Chúng ta thực hiện như sau:

[root@test1 ~]# dig amazon.com MX  +noall +answer

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> amazon.com MX +noall +answer
;; global options: +cmd
amazon.com.		900	IN	MX	5 amazon-smtp.amazon.com.

3.4. Truy vấn bản ghi SOA cho tên miền

Chỉ truy vấn các loại bản ghi SOA cho tên miền. Chúng ta thực hiện như sau:

[root@test1 ~]# dig amazon.com SOA +noall +answer

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> amazon.com SOA +noall +answer
;; global options: +cmd
amazon.com.		39	IN	SOA	dns-external-master.amazon.com. root.amazon.com. 2010115712 180 60 3024000 60

3.5. Truy vấn Bản ghi TTL cho tên miền

Chỉ 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:

[root@test1 ~]# dig amazon.com TTL +noall +answer

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

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

;; ANSWER SECTION:
amazon.com.		18	IN	A	176.32.103.205
amazon.com.		18	IN	A	205.251.242.103
amazon.com.		18	IN	A	176.32.98.166

;; Query time: 34 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Mon Apr 15 23:21:02 +07 2019
;; MSG SIZE  rcvd: 87

3.6. Tra cứu DNS ngược

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

Ví dụ: Để thực hiện tra cứu ngược lại địa chỉ ip 31.13.95.36 thành tên miền chúng ta thực hiện:

[root@test1 ~]# dig -x 31.13.95.36 +noall +answer

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> -x 31.13.95.36 +noall +answer
;; global options: +cmd
36.95.13.31.in-addr.arpa. 2863	IN	PTR	edge-star-mini-shv-01-hkg3.facebook.com.

3.7. Truy vấn số lượng lớn tên miền

Nếu bạn muốn truy vấn một số lượng lớn tên miền, bạn có thể thêm chúng vào một tệp và sử dụng tùy chọn -f để truy vấn.

Trong ví dụ sau, chúng tôi đang truy vấn các miền được liệt kê trong tệp tenmien.txt.

[root@test1 ~]# cat tenmien.txt
google.com
gmail.com
linux.org
[root@test1 ~]# dig -f tenmien.txt +noall +answer
google.com.		123	IN	A	216.58.200.14
gmail.com.		131	IN	A	172.217.31.229
linux.org.		300	IN	A	104.27.166.219
linux.org.		300	IN	A	104.27.167.219

3.8. Truy vấn DNS bằng TCP

Theo mặc định thì lệnh dig truy vấn DNS qua udp, để có thể dùng lệnh dig truy vấn DNS qua tcp chúng ta thực hiện như sau:

dig +tcp [domain]

3.9. Điều chỉnh mặc định với tệp ~/.digrc

Chúng ta có thể tạo tệp .digrc trong thư mục chính để bao gồm tùy chọn tùy mà chúng ta muốn lệnh dig thực hiện. Chúng ta có thể chỉ định các tùy chọn khác nhau trong tệp ~/.digrc sẽ luôn tự động chạy khi sử dụng lệnh dig.

Trong ví dụ dưới đây, chúng ta thêm tùy chọn +short vào ~/.digrc sau đó thực hiện lệnh dig cuúng ta thực hiện như sau:

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

4. Lời kết

Qua bài trên, giúp cho chúng ta cách sử dụng lệnh dig theo nhiều cách khác nhau để thực hiện các truy vấn DNS trên hệ điều hành Linux, làm cho nó trở thành một công cụ hữu ích để khắc phục sự cố hoặc thực hiện tra cứu DNS.