昨天新建了个虚拟机搞AdGuardHome Server,按照之前的教程做的:
想起Adguard Home还有个号称很强大的加密功能,从没用过,先试试呗~
找了教程,B乎这个就是了~转来万事屋收藏~
本教程适合热爱折腾、讨厌广告和DNS劫持以及害怕隐私泄漏的同学,文中几乎没有代码,可放心食用,其中可以在网络检索到的步骤或内容我会省略。
本文主要用docker版AdguardHome来搭建(所以理论上linux server和windows server都可以),几乎不影响正常业务的开展,我将演示如何在群晖和centos上搭建。
本文将会探讨DoT和DoH的异同,以及我们最关系的速度和自建DNS的风险问题。
相信能看到这篇文章的同学,一定对dns被劫持以及隐私泄漏有一定的了解了,照例先科普一下。
DNS over TLS (DoT)
DoT 全称是 DNS over TLS,它使用 TLS 协议来传输 DNS 协议。TLS 协议是目前互联网最常用的安全加密协议之一,我们访问 HTTPs 的安全基础就是基于 TLS 协议的。相比于之前使用无连接无加密的 UDP 模式,TLS 本身已经实现了保密性与完整性。
TLS 协议的基本思路是证书 + 加密机制,双管齐下保证安全。证书相当于申请了一个合法的身份证,当客户端向服务器发起连接的时候,双方会相互校验一下身份,服务器把证书给客户端,客户端来校验证书的内容和合法性。
默认使用853端口。
DNS over HTTPS(DoH)
DNS over HTTPS 就是基于 HTTPS 隧道之上的域名协议,而HTTPS 又是 “HTTP over TLS”。所以 DoH 相当于是【双重隧道】的协议。
DoH 最终依靠 TLS 实现了【保密性】与【完整性】。这么做的好处是,即使有人监视你的上网流量,也无法判断——哪些 TLS 流量是用于域名查询,哪些 TLS 用于网页传输。换句话说,DoH协议的流量无法被【单独识别】出来。
DoH的加密其实也是建立在tls之上的,本质跟DoT一样。就是在tls之上还有一层http(http/2)。
默认使用443端口。
区别及理论速度 自建DNS风险对比:
它们实际上完成的是同样的事情——加密DNS请求——但是有一个很大的区别:它们使用的端口。
也就是说,默认情况下,如果你用DoT来解析域名,虽然isp并不知道你的请求内容,但是会知道你在尝试用DoT来请求域名解析。而如果你利用DoH的443端口,那么是可以被伪装成正常的http请求的,也更难被发现。
DoT和DoH速度:我自己没有测试过到底哪种方式会更快一点,但是想当然的,由于DoH和DoT加密本质一样,且那么DoH由于多了一层http,自然DoT会更快,且目前中国家庭绝大多数都没有443和80端口,为了方便搭建我会选择DoT。当然还有tcp 53端口来请求dns,但是tls得经过tcp的三次握手,所以DoT和DoH也是慢于这个的。不过都没经过加密,就不做比较了。
理论用时应该是 DNS<DoT<DoH。
风险:虽然我还没遇到过,但是据说有的同学在家或者腾讯云/阿里云 服务器上部署了53端口的dns解析,然后被警告了。所以我们可以不用53端口,而是转为443和853端口,当然如果不怕的话,理论上直接部署udp 53端口也可以。
说了这么多,接下来进入正题。
推荐部署平台:
- 国内主机(⭐️⭐️⭐️⭐️)
- 家用主机(⭐️⭐️⭐️⭐️⭐️)(有公网)
- 国外主机(⭐️⭐️⭐️)
dns解析一方面是为了隐私和去广告,另一方面也是为了延迟考虑。而推荐家用主机搭建,更多是从速度方面考虑的。因为只要你不去外地,那么同地区你连接家中延迟是一定最低的(可能还有isp方面,国内IDC有bgp暂不做对比),另外就是免费呀~
需求:
- 家中有公网IP or 有公网的服务器(vultr 阿里云 腾讯云等 vps都可)
- 域名(文中用阿里云的域名进行演示,几块钱就能买到top域名,自己解析好到家中ip即可)
部署Adguard Home
想讲如何部署,然后再说adguard home中如何配置,这是官方部署文档,可自行查看。
群晖篇
群晖安装docker后,接下来只要去注册表中直接搜adguard下载即可。
然后点击高级设置,对了,我们需要在提前在任意文件夹创建这三个文件夹work config certificate,名字和路径都不重要,且其中certificate可不创建。
其中
/opt/adguardhome/work
和
/opt/adguardhome/conf
不能变。
红框框选的就是自己之前创建的目录的路径,根据需要选择。
而
/opt/adguardhome/certificate
是为了等我们进到容器中后,adguard可以看到这个目录中的内容。
接下来是端口,这个很重要,跟我一样即可。
然后我们用 群晖内网ip:3000 即可进入配置页面。配置完成群晖有可能不会自动跳到对应端口,用 群晖内网ip:8081 就可以看到管理页面了。
Linux篇
linux安装docker很简单,安装好以后记得 service docker start 试一下哦~
之后执行
docker pull adguard/adguardhome
然后根据官方的命令稍微改动一下
其中/my/own/workdir和/my/own/confdir改为自己想要的路径,我这里是存放在etc目录下(只要不存在tmp目录都可)
可执行以下命令
cd /etc && mkdir AdguardCache && cd AdguardCache && mkdir work config certificate
来快速创建
之后更改官方create指令
docker run --name adguardhome\
--restart unless-stopped\
-v /etc/AdguardCache/work:/opt/adguardhome/work\
-v /etc/AdguardCache/config:/opt/adguardhome/conf\
-v /etc/AdguardCache/certificate:/opt/adguardhome/certificate\
-p 53:53/tcp -p 53:53/udp\
-p 67:67/udp -p 68:68/udp\
-p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp\
-p 853:853/tcp\
-p 784:784/udp -p 853:853/udp -p 8853:8853/udp\
-p 5443:5443/tcp -p 5443:5443/udp\
-d adguard/adguardhome
然后我们就可以通过ip:3000进行访问了,如果无法访问,可以查看防火墙配置,这里就不细说了。
AdGuard Home 配置篇(重点)
这里安装用默认就好了,设置好自己的用户名和密码,其他的都点下一步。
之后应该就可以直接跳转登陆界面了(群晖之前设置的是8081,可通过 群晖ip:8081访问)
DNS设置
如果服务器在国内,红框中的dns直接填写运营商的两个家114和阿里的dns即可
在国外的话,填1.1.1.1和8.8.8.8,然后点应用。
DNS封锁清单(去广告)
根据需要自行添加适合的block list,网上很多,这里不做推荐。
具体的申请证书过程网上教程很多,且阿里云上也有申请文档,只要之前实名认证过,一般几分钟就下来了,也可以用Let’s Encrypt的90天证书,这里就不做赘述了。
申请签发后,下载证书。我这里选择的是 其他
(可选)文件解压出来以后,把 证书和key 两个文件上传到 /etc/AdguardCache/certificate 中。
然后进web端配置
然后设置证书
有两种验证方式,通过证书路径验证 或者通过内容验证
证书路径验证:
证书路径
/opt/adguardhome/certificate/xxx.pem
私钥路径
/opt/adguardhome/certificate/xxx.key
选择内容验证的话:
只要把pem后缀和key后缀的文件以文本方式打开,然后内容分别copy进去,验证成功会出现如图字样。
之后保存配置,然后就算自建了一个DoT和DoH了,根据自己手中的设备配置相应的加密dns即可~
结尾,有问题可评论区交流~
免责声明
访问者可将文章提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,可转载但请注明出处。
本文转自B乎,不对,是知乎:阅读原文