用Tailscale自建私人DNS:甩掉广告,数据自己管
自建DNS:全网屏蔽广告,从网络层面搞定
你已经在用Headscale跑自建Tailscale网络了?设备间加密连通已经搞定。但很多人忽略了关键一招:在DNS层直接封杀广告和追踪。不管手机、笔记本还是平板,全网自动生效,一劳永久。
老办法是把DNS指给Cloudflare或Quad9这种公共服务。用着是行,但你错过了大把好处。
为什么自建DNS这么香
Headscale统一管tailnet的DNS解析,神奇的事就发生了:每个设备自动拿到过滤后的DNS结果。不用装App,不用设备单独配blocklist,更不用管一堆方案。
实际用起来超爽:
- 广告全网蒸发。那些跨站追踪你的广告网络?压根儿进不了你的设备。
- 内网主机名秒解析。家里的homeserver.tailnet.local,到处都直接认。
- 安全规则统一。你说了算,什么解析什么不解析,没例外。
Blocky,为什么自建党首选它
Pi-hole和AdGuard Home你肯定听过,牛逼是牛逼。但带web面板、数据库、配置一大堆,头大。
Blocky不一样。它就是个纯DNS代理,专为爱折腾的人设计。只干一件事:挡坏DNS请求。配置就一个YAML文件,到处跑,轻巧。
没花里胡哨UI?对自建党来说,这是优点!我们本就爱命令行。
Blocky牛在哪儿:
- 配置傻瓜式。不用搭数据库,不用养web面板,不用更新仪表盘。
- 原生支持blocklist。社区列表直接喂,也能自己搞自定义。
- 超轻量。Raspberry Pi、小VPS、Headscale主机,随便跑。
- 上游加密稳。支持DNS-over-TLS,直连你爱的公共resolver。
Android Private DNS的坑
常见场景:Android用内置Private DNS指AdGuard的DoT,挺好使。加了Tailscale,DNS突然崩。
怎么回事:Tailscale通过Headscale推自定义DNS到手机。Android听话,用Tailscale内网resolver(100.100.100.100)。但这玩意儿不加密,Android的Private DNS探测失败,全挂。
解决:让Tailscale全权管DNS。关掉Android的Private DNS,在tailnet里跑Blocky,让Headscale指它。Blocky管上游加密,你手机解放了。
部署前,先想清目标
上Blocky前,明确你要啥:
目标1:全网无广告。tailnet里每个设备自动过滤DNS,用户零负担。
目标2:上游加密。Blocky到公共resolver用DoT。设备到Blocky已有WireGuard护着,最后一跳也别偷懒。
目标3:内网域名顺滑。私有服务像homeserver.ts.internal,全网认。
目标4:设备零配置。Headscale一推,客户端自动接管。
整体架构
流程超简单:
- 设备连Tailscale(经Headscale)。
- Headscale推DNS设置,指tailnet里的Blocky IP。
- 设备查DNS,直奔Blocky。
- Blocky对blocklist一查,坏的回NXDOMAIN,好转发上游。
- 上游用DoT问Cloudflare或Quad9。
- 结果缓存后回设备,全程WireGuard加密。你控基础设施,你定过滤。
现在为什么非这么干
2024年,隐私防广告是标配。但多数方案是设备一个个加,麻烦。网络级方案才牛。它能无限扩。新手机加tailnet?广告秒挡。去朋友家?保护还在。
对开发者、运维党,还能缩攻击面。你管DNS,你审blocklist,你挑resolver(要不要都行)。自建哲学,直接用到DNS。
下一步行动
Headscale已跑?加Blocky水到渠成。想换Unbound、Bind或Coredns都行,但Blocky简单,适合大多数人。
最好的是,不锁死。需求变?换个resolver。Headscale和Tailscale无感,支持灵活。
DNS太重要,别瞎外包。自己控,挡噪音,数据留网内。自建梦想,就这么近。动手吧!