Docs •
English | 中文
SmartDNS-rs 🐋 一个是受 C 语言版 SmartDNS 启发而开发的,并与其配置兼容的运行在本地的跨平台 DNS 服务器, 它接受来自本地客户端的 DNS 查询请求,然后从多个上游 DNS 服务器获取 DNS 查询结果,并将访问速度最快的结果返回给客户端, 以此提高网络访问速度。 SmartDNS 同时支持指定特定域名 IP 地址,并高性匹配,可达到过滤广告的效果。
-
多 DNS 上游服务器
支持配置多个上游 DNS 服务器,并同时进行查询,即使其中有 DNS 服务器异常,也不会影响查询。
-
返回最快 IP 地址
支持从域名所属 IP 地址列表中查找到访问速度最快的 IP 地址,并返回给客户端,提高网络访问速度。
-
支持多种查询协议
支持 UDP、TCP、DoT、DoQ、DoH 和 DoH3 查询及服务,以及非 53 端口查询;支持通过socks5,HTTP代理查询。
-
特定域名 IP 地址指定
支持指定域名的 IP 地址,达到广告过滤效果、避免恶意网站的效果。
-
域名分流
支持域名分流,不同类型的域名向不同的 DNS 服务器查询
-
Windows / MacOS / Linux 多平台支持
支持安装成服务开启自启动。
-
支持 IPv4、IPv6 双栈
支持 IPv4 和 IPV 6网络,支持查询 A 和 AAAA 记录,支持双栈 IP 速度优化,并支持完全禁用 IPv6 AAAA 解析。
-
支持DNS64
支持DNS64转换。
-
高性能、占用资源少
Tokio 加持的多线程异步 IO 模式;缓存查询结果;支持常用域名过期预读取,查询 “0” 毫秒,免除 DoH、DoT 加密带来的速度影响。
说明:C 语言版的 smartdns 功能非常的不错,但由于其仅支持 Linux,而对 MacOS、Windows 只能通过 Docker 或 WSL 支持。因此,才想开发一个 rust 版的 SmartDNS,支持编译到 Windows、MacOS、Linux 以及 Android 的 Termux 环境运行,并与其配置兼容。
目前仍在开发中,请勿用于生产环境,欢迎试用并提供反馈。
请参考 TODO 查看功能覆盖情况。
每日构建的版本可以在这找到。
-
MacOS
如果你有安装 brew ,可以直接用下面的命令进行安装。
brew update brew install smartdns
注意:监听 53 端口需要
root
权限,因此需要sudo
。brew
安装的smartdns
的命令sudo smartdns service start
与sudo brew services start smartdns
一样。如果没有安装
brew
,就与下面一样,下载编译好的程序压缩包进行安装。 -
Windows / Linux
到此处下载程序包,并解压。
-
查看帮助
./smartdns help
-
前台运行,方便查看运行状况
./smartdns run -c ./smartdns.conf -v
-v
是开启打印调试日志
-
后台服务运行,开机自动运行
查看服务管理命令:
./smartdns service help
注意:安装成系统服务,需要 administrator / root 权限。
服务管理是各系统兼容的,window 下调用 sc;MacOS 下调用
launchctl
或者brew
;Linux 下调用Systemd
或OpenRc
。
-
下面是一份最简单的示例配置
# 在本地 53 端口监听
bind 127.0.0.1:53
# 配置 bootstrap-dns,如不配置则调用系统的,建议配置,这样就加密了。
server https://223.5.5.5/dns-query -bootstrap-dns -exclude-default-group
# 配置默认上游服务器
server https://dns.alidns.com/dns-query
server https://doh.pub/dns-query
# 配置公司(家里)上游服务器
server 192.168.1.1 -exclude-default-group -group office
# 以 ofc 结尾的域名转发至 office 分组进行解析
nameserver /ofc/office
# 设置域名的静态 IP
address /test.example.com/1.2.3.5
# 屏蔽域名(广告屏蔽)
address /ads.example.com/#
# 以下特性在[C 语言版 SmartDNS](https://github.com/pymumu/smartdns) 尚未支持,仅适用于SmartDNS-rs
# 使用 DoH3
server-h3 223.5.5.5
# 使用 DoQ
server-quic 223.5.5.5
更多高级的配置请参考 这里
假设你已经安装了 Rust,那么你可以打开命令行界面,执行如下命令:
git clone https://github.com/mokeyish/smartdns-rs.git
cd smartdns-rs
# 安装 https://github.com/casey/just
cargo install just
# 编译
just build --release
# 查看命令帮助
./target/release/smartdns help
# 运行
sudo ./target/release/smartdns run -c ./etc/smartdns/smartdns.conf
对于交叉编译,推荐使用cross(依赖Docker)
这个软件的诞生,少不了它们:
本软件包含来自 https://github.com/hickory-dns/hickory-dns 的代码, 其许可是下列二选一
- Apache License, Version 2.0, (LICENSE-APACHE or )
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
其余代码则是
- GPL-3.0 license (LICENSE-GPL-3.0 or https://opensource.org/licenses/GPL-3.0)
除非您另有明确说明,否则您有意提交以包含在作品中的任何贡献,如 GPL-3.0 许可中所定义,应按上述方式获得许可,没有任何附加条款或条件。