从零搭建全设备通用私人DNS,隐私保护、提速防污染完整教程(含视频教学)
还在遇到网页加载跳运营商广告、输入正确网址却被跳转到劫持页面、境外学术站点/隐私服务死活打不开、公共DNS偷偷记录你的上网轨迹的糟心事吗?比起换浏览器、开全局代理这种治标不治本的方案,搭建一个完全属于自己的私人DNS,才是从网络底层解决问题的最优解。
不同于百度DNS、阿里公共DNS、Google DNS这类面向公众的共享解析服务,私人DNS完全由你掌控:没有日志留存、没有广告植入、不会被运营商劫持、可以自定义解析规则,不管是家里的手机电脑、还是外地的办公设备,连上就能用,兼顾隐私安全和访问速度,这篇教程从原理到实操,哪怕是零基础的网络新手,跟着步骤走1小时就能搭完可用的私人DNS。
先搞懂:私人DNS到底能解决什么问题?
在动手搭建前,先明确你能获得的实际价值,避免为了“折腾”而折腾:
- 彻底杜绝域名劫持:运营商、公共WiFi再也无法通过篡改DNS解析把你跳转到广告页、钓鱼页,输入的网址会直达真实服务器;
- 隐私数据不泄露:传统UDP明文DNS会把你所有访问的域名明文暴露给运营商和DNS服务商,相当于你的上网轨迹被全程“直播”,私人DNS配合加密协议,只有你自己知道访问了什么站点;
- 访问速度大幅提升:你可以自主选择上游解析节点(比如国内域名用国内公共DNS、境外域名用Cloudflare/Google DNS),还能通过缓存让常用网站二次访问速度提升30%以上;
- 自定义规则自由度拉满:可以自己设置域名拦截规则屏蔽全家桶广告、恶意网站、追剧前的贴片广告域名,也可以给家里的NAS、内网设备设置专属域名,不用再记复杂的IP地址;
- 全设备通用无门槛:搭好之后不管是Windows/Mac电脑、iOS/安卓手机、平板、智能电视,只要能设置DNS地址就能用,不用给每个设备单独装广告拦截、防劫持软件。
搭建前准备:3样东西就够,最低成本0元
私人DNS的搭建没有你想的那么复杂,不需要昂贵的硬件,提前准备好3样即可:
- 一台可联网的服务器/闲置设备(两种方案选其一即可):
- 公网方案(推荐,支持外出远程使用):选一台低配置云服务器就行,1核1G内存完全够用,带宽1M以上即可,国内节点选阿里云/腾讯云轻量应用服务器(一年几十块),境外节点选Vultr/DigitalOcean(最低配5美元/月,适合需要解析境外域名的用户),系统选Ubuntu 22.04 LTS(兼容性最好、教程资料最多);
- 内网方案(仅家里使用,0成本):用家里闲置的树莓派、玩客云、旧笔记本、软路由,甚至一直开机的群晖NAS都可以,只要和家里设备在同一个局域网下就能用。
- 基础网络知识:会用SSH连接远程服务器、知道基础的Linux命令复制粘贴即可,不需要精通网络原理;
- 可选准备:如果要给DNS配加密访问(DoH/DoT),可以提前准备一个域名,免费域名/付费域名都行,没有也可以先用明文IP测试。
❗ 注意:如果用国内云服务器搭建公网DNS,一定要在云服务器控制台的安全组里开放53端口(UDP/TCP)、后续加密要用的853端口(DoT)、443端口(DoH),不然外部设备连不上。
实操步骤:20分钟搭好可用的私人DNS
目前最适合新手搭建私人DNS的工具是AdGuard Home——它是开源免费的DNS服务软件,自带广告拦截、加密解析、分上游规则、日志查询功能,自带可视化后台,不用敲复杂的配置文件,比传统的BIND、dnsmasq对新手友好10倍。
步骤1:连接服务器,一键安装AdGuard Home
不管是云服务器还是局域网里的树莓派/NAS,只要是Linux系统,直接用官方一键安装脚本即可:
- 用SSH工具(Windows用Putty/Xshell,Mac直接用终端)连接到你的服务器,输入服务器IP、账号密码登录;
- 复制下面的命令,粘贴到终端里回车执行:
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
- 等待30秒左右,终端出现
AdGuard Home is now available at the following addresses的提示,就说明安装成功了。
如果是群晖NAS/软路由,可以直接在应用市场/软件中心找到AdGuard Home一键安装,不用敲命令。
步骤2:初始化后台,完成基础配置
安装成功后,打开浏览器,输入http://你的服务器IP:3000,就能进入AdGuard Home的初始化向导:
- 第一页是欢迎页,直接点“开始配置”;
- 网页管理后台端口设置:默认后台端口是80,如果你服务器上没跑其他网页服务可以直接用,如果80端口被占了,就改成3000、8080这类没被用的端口,管理界面端口”和“DNS服务端口”不要搞混,DNS服务端口一定要留默认的53;
- 设置管理员账号密码:自己设置一个好记的账号密码,别用弱密码,防止被别人扫到蹭你的DNS;
- 到这一步基础配置就走完了,点击“打开仪表盘”就能进入AdGuard Home的管理后台了。
步骤3:配置上游DNS,兼顾速度和解析准确性
进入后台后,第一步先设置上游DNS服务器——也就是你的私人DNS自己解析不了域名的时候,去找谁要结果,这里推荐用“分流配置”,国内域名走国内DNS快,境外域名走境外DNS准,还能避免污染:
- 在后台侧边栏找到「设置」-「DNS设置」,拉到“上游DNS服务器”的配置框,删掉默认的内容,粘贴下面的配置:
# 国内域名用国内公共DNS,延迟低解析准 https://dns.alidns.com/dns-query https://doh.pub/dns-query # 境外域名用Cloudflare/Google DNS,隐私性好 https://1.1.1.1/dns-query https://dns.google/dns-query # 备用 fallback 节点,默认兜底用 tls://8.8.8.8 - 往下拉找到“Bootstrap DNS服务器”,填国内的公共DNS即可,用来解析上面上游DNS的域名:
5.5.5 119.29.29.29 - 点击页面下方的“测试上游DNS”,如果显示所有服务器都正常可用,就点“保存”。
小技巧:如果你主要在国内用,就把国内DNS放在最前面,解析速度更快;如果经常需要访问境外学术站点、海外服务,就把Cloudflare的节点放前面,或者搭配域名分流规则,让指定域名走境外上游。
步骤4:开启广告拦截和自定义规则(核心功能)
私人DNS最实用的功能就是全设备去广告、拦恶意网站,AdGuard Home自带现成的拦截规则,不用自己一个个写:
- 侧边栏找到「过滤器」-「DNS黑名单」,点击“添加黑名单”;
- 选择“从列表添加”,可以选官方推荐的规则:比如
AdGuard DNS filter(通用广告拦截)、CHN: AdGuard DNS filter for Chinese(中文网站广告、国内垃圾站点拦截)、MalwareDomainList.com(恶意网站、钓鱼站拦截),选好后点添加即可; - 如果要自己加自定义规则也很简单:比如你想屏蔽某个视频网站的贴片广告,就把广告域名加进去,格式是
0.0.0 广告域名;如果想做内网解析,比如给家里的NAS设个专属域名nas.home,就去「DNS设置」-「重写规则」里添加,把nas.home指向你NAS的内网IP,之后家里所有设备输入这个域名就能直接访问NAS了。
步骤5:开启加密DNS,防止域名解析被窃听
如果用默认的UDP 53端口明文传输,运营商还是能看到你的解析请求,我们可以开启DoT(DNS over TLS)和DoH(DNS over HTTPS)加密,让解析全程加密不被窃听:
- 首先把你提前准备好的域名解析到你的服务器IP(比如dns.你的域名.com,A记录指向服务器公网IP);
- 在AdGuard Home后台找到「设置」-「加密设置」,勾选“启用加密”;
- 按照提示填写你的域名,然后勾选“自动颁发Let's Encrypt证书”,填写你的邮箱(用来续期证书提醒),服务器会自动申请SSL证书,不用自己手动上传;
- 保存之后,你就能获得专属的DoT地址(比如tls://dns.你的域名.com)和DoH地址(比如https://dns.你的域名.com/dns-query),用这些地址连接DNS,全程都是加密传输,运营商完全看不到你访问了什么域名。
全设备配置教程:搭好了怎么用?
搭建完成后,只要给你的设备设置上私人DNS地址就能用了,不同设备的设置路径如下:
- Windows电脑:打开「设置」-「网络和Internet」-「WLAN/以太网」-「DNS服务器分配」,点“编辑”,选择手动,开启IPv4,首选DNS填你的服务器IP,备用DNS可以留空或者填公共DNS;如果要连加密DoH,就在“DNS over HTTPS”里选“启用”,填你之前的DoH地址模板即可。
- Mac电脑:打开「系统设置」-「网络」- 选中你当前连的WiFi/网线,点「详细信息」-「DNS」,点左下角的+号,添加你的私人DNS服务器地址即可,也可以在同一页配置DoH/DoT加密。
- iOS/安卓手机:
- iOS:打开「设置」-「无线局域网」- 点已连WiFi后面的i图标 -「配置DNS」,改成手动,删掉原来的DNS地址,添加你的服务器IP;如果是蜂窝网络下用,就打开「设置」-「通用」-「VPN与设备管理」-「DNS」,选择手动添加DoT/DoH地址;
- 安卓:打开「设置」-「WLAN」- 长按已连网络选「修改网络」-「高级选项」- 把DNS改成“静态”,DNS1填你的服务器IP;系统版本比较新的安卓可以直接在「设置」-「更多连接」-「私人DNS」里填写你的DoT地址,不管WiFi还是流量都能用。
- 家用路由器(全家共享):如果你想让家里所有连路由器的设备(电视、智能音箱、老人手机)不用单独设置就自动用私人DNS,直接登录路由器后台,找到「WAN口设置」或者「DHCP设置」里的DNS服务器地址,改成你的私人DNS服务器IP即可,一次设置全家用。
测试是否生效:设置完DNS之后,打开浏览器访问
https://adguard.com/zh_cn/test/adguard.html,如果页面显示“您正在使用 AdGuard 广告拦截程序”,就说明私人DNS已经正常工作了。
安全与维护:避免你的DNS变成“公共肉鸡”
很多新手搭完DNS之后忘了做访问控制,结果被全网扫描到,被别人用来做DNS放大攻击,既浪费服务器带宽,还可能被云服务商判定违规封机,一定要做好这3个设置:
- 开启访问控制:在AdGuard Home后台「设置」-「DNS设置」里找到“访问设置”,如果你只给自己和家人用,就把允许访问的IP段加进去,比如家里的内网IP段
168.0.1/24、你自己常用的外出办公IP,其他所有IP的请求直接拦截; - 关闭不必要的端口:除了必要的53、853、443和后台管理端口,其他端口全部在安全组里关掉,后台管理端口不要用默认的80/443,最好改成一个别人猜不到的五位端口,账号密码设置复杂一点,不要用admin/123456这种弱密码;
- 定期更新:每隔1-2个月登到服务器上执行一下AdGuard Home的更新命令,或者直接在后台点一键更新,修复安全漏洞,更新拦截规则。
常见问题排查
- 打开网页变慢?先检查上游DNS是不是选的离你太远的节点,国内用户优先用国内节点做上游,不要全填境外DNS;另外检查服务器的带宽是不是太小,如果被别人蹭DNS跑满了带宽,直接在访问控制里加白名单限制即可。
- 部分域名打不开?检查是不是拦截规则误杀了,可以去后台「查询日志」里看最近的解析记录,找到被拦截的域名,加到白名单里即可;另外检查上游DNS是否正常,不要用已经失效的公共DNS地址。
- 外面的网络连不上家里的私人DNS?如果你是把DNS搭在局域网内的树莓派/NAS上,没有公网IP的话外面确实没法直接连,可以搭配IPv6或者内网穿透(比如FRP、ZeroTier)来实现远程访问,嫌麻烦的话用云服务器搭建的公网方案就没有这个问题。
搭建私人DNS看起来涉及网络设置略显复杂,实际上跟着步骤走,大部分人半小时就能完成所有配置,比起免费的公共DNS,完全掌控在自己手里的解析服务,既能守住上网隐私,又能换来更干净、更快速的上网体验,一次配置长期能用,性价比极高,如果身边有朋友经常被DNS劫持、广告骚扰困扰,也可以把这篇教程转给他,自己动手搭建一次,就会发现私人DNS远比你想象的好用。

