|
|
4060e83686
|
```
docs(readme): 重构 README 文档结构与内容以提升可读性
- 更新项目标题图标并优化描述语句
- 重新组织特性列表为表格形式,增加 ECS 剥离、黑名单过滤等功能说明
- 补充快速开始章节,细化源码构建与 Docker 使用方式
- 调整参数说明表,新增黑名单相关配置项及缓存条目限制
- 增加缓存机制详解、黑名单功能使用示例与架构图
- 更新开发依赖信息与推荐编译参数
- 修正作者信息展示格式并添加仓库链接
feat(cache): 改进缓存键生成逻辑与 EDNS 元数据处理
- 使用 dns.CanonicalName 规范化域名避免重复缓存键
- 缓存条目中保存 EDNS 扩展信息(version, rcode, EDE)
- 修复缓存读取函数返回值,传递完整缓存元数据
- 调整 TTL 计算优先级,仅在必要时检查 Extra 区域
- 黑名单匹配提前拦截请求,跳过上游查询
- 启动日志中显示黑名单规则数量与返回码设置
```
|
2025-10-15 14:19:55 +08:00 |
|
|
|
916a7c8127
|
```
feat(cache): 引入 LRU 缓存并优化缓存清理与 TTL 处理
- 使用 github.com/hashicorp/golang-lru/v2 替代原生 sync.Map 实现 LRU 缓存
- 修复缓存读写过程中的并发安全问题,使用 RWMutex 保护共享状态
- 调整缓存键结构注释,明确支持 TTL 和 LRU 策略
- 优化负面缓存 TTL 计算逻辑,更准确识别 NODATA 场景
- 在缓存写入前统一剥离伪 RR(如 OPT、TSIG)
- 增加 cache-size 命令行参数,支持配置 LRU 缓存最大条目数
- 移除旧的缓存清理协程中不必要的全量遍历逻辑
- 更新日志输出内容,包含 cache-size 配置项
```
|
2025-10-14 16:37:39 +08:00 |
|
|
|
bcd0914b2f
|
```
feat(core): 改进 DNS 响应构造逻辑以支持扩展错误码和诊断信息
在 writeReply 函数中,增强对上游 EDNS 选项的处理:
- 继承上游的扩展 RCODE 与 EDNS 版本号
- 可选透传 EDE(Extended DNS Errors)记录,保留更多诊断信息
- 明确设置 UDPSize、DO 位及 EDNS 版本转换逻辑
这有助于提升调试能力与协议兼容性,同时保持客户端请求的一致性。
```
|
2025-10-14 13:55:01 +08:00 |
|
|
|
05d3be286e
|
```
feat(cache): 实现并发安全的 DNS 响应缓存机制
新增基于 sync.Map 的缓存结构,支持 TTL 管理与定时清理。
完善缓存键生成逻辑,包含 DO/CD 标志避免上下文污染。
增强缓存读写处理:
- 自动跳过伪 RR(OPT/TSIG)防止干扰 TTL 计算
- 写入前剥离传输层细节提升通用性
- 支持负面缓存(NXDOMAIN/NODATA)并遵循 RFC 2308
- 回填剩余 TTL 并确保对外不可变
优化上游查询模块:
- 并发向多个上游竞速,支持 UDP 截断后 TCP 回退
- 过滤不良 RCODE(SERVFAIL/REFUSED/FORMERR)提升稳定性
- 使用信号量控制最大并发数,改善资源利用率
- 快速失败机制减少无效等待
其他改进:
- 完善日志记录,区分缓存命中/未命中及响应内容
- 显式构建客户端兼容的 EDNS0 选项
- 增加注释说明关键设计决策和行为边界
```
|
2025-10-14 10:52:57 +08:00 |
|
|
|
d540b302f1
|
```
feat(cache): 优化缓存键生成与缓存写入逻辑
- 引入更精确的缓存键计算方式,包含 QTYPE、QCLASS、DO 和 CD 标志
- 实现负面缓存(NXDOMAIN/NODATA)支持,遵循 RFC 2308 规范
- 改进缓存清理机制,在 TTL 为 0 时主动删除过期条目
- 添加日志初始化函数,支持 verbose 模式显示源码位置
- 重构上游查询逻辑,支持 context 控制超时和 TCP 回退
- 增加 ECS(EDNS Client Subnet)剥离选项以增强隐私保护
- 调整命令行参数默认值及日志输出格式,提升可读性与调试体验
```
|
2025-10-14 10:28:00 +08:00 |
|
|
|
0840090e5b
|
init
|
2025-10-14 09:26:29 +08:00 |
|