DNS 自动分流网关 - 高性能 & 全协议支持 (DoH/DoT/DoQ)
本帖最后由 Sanite_Ava 于 2025-11-29 20:00 编辑# 🌐 DNS 自动分流网关 - 高性能 & 全协议支持 (DoH/DoT/DoQ)
一个基于 Go 语言开发的轻量级、高性能 DNS 代理服务器。
如果你受够了 DNS 污染、想要更精准的国内外流量分流,或者想自建支持 DoH/DoT/DoQ 的安全 DNS 服务,这个项目绝对值得一试!
---
# 测试服务器:
**面板地址: [点击进入 WebUI](https://dns-test.11451453.xyz:8080)**
DoH: `https://dns-test.11451453.xyz/dns-query`
DoT/DoQ: `dns-test.11451453.xyz`
## ***注: 测试服务器位于德国法兰克福,国内ECS为上海电信IP,国外ECS为日本东京IP,速度一定不理想,仅供测试解析IP是否正确以及效果,如需体验高速解析请自行搭建配置***
---
### ✨ **项目亮点**
* 🌍 **智能分流**: 内置 GeoIP 和 GeoSite,自动将国内域名解析到国内 DNS,海外域名解析到海外 DNS,速度与准确性兼得。
* 🚀 **全协议支持**: 不仅支持传统 UDP/TCP,更完美支持 **DoH (HTTP/2 & HTTP/3)**、**DoT**、**DoQ (QUIC)** 等加密协议。
* 🔒 **自动 HTTPS**: 集成 Let's Encrypt,只需配置域名,自动申请和续期 TLS 证书,轻松搭建私有 DoH/DoT 服务器。
* ⚡ **极速体验**: 海外查询支持并发竞速(最快者胜),支持 TCP/DoT 连接复用 (Pipelining),告别解析延迟。
* 🛠️ **高度定制**: 支持自定义 `hosts.txt` 和 `rule.txt` 分流规则,支持自定义 ECS IP 以优化 CDN 解析。
* 📦 **开箱即用**: 启动时自动更新 Geo 数据库,支持 Docker 一键部署。
---
# 📝 更新日志
### ✨ **新增功能**
- **WebUI调整**: 全新风格,支持深色/浅色模式切换。
!(https://img.erpweb.eu.org/imgs/2025/11/0129957156a63dca.png)
!(https://img.erpweb.eu.org/imgs/2025/11/df04eec345db396c.png)
- **移动端支持**: WebUI 适配移动端。
- **仪表板增强版**:
- 仪表盘卡片新增 CN/Overseas 查询统计、Goroutines 监控、启动时间显示。
- 监听端口卡片重构为 Grid 布局,未监听端口自动淡化显示。
- **上游DNS服务器管理**: 支持通过拖拽 (Drag-and-Drop) 自定义上游服务器排序。
!(https://img.erpweb.eu.org/imgs/2025/11/f66cd63c88393497.gif)
- **日志系统**:
- 查询日志支持分页加载 (Pagination),大幅提升大数据量下的加载性能。
- 日志轮转策略从“条数限制”更改为“文件大小限制 (MB)”,默认 1MB 自动轮转。
- **优化**: 登录按钮与刷新按钮样式优化,提升交互体验。
### 🐛 修复问题
- **Pipeline 高并发问题**: 重构 DoT/TCP 客户端,使用连接池 (Connection Pool) 替代单一连接锁,彻底修复开启 Pipeline 后高并发下的延迟暴增与连接失败问题。
---
**💡 提示**: 本次更新包含多项核心功能升级与体验改进,建议所有用户更新到最新版本以获得最佳体验!
---
### 🚀 **快速部署**
部署只需两步:
**1. 创建配置文件 `config.yaml`**
在一个空目录中创建一个 `config.yaml` 文件,填入以下内容:
```yaml
# 服务监听配置(注释或未配置则不开启相应服务)
listen:
dns_udp: ":53"
dns_tcp: ":53"
doh: ":443"
dot: ":853"
doq: ":853"
# 自动证书申请 (Let's Encrypt)
# 如果启用,server.crt 和 server.key 将被忽略,证书将自动管理。
# 注意:需要公网 80 和 443 端口可访问。
auto_cert:
enabled: false
email: "your-email@example.com" # 用于接收证书过期通知
domains:
- "dns.example.com"
cert_dir: "certs" # 证书缓存目录
# Bootstrap DNS (用于解析上游服务器域名)
bootstrap_dns:
- "223.5.5.5:53"
- "8.8.8.8:53"
# 上游服务器配置
upstreams:
cn:
# 示例:国内UDP DNS
- address: "223.5.5.5:53"
protocol: "udp"
ecs_ip: "114.114.114.114"
# 示例:国内DoT DNS (开启Pipelining)
- address: "tls://223.6.6.6:853"
protocol: "dot"
ecs_ip: "114.114.114.114"
pipeline: true
insecure_skip_verify: false
overseas:
# 示例:海外DoH DNS (支持H3, 验证证书)
- address: "https://8.8.8.8/dns-query"
protocol: "doh"
ecs_ip: "8.8.8.8"# Cloudflare DNS 不支持ecs
http3: true
insecure_skip_verify: false
# 示例:海外DoT DNS (开启Pipelining)
- address: "tls://8.8.8.8:853"
protocol: "dot"
ecs_ip: "8.8.8.8"
pipeline: true
# 示例:海外DoQ DNS
- address: "quic://dns.nextdns.io:853"
protocol: "doq"
ecs_ip: "8.8.8.8"
# GeoIP/GeoSite数据文件路径及下载地址
geo_data:
geoip_dat: "GeoIP.dat"
geosite_dat: "GeoSite.dat"
geoip_download_url: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
geosite_download_url: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
```
**2. 一行命令启动**
```bash
docker run -d \
--name dns-proxy \
--restart unless-stopped \
--network host \
-v $(pwd)/config.yaml:/app/config.yaml \
-v $(pwd)/certs:/app/certs \
-v $(pwd)/hosts.txt:/app/hosts.txt \
-v $(pwd)/rule.txt:/app/rule.txt \
weijiaqaq/dns_automatic_traffic_splitting:latest
```
*注意:推荐使用 `--network host` 模式以获得最佳网络性能。*
---
## 📖 使用指南
### 📂 文件说明
除了 `config.yaml`,你还可以在运行目录下创建以下文件进行自定义(可选,若无文件会自动忽略):
1.**`hosts.txt`**: 类似于系统的 hosts 文件,强制指定域名 IP。
```text
192.168.1.1 myrouter.lan
0.0.0.0 ads.badsite.com
```
2.**`rule.txt`**: 自定义域名的分流策略(强制走 `cn` 或 `overseas` 组)。
```text
google.com overseas
baidu.com cn
```
### 🔗 **项目链接**
* **GitHub 仓库 (欢迎 Star ⭐):** (https://github.com/Hamster-Prime/DNS_automatic_traffic_splitting)
* **Docker Hub 镜像:** (https://hub.docker.com/r/weijiaqaq/dns_automatic_traffic_splitting)
项目完全开源,欢迎大家试用、提建议或者贡献代码! star 1 膜拜大佬 您好,您是作者吗?
直接用大厂的doh和自建的什么区别? star mover 发表于 2025-11-28 09:28
您好,您是作者吗?
直接用大厂的doh和自建的什么区别?
大厂的没分流哦,比如直接用cf的bilibili有海外cdn的服务就会解析到akamai 学习!!{:guzhang:} 感谢分享! xmsl hexy 发表于 2025-11-29 19:54
xmsl
{tieba28} Sanite_Ava 发表于 2025-11-29 19:58
快点同意加我好友 hexy 发表于 2025-11-29 20:00
快点同意加我好友
同意啦 star +1 要是可以类似mosdns实现黑白名单就更好了
页:
[1]