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

Môi trường thử nghiệmHọ RHELAlmaLinux 9.8nslookup 9.16Tài khoản rootDebian 12 tài khoản thường
Lệnh mạngnslookupVị trí/usr/bin/nslookup

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.com
Server:		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

Hai 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.8
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:

-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 reached

Vớ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.8
Server:		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:93f3

Mỗ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.8
Server:		8.8.8.8
Address:	8.8.8.8#53

** server can't find example.com: SERVFAIL
Tùy chọnSao chépMô 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
-debugIn câu hỏi và câu trả lời của gói phản hồi, kèm cả TTL
-norecurseChỉ yêu cầu giá trị máy chủ đó đang có, không đi qua máy chủ khác
Tùy chọnSao chépMô 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
-versionIn 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
MXMáy chủ nhận thư và mức ưu tiên
NSMáy chủ tên quản lý bản ghi của tên miền
TXTGiá trị văn bản như SPF
SOAMáy chủ tên chính của vùng, thư quản trị, số sê-ri, chu kỳ làm mới
CNAMEBí danh trỏ sang một tên khác
PTRTên máy chủ gắn với địa chỉ IP (ngược)
ANYYê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.com
Server:		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.com
Server:		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.com
Server:		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.com
Server:		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.com
Server:		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.com
Server:		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.8
Server:		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.8
Server:		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:93f3

Dò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.com
Server:		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:93f3

Lầ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.invalid
Server:		192.0.2.53
Address:	192.0.2.53#53

** server can't find example.invalid: NXDOMAIN

Ngượ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.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
*** Can't find no-such-host.example.com: No answer

5️⃣ 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.8
8.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
> exit

querytype đã đổ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/nslookup
bind-utils-9.16.20-30.el9_8.2.x86_64

Trê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/nslookup
bind9-dnsutils: /usr/bin/nslookup

Trên dòng RHEL, cài gói bind-utils bằng lệnh bên dưới.

dnf install bind-utils

Trên dòng Debian, cài gói bind9-dnsutils.

apt install bind9-dnsutils

Cù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 raKhi nào dùng
nslookupDòng Server + câu trả lời, chế độ tương tácTra cứu nhiều tên và bản ghi liên tiếp
digToà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
hostMột câu cho mỗi bản ghiKiểm tra A, AAAA, MX cùng lúc
host example.com
example.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.com
104.20.23.154
172.66.147.243

Khi 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.

🌏 Nếu bạn đã đọc đến đây
Cách xem cùng thông tin mà không cần lệnh
Máy chủ tên và bản ghi đã kiểm tra bằng nslookup cũng có thể tra cứu y như vậy trên web. Tra cứu tên miền Whois còn gộp thêm thông tin đăng ký và ngày hết hạn của lệnh whois, hiển thị tất cả trên một màn hình.
Người mới Chỉ cần nhập tên miền, không phải mở terminal hay CMD. Nhà đăng ký, ngày đăng ký, ngày hết hạn và trạng thái được sắp xếp gọn, kèm số ngày còn lại đến khi hết hạn.
Chuyên gia So sánh song song máy chủ tên đăng ký trong Whois với phản hồi DNS thực tế, và kiểm tra bản ghi A, AAAA, NS, MX, TXT, TTL cho đến văn bản gốc của Whois.
Mở tra cứu tên miề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.

Trình mô phỏng lệnh nslookupnslookup 9.16
[root@server work]#
Chỉ chạy trong trình duyệt của bạn; phản hồi lấy từ DNS ảo chứa giá trị truy vấn thực tế, và ↑↓ gọi lại các lệnh đã nhập trước đó.

🔢 FAQ & nội dung đề xuất

nslookup trên Windows cũng lấy đối số thứ nhất là tên cần tra cứu, đối số thứ hai là máy chủ DNS. Chạy không có đối số sẽ vào chế độ tương tác với dấu nhắc >. Câu chữ trong kết quả trên Windows có thể khác Linux.

nslookup kết thúc với mã thoát 1 nếu có dù chỉ một tra cứu thất bại. In mã thoát sau tra cứu example.invalid ra NXDOMAIN thì được 1, còn sau tra cứu example.com là 0.

Thêm -type=aaaa thì chỉ tra cứu bản ghi AAAA. Chạy với example.com chỉ ra hai địa chỉ IPv6, không có địa chỉ IPv4.

ℹ️ 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á.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Prove your humanity: 1   +   9   =