dig là gì? Làm cách nào để truy vấn máy chủ DNS và tra cứu các bản ghi DNS trên Linux?
Trên môi trường windows, để tra cứu các bản ghi DNS ta thường sử dụng lệnh NSLOOKUP.EXE. Trên linux thì sao? Câu trả lời trong bài viết dưới đây sẽ giúp bạn làm quen với lệnh dig.
Cách hoạt động của lệnh dig
Trên Linux
dig
là lệnh để truy vấn các máy chủ hệ thống tên miền (DNS). dig
là từ viết tắt của Domain Information Groper. Với dig
, bạn có thể truy vấn máy chủ DNS để biết thông tin về các bản ghi DNS khác nhau, bao gồm địa chỉ máy chủ, trao đổi thư, máy chủ tên và thông tin liên quan. Ngoài ra, nó được dự định là một công cụ để chẩn đoán các vấn đề DNS. Không dừng ở đó, dig còn có thể dùng để "chọc ngoáy" tìm hiểu về thêm về cách hoạt động của DNS.Tại sao lại là DNS?
Trên Internet, để định danh một địa chỉ vật lý người ta dùng khái niệm địa chỉ IP, là một dãy số ví dụ: 125.222.241.134. Tuy nhiên rất khó để người dùng bình thướng nhớ được địa chỉ các máy chủ này. Do đó để thuận tiện cho việc sử dụng internet thì người ta đưa ra khái niệm DOMAIN thay vì nhập 1 dãy số như trên, người dùng chỉ việc nhập 1 tên dễ nhớ như: muahang.com chẳng hạn. Và có 1 máy chủ chuyên mon dịch từ muahang.com sang địa chỉ IP. Máy chủ đó gọi là DNS server.
Khi bản sử dụng internet, bản thân bạn đang nắm giữ 1 địa chỉ IP của mình do Nhà mạng cung cấp. Các truy vấn DNS từ bạn đầu tiên sẽ gửi đến máy chủ DNS cục bộ (local DNS hay DNS precursor servers), Nếu không có kết quả thì truy vấn sẽ gửi lên các DNS server cấp cao hơn.
Cách hoạt động của DNS precursor servers
Đầu tiên, Truy vấn DNS sẽ được xử lý ngay trên máy tính của bạn sử dụng DNS cache. Nếu có kết quả thì sẽ gửi ngay kết quả đó tới ứng dụng vừa gửi lệnh truy vấn.
Nếu DNS precursor servers không thể định vị tên miền trong bộ đệm của nó, thì nó sẽ liên lạc với máy chủ root name DNS. Một root name DNS không giữ thông tin cần thiết để phân giải tên miền thành địa chỉ IP, nhưng nó sẽ chứa danh sách các máy chủ có thể phân giản DNS mà bạn yêu cầu. Ta tạm gọi Root name DNS là Máy chủ gốc trong bày này.
Root name DNS
Máy chủ gốc xem xét tên miền cấp cao nhất (top-level) mà tên miền của bạn thuộc về, chẳng hạn như .COM, .ORG, .CO.UK, v.v. Sau đó, nó sẽ gửi một danh sách các máy chủ miền cấp cao nhất xử lý các loại tên miền đó trở lại máy chủ tiền thân DNS. Sau đó, máy chủ tiền thân DNS có thể thực hiện yêu cầu của mình một lần nữa, đến máy chủ tên miền cấp cao nhất.
Máy chủ tên miền cấp cao nhất sẽ gửi các chi tiết của máy chủ tên có thẩm quyền (nơi các chi tiết của tên miền được lưu trữ) trở lại máy chủ tiền thân DNS. Sau đó, máy chủ DNS truy vấn máy chủ tên có thẩm quyền mà lưu trữ vùng miền của tên miền ban đầu bạn đã nhập vào chương trình của mình. Máy chủ tên có thẩm quyền sẽ gửi địa chỉ IP trở lại máy chủ DNS, sau đó, sẽ gửi lại cho bạn.
Cài đặt dig
dig
thường được cài đặt sẵn trên Ubuntu hoặc Fedora. Trên Centos bạn có thể cài dig nếu chưa có bằng lệnh yum:sudo yum install bind-utils
Bắt đầu với dig
Trong ví dụ đầu tiên của chúng tôi, chúng tôi sẽ trả lại các địa chỉ IP được liên kết với một tên miền. Thông thường, nhiều địa chỉ IP được liên kết với một tên miền. Điều này thường xảy ra nếu cân bằng tải được sử dụng, ví dụ.
Chúng tôi sử dụng
+short
tùy chọn truy vấn, như hiển thị bên dưới, cung cấp cho chúng tôi một phản hồi ngắn gọn:dig toiyeuit.com +short
Tất cả các địa chỉ IP được liên kết với tên miền toiyeuit.com được liệt kê cho chúng tôi. Ở đầu kia của quang phổ, nếu chúng ta không sử dụng
+short
thì kết quả trên màn hình khá dài dòng.Vì vậy, chúng tôi gõ như sau để dẫn nó qua
less
:dig toiyeuit.com | less
Đầu ra được hiển thị trong
less
, như hình dưới đây.Đây là kết quả đầy đủ:
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> toiyeuit.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49489
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;toiyeuit.com. IN A
;; ANSWER SECTION:
toiyeuit.com. 55 IN A 172.67.143.159
toiyeuit.com. 55 IN A 104.24.96.87
toiyeuit.com. 55 IN A 104.24.97.87
;; Query time: 7 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Jul 27 08:47:58 +07 2020
;; MSG SIZE rcvd: 89
Ta sẽ tìm hiểu từng phần để hiểu rõ hơn:
Tiêu đề
Đầu tiên, hãy để Lôi xem chúng ta có trong Header:
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> toiyeuit.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49489
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
Bây giờ, ở đây, ý nghĩa của tất cả những điều đó có nghĩa là:
- Dòng đầu tiên: Phiên bản của
dig
và tên miền đã được truy vấn. - global options: Như chúng tôi sẽ thấy, bạn có thể sử dụng
dig
để truy vấn nhiều tên miền cùng một lúc. Dòng này hiển thị các tùy chọn đã được áp dụng cho tất cả các truy vấn tên miền. Trong ví dụ đơn giản của chúng tôi, nó chỉ là mặc định+cmd
(lệnh) tùy chọn. - Opcode: Truy vấn: Đây là loại hoạt động được yêu cầu, trong trường hợp này, là một
query
. Giá trị này cũng có thể làiquery
cho một truy vấn ngược, hoặcstatus
nếu bạn chỉ kiểm tra trạng thái của hệ thống DNS. - status: Noerror: Không có lỗi và yêu cầu đã được giải quyết chính xác.
- ID: 49489: ID ngẫu nhiên này liên kết yêu cầu và phản hồi lại với nhau.
- flags: qrrd ra: Đây là viết tắt của
query
,recursion desired
vàrecursion available
. Đệ quy là một hình thức tra cứu DNS (dạng còn lại là lặp). Bạn cũng có thể thấyAA
, viết tắt của Authoritable Trả lời, có nghĩa là Máy chủ Tên có thẩm quyền đã cung cấp phản hồi. - QUERY: 1: Số lượng truy vấn trong phiên này, là một.
- ANSWER: 3: Số lượng câu trả lời trong phản hồi này, là bốn.
- AUTHORITY: 0: Số lượng câu trả lời đến từ Máy chủ tên có thẩm quyền, bằng không trong trường hợp này. Phản hồi được trả về từ bộ đệm của máy chủ tiền thân DNS. Sẽ không có phần có thẩm quyền trong phản hồi.
- ADDITIONAL: 1: Có một phần thông tin bổ sung. (Kỳ lạ, không có gì được liệt kê trừ khi giá trị này là hai hoặc cao hơn.)
Lựa chọn giả
Tiếp theo, chúng ta thấy những điều sau đây trong Pseudosection Opt:
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
Hãy để phá vỡ điều đó:
- EDNS: version: 0: Phiên bản của Hệ thống mở rộng cho DNS mà đang được sử dụng. EDNS truyền dữ liệu và cờ mở rộng bằng cách mở rộng kích thước của gói Giao thức gói dữ liệu người dùng (UDP). Điều này được chỉ định bởi một cờ kích thước thay đổi.
- flags: Không có cờ được sử dụng.
- udp: 512: Kích thước gói UDP.
Phần câu hỏi
Trong phần Câu hỏi, chúng ta thấy như sau:
;; QUESTION SECTION:
;toiyeuit.com. IN A
Đây là những gì điều này có nghĩa là:
- toiyeuit.com: Tên miền chúng tôi truy vấn.
- IN: Chúng tôi làm một truy vấn lớp internet.
- A: Trừ khi chúng tôi chỉ định khác,
dig
sẽ yêu cầu bản ghi A (địa chỉ) từ máy chủ DNS.
Phần Trả lời chứa ba câu trả lời sau mà chúng tôi nhận được từ máy chủ DNS:
;; ANSWER SECTION:
toiyeuit.com. 55 IN A 172.67.143.159
toiyeuit.com. 55 IN A 104.24.96.87
toiyeuit.com. 55 IN A 104.24.97.87
Đây là những câu trả lời có nghĩa là gì:
- 55: Đây là Thời gian để sống (TTL), số nguyên có chữ ký 32 bit giữ khoảng thời gian mà bản ghi có thể được lưu trong bộ nhớ cache. Khi hết hạn, dữ liệu phải được sử dụng trong câu trả lời cho yêu cầu cho đến khi nó được máy chủ DNS làm mới.
- IN: Chúng tôi đã thực hiện một truy vấn lớp Internet.
- A: Chúng tôi đã yêu cầu bản ghi A từ máy chủ DNS.
Bộ phận thống kê
Thống kê là phần cuối cùng và nó chứa các thông tin sau:
;; Query time: 7 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Jul 27 08:47:58 +07 2020
;; MSG SIZE rcvd: 89
Ở đây, những gì chúng tôi đã có:
- Query time: 7 msec: Thời gian cần thiết để có được phản hồi.
- Server: 8.8.8.8 # 53 (8.8.8.8): Địa chỉ IP và số cổng của máy chủ DNS đã phản hồi. Trong trường hợp này, nó chỉ vào trình phân giải bộ đệm ẩn cục bộ. Điều này chuyển tiếp yêu cầu DNS tới bất kỳ máy chủ DNS ngược dòng nào được cấu hình. Trên máy tính thử nghiệm của toiyeuit, địa chỉ được liệt kê ở đây là 8.8.8.8 # 53, đó là dịch vụ DNS công cộng của Google.
- WHEN: Mon Jul 27 08:47:58 +07 2020: Khi yêu cầu được thực hiện.
- MSG SIZE rcvd: 89: Kích thước của tin nhắn nhận được từ máy chủ DNS.
Chọn lọc
Bạn không cần phải giải quyết cho hai thái cực kín mít và kín đáo. Các
dig
lệnh cho phép bạn chọn lọc bao gồm hoặc loại trừ các phần khỏi kết quả.Các tùy chọn truy vấn sau sẽ xóa phần đó khỏi kết quả:
- + nocomments: Không hiển thị dòng bình luận.
- + noauthority: Không hiển thị phần thẩm quyền.
- + noadditional: Không hiển thị phần bổ sung.
- + nostats: Không hiển thị phần thống kê.
- + noanswer: Không hiển thị phần câu trả lời.
- + noall: Không hiển thị bất cứ điều gì!
Các
+noall
tùy chọn truy vấn thường được kết hợp với một trong những người ở trên để bao gồm một phần trong kết quả. Vì vậy, thay vì nhập một chuỗi dài các tùy chọn truy vấn để tắt nhiều phần, bạn có thể sử dụng +noall
để tắt tất cả.Sau đó, bạn có thể sử dụng các tùy chọn truy vấn bao gồm sau để bật lại những tùy chọn bạn muốn xem lại:
- + comments: Hiển thị các dòng bình luận.
- + authority: Hiển thị phần thẩm quyền.
- + additional: Hiển thị phần bổ sung.
- + stats: Hiển thị phần thống kê.
- + answer: Hiển thị phần trả lời.
- + all: Hiển thị mọi thứ.
Cách Sử dụng các bộ lọc với dig
Chúng tôi gõ như sau để đưa ra yêu cầu và loại trừ các dòng bình luận:
dig toiyeuit.com +nocomments
Nếu chúng ta sử dụng
+noall
Tự mình truy vấn tùy chọn, như hình bên dưới, chúng tôi đã giành được bất kỳ đầu ra hữu ích nào:dig toiyeuit.com +noall
Chúng ta có thể chọn lọc thêm các phần chúng ta muốn xem. Để thêm phần trả lời, chúng tôi gõ như sau:
dig toiyeuit.com +noall +answer
Nếu chúng ta gõ như sau để bật
+stats
, chúng tôi cũng sẽ xem phần thống kê:dig toiyeuit.com +noall +answer +stats
Các
+noall +answer
kết hợp được sử dụng thường xuyên. Bạn có thể thêm các phần khác vào dòng lệnh theo yêu cầu. Nếu bạn muốn tránh gõ +noall +answer
trên dòng lệnh mỗi khi bạn sử dụng dig
, bạn có thể đặt chúng trong một tệp cấu hình có tên là .d .drc. Nó nằm trong thư mục nhà của bạn.Chúng tôi gõ như sau để tạo một với
echo
:echo "+noall +answer" > $HOME/.digrc
Sau đó chúng ta có thể gõ như sau để kiểm tra nội dung của nó: (tôi đang sử dụng user root nên home folder là /root/)
cat /root/.digrc
Hai tùy chọn này sẽ được áp dụng cho tất cả các mục đích sử dụng trong tương lai của
dig
, như hình dưới đây:dig ubuntu.org
dig linux.org
dig github.com
Điều này
dig
tập tin cấu hình sẽ được sử dụng cho các ví dụ còn lại trong bài viết này.Các loại Bản ghi DNS
Thông tin được trả về cho bạn
dig
yêu cầu được lấy từ các loại bản ghi khác nhau được giữ trên máy chủ DNS. Trừ khi chúng tôi yêu cầu một cái gì đó khác nhau, dig
truy vấn bản ghi A (địa chỉ). Sau đây là các loại hồ sơ thường được sử dụng với dig
:- A Record: Liên kết tên miền với một địa chỉ IP phiên bản 4.
- MX Record: Trao đổi thư ghi lại các email trực tiếp được gửi đến các tên miền đến đúng máy chủ thư.
- NS Record: Bản ghi máy chủ tên ủy quyền một tên miền (hoặc tên miền phụ) cho một bộ máy chủ DNS.
- TXT Record: Hồ sơ văn bản lưu trữ thông tin dựa trên văn bản liên quan đến tên miền. Thông thường, chúng có thể được sử dụng để chặn email giả mạo hoặc giả mạo.
- SOA Record: Bắt đầu hồ sơ thẩm quyền có thể chứa rất nhiều thông tin về tên miền. Tại đây, bạn có thể tìm thấy máy chủ tên chính, bên chịu trách nhiệm, dấu thời gian cho các thay đổi, tần suất làm mới vùng và một loạt các giới hạn thời gian để thử lại và từ bỏ.
- TTL: Thời gian tồn tại là một cài đặt cho mỗi bản ghi DNS chỉ định thời gian máy chủ tiền thân DNS được phép lưu trữ mỗi truy vấn DNS. Khi thời gian đó hết hạn, dữ liệu phải được làm mới cho các yêu cầu tiếp theo.
- ANY: Điều này nói
dig
để trả về mọi loại bản ghi DNS có thể.
Cách chỉ định bản ghi cụ thể khi truy vấn DNS
Chỉ định loại bản ghi A không thay đổi hành động mặc định, đó là truy vấn bản ghi địa chỉ và lấy địa chỉ IP, như hiển thị bên dưới:
dig redhat.com A
dig toiyeuit.com A
Để truy vấn các bản ghi trao đổi thư, chúng tôi sử dụng cờ MX sau:
dig gmail.com MX
dig yahoo.com MX
Cờ máy chủ tên trả về tên sau của máy chủ tên gốc được liên kết với tên miền cấp cao nhất:
dig toiyeuit.com NS
Để truy vấn bắt đầu bản ghi thẩm quyền, chúng ta gõ cờ SOA sau:
dig toiyeuit.com SOA
Cờ TTL sẽ hiển thị cho chúng ta thời gian tồn tại của dữ liệu trong bộ đệm DNS của máy chủ DNS. Nếu chúng ta thực hiện một loạt các yêu cầu, chúng ta sẽ thấy thời gian để sống giảm xuống không còn gì, và sau đó quay trở lại giá trị bắt đầu của nó.
Chúng tôi gõ như sau:
dig toiyeuit.com TTL
Để xem các bản ghi văn bản, chúng tôi gõ cờ TXT:
dig toiyeuit.com TXT
Chỉ định Máy chủ DNS
Nếu bạn muốn sử dụng một máy chủ DNS cụ thể cho yêu cầu của mình, bạn có thể sử dụng ký hiệu (
@
) để chuyển nó đến dig
như một tham số dòng lệnh.Với máy chủ DNS mặc định (xem bên dưới),
dig
Dùng DNS cấu hình trong máy là GOOGLE DNS: 8.8.8.8.dig toiyeuit.com +stats
Bây giờ, chúng tôi nhập thông tin sau để sử dụng máy chủ DNS công cộng của Cloud Flare 1.1.1.1:
dig @1.1.1.1 toiyeuit.com +stats
Sử dụng dig với nhiều tên miền
Chúng tôi có thể chuyển nhiều tên miền tới
dig
trên dòng lệnh, như hiển thị bên dưới:dig ubuntu.org fedora.org manjaro.com toiyeuit.com
Nếu bạn thường xuyên kiểm tra một tập hợp các tên miền, bạn có thể lưu trữ chúng trong một tệp văn bản và chuyển nó đến
dig
. Tất cả các tên miền trong tệp sẽ được kiểm tra lần lượt.Tập tin của chúng tôi được gọi là domains.txt. Chúng tôi sẽ sử dụng
cat
để hiển thị nội dung của nó, và sau đó chuyển nó đến dig
với -f
(tập tin) tùy chọn. Chúng tôi gõ như sau:cat domains.txt
dig -f domains.txt
Mẹo: Nếu muốn lưu kết quả output vào file bạn có thể sử dụng dấu > tên_file để truyền kết quả ra file thay vì ra màn hình console. Nếu muốn nối file (append) vào file đã có sẵn thì thay > bằng >>
Tra cứu bản ghi DNS ngược
Nếu có địa chỉ IP và muốn xem domain nào trỏ về nò?. Bạn có thể thử tra cứu DNS ngược (reverse dns lookup). Nếu nó phân ra được bản ghi DNS, bạn có thể tìm ra tên miền của nó.
Cho dù bạn có thể phụ thuộc vào sự hiện diện của PTR (bản ghi con trỏ). PTR giải quyết một địa chỉ IP thành một tên miền đủ điều kiện. Tuy nhiên, vì những điều này bắt buộc, họ không phải lúc nào cũng có mặt trên một miền.
Hãy để xem nếu chúng ta có thể tìm ra địa chỉ IP 209.51.188.148 sẽ đưa chúng ta đến đâu. Chúng tôi gõ như sau, sử dụng
-x
Tùy chọn (tra cứu ngược):dig -x 209.51.188.148
Kết quả: Địa chỉ IP được phân giải thành wildebeest.gnu.org.
Bởi vì PTR là bản ghi DNS và chúng tôi biết
dig
có thể yêu cầu bản ghi DNS được chỉ định, không thể chúng tôi yêu cầu dig
để lấy PTR cho chúng tôi? Vâng, chúng tôi có thể, nhưng phải mất thêm một chút công việc.Chúng tôi phải cung cấp địa chỉ IP theo thứ tự ngược và tack
.in-addr.arpa
ở cuối, như hình dưới đây:dig ptr 148.188.51.209.in-addr.arpa
Chúng tôi nhận được kết quả tương tự; nó chỉ cần nỗ lực hơn một chút.
Bạn có thể khai thác nó?
Với
dig
, bạn đã có thể khám phá các quá trình truy vấn DNS và kết nối mạng. Để tìm hiểu thêm về linux hãy xem: Cách sử dụng bash-it để gõ lệnh trên linux tiện hơn.Chúc các bạn thành công!
Bài viết tham khảo từ: https://www.howtogeek.com/663056/how-to-use-the-dig-command-on-linux/
Không có nhận xét nào:
Đăng nhận xét