Dig là một công cụ đơn giản nhưng mạnh mẽ trong Linux để tra cứu thông tin Domain Name System (DNS) về một máy chủ từ xa cụ thể. Không giống như tcpdump, nó cho phép bạn hiểu rõ hơn về cách máy tương tác với nameserver. Hướng dẫn này sẽ dạy cho bạn những điều cơ bản về cách sử dụng tiện ích dig trong Ubuntu và cách sử dụng nó để hiểu cách thức hoạt động của DNS.
DNS là gì và dig hoạt động như thế nào?
Về cốt lõi, DNS là một hệ thống cho phép máy dịch liền mạch một tên miền mà con người có thể đọc được sang địa chỉ IP tương ứng. DNS tương tự như danh bạ điện thoại, nơi nó liệt kê địa chỉ của máy cùng với nhãn dễ nhớ.
Domain Name System hoạt động bằng cách lưu trữ những bản ghi domain trên một tập hợp các nameserver phân cấp, thông báo những bản ghi này bất cứ khi nào người dùng cố gắng phân giải một tên miền.
Ví dụ, bất cứ khi nào bạn truy cập “quantrimang.com”, máy tính của bạn trước tiên sẽ kết nối với một nameserver đã biết, sau đó hỏi server xem nó có biết địa chỉ IP của domain bạn đang tìm kiếm hay không. Khi máy tính của bạn biết địa chỉ thích hợp, nó sẽ sử dụng thông tin đó để kết nối với trang web Quản Trị Mạng.
Tiện ích dig giải thích quá trình này bằng cách chỉ cho bạn cách máy tính giao tiếp với nameserver. Nó dán nhãn và in mọi bước cần thực hiện từ kết nối ban đầu đến phân giải tên. Điều này làm cho dig hữu ích trong việc hiểu bất kỳ sự cố DNS tiềm ẩn nào với máy chủ của bạn.
Cài đặt dnsutils trên Linux
Lệnh dig được cài đặt sẵn trong hầu hết các bản phân phối Linux. Nếu nó không được tìm thấy trong hệ thống của bạn, bạn cần cài đặt gói dnsutils để truy cập lệnh dig.
Trên hệ thống Ubuntu và Debian, hãy cài đặt nó bằng lệnh:
sudo apt install dnsutils
Trên Fedora:
sudo yum install bind-utils
Trên Arch Linux và các dẫn xuất của nó:
sudo pacman -S bind-tools
Truy vấn DNS server với dig trong Linux
Một trong những hành động cơ bản nhất mà bạn có thể thực hiện với dig trong Linux là truy vấn bản ghi A cho một địa chỉ web. Bản ghi A chứa địa chỉ IPv4 chính cho một tên miền và là những gì trình duyệt web của bạn truy vấn bất cứ khi nào nó cố gắng truy cập một trang web.
Để truy vấn bản ghi A bằng cách sử dụng dig, hãy chạy lệnh sau:
dig maketecheasier.com
Thao tác này sẽ in ra một chuỗi văn bản dài hiển thị các hành động mà dig đã thực hiện để phân giải domain. Đối với hầu hết các phần, bạn có thể chia chuỗi này thành 4 phần: Header, question, answer và nameserver.
Phần header hiển thị một bản tóm tắt ngắn gọn về lệnh mà bạn đã chạy. Giá trị “opcode” hiển thị hành động mà dig đã thực hiện. Trong khi đó, giá trị "status" xuất kết quả tổng thể của truy vấn.
Phần question hiển thị danh sách các truy vấn mà bạn đã thực hiện thông qua dig. Cột đầu tiên in tên miền hoàn chỉnh theo sau là lớp truy vấn và loại bản ghi DNS.
Phần answer hiển thị kết quả truy vấn của bạn. Cột đầu tiên chứa tên miền hoàn chỉnh theo sau là giá trị “Time To Live” của nó. Cột thứ ba và thứ tư hiển thị loại truy vấn và loại bản ghi DNS, trong khi cột thứ năm xuất kết quả.
Phần nameserver chứa thông tin chi tiết về DNS server được sử dụng cho lệnh này. “QUERY TIME” là lượng thời gian mà máy chủ cần để xử lý truy vấn. Giá trị “SERVER” là địa chỉ IP của nameserver và “MSG SIZE” hiển thị kích thước của truy vấn tính bằng byte.
Nếu bạn chỉ muốn tìm nhanh địa chỉ IP của một trang web, hãy bao gồm tùy chọn +short để trang web chỉ trả lại các địa chỉ IP.
dig +short maketecheasier.com
Truy vấn loại bản ghi DNS tùy chỉnh
Ngoài việc thực hiện các truy vấn A, bạn cũng có thể sử dụng dig để tra cứu các loại DNS khác. Bạn có thể chạy lệnh sau để kiểm tra xem domain có bất kỳ bản ghi IPv6 nào không:
dig maketecheasier.com aaaa
Truy vấn loại DNS tùy chỉnh cũng hữu ích nếu bạn đang thực hiện công việc do thám trong quá trình pentest. Ví dụ, bạn có thể sử dụng dig để kiểm tra xem một tên miền có đang được sử dụng trong mail server hay không:
dig maketecheasier.com mx
Cuối cùng, dig cũng có thể cực kỳ hữu ích trong việc tìm hiểu thêm về upstream service cho một domain. Cả bản ghi “CNAME” và “NS” sẽ hiển thị thêm chi tiết về server và nameserver mà nó đang sử dụng:
dig maketecheasier.com cname
dig maketecheasier.com ns
Mẹo: Tìm hiểu cách kích hoạt DNS over HTTPS trong các trình duyệt khác nhau.
Các truy vấn dig tùy chỉnh trong Linux
Theo mặc định, dig hoạt động bằng cách kết nối với nameserver và yêu cầu server đó cung cấp thông tin chi tiết về tên miền.
Tuy nhiên, chương trình cũng cung cấp một số tính năng bổ sung có thể giúp giải quyết các sự cố DNS.
Một trong những tính năng hữu ích nhất của dig là +trace. Tương tự như traceroute, nó xem xét tất cả các hop mà máy của bạn thực hiện bất cứ khi nào nó kết nối với một domain.
Ví dụ, chạy lệnh sau sẽ theo dõi mọi hop mà máy của bạn thực hiện trước khi load “maketecheasier.com”.
dig maketecheasier.com +trace
Bạn cũng có thể tùy chỉnh các nameserver mà dig sử dụng để thăm dò một tên miền cụ thể. Điều này hữu ích nếu bạn có một nameserver và muốn kiểm tra xem nó có hoạt động bình thường không.
Để một nameserver tùy chỉnh có hiệu lực, hãy chạy lệnh sau:
dig maketecheasier.com A @168.138.12.137
Cuối cùng, dig cũng là một chương trình rất linh hoạt có thể hoạt động trong Bash script. Để làm điều này, buộc dig chỉ xuất kết quả truy vấn của bạn:
dig maketecheasier.com +noall +answer +nocomments mx
Lưu ý: Đôi khi kết quả được truy xuất không phải là kết quả được cập nhật chính xác do sự cố bộ đệm DNS trong hệ thống của bạn. Để khắc phục điều này, hãy xóa bộ đệm DNS trong hệ thống Linux.
Xử lý hàng loạt truy vấn dig
Ngoài việc xử lý các domain riêng lẻ, cũng có thể sử dụng dig để phân giải nhiều địa chỉ web. Điều này đặc biệt hữu ích nếu bạn là kỹ sư mạng và muốn kiểm tra nhiều domain cùng một lúc.
Ví dụ, lệnh sau sẽ tìm kiếm cả bản ghi NS của “maketecheasier.com” và bản ghi A cho “yetanotherpleromaserver.xyz”.
dig +qr maketecheasier.com ns yetanotherpleromaserver.xyz a
Bạn cũng có thể sử dụng tùy chọn -f để yêu cầu dig nhận hướng dẫn từ file bên ngoài. Tuy nhiên, bạn chỉ nên ghi file này ở định dạng “dig query”. Biết được điều đó, hãy xem xét các dòng văn bản sau:
maketecheasier.com mx
maketecheasier.com ns
-x maketecheasier.com
Lưu vào file văn bản và chạy textfile dig -f sẽ thực hiện truy vấn MX, NS và reverse lookup trên domain “maketecheasier.com”.