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.