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

Docker容器无法访问宿主机DNS服务器问题求助

Docker容器无法访问宿主机AdGuard DNS的解决方案

问题背景

宿主机IP为192.168.1.2,运行AdGuard DNS容器;路由器通过dnsmasq推送192.168.1.2和9.9.9.9作为DNS服务器,宿主机DNS功能正常,/etc/resolv.conf配置如下:

cat /etc/resolv.conf
nameserver 192.168.1.2
nameserver 9.9.9.9

但Docker容器存在以下异常:

  • 容器内执行nslookup www.google.com 192.168.1.2提示;; connection timed out; no servers could be reached
  • 直接执行nslookup www.google.com或nslookup www.google.com 127.0.0.11需等待4秒才生效,实际是fallback到9.9.9.9
  • 容器可正常访问宿主机其他服务(如wget 192.168.10.120:9000),通过容器名adguard执行nslookup www.google.com adguard解析正常,手动为容器添加192.168.1.2作为DNS也无法解决问题

解决方案

1. 检查AdGuard容器端口绑定

确保AdGuard的UDP/TCP 53端口绑定到宿主机的192.168.1.2网卡,而非仅127.0.0.1:

# 查看容器端口映射详情
docker inspect adguard | grep -A 10 "Ports"

正确的映射应为192.168.1.2:53->53/udp和192.168.1.2:53->53/tcp。若为127.0.0.1:53->53/udp,则容器无法通过LAN IP访问。

若使用docker-compose部署,修改docker-compose.yml的ports配置:

services:
  adguard:
    # 其他配置省略
    ports:
      - "192.168.1.2:53:53/udp"
      - "192.168.1.2:53:53/tcp"
      # 其他端口配置

重启容器:

docker-compose restart adguard

2. 放行宿主机防火墙规则

允许Docker容器所在子网访问宿主机53端口:

  • 若使用ufw:
ufw allow in from 172.17.0.0/16 to any port 53 proto udp
ufw allow in from 172.17.0.0/16 to any port 53 proto tcp
  • 若使用firewalld:
firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.17.0.0/16" port port="53" protocol="udp" accept' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.17.0.0/16" port port="53" protocol="tcp" accept' --permanent
firewall-cmd --reload

3. 配置Docker全局DNS指向AdGuard容器

利用容器名解析的优势,配置Docker全局DNS优先使用AdGuard容器:
编辑/etc/docker/daemon.json(若不存在则新建):

{
  "dns": ["adguard", "9.9.9.9"]
}

重启Docker服务:

systemctl restart docker

新创建的容器会默认使用AdGuard作为首选DNS,规避LAN IP的路由问题。

4. 验证修复

在容器内执行以下命令验证:

nslookup www.google.com 192.168.1.2

若能正常解析则问题解决;直接执行nslookup www.google.com应秒出结果,无4秒等待。

内容的提问来源于stack exchange,提问作者JeanPaul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:38:21