Lệnh nslookup: cách dùng và tùy chọn, tra cứu bản ghi và chỉ định máy chủ DNS
Lệnh nslookup là công cụ tra cứu hỏi máy chủ DNS về một tên miền rồi trả về địa chỉ IP và các bản ghi DNS như MX, NS, TXT. Khi tra cứu bản ghi của example.com theo từng loại trên máy chủ AlmaLinux 9 và đổi máy chủ DNS được hỏi, cùng một tên miền lại cho kết quả khác nhau tùy máy chủ được hỏi: dòng Non-authoritative answer ở đầu câu trả lời biến mất, hoặc kết quả tra cứu ANY thay đổi.
Kết quả bên dưới được chạy bằng tài khoản root trên máy chủ AlmaLinux 9.8. Địa chỉ máy chủ DNS được cấu hình trên máy chủ đã được thay bằng giá trị ví dụ 192.0.2.53, số phiên bản gói cũng được thay bằng giá trị ví dụ.
1️⃣ Cách dùng lệnh nslookup
Dạng cơ bản là [nslookup -tùy_chọn tên máy_chủ_DNS], trong đó có thể bỏ tùy chọn và máy chủ DNS. Nếu chỉ ghi tên, nslookup sẽ hỏi địa chỉ của tên đó với máy chủ DNS được cấu hình trên máy chủ.
nslookup example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3Hai dòng Server và Address trên cùng là máy chủ DNS đã nhận truy vấn, còn #53 ở cuối là số cổng DNS. Nếu không chỉ định loại bản ghi, nslookup tra cứu bản ghi A (IPv4) rồi đến bản ghi AAAA (IPv6), vì vậy sau hai địa chỉ IPv4 là hai địa chỉ IPv6.
Non-authoritative answer nghĩa là bên trả lời là máy chủ DNS giữ giá trị đó trong bộ nhớ đệm, không phải máy chủ trực tiếp quản lý bản ghi của example.com. Vì vậy, ngay sau khi đổi bản ghi, giá trị có thể khác với giá trị thật.
2️⃣ Tùy chọn của nslookup
Tùy chọn được viết với dấu gạch ngang trước tên.
-type là cùng một tùy chọn với -query hoặc dạng ngắn -q. Hỏi 8.8.8.8 bằng -q=mx cho ra đúng một dòng máy chủ thư giống như -type=mx.
nslookup -q=mx google.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
Authoritative answers can be found from:-timeout và -retry quy định chờ máy chủ DNS không phản hồi trong bao lâu. 192.0.2.1 là địa chỉ dành riêng cho tài liệu nên không có máy chủ nào trả lời.
nslookup -timeout=2 -retry=1 example.com 192.0.2.1;; connection timed out; no servers could be reachedVới -timeout=2 -retry=1, nslookup in dòng [connection timed out] sau 2 giây rồi kết thúc. Đổi thành -retry=2 thì mất 4 giây, còn không có tùy chọn thì mất 15 giây. Để script không bị treo lâu vì máy chủ không phản hồi, hãy giảm cả hai giá trị.
Thêm -debug sẽ in nguyên phần câu hỏi và câu trả lời của gói phản hồi.
nslookup -debug example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
------------
QUESTIONS:
example.com, type = A, class = IN
ANSWERS:
-> example.com
internet address = 104.20.23.154
ttl = 300
-> example.com
internet address = 172.66.147.243
ttl = 300
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 172.66.147.243
------------
QUESTIONS:
example.com, type = AAAA, class = IN
ANSWERS:
-> example.com
has AAAA address 2606:4700:10::6814:179a
ttl = 300
-> example.com
has AAAA address 2606:4700:10::ac42:93f3
ttl = 300
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3Mỗi bản ghi có thêm ttl = 300 mà kết quả mặc định không hiển thị. Giá trị này nghĩa là máy chủ DNS nhận câu trả lời này có thể giữ bản ghi trong bộ nhớ đệm tối đa 300 giây.
-norecurse yêu cầu máy chủ DNS chỉ trả lời bằng giá trị nó đang có, không tìm qua máy chủ khác. Hỏi cùng 8.8.8.8 không kèm tùy chọn thì ra bốn địa chỉ, nhưng thêm -norecurse thì kết thúc bằng [SERVFAIL].
nslookup -norecurse example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find example.com: SERVFAIL| Tùy chọn | Sao chép | Mô tả |
|---|---|---|
| -type= | Chỉ định loại bản ghi cần tra cứu; nếu bỏ qua thì A rồi đến AAAA | |
| -q= | Cùng tùy chọn với -type, chỉ định loại bản ghi cần tra cứu | |
| -timeout= | Thời gian chờ phản hồi của truy vấn đầu tiên (giây) | |
| -retry= | Số lần gửi truy vấn khi không có phản hồi | |
| -debug | In câu hỏi và câu trả lời của gói phản hồi, kèm cả TTL | |
| -norecurse | Chỉ yêu cầu giá trị máy chủ đó đang có, không đi qua máy chủ khác |
| Tùy chọn | Sao chép | Mô tả |
|---|---|---|
| -query= | Cùng tùy chọn với -type, chỉ định loại bản ghi cần tra cứu | |
| -port= | Chỉ định cổng cần hỏi, mặc định 53 | |
| -version | In phiên bản rồi thoát |
3️⃣ Tra cứu bản ghi bằng nslookup (MX, NS, TXT, SOA)
Ghi loại bản ghi sau -type= thì chỉ tra cứu bản ghi đó. Giá trị viết hoa hay viết thường đều được.
| Giá trị -type= | Thông tin chứa trong đó |
|---|---|
| A · AAAA | Địa chỉ IPv4, địa chỉ IPv6 |
| MX | Máy chủ nhận thư và mức ưu tiên |
| NS | Máy chủ tên quản lý bản ghi của tên miền |
| TXT | Giá trị văn bản như SPF |
| SOA | Máy chủ tên chính của vùng, thư quản trị, số sê-ri, chu kỳ làm mới |
| CNAME | Bí danh trỏ sang một tên khác |
| PTR | Tên máy chủ gắn với địa chỉ IP (ngược) |
| ANY | Yêu cầu toàn bộ bản ghi của tên đó cùng lúc |
Máy chủ thư được kiểm tra bằng bản ghi MX.
nslookup -type=mx google.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
Authoritative answers can be found from:Số 10 sau mail exchanger là mức ưu tiên. Khi có nhiều máy chủ thư, phía gửi thử chuyển thư bắt đầu từ máy chủ có số nhỏ nhất. Cùng tra cứu đó với example.com cho ra [mail exchanger = 0 .], và MX chỉ có một dấu chấm nghĩa là tên miền này không nhận thư.
[Authoritative answers can be found from:] ở cuối tra cứu MX là dòng tiêu đề, bên dưới hiển thị thông tin máy chủ tên có thẩm quyền đi kèm trong câu trả lời. Trong các tra cứu MX, NS, TXT của bài này, câu trả lời không có thông tin đó nên bên dưới dòng tiêu đề để trống.
Bản ghi NS chứa các máy chủ tên trực tiếp quản lý bản ghi của tên miền.
nslookup -type=ns example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
example.com nameserver = hera.ns.cloudflare.com.
example.com nameserver = elliott.ns.cloudflare.com.
Authoritative answers can be found from:example.com có hai máy chủ tên. Hai máy chủ này là máy chủ tên có thẩm quyền của example.com.
Bản ghi TXT có thể chứa giá trị văn bản không theo định dạng cố định.
nslookup -type=txt example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
example.com text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com text = "v=spf1 -all"
Authoritative answers can be found from:v=spf1 -all là giá trị SPF cho biết không máy chủ nào được gửi thư dưới tên miền này. Nếu một tên miền có nhiều bản ghi TXT, chúng hiện ra như thế này, mỗi dòng một bản ghi.
Bản ghi SOA chứa thông tin cơ bản của vùng đó.
nslookup -type=soa example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
example.com
origin = elliott.ns.cloudflare.com
mail addr = dns.cloudflare.com
serial = 2418004112
refresh = 10000
retry = 2400
expire = 604800
minimum = 1800
Authoritative answers can be found from:origin là máy chủ tên chính, còn mail addr là địa chỉ thư của người quản trị với @ được viết thành dấu chấm. serial là số sê-ri tăng lên mỗi lần sửa bản ghi, còn refresh, retry, expire là các giá trị thời gian (giây) mà máy chủ tên phụ dùng để đồng bộ bản ghi với máy chủ chính. minimum là thời gian giữ câu trả lời cho bản ghi không tồn tại trong bộ nhớ đệm.
Bí danh được kiểm tra bằng bản ghi CNAME. Tra cứu www.github.com cho ra một dòng cho biết đó là bí danh của github.com.
nslookup -type=cname www.github.comServer: 192.0.2.53
Address: 192.0.2.53#53
www.github.com canonical name = github.com.-type=any yêu cầu toàn bộ bản ghi của tên đó cùng lúc. Hỏi máy chủ DNS được cấu hình trên máy chủ thì các bản ghi A, AAAA, MX, NS ra cùng một lần.
nslookup -type=any example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3
example.com mail exchanger = 0 .
example.com nameserver = hera.ns.cloudflare.com.
example.com nameserver = elliott.ns.cloudflare.com.
Authoritative answers can be found from:Gửi cùng tra cứu đó đến 8.8.8.8 thì chỉ nhận lại một dòng [hinfo = “RFC8482”] và một dòng chữ ký.
nslookup -type=any example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
example.com hinfo = "RFC8482" ""
example.com rdata_46 = HINFO 13 2 3600 20261029212708 20261027192708 34505 example.com. 2YBHcD7GmqHiW6E7e8Lx3z/gPoCsLbYw/Uegjy801hQ+4fYp5U7wKqc2 NXOONd8WS0xjgzfW5Dn0akDqdjltOw==
Authoritative answers can be found from:RFC 8482 là tài liệu cho phép trả lời truy vấn ANY bằng một câu trả lời ngắn thay vì toàn bộ bản ghi. Vì vậy, bản ghi cần thiết nên được tra cứu bằng cách chỉ định từng loại một.
4️⃣ Chỉ định máy chủ DNS trong nslookup
Ghi máy chủ DNS sau tên thì nslookup sẽ hỏi máy chủ đó thay cho máy chủ DNS được cấu hình trên máy chủ.
nslookup example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3Dòng Server đổi thành 8.8.8.8, còn bốn địa chỉ giống với câu trả lời của máy chủ DNS được cấu hình trên máy chủ. Dạng này dùng sau khi đổi máy chủ tên để kiểm tra giá trị mới đã lan đến từng máy chủ DNS công cộng hay chưa.
Nếu chỉ định một máy chủ tên từ tra cứu NS làm máy chủ DNS, bạn sẽ hỏi trực tiếp máy chủ có thẩm quyền.
nslookup example.com elliott.ns.cloudflare.comServer: elliott.ns.cloudflare.com
Address: 2606:4700:58::a29f:2ce4#53
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3Lần này dòng Non-authoritative answer biến mất. Đây là giá trị do chính máy chủ quản lý bản ghi trả lời, nên là giá trị hiện tại không qua bộ nhớ đệm. Address ngay dưới dòng Server hiện địa chỉ IPv6 của máy chủ tên này.
Tra cứu một tên không tồn tại sẽ ra [NXDOMAIN]. .invalid là tên miền cấp cao nhất được dành riêng để không bao giờ dùng thật, nên câu trả lời là tên này không tồn tại.
nslookup example.invalidServer: 192.0.2.53
Address: 192.0.2.53#53
** server can't find example.invalid: NXDOMAINNgược lại, no-such-host.example.com kết thúc bằng [No answer] thay vì NXDOMAIN. Nghĩa là bản ghi được hỏi không có trong câu trả lời, khác với NXDOMAIN là bản thân tên không tồn tại.
nslookup no-such-host.example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
*** Can't find no-such-host.example.com: No answer5️⃣ Tra cứu ngược bằng nslookup
Ghi địa chỉ IP thay cho tên thì nslookup sẽ tra cứu bản ghi PTR và tìm tên máy chủ gắn với địa chỉ đó.
nslookup 8.8.8.88.8.8.8.in-addr.arpa name = dns.google.
Authoritative answers can be found from:8.8.8.8.in-addr.arpa là tên tạo ra bằng cách viết ngược địa chỉ IPv4 rồi thêm in-addr.arpa. Giá trị bản ghi PTR của tên này, dns.google., là tên máy chủ của 8.8.8.8.
Khi tra cứu ngược, hai dòng Server trên cùng không xuất hiện. Tra cứu cùng địa chỉ bằng nslookup 9.18 trên máy chủ Debian 12 cũng cho dạng giống vậy.
6️⃣ Chế độ tương tác của nslookup
Chạy nslookup không có đối số sẽ vào chế độ tương tác với dấu nhắc >. Khi tra cứu nhiều tên và loại bản ghi liên tiếp, không cần gõ lại cả lệnh từ đầu.
nslookup> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> set type=mx
> google.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
Authoritative answers can be found from:
> set type=txt
> example.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
example.com text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com text = "v=spf1 -all"
Authoritative answers can be found from:
> exitĐổi máy chủ DNS cần hỏi bằng server và đặt loại bản ghi bằng set type=, sau đó chỉ cần gõ tên là tra cứu theo thiết lập đó. Gõ exit để quay về shell.
set all in toàn bộ giá trị thiết lập hiện tại.
nslookup> set type=txt
> set all
Default server: 192.0.2.53
Address: 192.0.2.53#53
Set options:
novc nodebug nod2
search recurse
timeout = 0 retry = 3 port = 53 ndots = 1
querytype = txt class = IN
srchlist = example.internal
> exitquerytype đã đổi thành txt đặt ở bước trước. retry = 3 và port = 53 là giá trị mặc định không bị đổi.
7️⃣ Cài nslookup trên Linux và so sánh với dig, host
Nếu chạy nslookup trên Linux mà ra [command not found], hãy cài gói công cụ BIND. Trên máy chủ AlmaLinux, nslookup nằm trong gói bind-utils.
rpm -qf /usr/bin/nslookupbind-utils-9.16.20-30.el9_8.2.x86_64Trên máy chủ Debian 12 thì là gói bind9-dnsutils. Tên cũ dnsutils vẫn còn dưới dạng gói chuyển tiếp để cài bind9-dnsutils.
dpkg -S /usr/bin/nslookupbind9-dnsutils: /usr/bin/nslookupTrên dòng RHEL, cài gói bind-utils bằng lệnh bên dưới.
dnf install bind-utilsTrên dòng Debian, cài gói bind9-dnsutils.
apt install bind9-dnsutilsCùng gói đó còn có dig và host. Cả ba lệnh đều tra cứu DNS nhưng dạng kết quả khác nhau.
| Lệnh | Đầu ra | Khi nào dùng |
|---|---|---|
| nslookup | Dòng Server + câu trả lời, chế độ tương tác | Tra cứu nhiều tên và bản ghi liên tiếp |
| dig | Toàn bộ các phần của gói phản hồi; với +short chỉ còn giá trị | Khi chỉ cần lấy giá trị trong script |
| host | Một câu cho mỗi bản ghi | Kiểm tra A, AAAA, MX cùng lúc |
host example.comexample.com has address 172.66.147.243
example.com has address 104.20.23.154
example.com has IPv6 address 2606:4700:10::6814:179a
example.com has IPv6 address 2606:4700:10::ac42:93f3
example.com mail is handled by 0 .Không cần tùy chọn, host vẫn tra cứu cùng lúc bản ghi A, AAAA, MX và in mỗi bản ghi thành một câu trên một dòng. Thêm +short cho dig thì chỉ còn địa chỉ IP.
dig +short example.com104.20.23.154
172.66.147.243Khi chỉ cần lấy giá trị trong script, dig +short dễ xử lý hơn, còn khi kiểm tra nhiều tên liên tiếp thì chế độ tương tác của nslookup tiện hơn.
🔲 Trình mô phỏng lệnh nslookup
Trong trình mô phỏng bên dưới, bạn có thể tự gõ nslookup trong khi đổi loại bản ghi và máy chủ DNS.
🔢 FAQ & nội dung đề xuất
Tra cứu DNS
Lệnh host trên Linux | lệnh tra cứu DNS
Bài viết tổng hợp cách tìm địa chỉ IP của tên máy chủ bằng lệnh host, và ngược lại tìm tên máy chủ từ địa chỉ IP.
Tra cứu trên web
Trang kiểm tra bản ghi DNS và đo hiệu năng nameserver
Bài viết về cách kiểm tra giá trị bản ghi DNS từ nhiều khu vực bằng whatsmydns và so sánh tốc độ phản hồi của máy chủ DNS bằng DNSPerf.
ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.