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


154

我想对特定的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

Answers:


200

对于基本的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

7
不幸的是,该手册使用了“主机”和“服务器”这两个术语,而不是像“域名”和“ dns-server”这样的术语。
ClearCrescendo

1
这并非完全不正确。“域名”只是主机名的一部分。实际上,您可以仅在FQDN的“主机”部分进行查找,而无需使用域后缀。 NSLOOKUP会自动尝试使用系统中配置的所有搜索后缀来获取匹配项。
TheCompWiz 2014年

1
您不必完全NSLOOKUP使用这些选项-语法有点怪异。范例nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com
Coruscate5 '18年

11

只是深入研究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

16
我笑了,当我看到这个答案开头“刚 ING ......”。
侯赛因

7

是的, 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,这是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

这将从Marburg Uni的本地DNS服务器返回非权威性答案,并为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地址。


1

要在nslookup中更改默认DNS服务器,只需键入服务器NAMEorIPofDNS即可更改服务器。在下面的示例中,我将默认DNS服务器(192.168.50.21)更改为新的DNS服务器(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进行查询


这将重复另一个答案,并且不会添加任何新内容。除非您确实有新贡献,否则请不要发布答案。
DavidPostill

可能没有新内容,但有价值。我希望这个答案能胜过长期的
挑战

0

您可以配置要与您的连接一起使用的主DNS。
转到您的连接属性=> Internet Procol(TCP / IP)。(您可以在其中设置静态IP的地方)
在这里,您可以手动定义要用于每个连接的DNS。
测试后,您可以随时将其更改回之前的值。


3
我认为这不是查询DNS服务器的“直接”方式。
lepe

0

使用一个命令从指定的DNS服务器获取特定的记录类型

要使用nslookup返回的默认A和AAAA(和CNAME)记录以外的其他记录类型,请使用指定的DNS服务器:

nslookup -q=<record type> <host> <DNS server>

例如,要stackexchange.com使用DNS服务器返回域的MX记录,8.8.4.4命令将为:

nslookup -q=MX stackexchange.com 8.8.4.4

0

我正在研究Openwrt 18.06.1 ARMv6 Raspberry pi并设置dns以及dnscrypt-proxy,所以有一个非常相似的问题。根本原因是本地isp拦截了来自root-servers.net的不安全响应,即未找到该站点的响应,然后将其重定向到自己的网站。尽管它不是一个很大的安全漏洞,但我也不认为它特别有用。

查询特定地址时要做的第一个测试实际上是尝试使用无效地址,以确保使用服务器,端口和主机参数时得到正确的空响应。有许多指南和版本,很容易想到您实际上是在进行端口测试时,它实际上是从缓存结果或默认服务器中回复的。得到空响应后,请使用活动的服务器地址和端口。活动端口可以使用netstat -plnt在openwrt上显示,但请注意,可能需要先安装一些路由器命令。我在端口9053上设置的tor服务未在此处显示,但在将DNSPort 127.0.0.1:9053添加到torrc文件后仍可正常使用。此平台上的nslookup格式接受[host]和[server]参数,我可以使用nslookup cnn.com测试Tor dns 127.0.0.1#9053我可以使用nslookup cnn命令测试dnscrypt。com 127.0.0.1#5353更改为无效的端口号或域会得到响应;; 连接超时; 无法访问任何服务器Dig也可以在openwrt上工作,但必须从bind-dig软件包中进行安装。dig -q 127.0.0.1 -p 9053 www.bbc.com并再次由于无效端口而失败。就我而言,当我更改/ etc / config / network中的条目并为以前在那儿使用不安全的dns条目的网络设置选项dns'127.0.0.1'时,问题得以解决。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.