剪藏#剪藏

【教程】自建纯净、去广告的加密 DNS - 开发调优 / 开发调优, Lv1 - LINUX DO

2025 年 8 月 4 日1 分钟
分享Twitter / XTelegram微博
【教程】自建纯净、去广告的加密 DNS - 开发调优 / 开发调优, Lv1 - LINUX DO 封面

请勿在国内机搭建对公网开放的 DNS,因为已有相关“被请喝茶”的先例。即便通过更换端口或限制访问来源 IP 来规避,依然存在安全风险。此外,国内机的 DNS 上游常遭遇劫持,难以保证纯净度。因此,本教程仅适用于海外服务器,请勿在中国大陆境内主机上部署。

在搭建前你需要准备:

  1. 一个 1C1G 以上的服务器,性能不需要太强

  2. 一个域名

选择合适的服务器

选择离自己延迟低、线路好的服务器进行搭建,如果你在华南可以选择港台机,在华东可以选择日本机,在华北/东北可以选择韩国机。当然线路要好,延迟在 60ms 以内都可以接受,越低越好。 机器性能不需要太强,1C1G 的小鸡即可

Docker 安装 Adguard Home

完成服务器的基本配置,安装好 Docker, 然后一键安装 Adguard Home

JAVASCRIPT
docker run --name adguardhome --restart unless-stopped -v /root/adguard/workdir:/opt/adguardhome/work -v /root/adguard/confdir:/opt/adguardhome/conf --network host -d adguard/adguardhome

Adguard Home 基本配置

使用你的服务器 IP + 3000 端口进入初始化页面,比如 http://10.10.10.10:3000/,不要修改默认端口,设置好账号密码。之后使用 IP + 80 端口进入新的配置页面,比如 http://10.10.10.10:80/,使用刚刚设置的用户名与密码登录

设置上游 DNS, 这里用 Cloudflare 和 Google 的 DNS

如果是自用,速率限制可以设置为 0, 也就是不限制

一定要开启 EDNS

如果你的机器性能比较强,缓存可以设置大一点

在 Allowed Clients 这里设置一个字符串,把这个字符串当作你的密钥,比如 abcde

跳转到过滤器设置,添加去广告规则。规则不是越多越好,规则太多容易误杀,下面是一些比较常用的规则:

JAVASCRIPT
https://gcore.jsdelivr.net/gh/217heidai/adblockfilters@main/rules/adblockdns.txt
https://easylist-downloads.adblockplus.org/fanboy-annoyance.txt
https://anti-ad.net/easylist.txt
https://cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad.txt

申请域名证书

这一步需要用到你的域名,假设你的域名是 example.com 先在 Cloudflare 创建两个 A 记录,全部指向服务器 IP,注意不要开启小黄云

JAVASCRIPT
A   example.com     10.10.10.10
A   *.example.com   10.10.10.10

在服务器上安装 acme.sh, 用来申请证书

JAVASCRIPT
curl https://get.acme.sh | sh
ln -s  /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
acme.sh --set-default-ca --server letsencrypt
mkdir /root/cert

我们计划把申请的证书保存到 /root/cert,我们需要申请泛域名证书,同时涵盖 *.example.comexample.com

JAVASCRIPT
acme.sh --issue -d example.com -d *.example.com --dns --keylength ec-256 --yes-I-know-dns-manual-mode-enough-go-ahead-please

之后会要求你添加一个 TXT 记录,添加完毕后再次输入上面的命令进行验证 申请成功后安装证书

JAVASCRIPT
acme.sh --install-cert -d example.com -d *.example.com --ecc --key-file /root/cert/server.key  --fullchain-file /root/cert/server.crt

证书安装在 /root/cert/server.crt, 密钥在 /root/cert/server.key

Adguard Home 加密配置

下面粘贴上刚刚申请的证书和密钥

点击保存,此后,通过新的地址访问 Adguard Home 面板:https://example.com 同时会启动 DoT 和 DoQ

JAVASCRIPT
DoT: tls://abcde.example.com:853
DoQ: quic://abcde.example.com:853

刚刚设置的这一串 abcde 就相当于是密码,别人不知道密码就无法使用你的 DNS 服务,起到验证作用。当然,这一串 abcde 很容易就能被 ISP 等中间人获知,所以,如果你愿意承担更高延迟的代价以获得更好的安全,你可以选择 DoH,在这里就不演示了,Adguard Home 的设置里有

在客户端使用配置好的 DoT 或 DoQ, 比如 Surge

效果实测

拦截率达到了 40% 有点太高,这是因为我设置了太多拦截规则,大家可以有取舍的删掉一些

测试拦截效果:

原文地址: https://linux.do/t/topic/839589

相关文章