家里网络跑久了,总会遇到同一个问题:电视开机先弹广告、手机 App 偷偷上报位置、智能音箱半夜还在连可疑域名。这些东西不是病毒,但膈应人。最直接的办法不是给每台设备装拦截 App,而是在网络层把脏域名掐掉——也就是 DNS 拦截。提起这个,大多数人第一反应是 Pi-hole 或者 AdGuard Home,但最近我发现一个更轻的替代品:GoAway。
这是什么
GoAway 是一个用 Go 写的小型 DNS sinkhole(DNS 陷阱)。它在网络层面拦截广告、追踪器和恶意域名,挡在它们到达你的设备之前。项目在 GitHub 上开源(MIT 许可),目前约 730 颗星,最新稳定版是 v0.63.17,后端 Go、前端 TypeScript,单二进制同时跑 DNS 服务和 Web 仪表盘,没有外部依赖。
它的定位很明确:做 Pi-hole / AdGuard Home 的轻量替代。不追求功能全覆盖,而是把”能拦、能看、能管”三件事做顺。官方文档里也直说了,灵感来自 Pi-hole。

为什么考虑它
我用它替代家里那套重一点的方案,理由很简单:
资源占用低。一个 Go 二进制同时扛 DNS 解析和仪表盘 API,前端是编译好的静态资源。官方说适合跑在树莓派、低配 VPS 或者软路由上——我家那台 NAS 随手起个容器就跑了,内存几乎无感。
仪表盘开箱即用。这是它和很多同类工具最大的差别。有些老牌方案给你一堆 Prometheus 指标,意思是”自己搭图表去”;GoAway 直接给你一个现成的 Web 界面:实时查询统计、被拦截域名日志、Top 客户端排行,配上时间线,不用额外装监控栈就能看明白家里网络在干嘛。
部署简单。Docker 一条命令起来,配置文件是 settings.yaml,块名单/白名单都可以在网页上改,不用登服务器手搓文本。
怎么用
最直接的方式是 Docker:
docker run -d
--name goaway
-p 53:53/udp
-p 53:53/tcp
-p 8080:8080
pommee/goaway:latest
生产环境建议用 docker-compose 并挂卷持久化配置和数据,README 里给了模板。起来之后,把家里路由器的 DNS 服务器指向这台机器的 IP,全屋设备就都走它解析了。如果只是想试试,也可以单独在某个设备上手动改 DNS,不动路由器。
首次启动默认开启认证,会在日志里生成一个随机管理员密码,只显示一次,记得存好。默认账号是 admin,仪表盘地址是 http://机器IP:8080。

功能上该有的都有:DNS 级域名拦截、可自定义的黑名单(白名单优先)、实时统计、上游 DNS 兜底(默认可以配 1.1.1.1 之类)。如果配了 TLS 证书,还支持 DoT / DoH 加密上游,不过默认是关的。
有什么坑
用了几天,几个点得提醒一下:
版本还是 0.x。项目明确说 0.x 阶段可能每次升级都有破坏性变更,配置格式说变就变。别指望像 Pi-hole 那样一套配置用三年,升级前先看 changelog、备份 settings.yaml。
macOS / Windows 版本是 Beta。官方主力测试在 Linux(amd64),其他平台能跑但可能有坑。我家是扔在 Linux 容器里,没遇到,但你要在 Mac 上直接跑 binary 就得自己扛风险。
首次密码只显一次。前面提过,但值得再说一遍——忘了就只能去日志翻或者重置,别像我一样第一次没存转头就找不着了。
生态还小。社区比 Pi-hole 小一个数量级,预写好的规则、论坛帖子、疑难解答都少。复杂场景比如多 VLAN 按客户端分组路由,它目前不如一些老牌方案成熟。普通家庭”全屋拦广告”够用,企业级玩法另说。
端口 53 权限。DNS 要绑 53 端口,容器跑了 NET_BIND_SERVICE 和 NET_RAW 权限还好,裸机跑可能需要 cap 或者重定向。README 的 Troubleshooting 有写。
值不值得换
如果你现在用的是 Pi-hole 或 AdGuard Home 且跑得稳,没必要折腾。但如果你想要一个更轻、仪表盘更现代、部署更省事的入门级 DNS 拦截,GoAway 值得一试。特别是给父母家或者第二套房子的网络装一个,网页界面够直观,远控帮他们看一眼拦截情况也方便。
我自己是把它放在旁路由后面当 DNS 用,配合家里已有的网络结构,全屋广告拦截覆盖率肉眼可见地降下来了。等它哪天进 1.0,可能会考虑正式上位。
