Debian Overlay如何配置DNS解析
导读:Debian Overlay 场景下的 DNS 解析配置 先明确 Overlay 类型 若指的是容器网络的 Overlay 网络(如 Docker Swarm 的覆盖网络),DNS 通常由容器运行时/编排系统提供,需要在容器或服务的网络配...
Debian Overlay 场景下的 DNS 解析配置
先明确 Overlay 类型
- 若指的是容器网络的 Overlay 网络(如 Docker Swarm 的覆盖网络),DNS 通常由容器运行时/编排系统提供,需要在容器或服务的网络配置中指定上游 DNS,并确保容器能访问该 DNS。
- 若指的是 OverlayFS(文件系统层叠),它与网络无关,DNS 仍按宿主机的网络栈配置即可。下文分别给出做法。
容器 Overlay 网络的 DNS 配置
- Docker Swarm 服务侧配置
- 在创建或更新服务时通过 --dns 指定上游 DNS,例如:
- docker service create --name web --network my_overlay --dns 8.8.8.8 --dns 1.1.1.1 nginx:alpine
- 如需全局默认 DNS,可在 Docker 守护进程配置 /etc/docker/daemon.json 中设置 “dns”: [“8.8.8.8”,“1.1.1.1”],然后重启 Docker。
- 在创建或更新服务时通过 --dns 指定上游 DNS,例如:
- Docker Compose 示例
- 在 compose 文件的服务下添加 dns 项:
- services:
- web:
- image: nginx:alpine
- dns:
- 8.8.8.8
- 1.1.1.1
- web:
- services:
- 在 compose 文件的服务下添加 dns 项:
- 验证
- 进入容器执行:cat /etc/resolv.conf 应能看到配置的 nameserver;使用 dig example.com 或 nslookup example.com 验证解析是否正常。
- 网络连通性要点
- 确保 Overlay 网络中的容器能路由到上游 DNS(如 UDP/TCP 53 端口未被拦截);如使用自定义网段,确认路由与安全组策略允许 DNS 流量。
宿主机或容器基于 Debian 的 DNS 配置
- 直接写入 resolv.conf(简单但不持久)
- echo “nameserver 8.8.8.8” | sudo tee /etc/resolv.conf
- echo “nameserver 1.1.1.1” | sudo tee -a /etc/resolv.conf
- 注意:使用 DHCP 或某些网络管理工具时,/etc/resolv.conf 可能被覆盖。
- 使用 systemd-resolved(推荐)
- 编辑 /etc/systemd/resolved.conf:
- [Resolve]
- DNS=8.8.8.8 1.1.1.1
- DNSOverTLS=yes(可选,启用 DoT)
- 重启服务:sudo systemctl restart systemd-resolved
- 验证:resolvectl status 应显示配置的 DNS 与 DoT 状态。
- 编辑 /etc/systemd/resolved.conf:
- 使用 resolvconf 管理(适合 DHCP 场景)
- 安装:sudo apt-get install resolvconf
- 写入:sudo tee /etc/resolvconf/resolv.conf.d/base <
<
EOF
- nameserver 8.8.8.8
- nameserver 1.1.1.1
- EOF
- 更新:sudo resolvconf -u
- 使用 NetworkManager(nmcli)
- 查看连接:nmcli con show
- 设置 DNS:nmcli con mod < 连接名或UUID> ipv4.dns “8.8.8.8 1.1.1.1”
- 使生效:nmcli con up < 连接名或UUID> (或 nmcli con reload)
- 使用 ifupdown 静态配置
- 在 /etc/network/interfaces 对应接口下添加:
- dns-nameservers 8.8.8.8 1.1.1.1
- 重启网络或接口后生效。
- 在 /etc/network/interfaces 对应接口下添加:
验证与排障
- 查看当前解析配置
- 宿主机:cat /etc/resolv.conf;若为 systemd-resolved:resolvectl status
- 容器:docker exec -it < 容器名> cat /etc/resolv.conf
- 功能测试
- dig example.com +short 或 nslookup example.com
- 若启用 DoT:resolvectl query example.com 并检查是否走 TLS
- 常见原因
- /etc/resolv.conf 被 DHCP/NetworkManager/resolvconf 覆盖:改用对应的管理方式或在相应配置中写入 DNS。
- 防火墙/安全组阻断 UDP/TCP 53:放通 DNS 端口,或改用 DoT/DoH 并在防火墙放行 853/443。
- 容器侧未正确继承 DNS:在 Swarm 服务或 Compose 中显式设置 dns,或检查守护进程默认 DNS。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Overlay如何配置DNS解析
本文地址: https://pptw.com/jishu/766655.html
