5154

Good Luck To You!

Linux修改DNS后不生效怎么永久设置nameserver?

在计算机网络世界中,我们习惯于记忆易于理解的域名,www.google.com,而不是一长串难以记忆的IP地址,如 250.191.100,这种将人类友好的域名翻译成机器可读的IP地址的过程,就是域名系统(DNS)的核心功能,而在Linux系统中,负责执行这一查询任务的关键组件,就是我们常说的Nameserver(名称服务器),它就像是互联网的电话簿查询服务,我们的Linux机器通过它来找到通往任何网络目的地的路径。

Linux修改DNS后不生效怎么永久设置nameserver?

DNS与Nameserver的基础概念

需要明确DNS和Nameserver之间的关系,DNS是一个庞大的、分布式的数据库系统,而Nameserver则是这个系统中的具体服务器节点,当您在浏览器中输入一个网址时,您的Linux操作系统会向一个或多个Nameserver发送查询请求,询问“这个域名对应的IP地址是什么?”。

Nameserver本身也有一个层级结构,包括根服务器、顶级域名(TLD)服务器和权威服务器,但对于普通用户和系统管理员来说,最常接触的是递归DNS解析器,也常被称为公共DNS服务器,这些服务器会代替我们完成从根到权威的整个查找过程,并最终返回结果,这就是为什么在配置Linux系统的DNS时,我们通常只需要填写几个公共DNS的IP地址即可。

Linux DNS配置的核心:/etc/resolv.conf文件

在大多数Linux发行版中,DNS解析器的配置都集中在一个关键文件里:/etc/resolv.conf,这个文件告诉系统应该去查询哪些Nameserver,一个典型的 resolv.conf 文件内容如下:

# 这是一个注释行
nameserver 8.8.8.8
nameserver 1.1.1.1
search mycompany.local
options timeout:2 attempts:3

这个文件中最重要的几个指令是:

  • nameserver [IP_address]: 这是指令的核心,它指定了系统要使用的DNS服务器的IP地址,您可以指定多个,系统会按照从上到下的顺序依次尝试,直到获得响应或全部失败为止。
  • search [domain_list]: 当您尝试访问一个不带域名的主机名(server1)时,系统会自动尝试将 search 指令中列出的域名依次附加到主机名后面进行查询,如果配置了 search mycompany.local,查询 server1 时,系统会首先尝试解析 server1.mycompany.local
  • options: 用于调整解析器的行为。timeout:2 设置查询超时时间为2秒,attempts:3 设置重试次数为3次。

如何配置Linux系统的Nameserver

直接手动编辑 /etc/resolv.conf 是最直接的方法,但在现代Linux发行版中,这通常是一个临时的解决方案,因为网络管理服务(如 systemd-networkdNetworkManager)在重启网络或系统时,会根据其自身的配置重新生成此文件,从而覆盖您的手动修改。

为了实现永久性配置,我们需要通过系统所采用的网络管理工具来进行设置。

Linux修改DNS后不生效怎么永久设置nameserver?

使用Netplan(Ubuntu Server 18.04+)

Netplan使用YAML文件进行配置,您可以在 /etc/netplan/ 目录下找到 .yaml 配置文件,并添加 nameservers 部分。

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: yes
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

修改后,运行 sudo netplan apply 使配置生效。

使用NetworkManager(常见于桌面版和Fedora/CentOS)

可以使用命令行工具 nmcli 来修改连接的DNS设置。

# 查看连接名称
nmcli connection show
# 修改指定连接的DNS服务器(例如连接名为"Wired connection 1")
sudo nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 1.1.1.1"
# 重启网络连接使配置生效
sudo nmcli con down "Wired connection 1" && sudo nmcli con up "Wired connection 1"

常用公共DNS服务器选择

选择一个快速、稳定且安全的Nameserver至关重要,以下是一些广受欢迎的公共DNS服务。

Linux修改DNS后不生效怎么永久设置nameserver?

提供商 主DNS 备用DNS 特点
Google 8.8.8 8.4.4 速度快,全球分布广泛,稳定可靠
Cloudflare 1.1.1 0.0.1 注重隐私,速度快,支持DNS-over-TLS/HTTPS
Quad9 9.9.9 112.112.112 自动拦截已知恶意网站,安全性能强
OpenDNS 67.222.222 67.220.220 提供可定制的家庭保护功能,过滤不当内容

验证DNS解析工作状态

配置完成后,您可以使用一些工具来验证DNS是否正常工作。

  • ping: ping www.baidu.com 如果能返回IP地址并开始接收数据包,说明DNS解析基本正常。
  • host: host www.github.com 这是一个简洁的查询工具,会直接显示域名对应的IP地址。
  • dig: dig www.linux.org 这是最强大的DNS查询工具,它会返回详细的查询过程和结果,包括响应时间、权威服务器等信息,非常适合排错。

通过理解DNS的工作原理,并正确使用系统工具来配置Nameserver,您可以确保自己的Linux系统能够稳定、高效地畅游于数字世界。


相关问答 FAQs

问:为什么我修改了 /etc/resolv.conf 文件,重启网络或系统后设置又变回去了? 答: 这是因为现代Linux发行版普遍使用网络管理服务(如 NetworkManagersystemd-networkd)来动态管理网络配置,这些服务在启动或网络状态改变时,会根据其自身的配置模板覆盖 /etc/resolv.conf 文件,直接手动编辑该文件只是一种临时方案,要实现永久性更改,您需要通过系统提供的网络管理工具(如 nmcli、Netplan、nmtui 或编辑对应的网络配置文件)来设置DNS服务器,这样网络管理服务在重新生成配置时就会包含您设定的Nameserver。

问:使用公共DNS(如Google的8.8.8.8)和我的互联网服务提供商(ISP)默认分配的DNS有什么区别? 答: 主要区别在于性能、稳定性和功能,ISP提供的DNS服务器在地理位置上可能更近,理论延迟较低,但有时可能存在速度慢、缓存更新不及时或对某些网站进行屏蔽(审查)的问题,而公共DNS服务,如Google或Cloudflare,通常拥有更强大的基础设施、更广泛的缓存节点和更优化的路由,能提供更快的解析速度和更高的稳定性,一些公共DNS还提供增强功能,如Cloudflare对隐私的保护、Quad9对恶意网站的自动拦截等,这些是ISP默认DNS通常不具备的,根据对速度、安全和隐私的需求,选择合适的公共DNS通常是更好的选择。

发表评论:

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

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

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.