5154

Good Luck To You!

Linux修改DNS后为什么重启就失效,如何永久生效?

在Linux操作系统中,域名系统(DNS)的配置是一项基础且至关重要的网络管理任务,DNS扮演着互联网“电话簿”的角色,负责将我们易于记忆的域名(如www.google.com)翻译成计算机能够理解的IP地址(如142.250.191.78),正确设置DNS不仅能确保网络访问的顺畅,还能提升浏览速度、增强安全性,甚至实现内容过滤等高级功能,本文将深入探讨在Linux环境下设定DNS的多种方法,涵盖从传统配置到现代系统管理工具的广泛应用,并提供实用的验证与排错技巧。

Linux修改DNS后为什么重启就失效,如何永久生效?


理解DNS配置的核心文件

在探讨具体方法之前,我们首先需要了解Linux系统中DNS配置的核心文件——/etc/resolv.conf,这个文件是大多数Unix-like系统用来解析域名的配置文件,其内容通常包含以下关键指令:

  • nameserver [IP地址]:指定DNS服务器的IP地址,您可以指定多个,系统会按顺序尝试查询,通常建议设置至少两个,一个主用,一个备用。
  • search [域名]:设置默认的域名搜索列表,当您尝试访问一个不包含完整域名的主机时(访问server1而非server1.example.com),系统会自动尝试在此列表后追加域名进行查询。
  • domain [域名]:指定本地域名,功能与search类似,但只能定义一个。

一个典型的/etc/resolv.conf文件示例如下:

nameserver 8.8.8.8
nameserver 8.8.4.4
search mylocal.lan

在现代Linux发行版中,直接手动编辑此文件可能并非最佳或永久方案,因为系统服务可能会自动覆盖它。


