1. Adguard Home简介
Adguard Home: Free and open source, powerful network-wide ads & trackers blocking DNS server.
AdGuard Home 是一款免费开源的用于拦截广告和跟踪的DNS服务器,是 AdGuard DNS 的开源版本。
参考文档:
2. 安装AdGuard Home
1、下载 adguardhome 镜像
1 | docker pull adguard/adguardhome:v0.107.44 |
2、运行 adguardhome 容器
1 | docker run --name adguardhome\ |
端口说明:
-p 53:53/tcp -p 53:53/udp: plain DNS.-p 67:67/udp -p 68:68/tcp -p 68:68/udp: add if you intend to use AdGuard Home as a DHCP server.-p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp: add if you are going to use AdGuard Home’s admin panel as well as run AdGuard Home as an HTTPS/DNS-over-HTTPS server.-p 853:853/tcp: add if you are going to run AdGuard Home as a DNS-over-TLS server.-p 784:784/udp -p 853:853/udp -p 8853:8853/udp: add if you are going to run AdGuard Home as a DNS-over-QUIC server. You may only leave one or two of these.-p 5443:5443/tcp -p 5443:5443/udp: add if you are going to run AdGuard Home as a DNSCrypt server.
简化版命令:
1 | docker run --name adguardhome\ |
3、查看运行状态
1 | docker ps | grep adguardhome |
3. systemd-resolved 端口冲突问题
启动 adguardhome 容器时,如果使用的是ubuntu系统,那么可能出现 53 端口冲突问题,这是因为 ubuntu 系统中默认自带的 systemd-resolved 服务负责 DNS 解析。
解决办法一:关闭systemd-resolved
1 | systemctl stop systemd-resolved.service |
可能的问题:禁用 systemd-resolved 可能会影响 VPN 连接的 DNS 解析。如果 VPN 客户端或 NetworkManager 的 VPN 插件依赖 systemd-resolved 来推送 DNS 设置,禁用后可能需要手动配置 VPN 连接的 DNS。
解决办法二(推荐):禁用 systemd-resolved 的 DNS 存根监听器
1、创建配置文件
1 | mkdir -p /etc/systemd/resolved.conf.d/ |
写入如下内容:
1 | [Resolve] |
2、修改 /etc/resolv.conf 的链接
1 | ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf |
3、重启 systemd-resolved
1 | systemctl restart systemd-resolved.service |
4、验证53端口占用情况
1 | netstat -nlpt | grep 53 |
如果打算安装并使用其他的 DNS 解析器(如 dnsmasq、Unbound 或 AdGuard Home),或者希望完全手动控制 DNS 配置,那么完全禁用 systemd-resolved 可能是更干净的选择。
如果只是想释放 53 端口给其他应用程序使用,但同时还想利用 systemd-resolved 来管理上游 DNS 服务器(比如处理从网络连接中获取的 DNS 信息),那么仅禁用其存根监听器是更合适且对系统原有功能影响较小的方案。
4. 配置使用AdGuard Home
4.1. 初始化配置
1、访问网页配置界面
假设宿主机IP为 192.168.56.101 ,那么 网页配置界面 为:http://192.168.56.101:3000/
2、初始化配置
第一次登录时,AdGuard Home会引导我们对 网页管理界面 进行初始化配置。
初始化配置完成之后,网页配置界面就不能访问了。
配置数据会保存到 /opt/adguardhome/confdir/AdGuardHome.yaml 文件中。
3、访问网页管理界面
假设宿主机IP为 192.168.56.101 ,那么 网页管理界面 为:http://192.168.56.101:80/
4.2. AdGuard Home DNS配置
点击设置,点击DNS设置,按需配置DNS。
常用配置:
- 上游 DNS 服务器
- 速率限制
- DNS 缓存配置
- 允许的客户端
- 不允许的客户端
- 不允许的域名
配置数据会保存到 /opt/adguardhome/confdir/AdGuardHome.yaml 文件中。
4.3. 过滤器配置
4.3.1. DNS黑名单
点击过滤器,点击DNS黑名单。
DNS黑名单,可以阻止访问特定域名。
默认黑名单列表为AdGuard DNS filter,可选的黑名单列表还有几十个。
4.3.2. DNS重写
点击过滤器,点击DNS重写。
DNS重写,可以配置自定义域名解析。
4.3.3. 自定义过滤规则
点击过滤器,点击自定义过滤规则。
自定义过滤规则,可以配置自定义域名解析,也可以阻止访问特定域名。
4.4. 客户机配置使用AdGuard Home
假设宿主机IP为 192.168.56.101 ,那么 resolv.conf 配置为:
1 | nameserver 192.168.56.101 |
具体操作方法参考文档:《DNS入门篇》