☰
AdGuardHome端口冲突,3步彻底解决
2026/10/27 10:11:41 网站建设 项目流程

AdGuardHome端口冲突,3步彻底解决

【免费下载链接】AdGuardHomeNetwork-wide ads & trackers blocking DNS server项目地址: https://gitcode.com/gh_mirrors/ad/AdGuardHome

第一次启动 AdGuardHome,安装页停在validating ports: listen tcp 0.0.0.0:53: bind: address already in use。这类 AdGuardHome端口冲突 几乎只有一个原因:系统自带的 DNS 服务占了 53,或者别的 Web 服务占了 3000。

不用慌,先用一条命令确认谁在占用,再改配置文件里的两行,最后一步验证就能闭环。

查谁占了 53 或 3000

在服务器上执行:

ss -tulnp | grep -E ':(53|3000)\b'

看输出里的进程名:如果出现0.0.0.0:53的 LISTEN 行,且进程是named或systemd-resolved,就是它冲突了,Linux 默认用 systemd-resolved 占着 53。如果什么都没打印出来,说明不是端口问题,去查防火墙或服务日志。

改这两行(裸机安装)

配置文件是安装目录下的AdGuardHome.yaml,结构可对照 internal/next/AdGuardHome.example.yaml。只动dns.addresses和http.addresses两处:

dns: addresses: - '0.0.0.0:5353' http: addresses: - '0.0.0.0:8080'

dns.addresses决定 DNS 监听端口,http.addresses决定管理界面端口。5353 和 8080 很少被占用,换成任意空闲端口都可以。保存后重启服务即可生效。

改 -p 映射(Docker 部署)

容器内部本来就监听 53 和 3000,你只需要改-p里宿主侧的端口,配置文件一个字都不用动:

docker run -d -p 127.0.0.1:5353:53 \ -p 127.0.0.1:8080:3000 adguard/adguardhome

原理和裸机一样:左边是宿主机端口,右边是容器内端口。用 compose 的话同步改ports字段。

验证新端口通了没

curl -s http://127.0.0.1:8080/control/status dig @127.0.0.1 -p 5353 example.com +short

成功的标准:第一条返回含"dns_status": "running"的 JSON,第二条返回 example.com 的 IP 地址。两条都通了才算改对。万一不生效,把这两行改回原值重启即可回退。

避开 4 个常见坑

坑现象一句话处理
客户端没更新 DNS 地址设备仍指旧 53,广告没拦住设备/路由器改成新端口
防火墙没放行浏览器打不开管理界面ufw/firewalld 放行新端口
Docker 映射没改宿主机旧端口仍被占复查两条 -p 映射
pprof 调试端口被占日志报 6060 in use改 http.pprof.enabled: false

【免费下载链接】AdGuardHomeNetwork-wide ads & trackers blocking DNS server项目地址: https://gitcode.com/gh_mirrors/ad/AdGuardHome

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询