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


评论


不幸的是,该手册使用了“主机”和“服务器”这两个术语,而不是使用诸如“域名”和“ dns-server”之类的更清晰的术语。

–ClearCrescendo
14年7月14日在6:33

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

–TheCompWiz
14年7月15日在18:40

您不必完全访问NSLOOKUP即可使用这些选项-语法有点奇怪。例如:nslookup -all -debug -type = ANY -class = ANY servertolookup.com someDNSserver.com

– Coruscate5
18年6月4日在16:37

#2 楼

只是深入研究nslookup的选项,如果您调用nslookup然后在nslookup交互模式下键入help便可以显示,这给了我正确的答案:

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


评论


当我看到这个答案以“ Just diging ...”开头时,我笑了。

–侯赛因
16-10-21在20:27



#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,这是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 楼

使用指定的DNS服务器,使用一个命令从指定的DNS服务器获取特定的记录类型
要查找由nslookup返回的默认A和AAAA(和CNAME)记录以外的记录类型,请使用以下DNS服务器:
nslookup -q=<record type> <host> <DNS server>

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


#5 楼

要在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进行查询

评论


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

–DavidPostill♦
16 Mar 30 '16 at 22:20

可能没有新内容,但有价值。我很喜欢这个答案,而不是长期的:)

– Pawel Cioch
16年7月25日在16:13

#6 楼

您可以配置要用于连接的主DNS。
转到连接属性=> Internet Procol(TCP / IP)。 (您可以在其中设置静态IP的地方)
您可以在此处手动定义每个连接要使用的DNS。
测试后,您始终可以将其更改为以前的值。
/>

评论


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

–lepe
15年7月17日在7:07

#7 楼

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

查询特定地址时要做的第一个测试实际上是尝试使用无效地址,以确保您在使用服务器,端口和主机参数时会得到正确的null响应。有许多指南和版本,很容易认为您正在进行端口测试,而实际上它是从缓存结果或默认服务器中回复的。得到空响应后,然后使用活动服务器地址和端口。
活动端口可以在netwr -plnt的openwrt上显示,但请注意,可能需要先安装一些路由器命令。我在端口9053上设置的tor服务未在此处显示,但在将DNSPort 127.0.0.1:9053添加到torrc文件后仍然可以使用。在此平台上,nslookup格式接受[host]和[server]参数,我可以使用
nslookup cnn.com 127.0.0.1#9053
测试dns我可以使用以下命令测试dnscrypt
nslookup cnn.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'时,问题已解决。 >

#8 楼

对于Windows,以下文章介绍了您可能正在寻找的东西:https://technet.microsoft.com/zh-cn/library/ff394369.aspx

评论


欢迎来到超级用户!尽管从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。

–bertieb
18-10-12在15:00