纯 Rust DNS 隧道

互联网审查的
解药

将你的网络流量隐藏在普通的 DNS 查询中,穿越任何封锁网络,不留痕迹。单一可执行文件,零依赖。

工作原理

你的流量经过加密、多路复用,并编码为普通的 DNS 查询,能够穿越任何网络。

应用层 浏览器 / curl / 任意应用
SOCKS5 (127.0.0.1:1080)
客户端 Nooshdaroo 客户端
多路复用 smux v2 (流多路复用)
加密 Noise_NK (认证加密)
可靠传输 KCP (可靠传输协议)
载体 DNS 查询 (QNAME 中 base32 编码)
递归 DNS 解析器
服务端 Nooshdaroo 服务端 (权威 DNS 服务器)
TCP 连接
目标 开放的互联网

为对抗封锁而生

每一项功能都围绕同一个目标:当其他一切都被封锁时,确保你依然在线。

Noise 协议加密

Noise_NK_25519_ChaChaPoly_BLAKE2s。每次会话均具备前向保密性。通过预共享公钥验证服务器身份,无需证书,无需 PKI。

Chrome DNS 指纹伪装

伪装流量模拟 Chrome 浏览器的 DNS 行为:AD=1 标志位、EDNS0 1452、A+AAAA+HTTPS 三连查询,以及与真实浏览器一致的突发时序模式。

DNS 域名轮换

基于时间的确定性域名选择,将流量分散到多个隧道域名。持续轮换的目标使静态封锁难以奏效。

OTA 配置热更新

通过加密的 DNS TXT 记录推送新域名、解析器和设置。客户端无需更新应用即可自动适应基础设施变化。

协议兼容

可直接替换 Go 版 dnstt。Nooshdaroo 客户端可连接 Go 服务端,反之亦然。相同的 Noise 握手、相同的 KCP 帧格式、相同的 DNS 编码。

极小体积

客户端约 1 MB,服务端约 2 MB。纯 Rust 实现,零运行时依赖。跨平台支持:Linux、macOS、Windows,以及通过 Termux 运行的 Android。

下载

为所有主流平台预编译的二进制文件。无需安装器,无需运行时,只有一个可执行文件。

快速上手

三条命令即可连接。或者自建服务器。

1
下载二进制文件和配置
# Linux x86_64:
curl -LO https://nooshdaroo.net/dist/nooshdaroo-linux-x86_64
curl -LO https://nooshdaroo.net/dist/config.json
chmod +x nooshdaroo-linux-x86_64
2
连接
./nooshdaroo-linux-x86_64 -c config.json
3
使用 SOCKS5 代理
# 隧道已在 127.0.0.1:1080 运行
curl --proxy socks5h://127.0.0.1:1080 https://icanhazip.com

# 或配置浏览器:
# Firefox: Settings → Network → SOCKS Host: 127.0.0.1, Port: 1080
# Chrome:  chrome --proxy-server="socks5://127.0.0.1:1080"

自建服务器

# 生成密钥对:
./nooshdaroo-server --gen-key

# 配置 DNS(在域名注册商处):
# t.example.com.  NS  ns.example.com.
# ns.example.com. A   <服务器IP>

# 启动服务端:
./nooshdaroo-server --udp 0.0.0.0:53 --privkey <hex> t.example.com socks5

# 连接客户端:
./nooshdaroo --domain t.example.com --pubkey <pubkey> --resolver 8.8.8.8