Linux如何配置DNS地址?DNS设置方法有哪些?

在 Linux 系统中配置 DNS 地址,最推荐且一劳永逸的方式是修改 /etc/resolv.conf 文件或使用系统自带的网络管理工具(如 nmcli),但需要注意,不同发行版和网络管理机制的持久化策略差异显著,直接编辑 resolv.conf 往往会被 systemd-resolved 或 NetworkManager 覆盖。正确的做法是先判断系统使用哪种 DNS 管理机制,再选择对应的持久化配置方案,否则重启后配置将丢失。

本文将按照「先诊断、再配置、后验证」的金字塔逻辑,为你提供一套从入门到精通的完整解决方案,并附带真实的生产环境经验案例。

诊断当前 DNS 管理机制

在动手修改之前,必须先搞清楚系统里的“DNS 管家”是谁,执行以下命令快速判断:

  • 检查是否存在 systemd-resolved:systemctl status systemd-resolved
  • 检查是否安装 NetworkManager:systemctl status NetworkManager
  • 查看当前生效的 DNS:cat /etc/resolv.conf

经验判断:/etc/resolv.conf 头部有 # Generated by NetworkManager 或 # This file is managed by systemd-resolved 字样,说明该文件是动态生成的,直接编辑无效。

推荐配置方案(按场景选择)

使用 NetworkManager 的桌面或服务器系统(如 Ubuntu Desktop、RHEL/CentOS 默认)

推荐使用 nmcli 命令,配置后立即生效且永久保存。

  1. 查看当前连接名称:

    nmcli connection show

  2. 为指定连接设置 DNS(替换实际连接名):

    nmcli connection modify "Wired connection 1" ipv4.dns "223.5.5.5 119.29.29.29"

    nmcli connection modify "Wired connection 1" ipv4.ignore-auto-dns yes

    Linux如何配置DNS地址?DNS设置方法有哪些?

  3. 重启连接生效:

    nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"

  4. 验证:

    cat /etc/resolv.conf

使用 systemd-resolved 的系统(如 Ubuntu 18.04+)

推荐通过配置 /etc/systemd/resolved.conf 来设置全局 DNS。

  1. 编辑文件:

    sudo vim /etc/systemd/resolved.conf

  2. 在 [Resolve] 段落下填入:

    DNS=223.5.5.5 119.29.29.29
    FallbackDNS=8.8.8.8
  3. 重启服务:

    sudo systemctl restart systemd-resolved

  4. 将 /etc/resolv.conf 链接到 systemd 管理的文件:

    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

注意:如果你希望完全绕过 systemd-resolved,也可以直接停用该服务并手动编辑 /etc/resolv.conf,但会造成部分基于 systemd-resolved 的域名解析服务异常,不建议在复杂网络环境中这样做。

无 NetworkManager 的轻量系统(如 Docker 宿主机、最小化 Debian)

直接编辑 /etc/resolv.conf,并配置网络脚本或 resolvconf 实现持久化。

  1. 临时生效:

    sudo vim /etc/resolv.conf

    写入:

    nameserver 223.5.5.5
    nameserver 119.29.29.29
  2. 永久生效(Debian/Ubuntu 下使用 /etc/network/interfaces):

    iface eth0 inet dhcp
        dns-nameservers 223.5.5.5 119.29.29.29
  3. 如果是静态 IP,则在同文件显式指定。

验证 DNS 配置是否生效

配置完成后,用以下命令确认 DNS 已经按预期工作:

Linux如何配置DNS地址?DNS设置方法有哪些?

  • cat /etc/resolv.conf 检查实际使用的 DNS 服务器
  • nslookup example.com 查询解析结果
  • dig example.com | grep SERVER 查看实际被查询的 DNS 服务器 IP

如果发现系统还在使用旧 DNS,优先检查 DHCP 是否覆盖了配置,并在 NetworkManager 或 dhclient 中设置 supersede domain-name-servers 或以 ipv4.ignore-auto-dns yes 方式忽略自动下发 DNS。

酷番云实战经验案例

我们曾服务过一家使用酷番云弹性云主机的客户,其业务系统基于 CentOS 7,程序里硬编码了某个公网域名解析,但服务器频繁出现解析超时。初步排查发现系统默认使用云平台 DHCP 下发的 DNS(即 169.254.0.53 这种链路本地地址),且服务器内网访问依赖自定义内网 DNS 才能解析集群主机名,直接修改 /etc/resolv.conf 后一旦网络重启便失效。

解决方案分三步:

  1. 在酷番云控制台关闭该主机的 DHCP 自动 DNS 下发,改为静态指定。

  2. 登录主机使用 nmcli 手动设置双 DNS(内网优先、公网备用):

    nmcli connection modify eth0 ipv4.dns "10.0.0.2 223.5.5.5"

    nmcli connection modify eth0 ipv4.ignore-auto-dns yes

  3. 通过 chattr +i /etc/resolv.conf 对文件加锁,防止任何程序意外改写。

