根据这里的例子: https://www.rootusers.com/12-dig-command-examples-to-query-dns-in-linux/
这样的挖掘跟踪dig google.com +trace
应该返回这样的结果:
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> google.com +trace
;; global options: +cmd
. 5 IN NS h.root-servers.net.
. 5 IN NS g.root-servers.net.
. 5 IN NS f.root-servers.net.
. 5 IN NS e.root-servers.net.
. 5 IN NS d.root-servers.net.
. 5 IN NS c.root-servers.net.
. 5 IN NS b.root-servers.net.
. 5 IN NS a.root-servers.net.
;; Received 493 bytes from 192.168.220.2#53(192.168.220.2) in 671 ms
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com. 86400 IN RRSIG DS 8 1 86400 20160915170000 20160905160000 46551 . aRW+mmwKW6sWvAef35LCj5ZeQkFrOP8uWwMjQkPIqMfayBRuK1YuqF0h Pu0v4ZBaXPxj0KjmwLIry+Y8p6gIX7lFATfQmUNJcmFxaPYDdEuLYW4S 4idKDZkkEWA3LLUn9OQ0EdioR1PdVr/4xY/u48066DFDx5Vg6aEs1/0Q oXY=
;; Received 734 bytes from 192.203.230.10#53(e.root-servers.net) in 215 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.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20160911044243 20160904033243 27452 com. F8heeEXQl6/iOiPAJxfH/dIE7k6NkI0KDRH+evPdZJV6dUs4bYIfbvwI dIEmEDB1wn28MntLpjEixu+64VusOHrUaOXzg5I26D+UbUmksImr2a/P 39zxhHLIRJgYEUxrE1HrID+xY+PewGq3/aEVvPKofbO7/FyBJlmftQn6 12o=
S84AE3BIT99DKIHQH27TRC0584HV5KOH.com. 86400 IN NSEC3 1 1 0 - S84J17P3PT4RKMEJOHNGD73C5Q5NV5S9 NS DS RRSIG
S84AE3BIT99DKIHQH27TRC0584HV5KOH.com. 86400 IN RRSIG NSEC3 8 2 86400 20160909045208 20160902034208 27452 com. vxkCSPNnOpLiQNpsk1ZpsQzGMzNdbSpL6Up0Z0njXJrRUdD5eHC/tgnA cHc5mDX2IuuBqU65hZd40U2pSYCBeb5BfaRd9gaQIMyLBbBzd9nj2E+F 8LnTRqa+oXeYQVO1AlfysumdS/CgxwN0CidhCPxPQpPtfdnl6UaKxCzL 5d4=
;; Received 660 bytes from 192.31.80.30#53(d.gtld-servers.net) in 201 ms
然而,当我尝试时,我只得到这个:
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com +trace
;; global options: +cmd
;; Received 51 bytes from 127.0.0.53#53(127.0.0.53) in 0 ms
为什么会这样?
答案1
如果没有该@
选项,dig
则会查询您的 systemd 存根解析器,而不是实际的 DNS 服务器。由于某种原因,解析器拒绝查询“.”顶级域的 NS 记录,甚至dig
无法启动跟踪。
16:31:45.992047 IP 127.0.0.1.56091 > 127.0.0.53.53: 58708 [1au] NS? . (40)
16:31:45.992184 IP 127.0.0.53.53 > 127.0.0.1.56091: 58708 Refused 0/0/1 (51)
我在 systemd-resolved 手册中没有找到任何信息来解释为什么会发生这种情况,也没有找到任何提示如何改变这种行为。不过,我并没有搜索太久。
dig
您可以绕过使用显式 DNS 服务器地址运行的 systemd 解析器:
# dig @A.B.C.D +trace google.com
替换A.B.C.D
为您的本地 DNS 地址。
答案2
挖掘+追踪直接从您的机器运行迭代查询。您可能在连接到 GTLD 名称服务器时遇到防火墙问题。或者您没有根提示的副本。
普通 DNS 遍历 您的 PC > ISP 解析器 > 权威域名服务器
DIG +跟踪 DNS 遍历 您的 PC > root/com/google 的权威名称服务器
如果您愿意,可以将其分解为更小的块来排除故障。
尝试这个命令
dig @198.41.0.4 google.com +norecurse
该 IP 地址为 (a.root-servers.net),它应该会返回“com”的 NS 记录
之后尝试
dig @192.5.6.30 google.com +norecurse
该 IP 地址为 (a.gtld-servers.net),它应该会返回“google.com”的 NS 记录
你明白了。这就是 dig +trace 的作用。如果你有防火墙问题,上述两个命令也会超时或失败。
如果它们对您有用,那么下一个可能性就是您没有根提示。
尝试输入“dig”并按回车键。如果您有根提示,该命令将返回根服务器列表。这台 Ubuntu 机器是否充当您的解析器?您在 /etc/resolv.conf 下看到了什么