Adguard home自建DNS防污染、去广告教程 1.安装(Docker)

前言

Ad­Guard Home 部署的方式有很多种,可以在服务器中直接部署,也可以部署在Docker中,这里采用 Docker 部署,主要是考虑到其更新维护成本低、玩法多样、配置灵活。就比如对于科学上网的需求而言,需要对 DNS 进行分流,那么就可能需要使用 Docker 进行多容器部署与管理。这篇文章除了 Ad­Guard Home 的部署,还有一些与 Docker 相关的网络知识,认真看完这篇教程你会收获大量的知识和启发。

安装部署 AdGuard Home

Docker 部署涉及到网络模式的选择,小伙伴们可以根据自己的实际情况选择适合自己的。

Bridge 网络模式

Bridge 网络模式部署,需要预先设定端口,考虑端口占用情况,且一旦固定后续只能通过重建容器进行更改,限制多、灵活度差。由于它是 Docker 默认的网络模式,且很多教程存在误导性质,所以还是简单说明一下部署方法,顺便科普一下 Ad­Guard Home 每个端口的作用。

官方提供的容器启动命令示例格式化后如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run -d \
--name adguardhome \
-v $PWD/adguardhome/work:/opt/adguardhome/work \
-v $PWD/adguardhome/conf:/opt/adguardhome/conf \
-p 53:53/tcp \
-p 53:53/udp \
-p 67:67/udp \
-p 68:68/tcp \
-p 68:68/udp \
-p 80:80/tcp \
-p 443:443/tcp \
-p 853:853/tcp \
-p 3000:3000/tcp \
adguard/adguardhome

从示例中可以得知 Ad­Guard Home 所需要用到的端口,但实际情况并不是都会用到,这需要根据自身的需求来决定,以下是这些端口的作用:

  • 53:DNS 端口。即其他设备访问 AdGuard Home 进行 DNS 解析的默认端口。因为部分系统不支持自定义 DNS 端口,所以不建议自定义。部署前务必要查看是否有其它程序占用。
  • 67, 68: DHCP 端口。除非想代替你路由上的 DHCP 服务器,否则用不到。
  • 80: 管理页面默认 HTTP 端口。可忽略,在初始化页面设置管理端口为 3000 端口即可。
  • 443:HTTPS 和 DoH 端口。本地内网环境不需要。
  • 853:DoT 端口。不使用相关功能可忽略。
  • 3000:初始化设置端口。除非通过配置文件去设置,否则必须开启。

如果只是本地局域网使用一般只需要映射 533000 端口:

1
2
3
4
5
6
7
8
docker run -d \
--name adguardhome \
-v $PWD/adguardhome/work:/opt/adguardhome/work \
-v $PWD/adguardhome/conf:/opt/adguardhome/conf \
-p 53:53/tcp \
-p 53:53/udp \
-p 3000:3000/tcp \
adguard/adguardhome

macvlan 网络模式

TIPS: 准确来说应该叫“macvlan 网络下的 bridge 模式”,因为说起来太拗口,而且 macvlan 其他模式很少使用,同时也为了和默认的 bridge 网络模式做区分,所以习惯将它称之为“macvlan 网络模式”。

使用 macvlan 网络模式的好处是容器相当于是一个独立的设备,可以拥有一个独立且固定的 IP 和 MAC 地址,不需要理会任何端口的状态,所有端口都可以使用默认的,兼容性更好。你甚至可以部署多个 Ad­Guard Home ,用作不同的用途,灵活度非常高。非常适合在本地局域网下的使用,就比如你可以部署在 NAS 上。macvlan 网络模式唯一缺点是宿主机无法与容器直接通讯(Docker 为了安全性做了隔离处理),如果宿主机想要使用可能需要进行一些特殊的设置,或者通过路由器转发的方式使用。

  • 创建 macvlan 网络(根据实际情况替换参数,并删除注释)

    1
    2
    3
    4
    5
    6
    docker network create \
    -d macvlan \ # 使用 macvlan 网络驱动
    --subnet=10.0.0.0/24 \ # 指定网段
    --gateway=10.0.0.1 \ # 指定网关 IP
    -o parent=eth0 \ # 指定网卡
    network-macvlan # 网络名称,随意,自己记得就行

    TIPS: 据博主的了解,用 Docker 使用 Open­Wrt 容器的小伙伴一般都创建过 macvlan 网络,还有 un­Raid 会默认创建一个 macvlan 网络。那么很大概率网段就已经被使用了,就不需要再重复创建了。执行docker network ls | grep macvlan命令可以查看已有的 macvlan 网络。

  • 启动容器(根据实际情况替换参数,并删除注释)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    docker run -d \
    --name adguardhome \
    --restart unless-stopped \
    --log-opt max-size=1m \
    --network network-macvlan \ # 使用之前创建的 macvlan 网络
    --ip 10.0.0.53 \ # 设置本容器的 IP
    -v $PWD/adguardhome/work:/opt/adguardhome/work \
    -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
    adguard/adguardhome

Host 网络模式

Host 网络模式直接使用宿主机的网络,没有网络隔离,不需要考虑容器端口的映射,在容器启动后可以自由调整被占用的端口。适合在本机使用 (lo­cal­host),或者直通外网的设备对外开放服务,就比如 VPS 、主路由。

1
2
3
4
5
6
7
8
docker run -d \
--name adguardhome \
--restart unless-stopped \
--log-opt max-size=1m \
--network host \
-v $PWD/adguardhome/work:/opt/adguardhome/work \
-v $PWD/adguardhome/conf:/opt/adguardhome/conf \
adguard/adguardhome

AdGuard Home 初始化设置

使用网页浏览器访问 IP + 3000 端口即可进入到 Ad­Guard Home 的初始化界面,比如 IP 是 10.0.0.10,那么就访问 http://10.0.0.10:3000

[!NOTE]

由于本人是在服务器上搭建,并且已经做了域名的绑定,因此只需要输入域名加端口号即可访问。

接着是监听接口(网卡)和端口设置,根据不同的网络模式和实际情况需要作出不同的修改:

  • Bridge 网络模式:前面提到过在不映射80端口的情况下可以改管理界面端口为3000
  • macvlan 网络模式:无需任何修改。
  • Host 网络模式:在多 IP 的 VPS 环境可能需要选择监听接口。端口方面,当提示占用时需要根据实际情况进行调整,是更改端口还是关闭相关占用端口的服务取决于你的最终使用场景。

然后是设置管理用户名和密码,后面都是直接下一步。

完事之后输入用户名和密码登录,就来到了仪表盘页面。

截屏2024-04-28 09.22.29

至此 Ad­Guard Home 就部署完成了。

在设备上使用 AdGuard Home DNS

最后你可以在 Ad­Guard Home 的设置指导页面找到相应系统的 DNS 设置方法,先不要着急在路由器上使用,建议先设置电脑或手机,通过访问一些网站来测试是否能正常解析。正常的情况下在仪表盘界面会有统计信息,在查询日志界面你会看到解析的详细记录信息。


Adguard home自建DNS防污染、去广告教程 1.安装(Docker)
https://www.sajuna.cn/2024/04/23/Adguard-home自建DNS防污染、去广告教程-1-安装(Docker)/
作者
ZikQ
发布于
2024年4月23日
许可协议