跳到主要内容
项目档案应用项目

Numa 便携 DNS 解析器:支持广告拦截、本地域名、ODoH 匿名解析,覆盖多平台安装部署

Numa 是基于 Rust 开发的单二进制便携 DNS 解析器,支持广告拦截、.numa 本地域名、ODoH 匿名解析与 DNSSEC 验证,可安装为系统级 DNS 服务,适用于跨网络统一 DNS、本地开发服务命名、隐私保护解析等场景,本文档涵盖其安装、使用与核心特性说明。

1,437RustStar 于 2026年4月23日2026年9月9日 更新

AI 总结

Numa 是用 Rust 编写的单二进制便携 DNS 解析器,支持本地域名、广告拦截、ODoH 匿名解析与 DNSSEC 验证,无需云服务或自建硬件即可实现跨网络统一可控的 DNS 服务。

中文项目介绍

Numa 是一款基于 Rust 开发的单二进制便携 DNS 解析器,核心定位是让用户在任何网络环境下都能拥有完全可控的 DNS 解析能力,无需依赖云服务或自建 Raspberry Pi 等硬件设备。 它解决了跨网络环境下 DNS 服务不统一、广告/追踪无法统一拦截、本地开发服务访问不便、DNS 查询隐私易泄露等痛点:内置 Hagezi Pro 广告拦截规则,支持为本地开发服务配置易记的 .numa 域名,通过 ODoH(RFC 9230)协议密封查询避免隐私泄露,同时支持全链 DNSSEC 验证确保解析结果真实性。 适用场景包括跨咖啡店、机场、公司网络统一使用带广告拦截的 DNS 服务,开发者无需修改 /etc/hosts 即可通过域名访问本地开发服务,隐私敏感场景下使用匿名解析避免查询泄露,以及自建 ODoH 中继节点扩展匿名 DNS 生态。 技术层面,Numa 完全从零用 Rust 实现,无外部 DNS 库依赖,基于 Tokio 异步运行时构建,支持 forward/recursive/auto 三种解析模式,内置 DNS 缓存,同时提供 DNS-over-TLS 监听能力,可安装为 macOS、Linux、Windows 的系统级 DNS 服务,也可通过 Docker、Nix 等方式部署。

详细信息与使用说明

1. 项目定位与用途

Numa 是基于 Rust 开发的单二进制便携 DNS 解析器,核心定位是让用户在任何网络环境下都能拥有完全自主可控的 DNS 解析能力,无需依赖云服务或自建 Raspberry Pi 等硬件设备,单二进制即可部署,配置可随身携带。它既可作为个人设备的系统级 DNS 服务使用,也可作为 ODoH 中继节点运行,扩展匿名 DNS 生态。

2. 解决的问题

Numa 解决了跨网络环境下 DNS 服务的多重痛点:一是不同网络下 DNS 服务不统一,广告、追踪无法全局拦截;二是本地开发服务访问需要修改 hosts 文件或记忆端口号,操作繁琐;三是传统 DNS 查询明文传输,隐私易泄露,且依赖单一上游 DNS 存在单点故障风险;四是自建 DNS 服务通常需要额外硬件或云服务,成本高、配置复杂。

3. 适用场景

Numa 适用于多类场景:跨公共网络(咖啡店、机场、酒店)时统一使用带广告拦截的 DNS 服务,避免网络切换导致配置失效;开发者为本地开发服务配置 .numa 域名,无需修改 hosts 即可通过 HTTPS 访问,支持 HMR 热更新;隐私敏感场景下使用 ODoH 匿名解析,避免 DNS 查询被第三方窥探;需要 DNSSEC 全链验证的场景,确保 DNS 解析结果未被篡改;自建 ODoH 中继节点,扩展匿名 DNS 生态覆盖范围。

4. 安装方式

Numa 支持多平台安装:macOS 可通过 brew install razvandimescu/tap/numa 或官方安装脚本安装;Linux 可使用官方 curl 安装脚本、Arch 系 pacman -S numa 或 cargo install numa 源码编译安装;Windows 可从 GitHub Releases 下载二进制或源码编译安装,需管理员权限;全平台支持 Docker 部署(docker run -d --network host ghcr.io/razvandimescu/numa)、Nix 直接运行(nix run github:razvandimescu/numa);安装后可执行 sudo numa install(Windows 为管理员执行 numa install)注册为系统服务。

5. 使用方式

前台运行直接执行 sudo numa(53 端口需要 root/管理员权限);访问 http://localhost:5380 或 http://numa.numa 打开本地管理仪表盘;通过向 localhost:5380/services 发送 POST 请求添加本地开发服务,传入 name 和 target_port 字段即可;执行 numa relay 命令可运行 ODoH 中继服务;系统服务卸载执行 sudo numa uninstall(Windows 需管理员权限并重启设备)。

6. 实现特点

Numa 完全从零用 Rust 实现,无任何外部 DNS 库依赖,基于 Tokio 异步运行时构建;支持 forward(透明代理系统 DNS,兼容 captive portal、VPN 场景)、recursive(从根服务器递归解析,无上游依赖)、auto(启动探测根服务器可达性,自动选择递归或 DoH 回退)三种解析模式;内置 DNSSEC 全链信任验证、Hagezi Pro 广告拦截(每日自动更新)、.numa 本地域名自动 HTTPS 签发、ODoH(RFC 9230)与 DNS-over-TLS(RFC 7858)支持,可适配多平台系统服务集成。

思维导图

Numa
核心能力
DNS 解析(三模式:forward/recursive/auto)
广告拦截(Hagezi Pro 规则,每日更新)
.numa 本地域名(自动 HTTPS、路径路由)
隐私保护(ODoH 匿名解析、DNSSEC 全链验证)
部署方式
包管理器安装(brew/pacman/cargo)
容器化部署(Docker/Nix)
源码编译安装
运行模式
ODoH 客户端模式
ODoH 中继模式(numa relay)
系统集成
macOS(launchd 服务)
Linux(systemd 服务)
Windows(系统服务、NRPT 规则)
开发与测试
微基准测试(criterion)
端到端基准测试
模糊测试(fuzz/ 目录)

常见问题

Numa 是否需要依赖云服务或自建硬件?

不需要,Numa 是单二进制便携应用,直接在本地设备运行即可,无需云账号或 Raspberry Pi 等自建硬件,配置可随身携带。

Numa 的广告拦截规则如何更新?

Numa 内置 Hagezi Pro 广告拦截规则,每日自动刷新,无需用户手动配置即可在任意网络环境下生效。

如何为本地开发服务配置 .numa 域名?

向本地管理接口 localhost:5380/services 发送 POST 请求,传入服务名称与目标端口即可,Numa 会自动签发有效 HTTPS 证书,无需额外配置 /etc/hosts 或反向代理。

Numa 支持哪些 DNS 解析模式?

支持 forward(透明代理系统 DNS,兼容 captive portal、VPN、企业 DNS 等场景)、recursive(从根服务器递归解析,无上游依赖)、auto(启动时探测根服务器可达性,自动选择递归或 DoH 回退)三种模式。

Windows 平台安装 Numa 有哪些注意事项?

Windows 平台需管理员权限执行 numa install,安装后需重启设备生效;Numa 绑定 127.0.0.2:53 端口(系统 Dnscache 占用 127.0.0.1:53),配置 bind_addr 或 api_bind_addr 时需对应使用 127.0.0.2。