SmartDNS-rs:跨平台本地 DNS 服务器
用 Rust 编写的本地 DNS 服务器,从多个上游服务器中返回最快的网站 IP,支持 DoT、DoQ、DoH、DoH3。
- 浏览
- 9
- 访问
- 0
- 下载
- 0
- 版本
- v0.13.1
- 平台
- Windows、macOS、Linux
详细介绍
项目简介
SmartDNS-rs 是一个用 Rust 编写的跨平台本地 DNS 服务器,参考 C 版 SmartDNS 实现。它接受本地客户端的 DNS 查询请求,同时向多个上游 DNS 服务器发起查询,并把访问最快的 IP 结果返回给客户端,从而避免 DNS 污染、提升网络访问速度,并支持高性能广告过滤。
C 版 SmartDNS 功能强大但只支持 Linux,macOS 和 Windows 只能借助 Docker 或 WSL 运行。SmartDNS-rs 的目标是编译到 Windows、macOS、Linux 以及 Android Termux 环境运行,并兼容其配置。
主要功能
- 多上游 DNS 服务器:可同时配置多个上游服务器并发查询,单个服务器异常不影响查询。
- 返回最快 IP:从域名解析出的 IP 列表中找出访问最快的地址返回给客户端,避免 DNS 污染。
- 多种查询协议:支持 UDP、TCP、DoT、DoQ、DoH、DoH3 查询与服务,支持非 53 端口查询,也可通过 socks5、http 代理查询。
- 域名 IP 指定:为特定域名配置固定 IP,实现广告过滤、屏蔽恶意网站。
- 域名转发:支持 DNS 转发、ipset 与 nftables;测速失败时可将域名结果写入 ipset / nftset 集合。
- 多平台支持:Windows / macOS / Linux,可安装为系统服务并开机自启。
- IPv4 / IPv6 双栈:支持 A、AAAA 记录查询、双栈 IP 选择,并可过滤 IPv6 AAAA 记录。
- DNS64:支持 DNS64 转换。
- 高性能低占用:基于 Tokio 的多线程异步 I/O 模型,缓存查询结果,支持常用域名过期预取。
- 内置诊断:通过
dig的 CHAOS TXT 查询查看服务器与客户端信息。
安装与使用
macOS 下可用 Homebrew 安装:
brew update
brew install smartdns
监听 53 端口需要 root 权限,因此需要 sudo。执行 sudo smartdns service start 与 sudo brew services start smartdns 效果相同。
Windows / Linux 请到 releases 页面下载压缩包解压使用:
./smartdns --help
./smartdns run -c ./smartdns.conf -v
-v 会打印调试日志。以后台服务方式运行并开机自启,可使用服务管理命令 ./smartdns service --help(安装为系统服务需要管理员 / root 权限)。
最简单的配置示例:
bind 127.0.0.1:53
server https://1.1.1.1/dns-query -bootstrap-dns -exclude-default-group
server https://8.8.8.8/dns-query -bootstrap-dns -exclude-default-group
server https://cloudflare-dns.com/dns-query
server https://dns.google/dns-query
server 192.168.1.1 -exclude-default-group -group office
nameserver /ofc/office
address /test.example.com/1.2.3.5
address /ads.example.com/#
# 以下为 SmartDNS-rs 独有配置
server-h3 1.1.1.1
server-quic unfiltered.adguard-dns.com
内置诊断示例:
dig @127.0.0.1 CH TXT whoami +short
dig @127.0.0.1 CH TXT version +short
从源码构建需要先安装 Rust,然后执行 cargo install just 与 just build --release,运行 sudo ./target/release/smartdns run -c ./etc/smartdns/smartdns.conf。
注意事项
- 项目仍在开发中,README 明确提示不要用于生产环境,欢迎试用并反馈问题;功能覆盖情况可参考仓库的 TODO 列表。
- 监听 53 端口、安装系统服务均需要管理员 / root 权限。
- 更高级的配置写法请参考上游 SmartDNS 的配置文档。
- 项目以 GPL-3.0 许可证发布。
本作品整理自 GitHub 开源项目 mokeyish/smartdns-rs,原作者 @mokeyish,许可证 GPL-3.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v0.13.1当前版本
修复 address.conf 不存在时保存失败、开启测速且有 CNAME 时记录名不匹配、控制台日志级别无法设置、预取策略与缓存持久化及 DNS 缓存锁等问题;优化 ICMP 客户端复用与后台任务并发限制,提升 dnsmasq/hosts 文件缓存性能,并在 Windows 关机时保存 DNS 缓存。
评论