news 2026/9/15 10:43:13

SmartDNS 并行解析 DNS 并返回最快 IP:家庭与小型团队的落地笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SmartDNS 并行解析 DNS 并返回最快 IP:家庭与小型团队的落地笔记

SmartDNS 并行解析 DNS 并返回最快 IP:家庭与小型团队的落地笔记

【免费下载链接】smartdnsA local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH, DoQ. 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验,支持DoH,DoT,DoQ。项目地址: https://gitcode.com/GitHub_Trending/smar/smartdns

SmartDNS 是一个本地 DNS 服务器:它监听局域网,对同一个域名并行查询多个上游 DNS,测速后把最快的网站 IP 返回给设备,支持 DoT、DoH、DoQ 等加密协议。下面覆盖最小可用配置、三个场景配方和常见坑。

它到底做了什么

SmartDNS 部署在设备和上游 DNS 之间,局域网里的设备把 DNS 指向它(改网关或 DHCP 下发即可)。收到查询后,它先查缓存,命中直接返回;未命中就同时向同组的所有上游发出 UDP、TCP、DoT、DoH 等请求,并对候选 IP 做 ping 或 TCP 连接测速。本质就是拿"实测最快"替代传统 DNS 的"谁先回包算谁":回复里同时考虑上游响应速度和 IP 质量,IPv4/IPv6 双栈时再做一次双栈优选。

5 分钟跑起来:最小可用配置

SmartDNS 是一个 C 程序,clone 下来编译安装即可:

git clone https://gitcode.com/GitHub_Trending/smar/smartdns cd smartdns && make && make install

下面这份配置让 SmartDNS 监听 53 端口,配一个 UDP 上游加一个 DoT 上游:

bind [::]:53 # 监听局域网 53(UDP) bind-tcp [::]:53 # TCP 也监听,供长连接客户端 server 223.5.5.5 -b # UDP 上游,-b 标记为启动引导 DNS server 119.29.29.29 # 冗余上游 server-tls 8.8.8.8 # DoT,默认 853 端口 log-level info

存为/etc/smartdns/smartdns.conf并启动后,用dig @127.0.0.1 example.com +short验证:返回真实 IP 即最小配置就绪。

按场景选配方

Web UI 是插件,配置里加plugin smartdns_ui.sosmartdns-ui.ip http://0.0.0.0:6080两行即可。Dashboard 上的平均查询时间、缓存命中率这两个指标,基本能判断配方有没有生效。

给流媒体域名降低首查延迟

看视频首帧慢、后续都快,通常是测速耗时加缓存刚好过期的问题。

prefetch-domain yes # TTL 到期前后台预取 domain-rules /bilibili.com/ -speed-check-mode none # 跳过测速直接返回

配完后观察 Dashboard 的 Average Query Time,这些域名的首次查询应降到毫秒级。

让内网域名走指定上游

公司或实验室的内网域名只有内网 DNS 能解析时,把这批后缀划给专用组,别走公网上游。

server 192.168.1.10 -group office -exclude-default-group # 内网 DNS 只进 office 组 nameserver /intranet.example.com/office # 内网后缀路由到 office 组

配完后dig @127.0.0.1 某主机.intranet.example.com应返回内网网段 IP,其他域名不受影响。

游戏场景关闭双栈探测

家里没有 IPv6 出口时,返回的 AAAA 会让客户端先等一轮 v6 连接超时,游戏首包延迟明显偏高。

domain-rules /steam.com/ -dualstack-ip-selection no # 该域名不做双栈优选

配完后访问该域名的首包延迟应下降,不再出现 v6 超时回退的停顿。

容易踩的几个坑

53 端口冲突怎么查

现象:服务起不来,报 bind 失败,或dig @127.0.0.1无响应。原因:dnsmasq 或系统自带 DNS 已占用 53 端口。修复:先查占用者,协商不动就让 SmartDNS 换端口:

ss -lnup | grep :53 # 看谁在听 53 bind :6053 # 让 SmartDNS 改听 6053

DoT 上游连不通

现象:日志里 DoT 服务器超时,查询全落到明文上游。原因:853 端口被拦,或证书校验、SPKI pin 不匹配。修复:先换走 443 的 DoH 验证连通性,或临时加-no-check-certificate定位是不是 pin 问题:

server-https https://1.1.1.1/dns-query # 改用 DoH,走 443

IPv6 不通导致访问卡顿

现象:个别网站打开慢,延迟集中在第一次请求。原因:上游回了 AAAA,但家里没有 IPv6 出口,客户端 v6 连接超时后才回退 v4。修复:强制 AAAA 查询返回 SOA,相当于告诉客户端本地没有 IPv6:

force-AAAA-SOA yes # AAAA 查询返回 SOA,客户端直接走 IPv4

接下来去哪儿

  • etc/smartdns/smartdns.conf:带完整注释的配置模板,上面各参数都能在这里查到用法。
  • src/dns_client/:上游客户端与服务器组实现,想了解并行查询和测速如何调度从这里看。
  • test/cases/:覆盖缓存、规则、双栈等主要行为,改动配置后跑一遍心里有底。

项目仍在持续更新,功能与修复节奏以仓库的提交记录为准。

【免费下载链接】smartdnsA local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH, DoQ. 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验,支持DoH,DoT,DoQ。项目地址: https://gitcode.com/GitHub_Trending/smar/smartdns

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 10:41:55

phpStudy部署ThinkPHP3.2 CRM实战指南

1. 项目概述:为什么用 phpStudy 部署符号象CRM 是当前中小团队最务实的选择你手头有一套基于 ThinkPHP 框架开发的“符号象CRM”客户关系管理系统,可能是从开源社区下载的、公司内部定制的,也可能是采购的轻量版商业授权版本。现在你要把它跑…

作者头像 李华
网站建设 2026/9/15 10:33:41

开会汇报高效出图:快速生成逻辑清晰思维导图APP全指南

文章摘要:本教程围绕职场开会汇报场景,讲解借助 AI 快速产出逻辑严谨思维导图的底层原理,横向对比百度文库、Xmind AI、EdrawMind、知犀、GitMind、boardmix、ProcessOn、万兴脑图共 8 款主流 APP 的能力差异,提供各工具分步实操流…

作者头像 李华
网站建设 2026/9/15 10:33:24

AOP+自定义注解,实现redis缓存

添加如下依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifact…

作者头像 李华