麒麟 DNS 解析与 hosts 策略怎么定
服务器 DNS 配置(/etc/resolv.conf 管理方)与 hosts 文件的边界:谁负责集群内互认、谁负责外网解析,避免 hosts 膨胀与解析漂移。
结论先行
原则一句话:集群内节点互认 + 少量例外走 hosts(兜底),其余解析统一交给 DNS。hosts 不是「小 DNS」,写多了就漂移。服务器(如 高级服务器 V11 x86-64、高级服务器 V11 arm64)上按此定策略。
文件与工具
| 文件 | 作用 | 管理方 |
|---|---|---|
/etc/resolv.conf |
上游 DNS 服务器列表 | 通常由 NetworkManager / systemd-resolved 生成,手工改易被刷 |
/etc/hosts |
本机解析例外 | 人工维护,只放例外 |
/etc/nsswitch.conf |
解析顺序(files/dns) | 保持基线(通常 hosts: files dns) |
# 查当前生效的解析路径
cat /etc/resolv.conf
systemd-resolve --status # 或 nmcli device show(按发行版组件为准)
# 测试解析
getent hosts 目标域名
dig 目标域名 # 有 dig 时用
策略定法
- DNS 上游:内网部署 DNS 服务器则指内网;不部署就指可外发的上游。集群统一一套,别各机各写。
- hosts 只放例外:集群内节点名互认、DNS 暂时没建好的过渡项。节点名用固定 IP,扩缩容时同步改所有节点(或改用 DNS 记录)。
- 防 resolv.conf 被刷:用网卡配置(NetworkManager profile / 静态配置)下发 DNS,而不是手工覆盖文件;发现文件内容异常时查生成方而不是硬写。
某条目的默认解析组件(systemd-resolved 是否默认启用)以条目页说明为准,查 麒麟镜像列表。
常见误操作
- 手工改 resolv.conf,NetworkManager 一刷回原样,排障绕弯。
- hosts 里写外网域名 → 外网变更后解析死。
- 节点名各机 hosts 不一致 → 集群互相解析失败。