使用 Docker 部署 AdguardHome
本文介绍如何在 Ubuntu 中通过 Docker 部署 AdguardHome 实现 DNS 解析和广告过滤。
docker compose
使用下面的 docker-compose 启动
| 1 | services: | 
问题排查
启动容器可能会报错:required port 53 already in use
这说明 53 端口已经被占用,这个端口默认被
systemd-resolved 占用。
查看占用的进程
| 1 | sudo lsof -i :53 | 
若显示如下输出,则说明被 systemd-resolved 占用了。
 
解除占用
- 先停用 systemd-resolved 服务 - 1 - sudo systemctl stop systemd-resolved 
- 编辑 /etc/systemd/resolved.conf 文件,取消 DNSStubListener - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13- vi /etc/systemd/resolved.conf 
 # 将 DNSStubListener 设置为 no
 [Resolve]
 #DNS=8.8.8.8
 #FallbackDNS=
 #Domains=
 #LLMNR=no
 #MulticastDNS=no
 #DNSSEC=no
 #Cache=yes
 #取消注释,把yes改为no,配置必须单行存在
 DNSStubListener=no
- 将 resolv.conf 指向 - systemd-resolved管理的文件- 在现代 Linux 系统中, - systemd-resolved是一个用于管理 DNS 解析的服务。它提供了对 DNS、LLMNR 和 mDNS 的支持,并可以动态更新 DNS 配置。通过将 resolv.conf 指向- systemd-resolved管理的文件,可以确保系统的 DNS 配置始终与- systemd-resolved保持一致。- 1 
 2
 3
 4- # 备份原来的 resolv.conf 
 sudo cp /etc/resolv.conf /etc/resolv.conf.bak
 # 删除原文件并建立软链接
 sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
- 查看生效 - 1 
 2
 3
 4- # 重启服务 
 sudo systemctl restart systemd-resolved.service
 # 查看是否可用
 lsof -i :53
参考
本文参考以下文章,在此致以诚挚谢意!