转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

昨天新建了个虚拟机搞AdGuardHome Server,按照之前的教程做的:

去他的Docker安装AdGuardHome,直接服务器自建安装不香么?还可以设置加密DNS!

想起Adguard Home还有个号称很强大的加密功能,从没用过,先试试呗~

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

找了教程,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端口。

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
加密DNS

区别及理论速度 自建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

OpenWRT 使用 AdGuardHome 去掉烦人的广告!

想讲如何部署,然后再说adguard home中如何配置,这是官方部署文档,可自行查看。

群晖篇

群晖安装docker后,接下来只要去注册表中直接搜adguard下载即可。

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
我选择是star最多的
转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
双击即可创建一个容器
转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
资源限制看情况勾选,其实默认即可

然后点击高级设置,对了,我们需要在提前在任意文件夹创建这三个文件夹work config certificate,名字和路径都不重要,且其中certificate可不创建。

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
certificat是存放证书和key目录的,config和work是用来保存缓存数据的
转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

其中

 /opt/adguardhome/work

/opt/adguardhome/conf

不能变。

红框框选的就是自己之前创建的目录的路径,根据需要选择。

/opt/adguardhome/certificate

是为了等我们进到容器中后,adguard可以看到这个目录中的内容。

接下来是端口,这个很重要,跟我一样即可。

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
然后点应用和下一步,开启容器即可

然后我们用 群晖内网ip:3000 即可进入配置页面。配置完成群晖有可能不会自动跳到对应端口,用 群晖内网ip:8081 就可以看到管理页面了。

Linux篇

linux安装docker很简单,安装好以后记得 service docker start 试一下哦~

之后执行

docker pull adguard/adguardhome

然后根据官方的命令稍微改动一下

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

其中/my/own/workdir和/my/own/confdir改为自己想要的路径,我这里是存放在etc目录下(只要不存在tmp目录都可)

可执行以下命令

cd /etc && mkdir AdguardCache && cd AdguardCache && mkdir work config certificate

来快速创建

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
可以看到已经创建好了三个文件夹

之后更改官方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
转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
执行完成后,可用 docker ps 来查看

然后我们就可以通过ip:3000进行访问了,如果无法访问,可以查看防火墙配置,这里就不细说了。

AdGuard Home 配置篇(重点)

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

这里安装用默认就好了,设置好自己的用户名和密码,其他的都点下一步。

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

之后应该就可以直接跳转登陆界面了(群晖之前设置的是8081,可通过 群晖ip:8081访问)

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

DNS设置

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

如果服务器在国内,红框中的dns直接填写运营商的两个家114和阿里的dns即可

在国外的话,填1.1.1.1和8.8.8.8,然后点应用。

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
保存
转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
访问控制可以自行研究

DNS封锁清单(去广告)

根据需要自行添加适合的block list,网上很多,这里不做推荐。

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
阿里云可以申请到免费的1年证书

具体的申请证书过程网上教程很多,且阿里云上也有申请文档,只要之前实名认证过,一般几分钟就下来了,也可以用Let’s Encrypt的90天证书,这里就不做赘述了。

申请签发后,下载证书。我这里选择的是 其他

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

(可选)文件解压出来以后,把 证书和key 两个文件上传到 /etc/AdguardCache/certificate 中。

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
改不改文件名都可
转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

然后进web端配置

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程
服务器名称就是解析到服务器的域名

然后设置证书

有两种验证方式,通过证书路径验证 或者通过内容验证

证书路径验证:

证书路径

/opt/adguardhome/certificate/xxx.pem

私钥路径

/opt/adguardhome/certificate/xxx.key

选择内容验证的话:

只要把pem后缀和key后缀的文件以文本方式打开,然后内容分别copy进去,验证成功会出现如图字样。

转载B乎技术贴:Adguard Home 自建DoT & DoH DNS加密教程

之后保存配置,然后就算自建了一个DoT和DoH了,根据自己手中的设备配置相应的加密dns即可~

结尾,有问题可评论区交流~

免责声明

访问者可将文章提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,可转载但请注明出处。

本文转自B乎,不对,是知乎:阅读原文

声明:本站文章,有些原创,有些转载,如发现侵权侵请联系删除。本站所有原创帖均可复制、搬运,开网站就是为了大家一起乐乐,不在乎版权。对了,本站小水管,垃圾服务器,请不要采集,吐槽君纯属用爱发电,经不起折腾。

给TA打赏
共{{data.count}}人
人已打赏
技术宅

有人说这六款混合开发框架比原生更香?

2022-12-13 15:04:45

技术宅

【万事屋转载技术贴】流程引擎之架构设计

2022-12-13 21:04:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索