跳到主要内容

Debian 释放 53 端口占用

Debian 10 及之后版本默认启用 systemd-resolved,它会监听 127.0.0.53:53 提供本地 DNS 解析。当需要在本机部署 DNS 服务(如 AdGuard Home、dnsmasq、Pi-hole)时就会提示 53 端口被占用。

解决办法是让 systemd-resolved 不再监听 53 端口(仅关闭 DNSStubListener,系统解析仍然可用)。

操作步骤​

1. 停止 systemd-resolved​

systemctl stop systemd-resolved

2. 修改配置文件​

nano /etc/systemd/resolved.conf

找到 #DNSStubListener=yes 这一行,取消注释并改为 no:

#DNS=
#FallbackDNS=
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=yes
#LLMNR=yes
#Cache=yes
#CacheFromLocalhost=no
DNSStubListener=no
#DNSStubListenerExtra=
#ReadEtcHosts=yes
#ResolveUnicastSingleLabel=no

3. 覆盖 /etc/resolv.conf​

systemd-resolved 关闭监听后,原来的 /etc/resolv.conf 软链接会指向失效的 stub 地址,需要改为指向真实的 upstream 配置:

ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

4. 启动 systemd-resolved​

systemctl start systemd-resolved

此时 53 端口不再被占用,resolv.conf 中记录的是上游 DNS,系统解析不受影响。

验证​

cat /etc/resolv.conf
ss -lunp | grep :53
  • resolv.conf 中应出现真实的上游 DNS 地址(如 8.8.8.8、223.5.5.5)。
  • ss 输出中不应再有 systemd-resolve 进程占用 53 端口。