百度
360搜索
搜狗搜索

linux为什么重启DNS失效详细介绍

在 Linux 系统中,重启后 DNS 配置失效通常是由于 DNS 设置未正确持久化,或被系统服务自动覆盖导致。以下是常见原因及解决方法:

一、常见原因分析

1.
/etc/resolv.conf 被系统服务自动覆盖

  • 默认行为:多数 Linux 发行版通过网络管理服务(如systemd-resolvedNetworkManagerdhcpcddhclient)动态管理resolv.conf,手动修改该文件后,服务重启或网络重新连接时会被自动覆盖。
  • 典型场景
    • 使用 DHCP 获取 IP 时,DHCP 服务器会分配 DNS 服务器,覆盖手动设置。
    • systemd-resolved(现代系统默认)或NetworkManager(图形环境)会自动生成resolv.conf,指向本地缓存(如127.0.0.53)。

2.
未在持久化配置文件中设置 DNS

  • 静态 IP 场景:若使用静态 IP,DNS 应配置在网络接口的配置文件中(如/etc/netplan/*.yaml/etc/sysconfig/network-scripts/ifcfg-<接口>/etc/network/interfaces),而非直接修改resolv.conf
  • DHCP 场景:若需固定 DNS,需在 DHCP 配置中指定(如dhclient.conf),或通过网络管理工具设置。

3.
不同发行版的网络管理工具差异

  • Ubuntu/Debian:默认使用netplanNetworkManager,DNS 配置需在netplan文件或nm-connection-editor中设置。
  • CentOS/RHEL
    • 旧版本(如 CentOS 7):通过/etc/sysconfig/network-scripts/ifcfg-<接口>配置。
    • 新版本(如 CentOS 8/Fedora):默认使用systemd-networkdNetworkManager

  • Arch/Manjaro:常用systemd-resolveddhcpcd,需在接口配置文件中设置 DNS。

二、解决方法

1.
通过持久化配置文件设置 DNS(推荐)

  • 静态 IP 配置(以 CentOS 7 为例)
    编辑网络接口文件(如/etc/sysconfig/network-scripts/ifcfg-eth0),添加:
    ini

    保存后重启网络服务:
    bash

    systemctl restart network

  • Ubuntu/Debian(netplan)
    编辑/etc/netplan/*.yaml,添加:
    yaml

    networkd

    no

    192.168.1.10/24

    8.8.8.8 8.8.4.4

    应用配置:
    bash

     netplan apply

  • 使用 NetworkManager(图形 / CLI)

    • 图形界面:进入 “网络设置”→ 编辑连接 → IPv4/IPv6 设置 → 手动指定 DNS。
    • CLI:通过nmcli命令:bash
      nmcli connection modify 连接名 ipv4.dns 

      nmcli connection up 连接名

2.
禁用systemd-resolved(传统模式)

  • 若需直接使用resolv.conf(不推荐现代系统):bash
     systemctl stop systemd-resolved

    systemctl disable systemd-resolved

    /etc/resolv.conf

    /run/resolvconf/resolv.conf /etc/resolv.conf

    然后通过resolvconf工具管理 DNS(如编辑/etc/resolvconf/resolv.conf.d/base)。

3.
临时固定resolv.conf(不推荐,仅临时生效)

  • 添加注释告知系统保留配置(部分服务支持):bash
       /etc/resolv.conf

    /etc/resolv.conf

    但此方法在多数情况下会被服务覆盖,仅适用于临时测试。

三、验证配置是否持久化

  1. 重启系统后,检查/etc/resolv.conf内容是否保留。
  2. 查看网络服务状态:bash
    systemctl status systemd-resolved  

    912systemctl status systemd-resolved

  3. 使用nmcli connection show(NetworkManager 环境)或ip addr查看接口配置中的 DNS 是否正确。

总结

根本原因是 DNS 配置未通过系统认可的持久化方式(如网络接口配置文件、管理工具)设置,而是直接修改了动态生成的resolv.conf。解决关键在于根据发行版和网络模式(DHCP / 静态 IP),通过官方推荐的工具或配置文件设置 DNS,确保重启后配置不被覆盖。

阅读更多 >>>  linux命令uname什么意思

网站数据信息

"linux为什么重启DNS失效"浏览人数已经达到17次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux为什么重启DNS失效的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!