Chukwuemeka 将为您展示
如何排查
部分 DNS 故障

Chukwuemeka_CPT1018

DNS 的工作原理是什么,以及如何排查部分 DNS 故障?

AWS 客户使用域名(通过域名系统 [DNS] 进行解析)连接到 AWS 资源。DNS(参阅 RFC 1034 中的介绍)通过将容易记忆的域名(如 www.example.com)转换为数字 IP 地址(如 192.0.2.1),将用户路由到 Internet 应用程序,这个转换过程被称为“DNS 解析”。 授权名称服务器将域名解析为 IP 地址,并通过 DNS 解析程序链将 IP 地址传递到客户端(例如,某个请求查看网站的人的计算机)。然后,客户端使用该 IP 地址连接到托管网站的服务器,最后,服务器将网站提供给客户端。当 DNS 不能正常运行时,DNS 服务器将无法解析域名,因此,无法向客户端提供托管网站的服务器的 IP 地址;这意味着,无法再通过 Internet 访问这些网站。AWS 通过使用 Amazon Route 53 和第三方服务提供商采取预防措施,确保 AWS 域名任何时候都可解析。

DNS 是一个大型分布式分层数据库,这意味着每个域都需要一组授权名称服务器,用于解决域的资源记录问题。这些授权名称服务器受域的所有者控制,但大多数域的所有者会委派代理来提供 DNS 服务。

当客户端需要解析域名的 IP 地址时,客户端机器会将此流程交给解析程序,解析程序将找到 IP 地址并将其返回到客户端。此流程的工作原理如下所示:

  1. 预配置了根名称服务器列表的解析程序从列表中随机选择一个根名称服务器,并请求该服务器提供顶级域 (TLD) 的授权名称服务器列表。
  2. 根名称服务器使用 TLD 的授权名称服务器列表及其 IP 地址进行响应。
  3. 解析程序随机选择步骤 2 中返回的其中一个名称服务器,并请求其提供域的授权名称服务器列表。
  4. TLD 服务器使用域的授权名称服务器列表进行响应。
  5. 解析程序从中随机选择一个,并从该授权名称服务器请求资源记录的 IP 地址。

DNS 提供商从多个地理位置提供服务,并且通常依赖缓存结果提升可用性;这有助于避免 DNS 解析程序的临时问题,但如果缓存了错误的结果(例如,逆向缓存),也可能造成恢复时间延长。我们确保外部 DNS 问题不会对 EC2 区域内 AWS 域名的 DNS 解析造成影响。

一个常见的 DNS 故障是一个或多个授权名称服务器停止响应。以一个配置以下授权名称服务器列表(也称为委派集)的假设域为例:

  • ns-576.awsdns-08.net.
  • ns-1086.awsdns-07.org.
  • ns-1630.awsdns-11.co.uk.
  • ns-47.awsdns-05.com.
  • pdns1.ultradns.net.
  • pdns6.ultradns.co.uk.

如果名称服务器不可用,则无法响应指向它的 DNS 查询;如果客户端没有收到响应,则可以尝试使用其他授权名称服务器的请求。如果授权名称服务器没有响应或使用意外信息响应,本地解析程序将返回一条 SERVFAIL 消息。

要使用 Linux 操作系统排查 DNS 故障,请使用 dig 命令。dig 命令会在您客户端 DNS 服务器(在主机的 /etc/resolv.conf 文件中配置)中进行查找。

$ dig www.amazon.com

 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13150

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

 

;; QUESTION SECTION:

;www.amazon.com.   IN    A

 

;; ANSWER SECTION:

www.amazon.com.        41    IN    A    54.239.17.6

 

;; Query time: 1 msec

;; SERVER: 10.108.0.2#53(10.108.0.2)

;; WHEN: Fri Oct 21 21:43:11 2016

;; MSG SIZE rcvd: 48

在前面的示例中,根据应答部分显示的结果,www.amazon.com 的 HTTP 服务器的 IP 地址是 54.239.17.6。

如果添加 +trace 变量,dig 命令还可以递归查找 DNS 记录:

$ dig +trace www.amazon.com

 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> +trace www.amazon.com

;; global options: +cmd

.       518400    IN    NS    J.ROOT-SERVERS.NET.

.       518400    IN    NS    K.ROOT-SERVERS.NET.

.       518400    IN    NS    L.ROOT-SERVERS.NET.

;; Received 508 bytes from 10.108.0.2#53(10.108.0.2) in 31 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.

;; Received 492 bytes from 193.0.14.129#53(193.0.14.129) in 93 ms

 

amazon.com.       172800    IN    NS    pdns1.ultradns.net.

amazon.com.        172800    IN    NS    pdns6.ultradns.co.uk.

