
SmartDNS 完整指南5 分钟搭建本地 DNS解析自动选最快 IP【免费下载链接】smartdnsA local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH, DoQ. 一个本地DNS服务器获取最快的网站IP获得最佳上网体验支持DoHDoTDoQ。项目地址: https://gitcode.com/GitHub_Trending/smar/smartdnsSmartDNS 是一个免费的本地 DNS 服务器它接收你设备的域名查询从多个上游服务器拿结果后把访问最快的 IP 返回给你同时支持 DoT、DoH 等加密解析。下面带你 5 分钟跑通配置再覆盖常见调优与故障排查。SmartDNS 是什么3 句话讲清它的卖点SmartDNS 部署在局域网内路由器、树莓派或家用主机都行所有设备的 DNS 请求先打到它由它统一处理。核心能力有三点本地调度查询在本地完成同一域名只查一次结果进缓存全设备共享多上游并行选优同时向多个上游 DNS 服务器发查询并对返回的 IP 列表做测速ping/tcp挑延迟最低的 IP 返回而不是像 dnsmasq 的 all-servers 那样随机给一个安全协议支持对上游支持 DoT、DoH、DoQ 加密查询本地服务端口也可开 TLS避免 DNS 流量被窥探。工作流程客户端 → SmartDNS → 多个上游 DNS → 本地测速 → 返回最快 IP更完整的特性说明可以看 ReadMe.md。快速上手最小配置 5 分钟跑起来SmartDNS 默认读取/etc/smartdns/smartdns.conf仓库里附了一份全注释模板可以直接拷来改etc/smartdns/smartdns.conf。最小可用配置只需要 4 类指令——监听端口、上游服务器、加密上游、日志级别# /etc/smartdns/smartdns.conf bind [::]:53 bind-tcp [::]:53 server 223.5.5.5 server 119.29.29.29 server-tls 223.5.5.5 log-level info然后启动服务。如果从源码构建直接执行smartdns -c /etc/smartdns/smartdns.conf -D前台运行调试发行版安装包一般自带 systemd 单元参考 systemd/smartdns.service.in用systemctl enable --now smartdns即可。验证是否工作把客户端 DNS 指向 SmartDNS 所在主机后执行nslookup www.example.com 127.0.0.1能返回 IP 地址就说明整条链路通了。想直观查看状态可以启用 Web 仪表盘插件配置模板末尾有smartdns-ui.ip相关注释效果如下分场景调优家庭、办公、游戏各一条不用一上来就抄满配置按你的场景挑一两条加进去即可。家庭网络开启prefetch-domain yes让 SmartDNS 在缓存快过期时提前刷新热门域名减少高峰期等待再配serve-expired yes上游短暂抽风时仍能用过期结果兜底。办公网络用server-group定义一个office服务器组再用nameserver /company.internal/office把内网域名指定到内部 DNS其余流量走公共上游内外网分流一步到位。游戏对游戏域名单独指定测速模式如domain-rules /steam.com/ -speed-check-mode ping让 ping 延迟直接决定返回哪个 IP网络不稳的线路可加force-AAAA-SOA yes屏蔽无效 IPv6 解析。性能与安全缓存、TTL 和加密一次配好缓存与 TTL 决定重复查询的速度。常用项配置项作用建议cache-size缓存条目数默认 -1 自动内存紧张的小设备可显式调小rr-ttl/rr-ttl-min/rr-ttl-max统一/下限/上限 TTL如rr-ttl 300rr-ttl-max 86400压缩过长 TTL 换更新鲜的结果prefetch-domain yes提前刷新临期缓存家用建议开serve-expired yes上游不可用时返回过期记录搭配serve-expired-ttl控制兜底时长加密决定流量隐私。上游侧用server-tlsDoT默认 853 端口和server-httpsDoH替代明文server对同一运营商多留一条明文通道做冗余本机服务侧若也想提供加密端口配置bind-tls [::]:853即可证书默认自动生成bind-cert-generate auto也可以指向自己的bind-cert-file/bind-cert-key-file。出问题先查这 4 件事排查顺序建议从外到内端口被占用ss -lnup | grep :53看 53 端口是否已被 dnsmasq、systemd-resolved 抢占有冲突就先停掉旧服务或改bind端口上游不可达绕过 SmartDNS 直接nslookup example.com 223.5.5.5若本身就解析失败说明是网络或上游问题此时把log-level调到debug看 SmartDNS 日志里是哪个上游超时TTL 不合理如果网站换 IP 后本地很久不生效检查rr-ttl-max是否把 TTL 拉得过长反过来解析频繁、缓存命中率低则可能是 TTL 压得太短证书问题bind-tls或server-tls报握手错误时先确认自签证书是否过期bind-cert-generate生成的证书有有效期上游端检查ca-file/ca-path指向的系统证书库是否完整。写在最后SmartDNS 的绝大多数场景bind 两三个server就够用了其余参数按需叠加改完执行kill -HUP $(cat /run/smartdns.pid)重载配置即可不必重启。项目更新比较频繁隔段时间看一眼 ReadMe.md 的 changelog挑有用的功能补进你的配置就行。【免费下载链接】smartdnsA local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH, DoQ. 一个本地DNS服务器获取最快的网站IP获得最佳上网体验支持DoHDoTDoQ。项目地址: https://gitcode.com/GitHub_Trending/smar/smartdns创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考