如何解决 DNS SERVFAIL 问题?

3 分钟阅读
0

在 Amazon Route 53 中解析我的域时,我收到了“SERVFAIL”响应。

解决方法

问题: 第三方名称服务器 (NS) 正在阻止 AWS 公共解析器的 IP 地址

如果第三方 NS 阻止了公共解析器的 IP 地址,那么在解析针对您公共域的查询时,您会看到 SERVFAIL 响应。无论您是从一个还是多个 AWS 区域进行解析,都会出现这种情况。但是,在解析针对某些公共 DNS 解析器(例如 8.8.8.8 或 1.1.1.1)的相同 DNS 查询时,会返回 NOERROR 响应。

要解决此问题,请联系您的第三方 DNS 提供商以创建允许列表。将您观察到 SERVFAIL 响应的 AWS 区域中的所有 AWS 公共解析器 IP 地址范围添加到此列表中。

问题: 在公共托管区中配置的子域委派不正确

示例

您的公共托管区“example.com”已为“aws.example.com”配置了子域委派。子域委派配置指定了无法访问或不正确的名称服务器,这些服务器对子域不具有权威性。

域“example.com”的父公共托管区

example.comNSns1.example.com、ns2.example.com、ns3.example.com、ns4.example.com
aws.example.comNSdummy-ns1.com、dummy-ns2.net、dummy-ns3.co.uk、dummy-ns4.org

域“aws.example.com”的子域托管区

aws.example.comNSns1-xxx.awsdns-xx.com、ns2-xxx.awsdns-xx.co.uk、ns3-xxx.awsdns-xx.net、ns4-xxx.awsdns-xx.org
aws.example.comA1.2.3.4

要解决上述错误,请将父托管区内的名称服务器记录配置为与子域托管区中的名称服务器相匹配。如果您使用的是自定义名称服务器,请确认可以访问该名称服务器。

问题: 域注册商登记的名称服务器不正确

当域注册商登记的名称服务器不正确时,有两个原因会导致收到 SERVFAIL 响应:

  • 在域注册商处配置的名称服务器与您公共托管区中提供的名称服务器不匹配。
  • 在注册商处配置的名称服务器存在,但是对给定域不具有权威性。

如果名称服务器不存在,则解析器会在启动迭代查询后超时。这些超时会导致查询时间大大延迟。由于名称服务器无法提供答案,解析器会返回 SERVFAIL 响应。

域的公共托管区

example.comNSns1.example.com、ns2.example.com、ns3.example.com、ns4.example.com

在域注册商处配置名称服务器,如以下示例所示:

whois example.com | grep "Name Server"
Name Server: ns1.test.com  
Name Server: ns2.test.com
Name Server: ns3.test.com  
Name Server: ns4.test.com

要解决此错误,请执行以下一项操作:

  • **未实现白标名称服务器:**将注册商的名称服务器替换为分配给您的公共托管区的名称服务器。
  • **实现了白标名称服务器:**确保注册商的名称服务器与您的粘附记录和公共托管区中白标名称服务器的 A 记录相同。

问题: 在私有托管区中配置了不支持的子域委派

如果在私有托管区中错误配置了子域委派,那么虚拟私有云 (VPC) DNS 解析器会返回 SERVFAIL

私有托管区

servfail.localNSns-xxx.awsdns-xx.co.uk、ns-x.awsdns-xx.com、ns-xxx.awsdns-xx.org、ns-xxx.awsdns-xx.net
sub.servfail.localNSns-xxx.awsdns-xx.net

注意: 您不能使用 AWS 管理控制台在私有托管区中创建 NS 记录来为子域委派职责。而是要使用 AWS 命令行界面 (AWS CLI)。请注意,Amazon Route 53 不支持在私有托管区中进行子域委派

问题: DNSSEC 配置错误

DNSSEC 可能包含以下一项或多项错误配置:

  • DNSSEC 在域注册商级别启用,但在 DNS 托管服务端未启用。
  • DNSSEC 签名在域注册商级别和 DNS 托管服务端均为启用状态。但是,一个或多个基本信息(例如密钥类型、签名算法和公钥)不匹配。或者,DS 记录错误。
  • 未在父区域和子区域之间建立信任链。父区域中的 DS 记录与子区域中公共 KSK 的哈希值不匹配。

要解决此问题,请参阅如何发现和解决 Route 53 中的 DNSSEC 配置问题?

问题: Route 53 Resolver 入站和出站端点链接配置错误

处于循环中的 DNS 流量会导致此问题。以下模式的流量会导致循环:

EC2 实例 - VPC DNS 解析器 -(匹配转发规则)- 出站端点 -(入站端点的目标 IP 地址)- 入站端点 - VPC DNS 解析器

要解决此问题,请参阅避免使用 Resolver 端点进行循环配置

问题: Route 53 Resolver 出站端点存在连接问题

如果 Route 53 Resolver 出站端点和 Resolver 规则目标 IP 地址之间存在连接问题,则 AmazonProvidedDNS 会返回 SERVFAIL

要解决此问题,请按照以下步骤操作:

  • 验证从出站端点创建的弹性网络接口 VPC 到目标 IP 地址的网络连接:
    1. 检查网络访问控制列表(网络 ACL)。
    2. 确保有出站端点安全组出站规则,TCP 和 UDP 流量可通过端口 53 到达目标 IP 地址。
    3. 检查在目标 IP 地址端配置的所有防火墙规则。
    4. 验证出站端点弹性网络接口和目标 IP 地址之间的路由。
  • 根据设计,Route 53 Resolver 出站端点弹性网络接口没有公有 IP 地址。如果目标 DNS 服务器是公有 DNS(例如: 8.8.8.8),请验证是否在具有 NAT 网关路由表项的私有子网中创建了出站端点。

问题: 父区域中没有粘附记录

示例

在域“example.com”的公共托管区中,针对指向该子域的名称服务器的“glue.example.com”有一个子域委派。但是,在公共托管区“example.com”中不存在粘附记录,如以下示例所示:

域“example.com”的父公共托管区

example.comNSns1.example.com、ns2.example.com、ns3.example.com、ns4.example.com
glue.example.comNSns1.glue.example.com、ns2.glue.example.com、ns3.glue.example.com、ns4.glue.example.com

域“glue.example.com”的子域公共托管区

glue.example.comNSns1.glue.example.com、ns2.glue.example.com、ns3.glue.example.com、ns4.glue.example.com
glue.example.comA1.2.3.4
ns1.glue.example.comA3.3.3.3
ns2.glue.example.comA4.4.4.4
ns3.glue.example.comA5.5.5.5
ns4.glue.example.comA6.6.6.6

要解决此问题,请在父域托管区中为子域“glue.example.com”创建粘附记录。

域“example.com”的父公共托管区

example.comNSns1.example.com、ns2.example.com、ns3.example.com、ns4.example.com
glue.example.comNSns1.glue.example.com、ns2.glue.example.com、ns3.glue.example.com、ns4.glue.example.com
glue.example.comA1.2.3.4
ns1.glue.example.comA3.3.3.3
ns2.glue.example.comA4.4.4.4
ns3.glue.example.comA5.5.5.5
ns4.glue.example.comA6.6.6.6

问题: 超过了 max-recursion-depth

如果查询域的响应深度大于九,则超过了 max-recursion-depth。响应必须是一个由不超过八个 CNAME 记录和最终 A/AAA 记录组成的链。

要解决此问题,请减少响应中 CNAME 记录的数量。为了防止循环,Route 53 Resolver 支持的最大深度为九(由八个 CNAME 和一个 A/AAA 记录组成的链)。

AWS 官方
AWS 官方已更新 1 年前