Python技术迷

Numa:8MB 单文件 DNS 工具,把广告拦在笔记本里

我第一眼看 Numa,不是被什么大词打动的。

是它那个设定:一个 8MB 左右的二进制文件,装在笔记本上,换咖啡店、酒店、机场 WiFi,广告拦截还跟着你走。它不是再让你买个盒子、架台树莓派,或者注册一个云账号。

这点挺戳开发者。

很多人不是不想管 DNS,而是懒得管。公共 WiFi 一连上,网页先被塞广告,解析请求绕到哪儿也说不清。Numa 做的事很直白:本机起一个 DNS resolver,默认在原系统 DNS 前面加一层缓存和广告拦截。

Image

它内置了 38.5 万多个广告域名规则,来源是 Hagezi Pro。换网络不用重新折腾,笔记本在哪,它就在哪。

Numa 是用 Rust 从零写的 DNS 解析器,没有直接堆 DNS 库。缓存、广告拦截、本地域名这些东西开箱就有。想折腾深一点,还能走递归解析、DNSSEC,甚至 ODoH,把查询隐私再往前推一步。

不过我觉得它真正讨巧的地方,不只是挡广告。

是 .numa 本地域名。

比如你本地跑了个前端服务,以前要记 localhost:5173,再配代理、证书、hosts。Numa 这边可以直接把它叫成 frontend.numa,浏览器里 HTTPS 打开,绿锁,WebSocket 热更新也能过。

这对天天切项目的人很省心。

Image

不是每次都要开一堆窗口找端口,也不用为了本地 HTTPS 又去翻 mkcert、nginx 配置。你只是在开发服务外面套了一层名字,访问方式立刻顺了。

安装也没有搞复杂。

macOS 可以 brew,Linux 有安装脚本,Windows 从 Release 下包;装完以后把它设成系统 DNS 就行。手机端也做了入口,numa setup-phone 会打出二维码,扫一下就能把手机 DNS 走到 Numa 上。

当然,它不是 Pi-hole 那种成熟很多年的家庭网关方案。

Numa 更像一个随身工具:轻、单文件、偏开发者,适合笔记本到处跑的人。你不一定每天都想管 DNS,但你会在某个公共 WiFi 弹广告的时候,突然觉得这种东西很有必要。

GitHub 地址:razvandimescu/numa