Files
dns-server/.trae/documents/plan_20251216_023941.md
2025-12-19 12:44:57 +08:00

1.2 KiB
Raw Permalink Blame History

DNSSEC记录缺失问题修复计划

问题分析

从日志中可以看到所有DNS查询都显示"DNS响应不包含DNSSEC记录"这表明虽然DNSSEC被启用但服务器没有从上游DNS服务器获取到DNSSEC记录。

根本原因

当启用DNSSEC时DNS服务器需要在发送给上游服务器的请求中设置DNSSEC OK (DO)标志这样上游服务器才会返回DNSSEC记录如RRSIG、DNSKEY等。但当前代码直接使用原始请求发送给上游服务器没有添加DO标志。

修复方案

修改forwardDNSRequestWithCache函数,在向上游服务器发送请求之前:

  1. 检查是否启用了DNSSEC
  2. 如果启用为请求添加EDNS0选项并设置DO标志
  3. 确保修改后的请求被正确发送

具体实现步骤

  1. /root/dns/dns/server.go文件中,找到forwardDNSRequestWithCache函数
  2. 在发送请求前第625行附近添加DO标志设置逻辑
  3. 确保请求被正确发送到上游服务器

预期效果

修复后启用DNSSEC时服务器会向上游发送带有DO标志的请求上游服务器将返回DNSSEC记录从而实现完整的DNSSEC验证和记录返回。