Google 公共 DNS 曾在接收来自权威服务器的 IPv6 分片响应时返回 SERVFAIL,现已修复,能正确重组分片并返回正常答案。该问题在 2017 年 8 月的测试中被发现,随后在 IETF 100 会议前的复测中确认已解决。
分片触发 SERVFAIL 的条件:权威服务器仅支持 IPv6,本地最大包长设为 1,280 八位字节。当 DNS 响应为 1,190 八位字节时,单包未分片,Google 解析器返回正常答案;当响应增至 1,346 八位字节,超出 1,280 限制,被拆成两个 IPv6 UDP 分片,Google 却返回 SERVFAIL。若将本地 MTU 调大至 1,500 八位字节,两种响应均能正确返回。
修复后的表现与测试:作者在 IETF 100 筹备期间再次发送分片响应,Google 公共 DNS 能够接收并重组分片,正确返回权威答案。此前实验还发现许多其他递归解析器存在相同缺陷,但 Google 服务在准确性、速度与无过滤方面表现优异,因此该缺陷显得尤为突出。修复具体投入的工程量原文未给出具体数据。
对运维的启示:Google 处理全球约 11% 至 12% 的 DNS 查询量,生产环境变更需极高谨慎。此次修复表明大规模递归解析器应确保 IPv6 分片重组逻辑完善,避免因 MTU 设置不当导致解析失败。网络工程师在部署 IPv6 权威服务时,应验证上游解析器对分片的兼容性,并在必要时调整 MTU 或启用分片重组测试。
这一修复消除了 IPv6 分片导致的解析失败风险,提升了公共 DNS 的可靠性,也为运维人员提供了在生产网络中验证分片处理的实例。
原文: APNIC Blog(2017-11-13)|编译自 APNIC Blog,事实以原文为准。
来源:APNIC Blog