# 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验证和记录返回。