使用 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
12vi /etc/systemd/resolved.conf
# 将 DNSStubListener 设置为 no
[Resolve]
#DNS=8.8.8.8
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
DNSStubListener=no #取消注释,把yes改为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
参考
本文参考以下文章,在此致以诚挚谢意!