如何将查询定向到特定的 DNS 服务器?

如何将查询定向到特定的 DNS 服务器?

我想向特定的 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 进行查询

相关内容