📅  最后修改于: 2023-12-03 15:09:16.712000             🧑  作者: Mango
DNS(Domain Name System,域名系统)是一种将域名解析为 IP 地址的服务。在网络通信过程中,DNS 起到了关键作用。
当我们使用浏览器访问一个网站时,浏览器会先向 DNS 服务器查询该网站的 IP 地址,然后再与该 IP 地址对应的服务器建立连接。
因此,进行 DNS 跟踪可以帮助我们了解 DNS 查询的整个过程,排查 DNS 问题,并加速从域名到 IP 地址的转换过程。
以下介绍三种常用的进行 DNS 跟踪的方法。
nslookup 命令可以查询域名的 DNS 信息,包括域名、IP 地址、TTL(Time to Live,生存时间)等信息。同时,nslookup 还可以进行 DNS 跟踪。
使用 nslookup 进行 DNS 跟踪的步骤如下:
打开终端,输入 nslookup 命令,进入 nslookup 命令行模式。
在命令行模式下,输入 set debug 命令,开启调试模式。
输入需要进行 DNS 跟踪的域名,如:
nslookup
set debug
example.com
C:\Users\john>nslookup
Default Server: UnKnown
Address: 192.168.1.1
> set debug
> example.com
Server: UnKnown
Address: 192.168.1.1
------------
Got answer:
HEADER:
opcode = QUERY, id = 1, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 0, additional = 0
QUESTIONS:
example.com, type = A, class = IN
ANSWERS:
-> example.com
internet address = 93.184.216.34
ttl = 219
------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
_dns-sd._udp.example.com, type = PTR, class = IN
AUTHORITY RECORDS:
-> example.com
nameserver = a.iana-servers.net
ttl = 86217
authid = 59754
------------
Non-authoritative answer:
Name: example.com
Addresses: 93.184.216.34
在上面的示例中,我们成功地进行了 example.com 的 DNS 跟踪,并获得了域名解析的详细信息。
dig 命令是一个强大的命令行工具,可以用于查询 DNS 信息。它可以返回 DNS 包头、问题、回答、权威域名服务器等信息。
以下是使用 dig 命令进行 DNS 跟踪的步骤:
打开终端,输入 dig 命令,并加上 +trace 参数,开启 DNS 跟踪。
输入需要进行 DNS 跟踪的域名,如:
dig +trace example.com
; <<>> DiG 9.8.3-P1 <<>> +trace example.com
;; global options: +cmd
. 249469 IN NS k.root-servers.net.
. 249469 IN NS l.root-servers.net.
. 249469 IN NS m.root-servers.net.
. 249469 IN NS a.root-servers.net.
. 249469 IN NS b.root-servers.net.
. 249469 IN NS c.root-servers.net.
. 249469 IN NS d.root-servers.net.
. 249469 IN NS e.root-servers.net.
. 249469 IN NS f.root-servers.net.
. 249469 IN NS g.root-servers.net.
. 249469 IN NS h.root-servers.net.
. 249469 IN NS i.root-servers.net.
. 249469 IN NS j.root-servers.net.
;; Received 228 bytes from 192.168.1.1#53(192.168.1.1) in 25 ms
com. 172800 IN NS m.gtld-servers.net.
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. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
;; Received 504 bytes from 192.112.36.4#53(g.root-servers.net) in 333 ms
example.com. 172800 IN NS a.iana-servers.net.
example.com. 172800 IN NS b.iana-servers.net.
;; Received 83 bytes from 192.42.93.30#53(k.gtld-servers.net) in 87 ms
example.com. 86400 IN A 93.184.216.34
example.com. 86400 IN NS a.iana-servers.net.
example.com. 86400 IN NS b.iana-servers.net.
;; Received 103 bytes from 199.43.132.53#53(a.iana-servers.net) in 64 ms
在上面的示例中,我们使用 dig 命令对 example.com 进行了 DNS 跟踪,成功地获得了域名解析的过程。
Wireshark 是一款开源的网络协议分析软件,它可以用于捕获和分析网络数据包。同时,Wireshark 也可以用于 DNS 跟踪。
以下是使用 Wireshark 进行 DNS 跟踪的步骤:
打开 Wireshark,选择适当的网络接口并启动捕获。
在捕获过程中,使用浏览器访问需要进行 DNS 跟踪的域名。
在 Wireshark 中,使用过滤器过滤 DNS 数据包。
此时,Wireshark 会输出 DNS 数据包的详细信息,包括域名、IP 地址等信息。
5 1.090172 192.168.0.100 192.168.0.1 DNS 81 Standard query 0x3c06 A example.com
6 1.128903 192.168.0.1 192.168.0.100 DNS 93 Standard query response 0x3c06 A example.com A 93.184.216.34
在上面的示例中,我们使用 Wireshark 对 example.com 进行 DNS 跟踪,并成功获得了 DNS 数据包的详细信息。
综上所述,以上三种方法都可以用于 DNS 跟踪,选择合适的方法可以帮助我们解决 DNS 问题,提高网络连接的速度和稳定性。