;; Received 289 bytes from 192.33.14.30#53(192.33.14.30) in 201 ms

 

www.amazon.com.   900    IN    NS    ns-1019.awsdns-63.net.

www.amazon.com.    900    IN    NS    ns-1568.awsdns-04.co.uk.

www.amazon.com.    900    IN    NS    ns-277.awsdns-34.com.

;; Received 170 bytes from 204.74.108.1#53(204.74.108.1) in 87 ms

 

www.amazon.com.    60     IN    A    54.239.26.128

www.amazon.com.    1800   IN    NS   ns-1019.awsdns-63.net.

www.amazon.com.    1800   IN    NS   ns-1178.awsdns-19.org.

;; Received 186 bytes from 205.251.195.251#53(205.251.195.251) in 7 ms

您也可以执行只返回名称服务器的查询:

$ dig -t NS www.amazon.com

 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> -t NS www.amazon.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48631

;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

 

;; QUESTION SECTION:

;www.amazon.com.       IN    NS

 

;; ANSWER SECTION:

www.amazon.com.        490    IN    NS    ns-1019.awsdns-63.net.

www.amazon.com.        490    IN    NS    ns-1178.awsdns-19.org.

www.amazon.com.        490    IN    NS    ns-1568.awsdns-04.co.uk.

www.amazon.com.        490    IN    NS    ns-277.awsdns-34.com.

 

;; Query time: 0 msec

;; SERVER: 10.108.0.2#53(10.108.0.2)

;; WHEN: Fri Oct 21 21:48:20 2016

;; MSG SIZE rcvd: 170

在此示例中,www.amazon.com 拥有以下 4 个授权名称服务器:

  • ns-1019.awsdns-63.net.
  • ns-1178.awsdns-19.org.
  • ns-1568.awsdns-04.co.uk.
  • ns-277.awsdns-34.com.

这些服务器中的任何一个都具有授权,能够响应有关 www.amazon.com 主机名的问题。可以使用 dig 命令直接针对特定的名称服务器检查给定域的每个授权名称服务器是否正确做出响应。

以下是查询 www.amazon.com 的其中一个授权名称服务器 (ns-1019.awsdns-63.net) 的输出结果;从响应结果可知,可以在 54.239.25.192 上访问 www.amazon.com:

$ dig www.amazon.com @ns-1019.awsdns-63.net.

 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com @ns-1019.awsdns-63.net.

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31712

;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0

;; WARNING: recursion requested but not available

 

;; QUESTION SECTION:

;www.amazon.com.   IN    A

 

;; ANSWER SECTION:

www.amazon.com.        60    IN    A    54.239.25.192

 

;; AUTHORITY SECTION:

www.amazon.com.        1800    IN    NS    ns-1019.awsdns-63.net.

www.amazon.com.        1800    IN    NS    ns-1178.awsdns-19.org.

www.amazon.com.        1800    IN    NS    ns-1568.awsdns-04.co.uk.

 

;; Query time: 7 msec

;; SERVER: 205.251.195.251#53(205.251.195.251)

;; WHEN: Fri Oct 21 21:50:00 2016

;; MSG SIZE rcvd: 186

以下行显示,ns-576.awsdns-08.net 是 amazon.com 的授权名称服务器:

;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0

出现 aa 标志,表明名称服务器 ns-1019.awsdns-63.net 提供了对资源记录 www.amazon.com 的授权响应。

在 Windows 操作系统中,请使用 nslookup 实用程序。如以下示例所示,nslookup 会返回与主机名相关联的 IP 地址:

C:\>nslookup www.amazon.com

Server:     ip-10-20-0-2.ec2.internal

Address:    10.20.0.2

 

Non-authoritative answer:

Name:       www.amazon.com

Address:    54.239.25.192

要使用 nslookup 实用程序确定主机名的授权名称服务器,请使用 -type=NS 标志:

C:\>nslookup -type=NS www.amazon.com

Server:     ip-10-20-0-2.ec2.internal

Address:    10.20.0.2

 

Non-authoritative answer:

www.amazon.com    nameserver = ns-277.awsdns-34.com

www.amazon.com    nameserver = ns-1019.awsdns-63.net

www.amazon.com    nameserver = ns-1178.awsdns-19.org

要查看 www.amazon.com 的 ns-277.awsdns-34.com 是否正确响应 www.amazon.com 的请求,请使用以下语法:

C:\>nslookup www.amazon.com ns-277.awsdns-34.com

Server:     UnKnown

Address:    205.251.193.21

 

Name:       www.amazon.com

Address:    54.239.25.200

Amazon Route 53, VPC, DNS


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS Support 中心

发布时间:2016 年 12 月 5 日