1.1.1修复
This commit is contained in:
82
.trae/documents/plan_20251216_032256.md
Normal file
82
.trae/documents/plan_20251216_032256.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# DNSSEC功能修复计划
|
||||
|
||||
## 问题分析
|
||||
当前DNSSEC实现存在以下问题:
|
||||
1. 当启用DNSSEC时,系统只是验证上游服务器返回的DNSSEC签名,但不会主动请求DNSSEC记录
|
||||
2. 当上游服务器返回的响应没有DNSSEC记录时,系统只是将其作为备选响应
|
||||
3. 没有专门从8.8.8.8/1.1.1.1获取DNSSEC记录进行验证
|
||||
4. 缓存时没有优先考虑DNSSEC记录
|
||||
|
||||
## 修复方案
|
||||
|
||||
### 1. 改进DNS请求转发逻辑
|
||||
**修改文件:** `dns/server.go`
|
||||
**修改函数:** `forwardDNSRequestWithCache`
|
||||
|
||||
- 当启用DNSSEC且响应中没有DNSSEC记录时,主动向8.8.8.8/1.1.1.1发送DNS请求
|
||||
- 比较不同服务器返回的结果,优先使用带有DNSSEC记录的响应
|
||||
- 如果DNSSEC结果不匹配,优先使用8.8.8.8/1.1.1.1提供的解析记录
|
||||
|
||||
### 2. 增强DNSSEC验证机制
|
||||
**修改文件:** `dns/server.go`
|
||||
|
||||
- 完善DNSSEC记录提取和验证逻辑
|
||||
- 确保正确处理DNSKEY和RRSIG记录
|
||||
- 改进AD标志(Authenticated Data)的设置
|
||||
|
||||
### 3. 优化缓存机制
|
||||
**修改文件:** `dns/cache.go` 和 `dns/server.go`
|
||||
|
||||
- 缓存时标记DNSSEC状态
|
||||
- 优先返回带有DNSSEC记录的缓存项
|
||||
- 改进缓存键生成,考虑DNSSEC属性
|
||||
|
||||
### 4. 增加DNSSEC特定服务器配置
|
||||
**修改文件:** `config.json`
|
||||
|
||||
- 添加专门用于DNSSEC查询的服务器配置
|
||||
- 默认为8.8.8.8和1.1.1.1
|
||||
|
||||
## 具体实现步骤
|
||||
|
||||
1. **修改`forwardDNSRequestWithCache`函数**:
|
||||
- 当启用DNSSEC且主响应没有DNSSEC记录时,向DNSSEC专用服务器发送请求
|
||||
- 比较所有响应,选择最优结果(优先DNSSEC记录,其次是可靠服务器)
|
||||
- 实现DNSSEC结果验证和比较逻辑
|
||||
|
||||
2. **改进缓存获取逻辑**:
|
||||
- 在`handleDNSRequest`函数中,优先检查是否有带有DNSSEC记录的缓存项
|
||||
- 如果有,直接返回;否则再检查普通缓存项
|
||||
|
||||
3. **优化DNSSEC记录验证**:
|
||||
- 增强`verifyDNSSEC`函数的实现
|
||||
- 确保正确验证所有RRSIG记录
|
||||
- 改进错误处理和日志记录
|
||||
|
||||
4. **添加DNSSEC服务器配置**:
|
||||
- 在配置文件中添加`dnssecUpstreamDNS`配置项
|
||||
- 默认值为["8.8.8.8:53", "1.1.1.1:53"]
|
||||
|
||||
## 测试计划
|
||||
|
||||
1. 启动DNS服务器,启用DNSSEC
|
||||
2. 使用`dig`命令测试DNSSEC记录获取
|
||||
3. 验证带有DNSSEC记录的响应被正确返回
|
||||
4. 验证缓存机制优先返回DNSSEC记录
|
||||
5. 测试DNSSEC验证失败时的处理逻辑
|
||||
|
||||
## 预期效果
|
||||
|
||||
1. 启用DNSSEC后,系统会主动请求并验证DNSSEC记录
|
||||
2. 优先返回带有DNSSEC记录的解析结果
|
||||
3. 当DNSSEC结果不匹配时,优先使用8.8.8.8/1.1.1.1提供的记录
|
||||
4. 缓存机制正确处理DNSSEC标记,优先返回DNSSEC记录
|
||||
5. 完善的日志记录,便于调试和监控
|
||||
|
||||
## 代码修改范围
|
||||
|
||||
- `dns/server.go`:核心DNSSEC逻辑修改
|
||||
- `dns/cache.go`:缓存机制优化
|
||||
- `config.json`:配置项添加
|
||||
|
||||
通过以上修改,将解决当前DNSSEC功能的问题,确保启用DNSSEC后能够正确获取、验证和返回DNSSEC记录。
|
||||
Reference in New Issue
Block a user