「dns resolution」-

几种常见的 DNS 优化方法

1)对 DNS 解析的结果进行缓存
2)对 DNS 解析的结果进行预取
3)使用 HTTPDNS 取代常规的 DNS 解析
4)基于 DNS 的全局负载均衡(GSLB)

询该域名对应的网络地址

nslookup

# nslookup k4nz.com
Server:         172.31.253.23
Address:        172.31.253.23#53

Non-authoritative answer:
k4nz.com        canonical name = world.host.d3rm.org.
Name:   world.host.d3rm.org
Address: 45.78.20.157

172.31.253.23 并不是直接管理 time.geekbang.org 的域名服务器,所以查询结果是非权威的(Non-authoritative answer)

dig

# dig +trace +nodnssec k4nz.com // +trace表示开启跟踪查询 +nodnssec表示禁止DNS安全扩展

; <<>> DiG 9.11.5-P4-5.1+deb10u1-Debian <<>> +trace +nodnssec k4nz.com
;; global options: +cmd
.                       19909   IN      NS      k.root-servers.net.
.                       19909   IN      NS      a.root-servers.net.
.                       19909   IN      NS      l.root-servers.net.
.                       19909   IN      NS      i.root-servers.net.
.                       19909   IN      NS      d.root-servers.net.
.                       19909   IN      NS      e.root-servers.net.
.                       19909   IN      NS      g.root-servers.net.
.                       19909   IN      NS      h.root-servers.net.
.                       19909   IN      NS      b.root-servers.net.
.                       19909   IN      NS      f.root-servers.net.
.                       19909   IN      NS      m.root-servers.net.
.                       19909   IN      NS      j.root-servers.net.
.                       19909   IN      NS      c.root-servers.net.
;; Received 811 bytes from 172.31.253.23#53(172.31.253.23) in 1 ms

com.                    172800  IN      NS      l.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      a.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      m.gtld-servers.net.
;; Received 833 bytes from 192.203.230.10#53(e.root-servers.net) in 166 ms

k4nz.com.               172800  IN      NS      f1g1ns1.dnspod.net.
k4nz.com.               172800  IN      NS      f1g1ns2.dnspod.net.
;; Received 91 bytes from 192.43.172.30#53(i.gtld-servers.net) in 234 ms

k4nz.com.               600     IN      CNAME   world.host.d3rm.org.
k4nz.com.               86400   IN      NS      f1g1ns2.dnspod.net.
k4nz.com.               86400   IN      NS      f1g1ns1.dnspod.net.
;; Received 146 bytes from 129.211.176.224#53(f1g1ns2.dnspod.net) in 14 ms

查询可以分为以下几个步骤:
1)从 172.31.253.23 查到的一些根域名服务器(.)的 NS 记录
2)从 NS 记录结果中选一个(e.root-servers.net),并查询顶级域名 com. 的 NS 记录
3)是从 com. 的 NS 记录中选择一个(i.gtld-servers.net),并查询二级域名 k4nz.com. 的 NS 服务器。
4)从 k4nz.com. 的 NS 服务器(f1g1ns2.dnspod.net)查询最终主机 k4nz.com. 的 CNAME 记录。

问题排查:DNS 解析失败(配置错误)

执行 DNS 查询命令,返回如下错误:

# nslookup k4nz.com
;; connection timed out; no servers could be reached

// 从提示中可以看出,无法连接 DNS 服务器。因此我们应该检查 /etc/resolv.conf 文件

// 比如 nameserver 114.114.114.114 或者 nameserver 172.31.253.23

// 再次执行命令进行测试

# nslookup k4nz.com
Server:         172.31.253.23
Address:        172.31.253.23#53

Non-authoritative answer:
k4nz.com        canonical name = world.host.d3rm.org.
Name:   world.host.d3rm.org
Address: 45.78.20.157

问题排查:DNS 解析不稳定(网络异常)

解析非常慢,需要 10 秒,偶尔速度比较快,整体并不稳定,偶尔成功,偶尔失败。

解析结果不稳定,就有很多种可能的情况:
1)服务器本身有问题:响应慢、不稳定、查询时间长等等
2)网络传输异常:比如客户端到 DNS 服务器的网络延迟比较大
3)链路总某些网络设备异常,导致数据包丢弃

对于问题(1),可以跟换客户端来测试 DNS 服务器。比如使用与 DNS 服务器同地域的服务器来测试 DNS 服务器。
对于问题(2),可以 ping 测试,查看网络延迟
对于问题(3),可以”跳过“网络设备,进行 DNS 解析测试。

如果解析已经很慢,可以考虑使用补救措施,比如本地搭建 dnsmasq 服务,利用其 DNS 缓存提高解析速度。

相关连接

nslookup-OK-but-ping-fail

参考文献

37 | 案例篇:DNS 解析时快时慢,我该怎么办?