sing-box DNS 缓存与反向解析实战指南:原理、配置与性能优化

DNS 缓存与反向解析(Reverse Mapping)是提升代理工具 DNS 能力的关键手段,不仅能加速访问、减轻上游压力,还能提升日志可读性和规则匹配效率。本文将带你全面理解并掌握其配置方式。


📘 目录


1. 什么是 DNS 缓存

DNS 缓存是指将 DNS 解析结果保存在本地一段时间,避免对同一域名重复请求,提高解析速度并减少对上游 DNS 的依赖。

作用包括:

  • 提升解析速度,降低延迟
  • 避免频繁 DNS 查询,节省资源
  • 提高离线访问成功率(对 TTL 合理设置)

2. 缓存配置参数详解(sing-box)

1
2
3
4
5
6
7
8
"dns": {
"cache": {
"enabled": true, // 是否开启缓存
"size": 4096, // 最大缓存条目数量
"ttl": 86400, // 统一缓存时间(秒)
"respect_ttl": true // 是否遵循上游 TTL
}
}
参数 类型 说明
enabled Boolean 开启或关闭缓存
size Int 设置缓存最多保存多少条解析记录
ttl Int 固定缓存时间(秒),如设置为 86400 即 1 天
respect_ttl Boolean 是否使用上游 DNS 返回的 TTL

3. 缓存配置示例

🧪 示例 1:标准缓存设置(推荐)

1
2
3
4
5
6
"cache": {
"enabled": true,
"size": 8192,
"ttl": 0,
"respect_ttl": true
}

✅ 使用上游 TTL,兼顾准确性与性能。

🧪 示例 2:强缓存策略(速度优先)

1
2
3
4
5
6
"cache": {
"enabled": true,
"size": 4096,
"ttl": 86400,
"respect_ttl": false
}

⚠️ 所有域名解析结果缓存 24 小时,适合访问域名 IP 比较稳定的用户。


4. 什么是反向解析

反向解析(Reverse Mapping)是将 IP 地址反查为域名(PTR 记录),如:

  • IP 142.250.72.68 → 反查 → lax17s34-in-f4.1e100.net

5. 反向解析配置说明(sing-box)

1
2
3
"dns": {
"reverse_mapping": true
}

✅ 应用场景:

场景 说明
日志可读性 在连接日志中显示域名而非 IP
辅助规则匹配 某些规则可以基于反查结果进行更精细的判断
可观测性提升 更方便定位某些 IP 对应的服务来源

⚠️ 注意事项:

  • 反向解析请求依赖 PTR 记录,不是所有 IP 都支持
  • 会带来额外的 DNS 请求,首次连接可能略有延迟
  • 一般不建议在低性能设备上开启

6. 实战建议与注意事项

场景 建议配置
普通科学上网用户 缓存开启,TTL 使用上游(ttl: 0, respect_ttl: true),关闭反向解析
企业/高并发代理 缓存条目设置高(如 8192+),可开启反向解析便于审计
不稳定节点用户 缓存时间不宜太长,避免 IP 变化失效
日志监控需求高 可开启 reverse_mapping,提升日志可读性

🧾 总结

DNS 缓存与反向解析是构建高性能、可观测代理系统的重要组成部分。合理配置可带来显著的解析提速、访问优化与日志清晰度提升,尤其适用于多出口、多 DNS、多规则场景。

若你正在使用 sing-box,可以配合前文中的 DNS 多规则与分流配置,一起构建完整的 DNS 控制系统。


是否需要我提供一份完整的 sing-box 配置文件模板?欢迎继续提问。

sing-box DNS 缓存与反向解析实战指南:原理、配置与性能优化

https://despacito2.github.io/posts/dns-cache-reverse/

作者

人间正道

发布于

2025-07-07

更新于

2025-07-08

许可协议

评论