Files
dns-server/CHANGELOG.md
2026-01-25 16:13:52 +08:00

167 lines
8.0 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.
# Changelog
所有对本项目的显著更改都将记录在此文件中。
## [2.0.0] - 2026-01-18
### 重大重构
- **核心查询逻辑重构**移除了所有响应合并相关代码简化了DNS查询处理流程
- **并行查询模式重设计**:改为返回第一个成功响应,提高响应速度
- **fast-ip模式优化**:只向一个预先测试出的最快服务器发送请求,降低资源消耗
- **代码结构优化**移除了冗余的响应合并机制减少了内存占用和CPU消耗
### 移除
- 删除了 `mergeResponses` 函数不再合并多个DNS响应
- 删除了 `recordKey` 结构体不再需要唯一标识DNS记录
- 删除了 `getRecordKey` 函数不再需要获取DNS记录的唯一标识
- 移除了所有响应合并相关的代码
### 改进
- **parallel模式**:向多个上游服务器并行发送请求,返回第一个成功响应
- **fast-ip模式**通过ping测试选择最快服务器只向一个服务器发送请求
- **默认模式**:采用新的并行查询逻辑,返回第一个成功响应
- **资源管理**:优化了连接池使用,减少资源消耗
- **DNSSEC验证**:只对将要返回的响应进行验证,减少不必要的计算
### 性能提升
- 减少了内存占用:不再存储多个响应进行合并
- 降低了CPU消耗移除了复杂的响应合并算法
- 提高了响应速度:返回第一个成功响应,无需等待所有服务器响应
- 减少了网络流量fast-ip模式只向一个服务器发送请求
## [1.2.7] - 2026-01-17
### 改进
- 实现服务器启动时远程屏蔽列表获取和DNS服务启动同时进行
- 新增`LoadLocalRulesOnly()`方法只加载本地规则和hosts文件确保服务器快速启动
- 在main.go中使用`LoadLocalRulesOnly()`替代`LoadRules()`,不再等待远程规则获取完成
- 添加异步加载远程规则的goroutine服务器启动后在后台加载远程规则
- 优化缓存机制,本地有缓存时自动加载,服务器启动时只检查更新而不是重新获取
- 修改`fetchRemoteRules`方法,只有在缓存需要更新时才去远程获取规则,否则直接从缓存加载
- 完善错误处理,当从远程获取失败时,尝试使用过期的缓存
- 服务器和设置界面优化调整,增加缓存模式设置、缓存大小、缓存时间设置
## [1.2.6] - 2025-12-30
### 新增
- 实现查询日志详情的域名信息显示功能
- 实现GFWList功能可以使用Steam++作为代理访问YouTube,谷歌等被屏蔽的网站
## [1.2.5] - 2025-12-26
### 新增
- 增加了对IPv6的支持配置项默认关闭
- 增加跟踪器状态显示匹配tracker/trackers.json数据库
- 全局UX改进包括但不限于
- 增加了页面滚动时,菜单栏和顶部标题栏保持固定的功能;
- 优化了页面适应窗口大小的改变,确保在所有设备上都能正确显示;
- 增加点击解析记录后弹窗日志详情的UI/UX使用现代化设计和动画效果
- 增加了查询日志详情界面的滚动条,方便查看长日志。
### 改进
- 新增API接口用于查询解析日志详情
- 支持EDNS在web界面查询日志详情的请求列表区域增加了EDNS标记显示。
### 修复
- 修复DNS服务器地址缺少端口号导致的Server Failed问题
- 修复查询日志详情接口返回的日志格式错误问题,现在返回的日志包含完整的解析记录和解析时间;
- 修复查询日志详情接口返回的日志中解析记录中缺少IP地址、类型、DNSSEC验证状态等信息的问题
- web界面系统设置加载后不获取数据和保存配置不生效的问题
- 修复了DNS查询超时设置过短导致的"Server failed"错误。
### 更新
- 更新Swagger API文档。
## [1.2.4] - 2025-12-25
### 改进
- 修复DNS解析记录显示现在显示完整格式"A: 104.26.24.30 (ttl=193)" 而不仅仅是IP地址
- 移除了查询日志列表中的"屏蔽规则"列,但在详情弹窗中仍保留
- 在弹窗日志详情中,只有被屏蔽或者有自定义规则时才显示规则信息
- 改进了日志详情弹窗的UI/UX使用现代化设计和动画效果
- 移除了右上角的服务器状态卡片CPU、查询统计等
- 实现了页面滚动时,菜单栏和顶部标题栏保持固定
- 优化了页面适应窗口大小的改变,确保在所有设备上都能正确显示
### 修复
- 修复了移动端侧边栏在打开时遮挡页面内容的问题
- 修复了侧边栏布局分离了桌面端和移动端侧边栏使用CSS媒体查询控制显示
## [1.2.3] - 2025-12-25
### 修复
- 修复DNS服务器地址缺少端口号导致的Server Failed问题
- 添加normalizeDNSServerAddress函数确保DNS服务器地址始终包含端口号默认添加53端口
- 修改所有resolver.Exchange()调用,确保传递的服务器地址包含端口号
- 优化DNSSEC服务器合并逻辑确保DNSSEC服务器地址也包含端口号
## [1.2.2] - 2025-12-25
### 新增
- 增加查询日志详情界面点击域名列表,显示解析日志的详细信息。
- 增加DNSSEC上游服务器的配置项。
### 修复
- web界面系统设置加载后不获取数据和保存配置不生效的问题。
## [1.2.1] - 2025-12-25
### 改进
- 增加IPv6支持配置项默认关闭
### 修复
- 修复了DNS查询超时设置过短导致的"Server failed"错误
- 将默认DNS请求超时时间从5毫秒调整为1000毫秒
## [1.2.0] - 2025-12-24
### 添加
- 在查询日志详情的域名左侧添加DNSSEC状态锁图标和跟踪器状态图标
- 实现跟踪器状态显示匹配tracker/trackers.json数据库
- 添加跟踪器详情浮窗鼠标悬停在眼睛图标上时显示跟踪器名称、类别、URL、来源等信息
- 实现日志页面页码跳转功能(输入框+"前往"按钮)
- 实现日志页面显示数量选择功能(下拉框)
### 修改
- 异步加载跟踪器数据库并缓存,优化性能
- 将日志渲染逻辑改为支持异步操作的for...of循环
- 修复跟踪器浮窗CSS样式语法错误
- 在后端添加/tracker目录静态文件服务路由
## [1.1.4] - 2025-12-21
### 修复
- 修复规则优先级问题:确保自定义规则优先于远程规则
- 修复添加自定义规则后需要重启服务器的问题通过在添加或删除规则后清空DNS缓存实现
## [1.1.3] - 2025-12-19
### 移除
- 移除search domain功能不再支持自动添加域名前缀进行查询
- 移除DNSConfig结构体中的PrefixDomain字段
- 移除配置文件中的prefixDomain配置项
## [1.1.2] - 2025-12-19
### 添加
- 添加不验证DNSSEC的域名功能支持通过配置文件指定需要跳过DNSSEC验证的域名模式
- 在DNSConfig结构体中增加NoDNSSECDomains字段用于存储不验证DNSSEC的域名模式列表
### 修改
- 在forwardDNSRequestWithCache函数中添加域名匹配逻辑检查域名是否包含不验证DNSSEC的模式
- 在所有查询模式parallel、fastest-ip、default中实现跳过DNSSEC验证的功能
## [1.1.1] - 2025-12-19
### 修改
- 修复NXDOMAIN响应传播逻辑确保上游DNS服务器返回的NXDOMAIN响应能正确传递给客户端
- 优化fastest-ip和parallel查询模式下的NXDOMAIN响应选择机制
- 确保不存在的域名能被正确识别并返回NXDOMAIN状态码
- 修复服务器绑定地址配置确保IPv4兼容性
## [1.0.0] - 2025-12-16
### 添加
- 在web界面查询日志详情的请求列表区域增加了EDNS标记显示
- 后端QueryLog结构体扩展新增EDNS字段以记录查询是否使用EDNS
- 前端日志渲染逻辑支持EDNS标记的显示
### 修改
- 更新了`addQueryLog`函数签名增加edns参数
- 调整了所有`addQueryLog`调用确保传递正确的EDNS值
- 优化了日志表格的状态显示格式使EDNS标记与DNSSEC、缓存状态等标记一致显示
## 格式说明
本CHANGELOG遵循[Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/)格式。
版本号遵循[语义化版本](https://semver.org/lang/zh-CN/)规范。