📜  如何进行 dns 跟踪 (1)

📅  最后修改于: 2023-12-03 15:09:16.712000             🧑  作者: Mango

如何进行 DNS 跟踪

DNS(Domain Name System,域名系统)是一种将域名解析为 IP 地址的服务。在网络通信过程中,DNS 起到了关键作用。

当我们使用浏览器访问一个网站时,浏览器会先向 DNS 服务器查询该网站的 IP 地址,然后再与该 IP 地址对应的服务器建立连接。

因此,进行 DNS 跟踪可以帮助我们了解 DNS 查询的整个过程,排查 DNS 问题,并加速从域名到 IP 地址的转换过程。

以下介绍三种常用的进行 DNS 跟踪的方法。

1. 使用 nslookup 命令

nslookup 命令可以查询域名的 DNS 信息,包括域名、IP 地址、TTL(Time to Live,生存时间)等信息。同时,nslookup 还可以进行 DNS 跟踪。

使用 nslookup 进行 DNS 跟踪的步骤如下:

  1. 打开终端,输入 nslookup 命令,进入 nslookup 命令行模式。

  2. 在命令行模式下,输入 set debug 命令,开启调试模式。

  3. 输入需要进行 DNS 跟踪的域名,如:

nslookup
set debug
example.com
  1. 此时,nslookup 会返回执行 DNS 跟踪的详细信息。
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 跟踪,并获得了域名解析的详细信息。

2. 使用 dig 命令

dig 命令是一个强大的命令行工具,可以用于查询 DNS 信息。它可以返回 DNS 包头、问题、回答、权威域名服务器等信息。

以下是使用 dig 命令进行 DNS 跟踪的步骤:

  1. 打开终端,输入 dig 命令,并加上 +trace 参数,开启 DNS 跟踪。

  2. 输入需要进行 DNS 跟踪的域名,如:

dig +trace example.com
  1. 此时,dig 命令会输出跟踪信息。
; <<>> 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 跟踪,成功地获得了域名解析的过程。

3. 使用 Wireshark

Wireshark 是一款开源的网络协议分析软件,它可以用于捕获和分析网络数据包。同时,Wireshark 也可以用于 DNS 跟踪。

以下是使用 Wireshark 进行 DNS 跟踪的步骤:

  1. 打开 Wireshark,选择适当的网络接口并启动捕获。

  2. 在捕获过程中,使用浏览器访问需要进行 DNS 跟踪的域名。

  3. 在 Wireshark 中,使用过滤器过滤 DNS 数据包。

  4. 此时,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 问题,提高网络连接的速度和稳定性。