# 前言

DNS 运营商劫持我相信大家都不陌生了,利用 AdGuard Home 我们不仅可以自建加密 DNS 来防止运营商劫持,还可以用来过滤那些垃圾的广告

# 开始

# 准备

首先你需要准备一下东西

  • 一台用于挂 AdGuard Home 的设备

  • 域名一枚

  • SSL 证书一个

  • 脑子

# 开始

这里我们使用 docker 安装(貌似 docker 安装会导致无法正确获取到客户端 IP),简单方便

图片

下面是官方的 docker 安装命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
docker run --name adguardhome\

   --restart unless-stopped\

   -v /my/own/workdir:/opt/adguardhome/work\

   -v /my/own/confdir:/opt/adguardhome/conf\

-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

下面是端口的解释

  • -p 53:53/tcp -p 53:53/udp :纯 DNS。

  • -p 67:67/udp -p 68:68/tcp -p 68:68/udp :如果您打算使用 AdGuard 则添加 主页作为 DHCP 服务器。

  • -p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp :添加,如果您 将使用 AdGuard Home 的管理面板以及运行 AdGuard Home 作为 HTTPS/DNS-over-HTTPS 服务器。

  • -p 853:853/tcp :如果您打算将 AdGuard Home 运行为 TLS 上的 DNS 服务器。

  • -p 784:784/udp -p 853:853/udp -p 8853:8853/udp :如果要添加 将 AdGuard Home 作为 DNS-over-QUIC 服务器运行。您只能留下一个 或其中两个。

  • -p 5443:5443/tcp -p 5443:5443/udp :如果要运行 AdGuard 添加 Home 作为 DNSCrypt 服务器。

然鹅我们根本不需要开放那么多端口

实际上 Windows11 目前原生支持 DOH,Android 原生只支持 DOT,但是国内服务器是不能架设 DNS 服务的,国外服务器则 DOT 端口被秒封。DHCP 服务器用路由器上的就可以了,所以我们这里仅保留 DOH 以及面板所需的端口

我们将 443 映射到宿主机随便一个端口,这里是 55556,下面是 docker 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14

docker run --name adguardhome\

   --restart unless-stopped\

   -v /my/own/workdir:/opt/adguardhome/work\

   -v /my/own/confdir:/opt/adguardhome/conf\

-p 127.0.0.1:55555:3000/tcp\

-p 127.0.0.1:55556:443/tcp -p 127.0.0.1:55556:443/udp\

   -d adguard/adguardhome

启动容器后利用 Nginx 代理本地 55555 端口,访问 Adguard home,监听端口保持 3000,配置管理员信息,完成后进入主界面

图片

然后我们进入设置,在加密设置里配置好自己的 SSL 证书,然后勾选启用加密,保存。

最后更改 Nginx 反向代理端口,代理我们之前开的 55556 端口

访问即可进入主界面

# 配置 DNS

点击设置中的 DNS 设置,设置上游 DNS 服务器

这是我配置的上游 DNS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

https://dns10.quad9.net/dns-query

tls://8.8.8.8

tls://8.8.4.4

tls://1.1.1.1

tls://1.0.0.1

https://doh.opendns.com/dns-query

https://doh.pub/dns-query

https://dns-unfiltered.adguard.com/dns-query

https://1.12.12.12/dns-query

https://223.5.5.5/dns-query

然后选择并发请求来提高解析速度

下面是我的 Bootstrap DNS 服务器

1
2
3
4
5
6
7
8
9
10
11
12

1.1.1.1:53

1.0.0.1:53

9.9.9.10

149.112.112.10

2620:fe::10

2620:fe::fe:10

保存即可

后面的一些设置根据自己的实际需求设置即可,如果不知道也可以去网上搜索,下面的配置仅供参考

图片

图片

# 广告拦截

然后就是我们的重头戏!!!

点击 “过滤器”–>“DNS 黑名单”

在里面添加广告拦截规则

下面是我在网上收集的好用的集合

并不是添加的越多越好,过多规则只会减慢解析速度

上面的规则已经能屏蔽掉大部分广告了(包括 Android 恶心的开屏广告)

# 使用

一切配置完后我们就需要部署客户端这边了

Windows 上以管理员身份打开 cmd

1
2

netsh dns add encryption server=<resolver-IP-address> dohtemplate=<resolver-DoH-template> autoupgrade=yes udpfallback=no

其中 <resolver-IP-address> 是服务器的 IP 地址, <resolver-DoH-template> 是模板,也就是像 https://dns10.quad9.net/dns-query 这样的

然后在设置中更改即可,详情可以去网上搜索

Android 这边要用第三方软件辅助使用 DOH,感觉 Intra 这款软件就很不错

# 后记

教程写得有点粗糙,如果有什么不会的地方可以在下方留言哦~