Files
dns-server/dns/.trae/documents/修复DNSSEC状态显示问题.md
Alex Yang cdac4fcf43 update
2026-01-16 11:09:11 +08:00

38 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 问题分析
1. **配置正确**:配置文件中`enableDNSSEC`设置为`true`,但卡片显示"已禁用"
2. **代码问题**:在`dns/server.go``GetStats`函数中,返回的`Stats`结构体缺少了DNSSEC相关字段
3. **API行为**当API访问DNSSEC相关字段时由于没有从`GetStats`函数返回,它们的值都是默认值(`DNSSECEnabled`默认值为`false`
4. **前端显示**前端卡片从API获取`DNSSECEnabled`值,因此显示"已禁用"
## 解决方案
修改`dns/server.go`中的`GetStats`函数,确保返回的`Stats`副本包含所有DNSSEC相关字段包括`DNSSECEnabled``DNSSECQueries``DNSSECSuccess``DNSSECFailed`
## 修复步骤
1. 打开`/root/dns/dns/server.go`文件
2. 找到`GetStats`函数大约在第960行
3. 修改返回的`Stats`结构体添加缺失的DNSSEC相关字段
4. 确保所有DNSSEC字段都从原始`Stats`结构体复制到返回的副本中
## 预期结果
修复后API将正确返回DNSSEC启用状态前端卡片将显示"已启用",与配置文件中的设置一致。
## 代码修改点
```go
// 返回统计信息的副本
return &Stats{
Queries: s.stats.Queries,
Blocked: s.stats.Blocked,
Allowed: s.stats.Allowed,
Errors: s.stats.Errors,
LastQuery: s.stats.LastQuery,
AvgResponseTime: s.stats.AvgResponseTime,
TotalResponseTime: s.stats.TotalResponseTime,
QueryTypes: queryTypesCopy,
SourceIPs: sourceIPsCopy,
CpuUsage: s.stats.CpuUsage,
DNSSECQueries: s.stats.DNSSECQueries,
DNSSECSuccess: s.stats.DNSSECSuccess,
DNSSECFailed: s.stats.DNSSECFailed,
DNSSECEnabled: s.stats.DNSSECEnabled, // 这是关键字段,确保返回正确的启用状态
}
```