題 如何將查詢定向到特定的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

127
2017-12-14 16:43


起源




答案:


對於基本的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

167
2017-12-14 16:54



不幸的是,手冊使用術語“主機”和“服務器”而不是像“域名”和“dns-server”這樣更清晰的東西。 - ClearCrescendo
這不完全是不正確的。 “域名”只是主機名的一部分。您確實可以僅對FQDN的“主機”部分進行查找,省略域後綴。 NSLOOKUP 將自動嘗試使用系統中配置的任何搜索後綴來獲取匹配項。 - TheCompWiz
您不必完全訪問 NSLOOKUP 使用選項 - 語法有點奇怪。 例: nslookup -all -debug -type=ANY -class=ANY servertolookup.com someDNSserver.com - Coruscate5


只需深入了解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

9
2017-12-14 16:50



當我看到這個答案以“Just 挖......“。 - Hossein


是,   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是谷歌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地址。


7
2017-09-22 13:20





要在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進行查詢


1
2018-03-30 20:02



這複製了另一個答案,並沒有添加任何新內容。請不要發布答案,除非您確實有新的貢獻。 - DavidPostill♦
沒有新的內容可能,但價值。我更喜歡這個答案而不是長期的:) - Pawel Cioch


您可以配置要與連接一起使用的主DNS。
轉到您的連接屬性=> Internet Procol(TCP / IP)。 (您可以設置靜態IP的地方)
您可以在此處手動定義要為每個連接使用的DNS。
測試後,您可以隨時將其更改回之前的值。


0
2017-12-14 16:50



我不認為這是查詢DNS服務器的“直接”方式。 - lepe


使用一個命令從指定的DNS服務器獲取特定記錄類型

要查找nslookup返回的默認A和AAAA(和CNAME)記錄以外的記錄類型,請使用您指定的DNS服務器:

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

例如,返回域的MX記錄 stackexchange.com 使用DNS服務器 8.8.4.4 命令是:

nslookup -q=MX stackexchange.com 8.8.4.4

0
2017-09-24 20:07





我正在開發Openwrt 18.06.1 ARMv6 Raspberry pi並設置tor dns以及dnscrypt-proxy因此有一個非常類似的問題。根本原因是本地isp攔截來自root-servers.net的不安全響應,回复表示找不到該站點,然後重定向到他們自己的網站。雖然它不是一個很大的安全漏洞,但我發現它也沒有特別有用。

查詢特定地址時要做的第一個測試實際上是嘗試一個無效的地址,以確保在使用服務器,端口和主機參數時得到正確的空響應,有很多指南和版本,很容易思考當您實際從緩存結果或默認服務器回复時,您正在進行端口測試。獲得null響應後,使用活動服務器地址和端口。 可以使用netstat -plnt在openwrt上顯示活動端口,但請注意,可能需要先安裝某些路由器命令。我在端口9053上設置的tor服務在此處不顯示,但在將DNSPort 127.0.0.1:9053添加到torrc文件後仍然有效。 此平台上的nslookup格式接受[host]和[server]參數,我可以測試tor dns nslookup cnn.com 127.0.0.1#9053 我可以用命令測試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'時問題得到了解決。


0
2017-10-05 09:42