搭建公网doh服务,出门在外也能拒绝广告保护隐私
之前有写过搭建内网dns去广告服务,但是这个仅限于内网,一旦外出或者在公司等地方就无法连接到自己的dns服务器,也就无法去除广告和保护隐私,这里我依然用AdGuard Home搭建一个dns服务器并启用doh,实现公网访问。
之前也有童鞋问为什么单纯的去广告为什么需要自建dns服务器,浏览器有的扩展插件这些可以屏蔽广告,这里需要承认一点,浏览器插件去广告效果要比单纯的dns好,但是例如电视、软件内置的浏览器等无法使用插件的时候,dns去广告的好处就可以体现出来,可以不受这些限制,两者相辅相成才是最好的,当然dns去广告也有局限性,部分app已经开始内置doh,不用系统的dns,这种就不能用常规的办法解决了(以后有机会出一篇)。
有童鞋肯定好奇为什么要用doh(DNS-over-HTTPS),众所周知dns用的是53端口且无加密,在目前互联网的环境而言普通的dns极其容易被劫持,也就是会导致自己的dns服务器处于失效状态,但doh或者doq(DNS-over-QUIC)以及dot(DNS-over-TLS)是利用证书加密了数据,可以有效防止被劫持等情况,当然加密的代价是会略微提升下延迟,但这个提升几微秒的延迟并不会感受出来(游戏这些不受dns影响),理论上doq会更好些,但是目前来说绝大部分设备不支持doq和dot,只能doh,但这两个设置方法一模一样,后面支持了直接用就行。
这里需要提醒下,目前而言搭建doh等可能会面临相关风险,个人不建议在内网搭建dns服务并映射出去,所以我这里是直接使用了海外的服务器搭建(为什么不用国内呢,这是个好问题......),但是服务器物理距离不能太远,不然延迟上天影响体验,服务器几个人用不需要多大的性能和带宽,1c1g1m的配置都足够了。
这里我使用了CXIT Cloud(https://idc.minemc.net/cart)的香港服务器,cn2路线,做dns解析还是挺合适的,我这延迟几乎和国内的一样,价格也不贵,感兴趣的童鞋可以去官网了解下,输入我的优惠码:mymuwu2023,HK-3区AB、HK-4区AB可享受85折优惠。
一、前提准备
这里需要先准备一个域名,什么,没有域名,看我往期文章,0元免费低价域名都有写过几篇文章《免费申请注册eu.org二级域名》《最便宜的.xyz域名:仅需6元/年》。
还需要准备一份ssl证书,这里我以腾讯免费一年的为例,进入腾讯云ssl证书控制台,点击我的证书,选择申请免费证书,再点击申请免费证书。
填入域名,选择域名验证方式,再填入邮箱就可以了,其他的默认不用管,点击提交申请验证等签发就行。这里要说明下,申请域名不一定要域名是在腾讯云的,我做个是xxxx.eu.org域名,虽然域名不是腾讯云购买的,但在腾讯云解析,所以我可以选择自动dns验证,如果是域名在其他的注册商解析,就需要选择手动dns验证了。
等待几分钟后就可以完成签发,在我的证书那里就可以看到,点击下载证书并选择其他类型下载,就可以得到一个压缩包,解压这个证书的压缩包可以得到几个文件,其中.pem和.key两个文件用记事本打开,稍后需要用上。
二、部署AdGuard Home
需要docker版部署的可以查看往期文章《搭建并配置一个属于自己的dns去广告服务器》
这里我是用服务器直接搭建,依次输入以下命令安装并重启即可。
wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz
tar xvf AdGuardHome_linux_amd64.tar.gz&&cd AdGuardHome
sudo ./AdGuardHome -s install
reboot
三、配置dns以及去广告
打开服务器ip+3000端口号进入到adguard home管理面板,开始配置。
端口如果没有冲突无需修改,监听接口选择所有接口。
如果无法选择监听所有接口,提示错误,那还需要进入服务器修改配置,登录ssh输入以下命令。
sudo mkdir -p /etc/systemd/resolved.conf.d
nano /etc/systemd/resolved.conf.d/adguardhome.conf
然后输入以下文本后同时按下ctrl+o保存文件并按下ctrl+x退出。
[Resolve]
DNS=127.0.0.1
DNSStubListener=no
最后再依次输入以下命令,然后刷新adgurad home的网页就可以下一步了。
sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl reload-or-restart systemd-resolved
再配置账号密码
然后一路下一步,完成配置进到仪表盘。
转到设置,添加公共dns比如谷歌(https://dns.google/dns-query)等doh地址,然后选择并行请求。
转到过滤器-dns拦截列表,自行添加想要的规则
一般情况自带的这两个规则已经足够用了,如果还需要其他的规则,可以自行查找,这里推荐anti-AD的规则:https://anti-ad.net/easylist.txt
有需要的请自行前往github查看:https://github.com/privacy-protection-tools/anti-AD
添加规则也很简单,点击添加阻止列表
可以从列表中添加(官方的列表),这里我使用anti-AD的规则,选择添加一个自定义列表
保存之后检查更新一下即可
注意:过滤规则越多dns性能会越慢,表现为解析时间变长(肉眼来看就是加载网页要等久一点),如果规则过多导致速度变慢建议禁用一些规则。
更多优化配置请查看往期文章《详细配置并优化Adguard Home》。
四、启用doh
进入设置-加密设置,勾选启用加密以及https重定向,端口这些不改动,如果需要dot、doq这些请确保服务器放行了这几个端口。
同时填入一开始准备的ssl证书,证书那一栏填入.pem这个文件里的内容,私钥一栏填入.key的内容,然后点击保存配置,之后就可以用域名访问adg home的控制台以及使用doh了。
五、设备配置doh
先打开adguard home的设置指导,可以查看监听的地址。
以windows为例,进入网络设置中编辑dns设置,这里只开ipv4的dns,因为ipv6会沿用ipv4的dns地址不会导致无法解析v6的,输入自己doh服务器的ip地址,dns over https选择开(手动模板),把刚刚查看的监听地址https开头的复制到模板里面,备用dns建议使用常规的公共dns(备用dns只有首选dns失效的时候才会启用),然后保存就可以了。
手机我这里以小米为例,打开设置-更多连接-专用dns,选择专用dns,填入自己的域名就可以了。
最后就可以在后台看到有设备来解析了。
当然,也可以使用普通的dns直接连接,填入dns地址就可以了,但是失去了加密很容易被劫持,还去啥广告。。。。
这个用来演示的dns服务器我也开放使用一段时间,在后台输入dns可以获得地址,但请注意这个仅用来体验测试的,随时会暂停服务,长期使用请自行搭建。