This commit is contained in:
Alex Yang
2026-01-16 11:09:11 +08:00
parent 8159577be0
commit cdac4fcf43
284 changed files with 2813570 additions and 14 deletions

View File

@@ -0,0 +1,57 @@
# 添加DNSSEC支持实现计划
## 1. 配置系统修改
-`config/config.go``DNSConfig`结构体中添加`EnableDNSSEC`布尔字段用于控制是否启用DNSSEC支持
- 添加`DNSSECValidation`布尔字段用于控制是否进行DNSSEC验证
- 在配置加载时设置默认值
## 2. DNS查询处理修改
- 修改`dns/server.go`中的DNS客户端配置确保支持EDNS0扩展DNSSEC需要
-`handleDNSRequest`函数中支持DNSSEC相关查询类型DNSKEY、RRSIG、DS、NSEC、NSEC3等
- 确保上游DNS服务器返回的DNSSEC记录被正确处理和转发
## 3. DNSSEC验证支持
- 实现DNSSEC记录验证逻辑确保返回的DNS记录未被篡改
-`forwardDNSRequestWithCache`函数中添加DNSSEC验证步骤
- 根据配置决定是否进行验证,以及验证失败时的处理策略
## 4. 缓存系统适配
- 修改`DNSCache`结构体确保DNSSEC记录被正确缓存
- 确保缓存的DNS响应包含完整的DNSSEC记录链
## 5. 测试和验证
- 确保现有功能不受影响
- 测试DNSSEC查询是否正常工作
- 验证DNSSEC记录是否被正确转发和验证
## 6. 配置界面更新
- 在Web控制台中添加DNSSEC相关配置选项
- 允许用户通过界面启用/禁用DNSSEC支持和验证
## 7. 日志和统计
- 添加DNSSEC相关日志记录
- 记录DNSSEC验证结果统计
## 主要文件修改
- `config/config.go`添加DNSSEC相关配置字段
- `dns/server.go`修改DNS查询处理逻辑支持DNSSEC
- `static/index.html`添加DNSSEC配置界面
- `dns/cache.go`确保DNSSEC记录被正确缓存
## 依赖库
- 利用现有的`github.com/miekg/dns`该库已内置DNSSEC支持
## 实现步骤
1. 首先修改配置系统添加DNSSEC相关字段
2. 更新DNS客户端配置支持EDNS0扩展
3. 修改查询处理逻辑支持DNSSEC记录类型
4. 添加DNSSEC验证逻辑
5. 适配缓存系统
6. 更新Web配置界面
7. 测试和验证
## 预期效果
- 启用DNSSEC后服务器将支持DNSSEC查询并返回完整的DNSSEC记录
- 当启用DNSSEC验证时服务器将验证上游返回的DNS记录的真实性
- 增强DNS服务器的安全性防止DNS投毒和劫持攻击
- 提供灵活的配置选项允许用户根据需要调整DNSSEC设置