DNS 简介及 dig 命令详解
2024-07-02 18:10 曾左 阅读(582) 评论(2) 编辑 收藏 举报dig 用于查询 DNS 名称服务器以获取有关的网络信息。下文首先介绍 DNS 的相关背景知识,随后再讲解 dig 命令的使用方法。
一、DNS 解析过程
DNS(Domain Name System)解析过程是一个将域名解析为 IP 地址的过程。以下是 DNS 完整的解析过程:
1. 本地解析
用户在浏览器中输入一个 URL,如 <www.baidu.com> ,首先,计算机会在本地的 hosts 文件中查找是否有该域名与 IP 地址的映射关系,如果有,则直接访问对应的 IP 地址。
2. 浏览器缓存
如果本地 hosts 文件中没有找到,浏览器会查找自己的 DNS 缓存(浏览器会缓存一些 DNS 记录),看是否有对应的 DNS 记录。
3. 系统缓存
如果浏览器缓存中也没有找到,操作系统会查找自己的 DNS 缓存,看是否有对应的 DNS 记录。
4. 路由器缓存
如果系统缓存中也没有找到,计算机会向本地路由器发送一个 DNS 查询请求,看路由器是否有对应的 DNS 记录。
5. ISP DNS 服务器
如果路由器中也没有找到,计算机会向 ISP 的 DNS 服务器发送一个 DNS 查询请求,看 ISP 的 DNS 服务器是否有对应的 DNS 记录。
6. 根域名服务器
如果 ISP 的 DNS 服务器中也没有找到,ISP 的 DNS 服务器会向根域名服务器发送一个 DNS 查询请求。
7. 顶级域名服务器
根域名服务器收到请求后,会返回一个顶级域名服务器(TLD)的地址。ISP 的 DNS 服务器收到这个地址后,会向 TLD 发送查询请求。
8. 权威 DNS 服务器
顶级域名服务器收到请求后,会返回对应的权威 DNS 服务器的地址。ISP 的 DNS 服务器收到这个地址后,会向权威 DNS 服务器发送查询请求。
9. 获取 IP 地址
权威 DNS 服务器收到请求后,会返回对应的 IP 地址。ISP 的 DNS 服务器收到这个 IP 地址后,会将其返回给计算机,计算机就可以通过这个 IP 地址访问目标网站。
10. 缓存 IP 地址
在这个过程中,每个参与 DNS 查询的 DNS 服务器,都会将查询结果缓存一段时间。这样,下次查询同一个域名时,就可以直接返回结果,加快解析速度。
二、DNS 可信体系介绍
DNS 域名体系中,主要采用了 DNSSEC(DNS 安全扩展)来保证 DNS 查询结果不被篡改的技术,其主要通过对 DNS 数据进行数字签名来实现,来确保 DNS 查询的结果是可信的。
DNSSEC,全称为 Domain Name System Security Extensions,是一种在互联网上增强 DNS(域名系统)安全的套件。其主要目标是保护互联网用户免受 DNS 欺骗,主要通过对 DNS 数据进行数字签名来实现。
1. 工作原理
-
数字签名:DNSSEC 通过使用公钥加密技术为 DNS 数据提供数字签名。当一个 DNS 记录被创建或修改时,会生成一个与之对应的数字签名。这个签名随后会和 DNS 记录一起存储和分发。
-
验证:当客户端从 DNS 服务器接收到一个带有数字签名的 DNS 响应时,客户端可以使用公钥来验证这个签名。如果签名验证成功,那么客户端可以确定这个 DNS 响应是真实的,没有被篡改。
-
链式信任:为了能够验证数字签名,客户端需要知道公钥。DNSSEC 通过使用一种称为 DS(Delegation Signer)记录的方式,建立了一种链式信任机制。每个 DS 记录包含了其子域的 DNSKEY 记录(包含公钥)的哈希值。这样,只要客户端信任根域的公钥,就可以通过链式验证信任所有的子域。
-
防止否认:由于每个 DNS 记录都有一个与之对应的数字签名,因此,DNSSEC 还可以防止否认攻击。即使一个攻击者尝试否认一个特定的 DNS 记录存在,客户端也可以通过验证其数字签名来证实其存在。
三、DNS 各类记录
1. CNAME
CNAME 是 Canonical Name 的缩写,它是 DNS(域名系统)记录的一种类型。CNAME 记录用于将一个域名映射(别名)到另一个域名。换句话说,当你访问一个设置了 CNAME 记录的域名时,你实际上被重定向到了另一个域名。
例如,假设你有一个域名 www.baidu.com
,你想让用户通过 example.com
访问你的网站。你可以为 example.com
设置一个 CNAME 记录,将其映射到 www.baidu.com
。这样,当用户访问 example.com
时,他们实际上访问的是 www.baidu.com
。
CNAME 记录在以下情况下非常有用:
- 当你希望多个域名解析到同一个 IP 地址时。
- 当你的域名托管在第三方服务(如 GitHub Pages 或 Heroku)并且该服务可能更改其 IP 地址时。
注意,CNAME 记录不能与任何其他数据共享同一个名称。也就是说,如果一个域名有 CNAME 记录,那么它不能有其他类型的记录(如 A 记录或 MX 记录)。
2. A 记录
A 记录是“地址记录”的缩写,它用于将域名映射到一个 IPv4 地址。当你在浏览器中输入一个网址时,浏览器首先会查找该网址对应的 A 记录,以获取网站的实际 IP 地址。例如,如果你有一个域名 example.com,并且你希望它指向你的服务器 IP 地址(如 192.0.2.1),你就需要为 example.com 设置一个 A 记录,指向 192.0.2.1。
3. AAAA 记录
AAAA 记录与 A 记录类似,但它用于将域名映射到 IPv6 地址,而不是 IPv4 地址。IPv6 是一个新的 IP 地址版本,提供了更多的可用地址。例如,如果你的服务器有一个 IPv6 地址(如 2001:0db8:85a3:0000:0000:8a2e:0370:7334),并且你希望你的域名 example.com 指向这个地址,你就需要为 example.com 设置一个 AAAA 记录,指向这个 IPv6 地址。
4. MX 记录
MX 记录是“邮件交换记录”的缩写,它用于指定处理一个域名的邮件服务的服务器。例如,如果你有一个域名 example.com,并且你希望所有发送到 @example.com 的邮件都被送到一个特定的邮件服务器(如 mail.example.com),你就需要为 example.com 设置一个 MX 记录,指向 mail.example.com。
5. NS 记录
NS 记录是"Name Server 记录"的缩写,它指定了托管特定域名的 DNS 服务器。换句话说,NS 记录告诉互联网哪些 DNS 服务器被授权为特定域名的官方服务器。例如,如果你的域名是 example.com,并且你的 DNS 服务提供商是 dnsprovider.com,那么你的 NS 记录可能会指向 ns1.dnsprovider.com 和 ns2.dnsprovider.com。
6. DS 记录
DS 记录是用于 DNSSEC 的一种记录类型。当一个 DNS 区域使用 DNSSEC 时,该区域的父区域会在其 DNS 记录中包含一个 DS 记录,用于指向子区域的 DNSKEY 记录。这样,当一个 DNS 解析器解析一个使用 DNSSEC 的域时,它可以通过 DS 记录找到正确的 DNSKEY(公钥),然后使用这个密钥验证 DNS 响应的完整性。
7. RRSIG 记录
RRSIG 记录是 DNSSEC 的另一种记录类型,用于存储一个 DNS 资源记录集(RRset)的数字签名。当 DNS 解析器解析一个使用 DNSSEC 的域时,它会获取相应的 RRSIG 记录,并使用 DS 记录中指向的 DNSKEY 验证这个签名,以确保 DNS 响应的完整性。
8. NSEC3 记录
NSEC3 记录是 DNSSEC(域名系统安全扩展)的一部分,用于证明一个特定的域名不存在(这种情况称为“否定响应”)。NSEC3 是 NSEC 记录的改进版本,提供了额外的安全性。
NSEC3 记录包含以下信息:
-
哈希名称:这是当前域名的哈希值。
-
下一个哈希名称:这是按照字典顺序下一个域名的哈希值。
-
记录类型:这是当前域名可以使用的所有记录类型。
-
盐值和迭代次数:这两个值用于计算域名的哈希值。
NSEC3 记录的主要优点是它提供了所谓的“无泄漏”否定响应。这意味着,当 DNS 服务器使用 NSEC3 记录来证明一个域名不存在时,攻击者不能使用这些信息来确定实际存在的域名。这增加了 DNS 的安全性,防止了一种称为“区域枚举”的攻击,攻击者试图通过收集 DNSSEC 的 NSEC 记录来发现所有的域名。
9. SOA 记录
DNS 中的 SOA 记录(Start of Authority)是 DNS 区域文件中的第一个记录,它定义了该区域的全局参数。SOA 记录包含以下信息:
-
主服务器名称:负责该区域的主 DNS 服务器的名称。
-
负责人邮箱:负责该区域的管理员的电子邮件地址。
-
序列号:区域文件的版本号,每次区域文件更新时,序列号都会增加。
-
刷新时间:从属服务器应该多久检查一次主服务器上的更新。
-
重试时间:如果从属服务器无法联系到主服务器,应该多久再次尝试。
-
过期时间:如果从属服务器多久未能联系到主服务器,应该停止回答查询。
-
最小生存时间 (TTL):DNS 信息在缓存中的最小生存时间。
以下是一个 SOA 记录的例子:
@ IN SOA ns.example.com. admin.example.com. (
2022020201 ; 序列号
3600 ; 刷新时间
1800 ; 重试时间
604800 ; 过期时间
86400 ; 最小生存时间 (TTL)
)
在这个例子中,ns.example.com.
是主服务器名称,admin.example.com.
是负责人邮箱(在 DNS 中,.
表示 @
),序列号是 2022020201
,刷新时间是 3600
秒,重试时间是 1800
秒,过期时间是 604800
秒,最小生存时间 (TTL) 是 86400
秒。
四、dig 命令详解
1. 功能简介
用于查询 DNS 名称服务器以获取有关网络主机的信息。
2. 配置参数
dig(选项)(参数)
@<服务器地址>:指定进行域名解析的域名服务器;
-b<ip 地址>:当主机具有多个 IP 地址,指定使用本机的哪个 IP 地址向域名服务器发送域名查询请求;
-f<文件名称>:指定 dig 以批处理的方式运行,指定的文件中保存着需要批处理查询的 DNS 任务信息;
-P:指定域名服务器所使用端口号;
-t<类型>:指定要查询的 DNS 数据类型,含 A、MX 记录。
-x<IP 地址>:执行逆向域名查询;
-4:使用 IPv4;
-6:使用 IPv6;
-h:显示指令帮助信息。
3. 常见用法
(1)常规用法,不加任何参数
dig www.baidu.com
(2)+noall
和 +answer
:这两个选项通常一起使用,用于只显示查询的答案部分,不显示其他信息。
dig www.baidu.com +noall +answer
(3)+trace
:这个选项用于显示查询的详细过程,可以用来跟踪 DNS 解析的路径。
dig www.baidu.com +trace
4. 结果详解
(1)常规查询
root@41:/home/chow# dig www.baidu.com
; <<>> DiG 9.16.1-Ubuntu <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16579
;; flags: qr rd ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 0 IN CNAME www.a.shifen.com.
www.a.shifen.com. 0 IN A 110.242.68.3
www.a.shifen.com. 0 IN A 110.242.68.4
;; Query time: 0 msec
;; SERVER: 172.21.96.1#53(172.21.96.1)
;; WHEN: Mon Jul 01 20:14:48 CST 2024
;; MSG SIZE rcvd: 122
结果说明:
-
HEADER 部分:
opcode: QUERY
表示这是一个查询操作,status: NOERROR
表示查询没有出错,id: 16579
是这个查询的唯一标识。 -
flags 部分:
qr
表示这是一个查询响应,rd
表示请求递归查询,ad
表示在响应中包含了验证数据。QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
表示这个查询请求了 1 个问题,得到了 3 个答案,没有权威记录和额外记录。 -
WARNING 部分:这部分表示尽管请求了递归查询,但是服务器并没有提供递归查询。
-
QUESTION 部分:这部分显示了查询的问题,这里是查询
www.baidu.com
的 A 记录。 -
ANSWER 部分:这部分显示了查询的答案。
www.baidu.com
的 CNAME 记录是www.a.shifen.com
,然后www.a.shifen.com
的 A 记录是110.242.68.3
和110.242.68.4
。 -
Query time 部分:这部分显示了查询的时间,这里是 0 毫秒。
-
SERVER 部分:这部分显示了进行查询的 DNS 服务器的地址,这里是
172.21.96.1#53
。 -
WHEN 部分:这部分显示了查询操作的时间,这里是 2024 年 7 月 1 日 20:14:48。
-
MSG SIZE 部分:这部分显示了接收到的消息大小,这里是 122 字节。
总的来说,这个查询的结果表示www.baidu.com
实际上是www.a.shifen.com
,其 IP 地址是110.242.68.3
和110.242.68.4
。
(2)trace 正常域名
root@chow:/home/chow# dig www.baidu.com +trace
; <<>> DiG 9.16.1-Ubuntu <<>> www.baidu.com +trace
;; global options: +cmd
### part1 根域名服务器查询,标识第一列为“.”、域名服务器为“.root-server”
. 0 IN NS l.root-servers.net.
. 0 IN NS b.root-servers.net.
. 0 IN NS d.root-servers.net.
. 0 IN NS j.root-servers.net.
. 0 IN NS k.root-servers.net.
. 0 IN NS i.root-servers.net.
. 0 IN NS f.root-servers.net.
. 0 IN NS e.root-servers.net.
. 0 IN NS a.root-servers.net.
. 0 IN NS g.root-servers.net.
. 0 IN NS c.root-servers.net.
. 0 IN NS h.root-servers.net.
. 0 IN NS m.root-servers.net.
l.root-servers.net. 0 IN A 199.7.83.42
l.root-servers.net. 0 IN AAAA 2001:500:9f::42
b.root-servers.net. 0 IN A 170.247.170.2
b.root-servers.net. 0 IN AAAA 2801:1b8:10::b
d.root-servers.net. 0 IN A 199.7.91.13
d.root-servers.net. 0 IN AAAA 2001:500:2d::d
j.root-servers.net. 0 IN A 192.58.128.30
j.root-servers.net. 0 IN AAAA 2001:503:c27::2:30
k.root-servers.net. 0 IN A 193.0.14.129
k.root-servers.net. 0 IN AAAA 2001:7fd::1
i.root-servers.net. 0 IN A 192.36.148.17
i.root-servers.net. 0 IN AAAA 2001:7fe::53
;; Received 804 bytes from 172.21.96.1#53(172.21.96.1) in 10 ms
### part2 顶级名服务器查询,标识第一列为“com.”
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.
com. 172800 IN NS m.gtld-servers.net.
com. 86400 IN DS 19718 13 2 8ACBB0CD28F41250A80A491389424D341522D946B0DA0C0291F2D3D7 71D7805A
com. 86400 IN RRSIG DS 8 1 86400 20240715050000 20240702040000 20038 . GnDoxEAaH770WTMRpN/KvmhPbqrO2DLCffgsixXh24ooBvKSmQqc1FMd KX45wku8TaXZkfp4k+Yy/I8IDddQbbhV32aMd/oAJ5EqJPVZnEX50fTY iDAadzEEEdMv4tVh0C25SowAcHlqONWlFIi2udDCZjskkUDP/LZH0V+w WA7xjE1sRzEze+olN0P+zBfxfecVo5csOVa85G6UMyEYsvEjfHSygb64 v7TOmHpLt/YEUHDNwvQTsJ0yOXVCq1PIQusPkY4Lk7/a7xt9BcHs6t1+ WTK2CyXrA++HqJNs9oMnWYCqc7j25/QnQTAbUzfQnX7LLEXi0sXkR0aq efxPtA==
;; Received 1173 bytes from 192.58.128.30#53(j.root-servers.net) in 0 ms
### part3
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns1.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q2D6NI4I7EQH8NA30NS61O48UL8G5 NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 13 2 86400 20240707002457 20240629231457 956 com. fUqDTwkfdL3McvJaDUQI8nJAOwYVk7quI5jYU4rLvVQofgJEZ7GJjNZL 7BY4hkQh/xmIjp1M5Ec+n5vVLxAt7A==
HPVV1UNKTCF9TD77I2AUR73709T975GH.com. 86400 IN NSEC3 1 1 0 - HPVVP23QUO0FP9R0A04URSICJPESKO9J NS DS RRSIG
HPVV1UNKTCF9TD77I2AUR73709T975GH.com. 86400 IN RRSIG NSEC3 13 2 86400 20240706005132 20240628234132 956 com. 1MtU07lj/BUIRTop6izDQ2p/7o6qoWR+OGxt1jP0SJjR0eBx2ArpmVEg d3+UJBi4vx3sX/DFnSoJLxi32PHwFA==
;; Received 657 bytes from 192.55.83.30#53(m.gtld-servers.net) in 219 ms
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
;; Received 100 bytes from 180.76.76.92#53(ns7.baidu.com) in 10 ms
以上结果说明了 <www.baidu.com> 域名的 DNS 解析完整路径。首先从根 DNS 服务器(脚本中的part 1)开始,然后到顶级域名服务器(part2),再去权威 DNS 服务器查询(part3)具体 IP 地址。www.baidu.com 是一个别名(CNAME),实际上它指向的是 <www.a.shifen.com> 。
其中 172800、86400 表示 TTL 时间。
(3)trace 异常域名
root@chow:/home/chow# dig mirrorlist.centos.org +trace
; <<>> DiG 9.16.1-Ubuntu <<>> mirrorlist.centos.org +trace
;; global options: +cmd
. 0 IN NS c.root-servers.net.
. 0 IN NS b.root-servers.net.
. 0 IN NS e.root-servers.net.
. 0 IN NS j.root-servers.net.
. 0 IN NS k.root-servers.net.
. 0 IN NS m.root-servers.net.
. 0 IN NS a.root-servers.net.
. 0 IN NS d.root-servers.net.
. 0 IN NS f.root-servers.net.
. 0 IN NS i.root-servers.net.
. 0 IN NS l.root-servers.net.
. 0 IN NS g.root-servers.net.
. 0 IN NS h.root-servers.net.
c.root-servers.net. 0 IN A 192.33.4.12
b.root-servers.net. 0 IN A 170.247.170.2
e.root-servers.net. 0 IN A 192.203.230.10
j.root-servers.net. 0 IN A 192.58.128.30
k.root-servers.net. 0 IN A 193.0.14.129
m.root-servers.net. 0 IN A 202.12.27.33
a.root-servers.net. 0 IN A 198.41.0.4
d.root-servers.net. 0 IN A 199.7.91.13
f.root-servers.net. 0 IN A 192.5.5.241
l.root-servers.net. 0 IN A 199.7.83.42
g.root-servers.net. 0 IN A 192.112.36.4
h.root-servers.net. 0 IN A 198.97.190.53
;; Received 840 bytes from 172.21.96.1#53(172.21.96.1) in 10 ms
org. 172800 IN NS a0.org.afilias-nst.info.
org. 172800 IN NS c0.org.afilias-nst.info.
org. 172800 IN NS a2.org.afilias-nst.info.
org. 172800 IN NS b2.org.afilias-nst.org.
org. 172800 IN NS b0.org.afilias-nst.org.
org. 172800 IN NS d0.org.afilias-nst.org.
org. 86400 IN DS 26974 8 2 4FEDE294C53F438A158C41D39489CD78A86BEB0D8A0AEAFF14745C0D 16E1DE32
org. 86400 IN RRSIG DS 8 1 86400 20240716050000 20240703040000 20038 . nC4//d1YdpmjcY5gXZd3NJM7jvRvAeMfh88naNGjXVy/DRAT9mjAXYB7 ErWWtHw+/JyCSlQq3vEhAkSojCWwBeBtK5Gp7NB/1mLWd1ufRm4n6lLy vpu//naczzqndlgtYYrzuMargZXFyOD/28lBjY/zCkfccttkSyVpLuJg VZF9C39id8LU6Rv8Zy95KLZ/RYUMQfmnTF/R+3R+/mrALH7dzHbX5Fa4 6h6FD8s+3qlIwdx7SSdzCO3TgEl5Md0YZW6tvX9v8pxnAWaOhIw5MPZo zCqlNLM6oRgr76YXcTrkyxztbivobT2CjlYGCQ5eccCRQAd1FGW+X3un 4C/DRA==
;; Received 821 bytes from 192.112.36.4#53(g.root-servers.net) in 329 ms
centos.org. 3600 IN NS ns1.centos.org.
centos.org. 3600 IN NS ns2.centos.org.
gdtpongmpok61u9lvnipqor8lra9l4t0.org. 3600 IN NSEC3 1 1 0 332539EE7F95C32A GDTREA8KMJ2RNEQEN4M2OGJ26KFSUKJ7 NS SOA RRSIG DNSKEY NSEC3PARAM
qeunu2n7u9cespp9113b9aougs8bsje9.org. 3600 IN NSEC3 1 1 0 332539EE7F95C32A QEUO6270NIE81LB4QN59HMMDKF8L01MV NS DS RRSIG
gdtpongmpok61u9lvnipqor8lra9l4t0.org. 3600 IN RRSIG NSEC3 8 2 3600 20240724063625 20240703053625 36783 org. Y9awvfrIgBYslqS2O9xRpFFqkuh/ksUgZaJq3zxHurZRwsxsy5xxpzUJ 6N7rkQ3SeGyscBd2kV/Xp/mZMKjth6PigA4fvve5UD5ZzjGg/CjUe5+O vJWFWC/gFwA4qQ4HO8pMs09YMS6erb2E36dxC9THuWeBx2LEr7WpUuQV Ml4=
qeunu2n7u9cespp9113b9aougs8bsje9.org. 3600 IN RRSIG NSEC3 8 2 3600 20240722152150 20240701142150 36783 org. wq21TFtc5dCtXghEDYN+dJLnZUiJzzcoVLIWQ2aA5FCIV/pHKfUPg7Mn jXjOGMK5Xx8lu7gBjdKvu7yQaVrlEJXC0wo8QqzlrB/yL6EcBhypBfNk b+vH7RCfrfOsIqwMKCv82wF91/S4/3uVijxeD2F+nEjvPLJheRQcxQR1 r/g=
;; Received 619 bytes from 199.249.120.1#53(b2.org.afilias-nst.org) in 189 ms
centos.org. 3600 IN SOA ns1.centos.org. hostmaster.centos.org. 2024070202 28800 7200 2400000 3600
;; Received 129 bytes from 38.145.60.38#53(ns2.centos.org) in 249 ms
执行结果与正常域名的不同点在于:最后输出的是 SOA 记录,不是 A、AAAA 或 CNAME 记录。大概率是不可用。
五、其他说明
1. VS nslookup
dig 和 nslookup 都是用于查询 DNS 服务器的工具。dig 提供更详细的输出,更多的选项和灵活性,并且在处理错误时通常会提供更多的信息。nslookup 的输出相对较少,选项和灵活性也较少。虽然 nslookup 在许多系统上仍可用,但许多组织(包括 ISC 和微软)都推荐使用 dig 来代替 nslookup。