这样既保证了内网解析速度,又提供了公网域名兜底方案,后续客户业务始终未再出现 DNS 解析中断。在混合云或内网环境,务必优先配置内网 DNS 地址,否则会出现「外网通、内网不通」的诡异故障。

常见问题与避坑指南

  • 不要盲目修改 /etc/resolv.conf

    Linux如何配置DNS地址?DNS设置方法有哪些?

    ,先确认文件是否被系统自动管理。

  • DNS 服务器不要只设一个,至少两个,避免单点故障。
  • 内网和公网 DNS 分开配置,如果用同一个解析器,可能导致内网域名解析超时。
  • 注意 DNS 顺序:第一个 nameserver 会被优先使用,把低延迟、高可靠的那个放前面。
  • 修改后建议立刻 systemctl restart networking(或对应网络服务)再测试,不要缓存旧的解析结果。

相关问答

问 1:为什么我改了 /etc/resolv.conf,重启后又恢复成原来的了?

因为你的系统采用了动态 DNS 管理机制,最典型的是 NetworkManager 或 systemd-resolved,NetworkManager 会在网络状态变化时重新生成 resolv.conf,而 systemd-resolved 会通过 symlink 指向它自己的运行时文件,你需要按上述「场景一」或「场景二」的方法,使用 nmcli 或编辑 /etc/systemd/resolved.conf 来持久化设置,也可以用 chattr +i 防止文件被改写,但这不是正规做法,遇到系统升级或网络管理变更时容易引发意外。

问 2:配置多个 DNS 服务器时,Linux 是如何选择使用的?

Linux 的 resolv.conf 在传统 glibc 解析器中按顺序尝试,首先使用第一个 nameserver,如果超时(默认 5 秒)或返回 SERVFAIL,才继续尝试下一个,如果第一个 DNS 正常但解析记录不存在(NXDOMAIN),则不会切换到第二个,因此多个 DNS 不能简单理解为负载均衡,而是故障转移,新版本系统(如 systemd-resolved)会综合考虑响应时间和历史状态,但总体原则仍然是“第一个优先”,所以把最快、最稳定的 DNS 放在首位是正确策略。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/731740.html

赞 (0)
上一篇 2026年8月27日 12:13
下一篇 2026年8月27日 12:15

相关推荐

  • linux jboss配置教程,linux下jboss怎么配置

    从技术架构到业务落地的全方位解析在当今数字化转型的浪潮中,选择一款合适的云服务器已成为企业IT架构的核心,这不仅关乎成本控制,更直接影响业务稳定性、扩展性及安全性,本文将从技术架构、业务需求、安全策略及运维管理等多个维度,为您提供一份全面的选型指南,技术架构:理解云服务的底层逻辑云服务器并非简单的“远程计算机……

    2026年5月29日
    01783
  • 分布式数据采集如何搭建?从0到1的详细步骤是什么?

    分布式数据采集如何搭建分布式数据采集是现代大数据处理体系中的基础环节,通过多节点协同工作实现高效、稳定、可扩展的数据获取,其核心在于将采集任务分散到多个计算节点,利用并行处理提升效率,同时通过任务调度、数据同步和容错机制确保系统可靠性,搭建分布式数据采集系统需从架构设计、技术选型、实施部署到运维监控全面规划,以……

    2025年12月21日
    03550
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • rsync配置文件在哪,rsync配置文件路径

    rsync的配置文件在Linux运维与数据同步领域,rsync是构建高效、安全数据备份体系的核心引擎,其强大的增量同步能力与灵活的传输协议,使其成为替代传统FTP或SCP的首选方案,许多用户仅停留在命令行基础调用层面,忽略了配置文件rsyncd.conf的深度优化,本文旨在揭示如何通过精细化配置rsync守护进……

    2026年6月14日
    01383
  • 动态模糊吃配置吗?动态模糊开启后对游戏帧数影响大吗?

    开启动态模糊确实会消耗额外的GPU资源,但对整体性能的影响通常远小于抗锯齿、阴影或光线追踪等特效,在大多数现代游戏中,动态模糊带来的帧率下降幅度在5%到15%之间,对中高端显卡几乎可以忽略,但对低端或集成显卡影响明显,是否“吃配置”取决于你的硬件档次、游戏优化程度以及个人对画面与流畅度的取舍,动态模糊的工作原理……

    2026年8月7日
    02033

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(3条)

  • 山山3950的头像
    山山3950 2026年8月27日 17:33

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于管理机制的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!

  • 帅花6889的头像
    帅花6889 2026年8月27日 17:34

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于管理机制的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!

  • 甜学生1210的头像
    甜学生1210 2026年8月27日 17:34

    这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是管理机制部分,给了我很多新的思路。感谢分享这么好的内容!