当dig
从不同的在线挖掘工具网站(在本例中,http://networking.ringofsaturn.com/Tools/dig.php和http://www.kloth.net/services/dig.php),我注意到他们的答案是不同的。我猜这一定意味着他们每个人得到的答案不是来自根 DNS 服务器,而是来自本地服务器(例如,他们的 ISP)。
我想知道如何强制 dig 工具返回来自根服务器本身的信息。这可能吗?
谢谢
答案1
要使用 dig 获取权威信息,通常需要结合使用 +trace 和 @server。例如,如果我想要有关 www.google.com 的权威信息,我会这样做:
# dig +trace NS google.com
; <<>> DiG 9.4.2-P2 <<>> +trace NS google.com
;; global options: printcmd
. 3600000 IN NS L.ROOT-SERVERS.NET.
. 3600000 IN NS M.ROOT-SERVERS.NET.
. 3600000 IN NS D.ROOT-SERVERS.NET.
. 3600000 IN NS I.ROOT-SERVERS.NET.
. 3600000 IN NS H.ROOT-SERVERS.NET.
. 3600000 IN NS F.ROOT-SERVERS.NET.
. 3600000 IN NS C.ROOT-SERVERS.NET.
. 3600000 IN NS G.ROOT-SERVERS.NET.
. 3600000 IN NS B.ROOT-SERVERS.NET.
. 3600000 IN NS K.ROOT-SERVERS.NET.
. 3600000 IN NS E.ROOT-SERVERS.NET.
. 3600000 IN NS A.ROOT-SERVERS.NET.
. 3600000 IN NS J.ROOT-SERVERS.NET.
;; Received 244 bytes from 192.168.0.42#53(192.168.0.42) in 3 ms
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
;; Received 488 bytes from 128.8.10.90#53(D.ROOT-SERVERS.NET) in 129 ms
google.com. 172800 IN NS ns2.google.com.
google.com. 172800 IN NS ns1.google.com.
google.com. 172800 IN NS ns3.google.com.
google.com. 172800 IN NS ns4.google.com.
;; Received 164 bytes from 192.31.80.30#53(d.gtld-servers.net) in 149 ms
google.com. 345600 IN NS ns4.google.com.
google.com. 345600 IN NS ns3.google.com.
google.com. 345600 IN NS ns2.google.com.
google.com. 345600 IN NS ns1.google.com.
;; Received 164 bytes from 216.239.32.10#53(ns1.google.com) in 32 ms
现在我有了 google.com 列出的名称服务器,以及其中一个名称服务器的 IP 地址。我可以直接向该名称服务器询问记录:
# dig www.google.com @216.239.32.10
; <<>> DiG 9.4.2-P2 <<>> www.google.com @216.239.32.10
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24224
;; flags: qr aa rd; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 604800 IN CNAME www.l.google.com.
www.l.google.com. 300 IN A 209.85.148.104
www.l.google.com. 300 IN A 209.85.148.103
www.l.google.com. 300 IN A 209.85.148.99
www.l.google.com. 300 IN A 209.85.148.105
www.l.google.com. 300 IN A 209.85.148.106
www.l.google.com. 300 IN A 209.85.148.147
;; Query time: 34 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Fri Apr 29 15:22:40 2011
;; MSG SIZE rcvd: 148
答案2
根服务器不回答二级域名的查询。gTLD 服务器不回答二级域名的查询(除了返回二级域名的名称服务器)。二级域名的权威名称服务器回答该二级域名的查询。您可以查询 gTLD 以查找特定域的名称服务器,然后查询这些名称服务器以获取该域中的资源记录。
根服务器
---------------->通用顶级域名服务器
---------------------------------->权威名称服务器
--------------------------------------------------------------------------------->资源记录
答案3
永远不应该向根服务器询问 server.example.tld 的递归查询,而应该只询问处理顶级域名(示例中为 .tld)的服务器。
但是我认为,您的意思是希望从权威服务器获得答案。为此,请执行以下操作:
1)对于域名 nasa.gov,请求 NS 即名称服务器字段,而不是 A -- IPv4 地址
2)将服务器字段更改为第1点中获得的服务器之一。
3)询问有关www.nasa.gov 地址的问题。
当然,同样的程序也适用于任何其他领域。
该过程适用于 CLI 挖掘,并且http://www.kloth.net/services/dig.php界面。