身边不少朋友问我,家里有没有必要搭建私人DNS。大家的理由基本一致,听说可以拦截广告、保护隐私,还能限制孩子访问不良网站。听起来吸引力很强,但很多人实际搭建完成,用上一段时间之后,就不再打理了。私人DNS对普通家庭用户来说,确实有实用价值,但没有网上描述的那么万能。
先简单讲清楚私人DNS是什么。它不是去阿里云、腾讯云注册公共DNS服务,而是在家内一台设备运行DNS服务程序。设备可以是树莓派、闲置旧笔记本、NAS,或是刷了OpenWrt固件的路由器。常用软件是AdGuard Home和Pi-hole,它们的工作逻辑是接管家里所有设备的DNS查询,按照自定义规则处理请求。广告域名直接返回空IP,恶意域名直接拦截,也可以限制孩子设备解析指定域名。

功能看着确实不错,谁都希望家里手机、平板、电视全部设备自动屏蔽广告。但实际收益高低,要看家里的设备情况。
如果家里设备数量多,像智能电视、孩子平板、老人手机这类设备,没法安装浏览器广告拦截插件,私人DNS就是唯一能在网络层面统一给全部设备去广告的方案。部署好AdGuard Home之后,电视开机广告会大幅减少,孩子平板App里的各类广告也会被拦截,老人误点钓鱼链接的风险也会降低。这个收益真实存在,并且可以长期生效。
但如果家里只有两三台主力设备,电脑手机都已经装好浏览器插件和系统广告拦截工具,私人DNS带来的额外提升就比较有限。搭建完成后会发现,能拦截的广告本来就不多,视频贴片广告、App内置自有域名的广告,依旧无法拦截。
搭建流程本身不算复杂,闲置树莓派、旧笔记本,或是NAS上部署Docker容器,跟着教程操作,半小时到一小时就能部署完成。真正麻烦的是后期维护。AdGuard Home需要定期更新过滤规则,规则设置过于激进会误封正常网站,规则太宽松又达不到广告拦截效果。需要不定期查看日志,调整白名单。Pi-hole同样需要跟进规则更新,版本升级有可能打乱原有配置。喜欢折腾的人会觉得有意思,但只想稳定上网的用户,会觉得维护是额外负担。
还有一个容易被忽略的风险,一旦私人DNS服务宕机,全家域名解析直接失效。电脑打不开网页,电视无法联网,手机App一直转圈。如果人在外地出差,家里人反馈网络故障,很难远程处理,只能手动改回DNS自动获取,或者直接断开私人DNS设备电源。公共DNS有多节点冗余,运营商DNS自带兜底,私人DNS属于单点故障。
速度方面,私人DNS自带缓存,之前解析过的域名,再次访问可以直接从本地缓存返回,耗时仅几毫秒。但它性能高度依赖上游DNS,如果上游DNS本身响应慢,或者家庭网络到上游服务器链路不稳定,私人DNS的体验甚至不如运营商默认DNS。不少私人DNS方案默认启用加密查询,加密握手本身存在性能开销,在老树莓派这类低性能硬件上,容易形成性能瓶颈。
隐私保护也是常被宣传的卖点。部署私人DNS之后,域名查询记录不会全部交给运营商,但转发给上游DNS服务商的查询请求,依旧会被上游看到。想要完全脱离第三方,就需要搭建递归解析,直接从根服务器发起查询。但国内家庭宽带访问根服务器链路不稳定,查询超时很常见,上网体验很差。所以大部分私人DNS还是会把请求转发给阿里、腾讯或者Cloudflare,隐私保护仅覆盖“运营商到家庭内网”这一段链路。
到底要不要搭建,我是这么判断的。本身喜欢折腾,手里有现成NAS或者树莓派,对广告拦截需求明确,尤其是电视、移动端广告带来很大困扰,搭建私人DNS值得一试。确实可以优化全家上网体验,硬件成本也不高。如果只是听说这个工具好用,平时上网广告不多,也没有管控孩子上网、不满运营商DNS的需求,搭建之后大概率新鲜几天就搁置。私人DNS不是刚需,属于锦上添花的工具。普通家庭优先检查路由器默认DNS,确认没有异常重定向,挑选稳定公共DNS使用。基础配置还没搞定,直接上手搭建私人DNS,相当于跳过基础练习直接挑战高难度操作。