You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04.3 LTS上Docker部署Pi-hole引发网络异常及端口冲突问题的解决咨询

Ubuntu 22.04.3 LTS上Docker部署Pi-hole引发网络异常及端口冲突问题的解决咨询

看起来你遇到的核心问题是systemd-resolved和Pi-hole的53端口冲突,加上容器内DNS配置导致的解析循环,我来一步步帮你理清并解决:


先复盘你的问题根源

  1. 容器内DNS循环问题:你最初运行命令里加的--dns=127.0.0.1确实是坑——Pi-hole本身就是DNS服务器,容器把DNS指向自己的127.0.0.1,会导致DNS请求反复在容器内打转,这正是你网络慢到离谱的直接原因。
  2. systemd-resolved禁用后的网络紊乱:Ubuntu 22.04默认用systemd-resolved做DNS解析服务,直接禁用它会破坏系统默认的DNS配置链。哪怕之后重新启用,也可能因为端口抢占失败(比如Pi-hole还占着53)或者配置文件没恢复,导致网络一直异常。

最优解决方案:不用禁用systemd-resolved,避开端口冲突

我们只需要修改systemd-resolved的配置,让它放弃监听53端口,这样Pi-hole可以正常使用53,系统DNS服务也能正常运行:

  1. 编辑systemd-resolved的配置文件:
    sudo nano /etc/systemd/resolved.conf
    
  2. 找到DNSStubListener这一行,去掉注释并改成:
    DNSStubListener=no
    
  3. 保存退出后,重启systemd-resolved服务:
    sudo systemctl restart systemd-resolved.service
    
    此时53端口就空出来给Pi-hole用了,系统DNS服务也不会受影响。

修正Pi-hole的运行命令

去掉导致循环的--dns=127.0.0.1,同时确保ServerIP填你的主机真实IP(不是容器IP),调整后的完整命令:

docker run -d --name pihole-cont \
  -p 53:53/tcp -p 53:53/udp \
  -p 67:67/udp \
  -p 80:80 -p 443:443 \
  -v "${DOCKER_CONFIGS}/dnsmasq.d/:/etc/dnsmasq.d/" \
  -e ServerIP=[你的主机IP地址] \
  --restart=unless-stopped \
  --cap-add=NET_ADMIN \
  --dns=1.1.1.1 \
  pihole/pihole:latest

快速恢复当前异常网络的方法

不用粗暴清理所有容器镜像,按下面步骤操作就能恢复:

  1. 先停止Pi-hole容器:
    docker stop pihole-cont
    
  2. 按前面的步骤修改/etc/systemd/resolved.conf,重启systemd-resolved服务:
    sudo systemctl restart systemd-resolved.service
    
  3. 检查系统DNS配置文件是否正常:
    正常情况下/etc/resolv.conf应该是软链接到/run/systemd/resolve/stub-resolv.conf,如果不是,重新创建链接:
    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
    
    这样你的网络就能立刻恢复正常。

补充:Pi-hole登录密码的获取/重置

你提到不知道登录密码,可以用这个命令查看容器初始密码:

docker logs pihole-cont | grep "password"

或者直接重置成你想要的密码:

docker exec -it pihole-cont pihole -a -p

备注:内容来源于stack exchange,提问作者SO_32

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 12:48:04