解决Debian安装AdGuardHome时端口占用问题

解决Debian安装AdGuardHome时端口占用bind: address already in use的问题

发生这种情况是因为用于 DNS 的53端口已被另一个程序占用。

Debian/Ubuntu 附带一个名为systemd-resolved的本地DNS,它使用该地址127.0.0.53:53,阻止 AdGuard Home 绑定到127.0.0.1:53

通过运行看到:

lsof -i :53

输出应类似于:

1
2
3
COMMAND     PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 14542 systemd-resolve 13u IPv4 86178 0t0 UDP 127.0.0.53:domain
systemd-r 14542 systemd-resolve 14u IPv4 86179 0t0 TCP 127.0.0.53:domain

要解决此问题,您需要禁用systemd-resolved守护程序或选择不同的网络接口并绑定到其上可访问的 IP 地址,例如路由器的 IP 地址。

但如果需要收听localhost,有多种解决方案。

具体操作

请按照以下指南操作。请注意,如果您将 AdGuard Home 与 docker 或 snap 一起使用,则必须自己执行此操作。

/etc/systemd/resolved.conf.d

如有必要,创建目录:

mkdir -p /etc/systemd/resolved.conf.d

停用DNSStubListener并更新 DNS 服务器地址。为此,请创建一个新文件/etc/systemd/resolved.conf.d/adguardhome.conf其中包含以下内容:

1
2
3
[Resolve]
DNS=127.0.0.1
DNSStubListener=no

激活另一个resolv.conf文件:

1
2
mv /etc/resolv.conf /etc/resolv.conf.backup
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

重新启动DNSStubListener:

1
systemctl reload-or-restart systemd-resolved

就完成了


解决Debian安装AdGuardHome时端口占用问题
https://blog.5772447.xyz/posts/53dc6f23/
作者
Maskbugzero
发布于
2023年8月26日
许可协议