1.1.1修复

This commit is contained in:
Alex Yang
2025-12-19 12:44:57 +08:00
parent b576996ede
commit 1f3f5708a3
72 changed files with 3476 additions and 83 deletions

View File

@@ -0,0 +1,119 @@
# DNSSEC判断和显示逻辑分析与改进
## 1. 当前实现分析
### DNSSEC判断逻辑
1. **核心位置**`dns/server.go` 中的 `forwardDNSRequestWithCache` 函数
2. **判断流程**
- 检查配置是否启用DNSSEC (`s.config.EnableDNSSEC`)
- 从响应中提取所有DNSKEY和RRSIG记录
- 验证DNSSEC签名有效性
- 设置响应的Authenticated Data (AD) 标志
- 优先返回包含有效的DNSSEC记录的响应
- 如果没有有效的DNSSEC记录使用备选响应
### DNSSEC显示逻辑
1. **前端显示**`static/js/logs.js` 中的 `updateLogsTable` 函数
2. **显示方式**
```javascript
${log.DNSSEC ? ', <span class="text-green-500"><i class="fa fa-lock"></i> DNSSEC</span>' : ''}
```
- 当DNSSEC为true时显示绿色锁图标和"DNSSEC"文字
- 否则不显示
### DNSSEC状态存储
1. **`domainDNSSECStatus` 映射**存储域名的DNSSEC状态
2. **`resolvedDomains` 结构**包含每个域名的DNSSEC状态
3. **查询日志**每条日志记录包含DNSSEC状态
## 2. 存在的问题
1. **显示逻辑单一**只在日志页面显示DNSSEC状态没有在仪表盘或其他关键位置显示
2. **状态判断简单**只检查响应中是否包含RRSIG记录没有考虑签名验证结果
3. **缺少统计信息**没有统计使用DNSSEC的查询比例
4. **配置界面缺失**没有在配置界面提供DNSSEC相关的配置选项
5. **缺少用户反馈**用户无法直观了解当前DNSSEC的整体使用情况
## 3. 改进方案
### 3.1 增强DNSSEC判断逻辑
- **改进位置**`dns/server.go`
- **改进内容**
- 增加DNSSEC验证结果的详细记录
- 区分"DNSSEC可用"和"DNSSEC验证成功"两种状态
- 记录DNSSEC验证失败的具体原因
### 3.2 扩展DNSSEC显示范围
- **改进位置**
- `static/js/dashboard.js`在仪表盘添加DNSSEC统计卡片
- `static/js/logs.js`增强日志中的DNSSEC显示
- **改进内容**
- 在仪表盘添加"DNSSEC使用率"统计卡片
- 在TOP域名列表中显示DNSSEC状态
- 在日志记录中显示DNSSEC验证结果成功/失败/未使用)
### 3.3 添加DNSSEC配置界面
- **改进位置**:配置页面
- **改进内容**
- 添加DNSSEC启用/禁用开关
- 添加DNSSEC验证严格程度选项
- 显示当前DNSSEC状态信息
### 3.4 增强DNSSEC统计功能
- **改进位置**`dns/server.go`
- **改进内容**
- 统计DNSSEC查询总数
- 统计DNSSEC验证成功/失败次数
- 计算DNSSEC使用率
- 在API中提供DNSSEC统计数据
### 3.5 改进DNSSEC状态存储
- **改进位置**`dns/server.go`
- **改进内容**
- 增加DNSSEC验证结果的存储
- 记录DNSSEC状态的有效期
- 优化域名DNSSEC状态的更新逻辑
## 4. 实现计划
1. **第一步**增强DNSSEC判断逻辑改进验证结果记录
2. **第二步**添加DNSSEC统计功能扩展API返回数据
3. **第三步**在仪表盘添加DNSSEC统计卡片
4. **第四步**增强日志中的DNSSEC显示
5. **第五步**添加DNSSEC配置界面
6. **第六步**优化DNSSEC状态存储和更新逻辑
## 5. 预期效果
- 用户可以在仪表盘直观了解DNSSEC使用情况
- 日志中显示详细的DNSSEC验证结果
- 提供灵活的DNSSEC配置选项
- 增强DNSSEC状态的准确性和可靠性
- 提高DNSSEC相关问题的可调试性
## 6. 代码修改点
### 后端修改
- `dns/server.go`增强DNSSEC判断和统计
- `config/config.go`添加DNSSEC相关配置选项
- API接口扩展返回DNSSEC统计数据
### 前端修改
- `static/js/dashboard.js`添加DNSSEC统计卡片
- `static/js/logs.js`:增强日志显示
- 配置页面添加DNSSEC配置选项
## 7. 风险评估
- DNSSEC验证可能会增加响应延迟
- 错误的DNSSEC配置可能导致解析失败
- 增强的统计功能可能增加内存使用
## 8. 测试计划
- 测试DNSSEC启用/禁用功能
- 测试不同域名的DNSSEC显示
- 测试DNSSEC统计数据的准确性
- 测试DNSSEC验证失败时的处理逻辑
通过以上改进可以使DNSSEC判断和显示逻辑更加完善提供更好的用户体验和更详细的DNSSEC状态信息。