Cách sử dụng lệnh dig trong Ubuntu, Debian, CentOS, Redhat
Trong thế giới quản lý mạng và hệ thống, việc kiểm tra máy chủ DNS và thu thập thông tin về tên miền, địa chỉ IP cũng như các bản ghi DNS và trao đổi email khác nhau là điều quan trọng đối với quản trị viên. Công cụ dig trong Linux là một công cụ dòng lệnh mạnh mẽ để truy xuất thông tin và truy vấn từ máy chủ DNS nhằm lấy thông tin về các địa chỉ máy chủ Internet khác nhau, các bản ghi như MX, NS, SRV và thông tin về máy chủ tên Internet. Thông tin bạn nhận được trong đầu ra lệnh dig giúp khắc phục sự cố DNS và tra cứu DNS cũng như thu được nhiều bản ghi DNS khác nhau. Trong bài viết này, chúng tôi sẽ hướng dẫn các bạn cách cài đặt công cụ dòng lệnh dig và sử dụng dig để biết cách khắc phục sự cố máy chủ DNS và quản lý mạng.
Lệnh dig là gì?
Dig (Domain Information Groper) là một công cụ dòng lệnh Linux linh hoạt và mạnh mẽ, được sử dụng để khắc phục sự cố DNS, truy xuất thông tin về máy chủ DNS và các bản ghi DNS khác nhau cũng như tìm kiếm tên máy chủ. Sử dụng công cụ dig bạn sẽ nhận được thông tin hữu ích về địa chỉ IP, máy chủ email và tên miền, những thông tin này rất quan trọng đối với việc quản lý mạng.
Công cụ dig là một trong những công cụ hiệu quả và không thể thiếu đối với các quản trị viên mạng, nhà phát triển và người dùng xử lý DNS. Công cụ này mạnh mẽ có sẵn theo mặc định trong hệ điều hành Linux. Nếu bạn là quản trị viên mạng thì việc có sẵn công cụ dig là điều cần thiết đối với bạn. Để hưởng lợi từ các tính năng của lệnh dig, với tư cách là quản trị viên mạng có kinh nghiệm, bạn nên mua VPS Linux và sau đó bạn có thể sử dụng các tính năng dig cho các mục đích khác nhau của mình.
Cú pháp chính của lệnh dig
dig [server] [name] [record type]
- server: Chỉ định tên máy chủ hoặc địa chỉ IP của máy chủ mà truy vấn sẽ được gửi tới.
- name: Nhập máy chủ DNS mong muốn để tra cứu.
- type: Chỉ định loại bản ghi DNS.
Lưu ý: Nếu bạn không chỉ định loại bản ghi, dig sẽ tìm kiếm bản ghi A theo mặc định. Ngoài ra, nếu bạn không chọn một tên máy chủ cụ thể cho các truy vấn DNS, các truy vấn DNS sẽ được chuyển hướng đến các tên máy chủ được liệt kê trong trình phân giải (/etc/resolv.conf) theo mặc định.
Vì lệnh dig cũng sử dụng nhiều tùy chọn nâng cao để mở rộng chức năng của nó nên bạn có thể sử dụng lệnh dig với nhiều tùy chọn khác nhau như sau để tra cứu và truy vấn DNS:
dig [options] [domain] [record type]
Các tùy chọn lệnh dig phổ biến là:
+short: chỉ hiển thị thông tin cần thiết ở định dạng ngắn gọn.
+trace: theo dõi đường dẫn truyền DNS từ máy chủ gốc đến tên máy chủ có thẩm quyền.
+answer: chỉ hiển thị phần trả lời liên quan đến DNS.
+question: chỉ hiển thị thông tin phần câu hỏi của truy vấn DNS.
+noall: Loại bỏ tất cả đầu ra bình thường, ngoại trừ lỗi và phần trả lời
+port: dùng để chỉ định cổng DNS tùy chỉnh.
@server: Sử dụng tùy chọn này, bạn có thể truy vấn các máy chủ DNS cụ thể.
Định nghĩa DNS và các loại bản ghi DNS
DNS, viết tắt của Domain Name System, là cơ sở hạ tầng Internet chuyển đổi tên miền mà con người có thể đọc được thành số mà máy tính có thể đọc được và ngược lại. Bằng cách dịch tên miền sang địa chỉ IP, DNS giao tiếp giữa các thiết bị trên Internet và mạng riêng và cho phép bạn sử dụng tên miền thân thiện với người dùng để truy cập các trang web và tài nguyên Internet khác thay vì ghi nhớ và sử dụng các địa chỉ IP phức tạp. DNS chứa các loại bản ghi khác nhau báo cáo thông tin bổ sung. Các bản ghi DNS phổ biến nhất như sau:
- A record (bản ghi địa chỉ): dùng để chỉ dẫn tên máy chủ tới địa chỉ IP.
- MX (bản ghi trao đổi thư): Chỉ định máy chủ thư nhận thư cho một miền.
- SIG (bản ghi chữ ký): dùng trong giao thức mã hóa.
- NS (bản ghi tên máy chủ): chỉ định các máy chủ tên ảo có liên quan đến miền.
- TXT (bản ghi văn bản): bản ghi TXT lưu trữ dữ liệu văn bản; thông tin của bản ghi này được sử dụng để xác thực và xác nhận.
Cách cài đặt công cụ dig trong Linux
Công cụ dig có sẵn theo mặc định trong tất cả các bản phân phối Linux. Nếu bạn không chắc chắn về tính khả dụng của công cụ trong bản phân phối Linux của mình, hãy kiểm tra phiên bản của công cụ dig bằng cách chạy lệnh sau để đảm bảo rằng công cụ đã được cài đặt trên hệ thống của bạn:
dig -v
Đầu ra ví dụ:
DiG 9.11.3-1ubuntu1.1-Ubuntu
Nếu bạn nhận được đầu ra có mã số giống như đầu ra trong ví dụ của chúng tôi, thì hệ thống của bạn hỗ trợ công cụ dig. Mặt khác, nếu thông báo “dig: command not found” được in ở đầu ra, hãy cài đặt dig trên Ubuntu, Debian, CentOS và RedHat bằng các lệnh sau và trình quản lý gói của bản phân phối.
Lưu ý: Để cài đặt công cụ dig trong Linux, bạn phải có tài khoản người dùng có quyền root hoặc sudo.
Cài đặt Dig trên Debian/Ubuntu:
sudo apt-get install dnsutils
Cài đặt dig trên CentOS/RedHat:
sudo yum install bind-utils
Hướng dẫn nhanh cách sử dụng lệnh dig
Tra cứu DNS
Một cách sử dụng lệnh dig trong Linux là tra cứu DNS cho một tên miền. Với mục đích này, hãy xem xét ví dụ sau:
dig VPSchinhhang.com
Vì không chỉ định loại bản ghi nên bản ghi A được truy xuất theo mặc định và thông tin có giá trị về chi tiết kỹ thuật được in trong phần Answer. Phần Header hiển thị các thông tin nhận được từ máy chủ, bao gồm kích thước gói UDP, hệ thống mở rộng cho DNS,… Bạn có thể lấy thông tin về tên miền, loại truy vấn và loại bản ghi từ phần Question ở đầu ra. Cuối cùng, phần Statistics được in để cung cấp địa chỉ IP và cổng của máy chủ DNS phản hồi, Timestamp, thời gian truy vấn và các thông tin thống kê khác.
Truy vấn một máy chủ DNS cụ thể
Nếu tên máy chủ không được chỉ định, theo mặc định, nó sẽ xem xét một trong các tên máy chủ trong cấu hình cục bộ (các máy chủ trong tệp /etc/resolv.conf) cho truy vấn. Bạn có thể chỉ định một máy chủ DNS cụ thể để truy vấn bằng tùy chọn @ và nhập tên máy chủ IP hoặc tên máy chủ. Ví dụ: để truy vấn máy chủ định danh Google (8.8.8.8) nhằm lấy thông tin, hãy chạy lệnh sau trong Ubuntu và CentOS:
dig @8.8.8.8 google.com
Output:
; <<>> DiG 9.13.3 <<>> @8.8.8.8 google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26503
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com IN A
;; ANSWER SECTION:
google.com. 299 IN A 173.217.169.206
;; Query time: 54 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: We July 12 14:28:01 CEST 2023
;; MSG SIZE rcvd: 70
Tra cứu DNS ngược
Lệnh dig hỗ trợ các kỹ thuật nâng cao để cải thiện phân tích DNS; một trong những kỹ thuật này là tra cứu DNS ngược, cho phép tra cứu DNS theo địa chỉ IP thay vì tên miền. Với mục đích này, bạn phải chạy tùy chọn -x cùng với lệnh dig:
dig -x [IP address]
Tên máy chủ được liên kết với địa chỉ IP và thông tin bắt buộc sẽ được hiển thị ở đầu ra.
Bạn có thể kết hợp lệnh trước đó với +answer và +noall để tối ưu hóa tìm kiếm:
dig +noall +answer -x [IP address]
Ví dụ:
dig +noall +answer -x [IP address]
Output:
;; global options: +cmd
238.14.217.172.in-addr.arpa. 245 IN PTR sea30s02-in-f14.1e100.net.
Truy tìm đường dẫn chuyển DNS
Nếu bạn muốn theo dõi đường dẫn tra cứu DNS, sử dụng tùy chọn +trace cùng với lệnh dig rất hữu ích. Chạy cú pháp sau cho mục đích này trong các bản phân phối dựa trên Debian và Redhat:
dig [options] [domain]
Ví dụ:
dig +trace google.com
Nhận được câu trả lời ngắn gọn
Nếu bạn muốn nhận được kết quả đầu ra ngắn gọn và hữu ích, hãy sử dụng tùy chọn +short khi chạy lệnh dig trong Ubuntu và CentOS:
dig [domain] +short
Trong đầu ra của lệnh trước đó, chỉ địa chỉ IP được liên kết với tên miền mới được hiển thị.
Nhận được câu trả lời chi tiết
Đôi khi, người dùng cần thông tin toàn diện về DNS để khắc phục sự cố liên quan đến DNS hoặc các mục đích khác. Dig hiển thị thông tin chi tiết trong phần câu trả lời bằng cách cung cấp tùy chọn +noall +answer:
dig [domain] +noall +answer
Truy xuất các loại bản ghi DNS khác nhau
Bằng cách sử dụng dig, bạn có thể lấy thông tin về các bản ghi DNS khác nhau. Sau đây, chúng tôi sẽ hướng dẫn cách truy vấn các bản ghi DNS phổ biến nhất trong Debian, Ubuntu, CentOS và RedHat.
Truy vấn bản ghi A
Để có được địa chỉ IP liên kết với tên miền, thông tin được cung cấp bởi bản ghi A sẽ đáp ứng được nhu cầu của bạn. Do đó, để truy cập địa chỉ IP được liên kết với tên miền, hãy chạy lệnh sau:
dig example.com A
Để truy vấn bản ghi A khi chạy lệnh dig, bạn không cần phải gõ tùy chọn A vì dig sẽ truy xuất bản ghi A theo mặc định nếu loại bản ghi không được chỉ định.
Truy vấn bản ghi NS
Để truy cập tên máy chủ hợp lệ cho một miền cụ thể, hãy truy vấn bản ghi NS:
dig example.com NS
Truy vấn bản ghi MX
Để tìm máy chủ thư cho một miền cụ thể, việc truy xuất thông tin bản ghi MX là rất hữu ích. Với mục đích này, hãy xem xét ví dụ sau:
dig example.com MX
Truy vấn bản ghi TXT
Để truy cập dữ liệu văn bản được liên kết với một tên miền cụ thể, hãy truy xuất bản ghi TXT:
dig example.com TXT
Truy vấn bản ghi CNAME
Để tìm bí danh của một miền, việc truy xuất bản ghi CNAME là rất hữu ích:
dig www.example.com CNAME
Truy vấn tất cả các bản ghi
Để truy cập tất cả các bản ghi DNS cho một tên miền cụ thể cùng với địa chỉ IP, hãy sử dụng tùy chọn “any”:
dig example.com ANY
Tùy chỉnh đầu ra lệnh dig
Khi sử dụng công cụ dig, bạn có thể đặt các mục được sử dụng thường xuyên làm mặc định cho lệnh dig để tối ưu hóa đầu ra và đạt được kết quả mong muốn trong thời gian ngắn nhất. Cần lưu ý rằng thông tin do dig cung cấp được lưu trữ trong tệp ~/.digrc. Tệp này có thể được chỉnh sửa. Do đó, hãy truy cập nội dung của tệp này bằng cách thực hiện lệnh sau bởi trình soạn thảo yêu thích của bạn:
sudo nano ~/.digrc
Sau đó, bạn có thể thêm các tùy chọn mong muốn vào nội dung của nó, ví dụ:
+noall
+answer
Thoát khỏi tệp (ctrl-x). Kết quả là, khi bạn thực thi lệnh dig example.com, đầu ra sẽ được hiển thị theo cách các tùy chọn +noall và +answer được thêm vào lệnh.
Truy vấn một số lượng lớn các tên miền
Một trong những ưu điểm của công cụ dig là nó cho phép bạn liệt kê một số lượng lớn tên miền trong một tệp (một tên miền trên mỗi dòng), và bằng cách sử dụng tệp đó, bạn có thể truy vấn một số lượng lớn tên miền. Với mục đích này, bạn phải sử dụng tùy chọn -f cùng với lệnh dig như sau:
dig -f test.txt
test.txt là một ví dụ về tệp chứa danh sách tên miền cần truy vấn. Thay thế test.txt bằng tệp mong muốn.
=>> 6 phương pháp gửi email từ dòng lệnh trong Linux
Công cụ Dig là một trong những công cụ quản lý mạng có giá trị nhất cho các truy vấn DNS. Biết cách sử dụng công cụ dig rất hữu ích cho các quản trị viên và nhà phát triển mạng trong Linux. Nếu bạn có bất kỳ câu hỏi nào về lệnh dig, hãy để lại câu hỏi cho VPS Chính hãng trong phần bình luận. Chúc các bạn thành công!