临时性设置(直接编辑 /etc/resolv.conf

这是最直接、最快捷的方法,但通常是临时的,它非常适合用于快速测试或紧急修复。

操作步骤:

  1. 打开终端,使用您喜欢的文本编辑器(如nanovim)以管理员权限打开文件:

    sudo nano /etc/resolv.conf
  2. 修改或添加nameserver行,要使用Google的公共DNS和Cloudflare的DNS:

    # 由NetworkManager管理的原有内容可能会被注释掉或删除
    nameserver 8.8.8.8
    nameserver 1.1.1.1
  3. 保存文件并退出。

重要提示: 这种修改在系统重启或网络服务重启后很可能会被恢复,原因在于,现代系统大多使用systemd-resolvedNetworkManager等服务来动态管理网络配置,它们会根据自身规则重新生成/etc/resolv.conf文件,这种方法仅适用于临时场景。


永久性设置(使用 systemd-resolved

对于使用systemd作为初始化系统的现代Linux发行版(如Ubuntu 18.04+, Debian 10+, Fedora 33+),systemd-resolved是默认的DNS解析服务,通过配置它,可以实现永久性的DNS设置。

操作步骤:

  1. 检查服务状态: 确认systemd-resolved服务正在运行。

    Linux修改DNS后为什么重启就失效,如何永久生效?

    systemctl status systemd-resolved
  2. 编辑主配置文件: systemd-resolved的主配置文件位于/etc/systemd/resolved.conf,使用管理员权限打开它:

    sudo nano /etc/systemd/resolved.conf
  3. 修改DNS设置: 在文件的[Resolve]部分,找到或添加以下行,取消相关行前的注释符()并填入您希望的DNS服务器地址。

    [Resolve]
    DNS=8.8.8.8 1.1.1.1
    # Domains= example.com
    # FallbackDNS= 1.1.1.1 8.8.4.4
    • DNS=:指定全局的DNS服务器,多个地址用空格隔开。
    • FallbackDNS=:当DNS=指定的服务器无法响应时,使用的备用DNS服务器。
  4. 创建符号链接(如果需要): 在某些系统中,/etc/resolv.conf可能不是指向systemd-resolved的存根文件,为了确保配置生效,最好创建一个正确的符号链接。

    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
  5. 重启服务: 保存配置文件后,重启systemd-resolved服务以使更改生效。

    sudo systemctl restart systemd-resolved

您的DNS设置将是永久性的,不会因重启而丢失,您可以使用resolvectl status命令来验证当前的DNS配置。


通过 NetworkManager 设置

NetworkManager是许多桌面版Linux和部分服务器版Linux(如CentOS/RHEL)中用于管理网络连接的强大工具,它提供了图形界面(GUI)和命令行界面(CLI)两种配置方式。

图形界面(GUI)方式

  1. 打开系统设置中的“网络”或“Wired/Wireless”设置。
  2. 选择您正在活动的网络连接(有线连接1”),点击齿轮图标进入其详细设置。
  3. 切换到“IPv4”或“IPv6”标签页。
  4. 将“DNS”设置方法从“自动(DHCP)”更改为“手动”。
  5. 在DNS服务器输入框中,填入您想要的DNS服务器地址,多个地址用逗号或换行隔开。
  6. 点击“应用”或“保存”,然后禁用再启用该网络连接以使设置生效。

命令行(CLI)方式(nmcli

nmcliNetworkManager的命令行工具,非常适合在服务器或无头环境下使用。

  1. 查看网络连接名称:

    nmcli connection show

    假设您的连接名称是Wired connection 1

  2. 为该连接设置DNS服务器:

    sudo nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8 1.1.1.1"
  3. 应用更改:

    sudo nmcli connection up "Wired connection 1"

    或者,如果不想中断连接,可以尝试:

    Linux修改DNS后为什么重启就失效,如何永久生效?

    sudo nmcli device reapply eth0  # 假设您的网卡是eth0

通过NetworkManager设置的DNS同样具有持久性,因为它会自动更新/etc/resolv.conf文件。


验证与故障排除

配置完成后,验证DNS是否按预期工作至关重要。

工具命令 用途 示例
nslookup 查询域名对应的IP地址,是最直接的验证工具。 nslookup www.wikipedia.org
dig 功能比nslookup更强大的DNS查询工具,提供详细信息。 dig @8.8.8.8 www.archlinux.org
ping 通过ping一个域名,测试从名称解析到网络连通性的整个过程。 ping -c 4 baidu.com

常用公共DNS服务器参考

提供商 主DNS 备用DNS 特点
Google 8.8.8 8.4.4 稳定、快速,全球覆盖广
Cloudflare 1.1.1 0.0.1 强调隐私和安全,速度快
Quad9 9.9.9 112.112.112 自动拦截恶意域名,安全性高
阿里DNS 5.5.5 6.6.6 针对中国大陆用户优化,速度快

相关问答FAQs

Q1: 为什么我修改了 /etc/resolv.conf 文件后,重启系统或网络服务后设置又被还原了?

A: 这种情况在现代Linux系统中非常普遍,根本原因是您的系统正在使用网络管理服务(如systemd-resolvedNetworkManager)来动态控制网络配置,这些服务的设计目标是自动处理网络变化,它们会根据自身的配置逻辑覆盖/etc/resolv.conf文件。systemd-resolved可能会将其管理的/run/systemd/resolve/resolv.conf文件链接到/etc/resolv.conf,直接编辑/etc/resolv.conf被视为临时性操作,正确的做法是去修改这些服务的核心配置文件(如/etc/systemd/resolved.conf)或通过其专用工具(如nmcli)进行设置,这样才能保证配置的持久性。

Q2: 使用公共DNS服务器(如 Google DNS 或 Cloudflare DNS)安全吗?有什么优缺点?

A: 使用公共DNS服务器是一个权衡利弊的选择。

优点:

  • 速度与可靠性: 公共DNS服务商通常拥有全球分布的庞大服务器网络和智能路由技术,能提供比许多默认的ISP(互联网服务提供商)DNS更快的解析速度和更高的可用性。
  • 安全增强: 部分公共DNS(如Quad9)内置了恶意网站过滤器,可以有效阻止用户访问已知的钓鱼、挂马等危险网站,提供了一层额外的安全保护。
  • 审查规避: 在某些情况下,可以绕过ISP对特定网站的DNS劫持或封锁。

缺点:

  • 隐私问题: 这是最大的顾虑,DNS查询记录反映了您的网络浏览习惯,即您访问了哪些网站,虽然多数知名公共DNS服务商宣称不会永久存储或出售这些数据,但理论上它们有能力看到您的全部浏览历史,相比之下,您的ISP也能看到这些信息。
  • 地域优化: 某些ISP的DNS可能针对其服务范围内的本地或CDN(内容分发网络)资源做了优化,使用距离较远的公共DNS可能会导致访问本地网站或服务的速度变慢。

对于大多数用户而言,使用信誉良好的公共DNS(如Cloudflare或Google)是利大于弊的,尤其是在速度和安全性方面,如果您对隐私有极高的要求,可以选择那些明确声明注重用户隐私的DNS服务,或者考虑使用加密DNS(如DoH, DoT)。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.