🌐 DNS 自动分流网关 - 高性能 & 全协议支持 (DoH/DoT/DoQ)
一个基于 Go 语言开发的轻量级、高性能 DNS 代理服务器。
如果你受够了 DNS 污染、想要更精准的国内外流量分流,或者想自建支持 DoH/DoT/DoQ 的安全 DNS 服务,这个项目绝对值得一试!
✨ 项目亮点
- 🌍 智能分流: 内置 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 一键部署。
🚀 快速部署
部署只需两步:
1. 创建配置文件 config.yaml
在一个空目录中创建一个 config.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: "[email protected]" # 用于接收证书过期通知 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. 一行命令启动
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,你还可以在运行目录下创建以下文件进行自定义(可选,若无文件会自动忽略):
hosts.txt: 类似于系统的 hosts 文件,强制指定域名 IP。192.168.1.1 myrouter.lan0.0.0.0 ads.badsite.comrule.txt: 自定义域名的分流策略(强制走cn或overseas组)。google.com overseasbaidu.com cn
🔗 项目链接
- GitHub 仓库 (欢迎 Star ⭐): Hamster-Prime/DNS_automatic_traffic_splitting
- Docker Hub 镜像: weijiaqaq/dns_automatic_traffic_splitting
项目完全开源,欢迎大家试用、提建议或者贡献代码!
评论 (0)