之前写过一篇文章如何搭建自己的 AdGuard Home 去广告,过去很久了,现在在一台新的 Ubuntu 设备上再次安装 [[AdGuard Home]],再次记录一下如何解决 53 端口被占用的问题。
53 端口的服务
因为 AdGuard Home 要通过 53 端口提供 DNS 解析的功能,但是默认情况下 Ubuntu 的 systemd-resolved 会占用 53 端口来提供本地的 DNS 解析缓存服务。
使用 sudo lsof -i :53
或者 netstat 命令查看
编辑配置文件
sudo vim /etc/systemd/resolved.conf
修改文件
[Resolve]
DNS=1.1.1.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=yes
DNSStubListener=no
#ReadEtcHosts=yes
将其中的 DNS 和 DNSStubListener
字段做如上修改。
然后重启服务
sudo systemctl restart systemd-resolved.service
再次查看 53 端口,没有被占用,之后就可以启动 AdGuard Home 了。
/etc/resolv.conf 文件和 systemd-resolved 进程的关系
systemd-resolved 是 systemd 中提供的一个 DNS 解析器服务。它可以自动管理 /etc/resolv.conf 文件,并提供一些额外的功能,例如:
- DNS 缓存: 缓存 DNS 查询结果,以提高解析速度。
- DNSSEC 支持: 支持 DNSSEC 安全扩展,以提高 DNS 解析的安全性。
- 多 DNS 服务器: 支持同时使用多个 DNS 服务器,以提高可靠性。
systemd-resolved 默认情况下是启用的。如果启用了 systemd-resolved,它会将 /etc/resolv.conf 文件配置为指向一个符号链接,该符号链接指向 systemd-resolved 管理的 stub-resolv.conf 文件。stub-resolv.conf 文件包含了 systemd-resolved 提供的 DNS 服务器信息。
如果您想要手动配置 /etc/resolv.conf 文件,需要先禁用 systemd-resolved 服务。您可以通过以下命令禁用 systemd-resolved 服务:
sudo systemctl disable systemd-resolved
禁用 systemd-resolved 服务后,/etc/resolv.conf 文件将不再被自动管理。您可以直接编辑 /etc/resolv.conf 文件,并重启网络服务使更改生效。