第九章:故障排除9.1. 常见问题9.1.1. 它不起作用;我怎样才能找出问题所在?9.1.2. EDNS 合规问题9.1.3. 检查加密DNS流量9.2. 递增和更改序列号9.3. 可以从哪里获取帮助?
安装和配置问题的最佳解决方案是通过事先设置日志文件来采取预防措施。日志文件提供提示和信息,可用于识别任何出错的地方并解决问题。
Compliance Issues —— 合规问题
EDNS(Extended DNS,扩展DNS)是1999年首次指定的标准。DNSSEC验证(validation)、DNS COOKIE选项和其他功能都需要它。仍有一些损坏和过时的DNS服务器和防火墙在使用中,当使用EDNS查询时会出现故障;例如,他们可能会放弃(drop)EDNS查询,而不是使用FORMERR进行回复。BIND和其他递归名称服务器在这种情况下传统上采用了变通方法,以不同的方式重试查询,最终退回到没有EDNS的普通DNS查询。
这种变通方法会导致不必要的解析延迟,增加代码复杂性,并阻止部署新的DNS功能。2019年2月,所有主要的DNS软件供应商都删除了这些变通方法;参阅 https://www.dnsflagday.net/2019/ 了解更多详情。自9.14.0版本起,BIND中实施了这一更改。
因此,如果没有人工干预,某些域可能无法解决。在这些情况下,可以通过为违规服务器添加 server
子句,或根据具体的不合规情况指定 edns no
或 send cookie no
来恢复解决方案。
要确定要使用哪个 server
子句,请运行以下命令向断开域的权威服务器发送查询:
dig soa <zone> @<server> +dnssec
dig soa <zone> @<server> +dnssec +nocookie
dig soa <zone> @<server> +noedns
如果第一个命令失败,但第二个成功,服务器很可能需要 send-cookie no
。如果前两个命令失败但第三个成功,则服务器需要使用 edns no
完全禁用EDNS。
请联系不合规域的管理员,并鼓励他们升级损坏的DNS服务器。
注意:
此功能需要BIND 9所针对的加密库的支持。对于OpenSSL,需要1.1.1或更高版本(使用 named-V
进行检查)。
根据定义,TLS加密流量(例如DNS over TLS、DNS over HTTPS)对数据包嗅探器来说是不透明的,这使得调试加密DNS的问题几乎是不可能的。然而,Wireshark通过能够读取密钥日志文件来解决这个问题。为了使 named
准备这样的文件,请将 SSLKEYLOGFILE
环境变量设置为:
字符串 config
( SSLKEYLOGFILE=config
);这需要定义一个 logging
channel
,该通道将处理属于 sslkeylog
类别的消息,
要写入的密钥文件的路径( SSLKEYLOGFILE=/path/to/file
);这相当于以下日志配置:
xchannel default_sslkeylogfile {
file "${SSLKEYLOGFILE}" versions 10 size 100m suffix timestamp;
};
category sslkeylog {
default_sslkeylogfile;
};
注意:
当使用 SSLKEYLOGFILE=config
时,强烈建议不要使用 print-time
或 print-severity
等选项来增加日志通道输出,因为这可能会使密钥日志文件不可用。
当设置 SSLKEYLOGFILE
环境变量时,由 named
(传入和传出)建立的每个TLS连接都会导致大约1千字节的数据写入密钥日志文件。
警告 由于BIND 9中当前日志代码的局限性,启用TLS预主密钥日志会对 `named` 性能产生不利影响。
区域序列号只是数字,与日期无关。然而,许多人将它们设置为表示日期的数字,通常采用YYYYMMDDRR的形式。偶尔他们会犯错误,将序列号设置为未来的日期,然后尝试通过将其设置为当前日期来纠正它。这会导致问题,因为序列号用于指示区域已更新。如果辅助服务器上的序列号低于主服务器上的串行号,则辅助服务器会尝试更新其区域副本。
将主服务器上的序列号设置为比辅助服务器上的更低的数字,意味着辅助服务器将不会对其区域副本执行更新。
解决此问题的方法是将2147483647(231-1)添加到数字中,重新加载区域并确保所有次级都已更新为新的区域序列号,然后将其重置为所需的数字并再次重新加载区域。
BIND用户邮件列表,网址为https://lists.isc.org/mailman/listinfo/bind-users,是对等用户支持的优秀资源。此外,ISC还维护着一个有用文章的知识库,网址为https://kb.isc.org。
互联网系统联盟(Internet Systems Consortium,ISC)为BIND 9、ISC DHCP和Kea DHCP提供年度支持协议。所有付费支持合同都包括提前安全通知;一些级别包括服务级别协议(service level agreements,SLAs)、高级软件功能,以及提高错误修复和功能请求的优先级。
请联系info@isc.org或访问https://www.isc.org/contact/了解更多信息。