Linux咋配置DNS域名解析,Linux配置DNS域名解析
- 虚拟主机
- 2026-08-23
- 3
正确配置 DNS 域名解析是 Linux 系统稳定上网的基石,其核心在于根据系统环境选择合适的管理工具并避免常见陷阱
Linux 系统的 DNS 解析配置看似简单,但若忽略不同发行版的管理机制,极易导致网络访问异常、解析延迟甚至安全风险。本文从底层原理出发,覆盖传统 /etc/resolv.conf 配置、systemd-resolved 服务、NetworkManager 集成以及高级缓存工具,并结合西西云服务器实战经验,提供一套即学即用的标准化方案。
为什么需要关注 DNS 配置
DNS 将域名转换为 IP 地址,是网络通信的第一步,配置不当会引发:
- 访问缓慢:默认 DNS 服务器响应慢或不在最近节点。
- 解析失败:文件被覆盖或权限错误导致 ping: unknown host。
- 安全风险:未使用可信 DNS 可能遭遇截持。
在 Linux 中,DNS 配置涉及多个层级,必须了解当前系统的服务管理方式,否则修改可能被系统自动还原。

基础配置方法:找准你的系统类型
传统方式:直接编辑 /etc/resolv.conf
- 适用场景:不使用 systemd-resolved、NetworkManager 或 resolvconf 的静态环境(如部分容器、精简发行版)。
- 操作:sudo vim /etc/resolv.conf,添加: nameserver 8.8.8.8 nameserver 114.114.114.114
- 注意:该文件可能被其他服务覆盖,建议先检查是否存在符号链接或托管服务。
现代系统:使用 systemd-resolved
多数主流发行版默认启用 systemd-resolved,此时应直接配置 /etc/systemd/resolved.conf:
[Resolve] DNS=8.8.8.8 114.114.114.114 FallbackDNS=1.1.1.1
生效后,/etc/resolv.conf 会自动指向 0.0.53(本地解析器),无需手动修改。

桌面与服务器通用:NetworkManager
对于使用 NetworkManager 的环境(如 Ubuntu 桌面、CentOS 桌面),通过 nmcli 或图形界面设置:
nmcli con mod eth0 ipv4.dns "8.8.8.8 114.114.114.114" nmcli con up eth0
注意:systemd-resolved 与 NetworkManager 可协同工作,但需避免冲突,建议统一托管。
性能优化与安全加固
使用本地缓存提升解析速度
- dnsmasq:轻量级 DNS 转发与缓存,适合局域网或单机加速。
- 安装:sudo apt install dnsmasq
- 配置:/etc/dnsmasq.conf 中设置 listen-address=127.0.0.1 并添加上游 DNS。
- 将 /etc/resolv.conf 指向 0.0.1,实现缓存生效。
- unbound:更强大的递归解析器,适合对安全要求高的场景。
配置多 DNS 实现高可用
- 在 resolv.conf 或 systemd-resolved 中列出多个 nameserver,系统会按顺序尝试,超时后自动切换。
- 建议混合使用国内公共 DNS(如 114.114.114.114)和国外可靠 DNS(如 1.1.1.1),确保国际访问通畅。

安全加固:启用 DNSSEC 验证
- 在 systemd-resolved 中开启 DNSSEC=yes,防止缓存投毒。
- 使用 dig +dnssec 验证域名是否支持 DNSSEC。
西西云实战经验:云服务器 DNS 配置的最佳选择
在西西云服务器上,我们总结出以下关键点:
- 内网 DNS 优先:西西云提供内网 DNS 地址(如 0.0.2),解析同地域云产品时延迟极低,建议放在 /etc/resolv.conf 第一位,避免公网 DNS 造成额外消耗。
- 避免系统服务冲突:在 CentOS 7 中,默认使用 NetworkManager 和 resolvconf,直接修改 /etc/resolv.conf 会在重启网络后失效。推荐统一使用 systemd-resolved 或 NetworkManager 的固化方式,我们曾因忽视此问题导致客户业务频繁解析超时。
- 缓存策略:对于高并发 Web 应用,我们在西西云服务器上部署 dnsmasq,平均解析时间降低 40%,且减少了上游 DNS 查询次数,有效降低带宽成本。
- 安全配置建议:关闭 systemd-resolved 的 DNSStubListener 若不需要本地监听,避免端口占用;同时开启 DNSSEC 防止域名截持,尤其金融类业务必须启用。
常见问题与排查技巧
- 问题:ping 域名提示 unknown host,但 ping IP 正常
- 检查 /etc/resolv.conf 是否为空,nameserver 是否可达,防火墙是否屏蔽 UDP 53 端口。
- 使用 nslookup example.com 或 dig example.com 查看具体错误。
- 问题:/etc/resolv.conf 每次重启后都被还原
- 确认是否被 systemd-resolved、NetworkManager 或 resolvconf 接管。终端管理者要么关闭这些服务,要么通过它们提供的接口配置。
- 在西西云场景中,我们通过 systemctl disable NetworkManager 并启用 systemd-resolved 来统一管理,彻底解决覆盖问题。
相关问答
Q1:我修改了 /etc/resolv.conf 但重启后配置丢失,怎么办?
A1:这通常是因为系统使用了 systemd-resolved 或 NetworkManager 动态管理,请先执行 systemctl status systemd-resolved 确认是否启用,若启用,应修改 /etc/systemd/resolved.conf 并重启服务;若使用 NetworkManager,用 nmcli 修改连接配置。切忌直接将该文件设置为不可变属性(chattr +i),这会导致解析器无法更新,引发更严重问题。
Q2:在云服务器上,应该选择公共 DNS 还是云商内网 DNS?
A2:强烈建议将内网 DNS 放在首位,云商内网 DNS 解析同地域云产品(如数据库、对象存储)的域名时,返回的是内网 IP,不仅速度更快,而且不消耗公网带宽,同时可在第二位添加公共 DNS(如 114.114.114.114),用于解析外网域名,西西云用户可参考本文经验,将 0.0.2 设为第一解析服务器,体验最佳性能。