我想向特定的 DNS 服务器发出查询,我知道该服务器的 IP 地址。无论它是在 Windows 还是 *nix 上,都没关系。
在 Windows 中我可以做类似的事情:
C:\Documents and Settings\Anton Daneyko>nslookup superuser.com
Server: DNSs2.Uni-Marburg.DE
Address: 137.248.21.22
Non-authoritative answer:
Name: superuser.com
Address: 64.34.119.12
但是这会使用本地计算机的 DNS 设置。相反,我想查询特定的 DNS 服务器,以测试它是否正确响应我的查询或根本没有响应。
所以它应该是这样的:
nslookup --dns-ip=8.8.8.8 superuser.com
答案1
对于基本的 A 和 CNAME 记录,您只需执行
nslookup somewhere.com some.dns.server
Usage:
nslookup [-opt ...] # interactive mode using default server
nslookup [-opt ...] - server # interactive mode using 'server'
nslookup [-opt ...] host # just look up 'host' using default server
nslookup [-opt ...] host server # just look up 'host' using 'server'
或者如果您只输入不带任何参数的 nslookup,您可以做更多的选择......
Commands: (identifiers are shown in uppercase, [] means optional)
NAME - print info about the host/domain NAME using default server
NAME1 NAME2 - as above, but use NAME2 as server
help or ? - print info on common commands
set OPTION - set an option
all - print options, current server and host
[no]debug - print debugging information
[no]d2 - print exhaustive debugging information
[no]defname - append domain name to each query
[no]recurse - ask for recursive answer to query
[no]search - use domain search list
[no]vc - always use a virtual circuit
domain=NAME - set default domain name to NAME
srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc.
root=NAME - set root server to NAME
retry=X - set number of retries to X
timeout=X - set initial time-out interval to X seconds
type=X - set query type (ex. A,AAAA,A+AAAA,ANY,CNAME,MX,NS,PTR,SOA,SRV)
querytype=X - same as type
class=X - set query class (ex. IN (Internet), ANY)
[no]msxfr - use MS fast zone transfer
ixfrver=X - current version to use in IXFR transfer request
server NAME - set default server to NAME, using current default server
lserver NAME - set default server to NAME, using initial server
root - set current default server to the root
ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)
-a - list canonical names and aliases
-d - list all records
-t TYPE - list records of the given RFC record type (ex. A,CNAME,MX,NS,PTR etc.)
view FILE - sort an 'ls' output file and view it with pg
exit - exit the program
答案2
只需深入研究 nslookup 的选项(如果您调用nslookup
然后help
在 nslookup 交互模式中输入即可显示)就给了我正确的答案:
C:\Documents and Settings\Anton Daneyko>nslookup help
Server: DNSs2.Uni-Marburg.DE
Address: 137.248.21.22
*** DNSs2.Uni-Marburg.DE can't find help: Non-existent domain
C:\Documents and Settings\Anton Daneyko>nslookup
Default Server: DNSs2.Uni-Marburg.DE
Address: 137.248.21.22
> stackoverflow.com 8.8.8.8
Server: [8.8.8.8]
Address: 8.8.8.8
Non-authoritative answer:
Name: stackoverflow.com
Address: 64.34.119.12
答案3
是的,
C:\Documents and Settings\Anton Daneyko>nslookup superuser.com
将查找您自己的 DNS 服务器以找出 superuser.com 的 IP 地址。如果您将 IP 地址或其他 DNS 服务器的名称添加到命令行,它将查找给定的 DNS 服务器以查找 superuser.com 的 IP 地址。例如:
C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 8.8.4.4
Server: google-public-dns-b.google.com
Address: 8.8.4.4
Non-authoritative answer:
Name: superuser.com
Addresses: 190.93.245.58
190.93.246.58
141.101.114.59
190.93.247.58
190.93.244.58
顺便说一下,8.8.4.4 是 Google DNS 服务器的 IP 地址。
但是,以上两种方法都给出了“非权威答案”,因为它们都不是 SOA,而 SOA 是 superuser.com 域的权威。两者都有从 SOA 传播的缓存副本。如果您想询问权威服务器,请首先使用以下命令找出权威服务器的名称或 IP 地址:
C:\Documents and Settings\Anton Daneyko>nslookup -type=ns superuser.com
Server: DNSs2.Uni-Marburg.DE
Address: 137.248.21.22
Non-authoritative answer:
superuser.com nameserver = cf-dns02.superuser.com
superuser.com nameserver = cf-dns01.superuser.com
cf-dns02.superuser.com internet address = 173.245.59.4
cf-dns02.superuser.com AAAA IPv6 address = 2400:cb00:2049:1::adf5:3b04
cf-dns01.superuser.com AAAA IPv6 address = 2400:cb00:2049:1::adf5:3a35
cf-dns01.superuser.com internet address = 173.245.58.53
这将从您的本地 DNS 服务器(来自 Marburg Uni)返回一个非权威答案,其中列出了 superuser.com 的所有权威服务器。然后,您可以使用我们之前使用的命令询问 4 个权威服务器中的任何一个,如下所示:
C:\Documents and Settings\Anton Daneyko>nslookup superuser.com 173.245.59.4
Server: cf-173-245-59-4.cloudflare.com
Address: 173.245.59.4
Name: superuser.com
Addresses: 141.101.114.59
190.93.246.58
190.93.245.58
190.93.247.58
190.93.244.58
如您所见,这次权威 SOA 服务器返回了 IP 地址,因此您再也看不到“非权威答案”评论。这尤其有用,当您创建新域名或更改托管服务提供商或转移到其他域名注册商时,您无法访问您的网站,因为新的 IP 地址甚至在 24 小时后都没有传播。然后,您可以从 SOA 开始,验证 DNS 服务器是否给出了正确的 IP 地址,然后沿着树向下跟踪。最好检查 Google DNS 服务器是否已收到更改,最后检查您的本地 DNS 服务器是否可以将您的域名解析为正确的 IP 地址。
答案4
要在 nslookup 中更改默认 DNS 服务器,您只需输入服务器 NAMEorIPofDNS 即可更改服务器。在下面的示例中,我将默认 DNS 服务器(192.168.50.21)更改为新服务器(4.2.2.3)
C:\Windows\system32>nslookup
默认服务器:未知
地址:192.168.50.21
服务器 4.2.2.3
默认服务器:c.resolvers.level3.net
地址:4.2.2.3
>
现在我准备针对 4.2.2.3 和 192.168.50.21 进行查询