N
DISCOVER SOMETHING GOOD

Numa

Numa 是一款以单一二进制文件形式发布的便携式 DNS 解析器。它将本地开发域名映射、临时 DNS 覆盖、广告过滤以及加密查询等功能集中于一体。

GitHub 仓库 访问官网

Numa 是一款以单一二进制文件形式发布的便携式 DNS 解析器。它将本地开发域名映射、临时 DNS 覆盖、广告过滤以及加密查询等功能集中于一体。

该工具完全在本地设备上运行,无需依赖云账户或额外的硬件(如 Raspberry Pi)。其核心代码使用 Rust 从头构建,未依赖现成的 DNS 库,底层的 DNS 线协议解析器均为手写实现,后续代码则由 AI 辅助起草并经人工严格审查,以确保运行效率与安全性。

Numa:便携式 DNS 解析器,集成广告过滤与 ODoH 加密查询功能插图

核心架构与隐私保护机制

Numa 默认集成 Hagezi Pro 规则列表,用于屏蔽广告与跟踪器,并支持每日自动刷新。为满足不同网络环境的需求,它提供了四种可配置的解析模式:

  • Forward(转发模式,默认):将请求转发至现有的系统 DNS,在此基础上叠加本地缓存与广告屏蔽功能。此模式可确保强制门户、VPN 及企业 DNS 策略继续正常工作。
  • Recursive(递归模式):直接从根服务器发起解析。此模式下没有单一的上游解析器能够掌握用户的全部查询记录。若需验证解析结果的真实性,可手动开启 DNSSEC 验证。
  • Auto(自动模式):启动时自动探测根服务器。若根服务器响应,则使用递归解析;若无响应,则回退至通过 DoH 转发至 Quad9,若 Quad9 失败则重试 Cloudflare。
  • ODoH(隐匿 DNS-over-HTTPS,RFC 9230):利用 HPKE 技术对每个查询进行加密,并通过中继节点转发。中继节点仅能看到用户的 IP 和密文,而目标服务器仅能看到查询内容与中继的 IP。这种设计切断了查询者与查询内容之间的关联,且 Numa 会拒绝共享可注册域的中继和目标,以防止元数据泄露。

灵活部署:从容器测试到系统级接管

Numa 提供了多种部署路径,用户可根据实际需求选择最合适的运行方式。

1. Docker 隔离运行(推荐用于测试)
无需在主机安装任何文件,即可体验完整功能。通过映射 5553 端口可避免与主机现有的 53 端口冲突。

docker run -d --name numa -p 127.0.0.1:5553:53/udp -p 127.0.0.1:5553:53/tcp -p 127.0.0.1:5380:5380 ghcr.io/razvandimescu/numa

运行后可通过 dig @127.0.0.1 -p 5553 example.com 进行测试,并使用 docker exec numa numa token 获取 API Token 以登录本地仪表板(http://localhost:5380)。

2. 前台运行(不改变系统 DNS)
通过包管理器(如 macOS 的 Homebrew、Arch 的 pacman 或 Cargo)安装二进制文件后,可直接在前台运行。

sudo numa

此模式下,系统原有的 DNS 设置保持不变,但局域网内的其他设备仍可向 Numa 发起查询。用户可通过配置文件中的 [server] allow_from 限制允许查询的网络范围。

3. 系统级 DNS 接管
通过 numa install 命令,Numa 会注册系统服务、将系统 DNS 指向自身,并将本地 CA 证书添加至系统信任存储。

  • macOS / Linux:需使用 sudo numa install。在 Linux 环境下,该命令会通过 drop-in 文件重新配置 systemd-resolved。
  • Windows:需以管理员身份运行 numa install 并重启设备。
    安装完成后,访问 http://numa.numa 若可正常加载仪表板,即表示接管成功。升级时只需更新二进制文件并重新运行 install 命令,原有的 Token 和 CA 证书将被保留。

移动端支持与加密通信

Numa 支持作为 DNS-over-TLS (DoT, RFC 7858) 服务器运行,监听 853 端口,为 iOS Private DNS、systemd-resolved 或 stubby 等客户端提供加密查询服务。

  • 证书管理:默认采用自签名模式,numa install 会自动将本地 CA 添加至主流操作系统的信任存储中。用户也可选择自带公开信任的证书(如通过 Let’s Encrypt 获取),以便客户端无需额外配置即可连接。
  • 移动端快捷配置:在配置文件中启用 [mobile] enabled = true 并重启服务后,在同一局域网内的手机上运行 numa setup-phone。该命令会生成一个 QR 码,手机扫码后即可自动完成 TLS DNS 的配置流程。

与主流 DNS 方案的横向对比

与 Pi-hole、AdGuard Home 和 Unbound 等传统方案相比,Numa 在特定工程场景下具有差异化优势,但也明确了自身的能力边界。

Numa 的独有特性:

  • 支持本地服务代理与自动 TLS(提供 .numa 域名、HTTPS 及 WebSocket 支持)。
  • 内置 mDNS 支持,可实现局域网服务发现(通过 numa lan on 开启)。
  • 提供带自动回滚机制的 REST API,便于脚本化临时覆盖主机名。
  • 支持请求对冲(Request Hedging),可并行向上游发起 UDP、DoH、DoT 查询以降低延迟。
  • 支持 Serve-stale 与预取机制(RFC 8767),在上游不可用时提供缓存的过期记录。

Numa 明确不提供的功能:

  • 不提供 DHCP 服务器功能。
  • 不支持多实例集群或实例间的配置自动同步。
  • 大多数高级设置需通过配置文件(numa.toml)完成,而非完全依赖 Web 管理 UI。

数据清理与系统痕迹移除

执行 numa uninstall 会恢复系统原有的 DNS 设置,但会保留数据目录,以便重新安装时复用相同的 Token 和 CA 证书。

若需彻底移除所有痕迹,需在卸载后手动删除以下路径:

  • macOS:二进制文件、/usr/local/var/numa 目录及 /usr/local/var/log/numa.log。
  • Linux:二进制文件(含 /usr/local/bin/numa 副本)及 /var/lib/numa 目录。
  • Windows:二进制文件及 %PROGRAMDATA%\numa 目录。
  • iPhone:进入“设置 → 通用 → VPN 与设备管理”,移除“Numa DNS”配置文件。

此外,若曾创建用户级配置文件或自定义了 [server] data_dir,也需手动清理对应的 ~/.config/numa 或指定路径。

下载地址
夸克
密码:无
GOOD TOOLS ARE BETTER TOGETHER

分享到社交平台

微微博QQQ 好友☆QQ 空间XX↗Telegram

复制链接后,也可以粘贴到微信或其他社交平台。