Commit Graph

7 Commits

Author SHA1 Message Date
1ab273e2a8 feat(blacklist): 支持 hosts 风格黑名单文件并优化热重载机制
- 支持解析 hosts 风格的黑名单文件,可识别以 IP 开头的行,并将后续字段作为域名处理
- 增加对行首及行内注释的支持(支持 `//`、`#`、`;` 符号)
- 使用 atomic.Pointer 管理黑名单匹配器,提升并发安全性
- 优化黑名单热重载逻辑,使用 time.Ticker 替代 time.After 提高稳定性
- 更新相关依赖引用路径,调整 sync 包导入位置
2025-10-17 10:46:48 +08:00
20d0ddc18e docs(readme): 更新 README 中的构建命令和启动示例
- 移除 emoji 前缀,简化项目标题
- 将 `go build` 命令替换为 `bash build.sh bin`
- 重新格式化启动命令,使用反斜线换行提高可读性
- 更新上游 DNS 服务器列表及部分参数配置
- 添加 blacklist-file 参数说明

build(go): 升级 Go 版本至 1.25.3
2025-10-16 10:25:42 +08:00
d5835a9716 build(go): 更新 golang.org/x 包依赖版本
升级了多个 golang.org/x 相关依赖包的版本,包括:
- golang.org/x/mod 从 v0.24.0 升级到 v0.29.0
- golang.org/x/net 从 v0.43.0 升级到 v0.46.0
- golang.org/x/sync 从 v0.14.0 升级到 v0.17.0
- golang.org/x/sys 从 v0.35.0 升级到 v0.37.0
- golang.org/x/tools 从 v0.33.0 升级到 v0.38.0

此变更同步更新了 go.mod 和 go.sum 文件中的依赖记录。
2025-10-15 15:53:50 +08:00
5236dbe790 build(go): 更新依赖模块并清理无用依赖
移除多个间接依赖项,包括 github.com/beorn7/perks、github.com/cespare/xxhash/v2、
github.com/prometheus/* 系列依赖等。同时更新了 golang.org/x/net 和 golang.org/x/sys
至新版本,并引入新的间接依赖 github.com/google/go-cmp v0.7.0。
2025-10-15 15:50:30 +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
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
0840090e5b init 2025-10-14 09:26:29 +08:00