在Linux操作系统中,域名系统(DNS)的配置是一项基础且至关重要的网络管理任务,DNS扮演着互联网“电话簿”的角色,负责将我们易于记忆的域名(如www.google.com)翻译成计算机能够理解的IP地址(如142.250.191.78),正确设置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)
这是最直接、最快捷的方法,但通常是临时的,它非常适合用于快速测试或紧急修复。
操作步骤:
-
打开终端,使用您喜欢的文本编辑器(如
nano或vim)以管理员权限打开文件:sudo nano /etc/resolv.conf
-
修改或添加
nameserver行,要使用Google的公共DNS和Cloudflare的DNS:# 由NetworkManager管理的原有内容可能会被注释掉或删除 nameserver 8.8.8.8 nameserver 1.1.1.1 -
保存文件并退出。
重要提示: 这种修改在系统重启或网络服务重启后很可能会被恢复,原因在于,现代系统大多使用systemd-resolved或NetworkManager等服务来动态管理网络配置,它们会根据自身规则重新生成/etc/resolv.conf文件,这种方法仅适用于临时场景。
永久性设置(使用 systemd-resolved)
对于使用systemd作为初始化系统的现代Linux发行版(如Ubuntu 18.04+, Debian 10+, Fedora 33+),systemd-resolved是默认的DNS解析服务,通过配置它,可以实现永久性的DNS设置。
操作步骤:
-
检查服务状态: 确认
systemd-resolved服务正在运行。
systemctl status systemd-resolved
-
编辑主配置文件:
systemd-resolved的主配置文件位于/etc/systemd/resolved.conf,使用管理员权限打开它:sudo nano /etc/systemd/resolved.conf
-
修改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服务器。
-
创建符号链接(如果需要): 在某些系统中,
/etc/resolv.conf可能不是指向systemd-resolved的存根文件,为了确保配置生效,最好创建一个正确的符号链接。sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
-
重启服务: 保存配置文件后,重启
systemd-resolved服务以使更改生效。sudo systemctl restart systemd-resolved
您的DNS设置将是永久性的,不会因重启而丢失,您可以使用resolvectl status命令来验证当前的DNS配置。
通过 NetworkManager 设置
NetworkManager是许多桌面版Linux和部分服务器版Linux(如CentOS/RHEL)中用于管理网络连接的强大工具,它提供了图形界面(GUI)和命令行界面(CLI)两种配置方式。
图形界面(GUI)方式
- 打开系统设置中的“网络”或“Wired/Wireless”设置。
- 选择您正在活动的网络连接(有线连接1”),点击齿轮图标进入其详细设置。
- 切换到“IPv4”或“IPv6”标签页。
- 将“DNS”设置方法从“自动(DHCP)”更改为“手动”。
- 在DNS服务器输入框中,填入您想要的DNS服务器地址,多个地址用逗号或换行隔开。
- 点击“应用”或“保存”,然后禁用再启用该网络连接以使设置生效。
命令行(CLI)方式(nmcli)
nmcli是NetworkManager的命令行工具,非常适合在服务器或无头环境下使用。
-
查看网络连接名称:
nmcli connection show
假设您的连接名称是
Wired connection 1。 -
为该连接设置DNS服务器:
sudo nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8 1.1.1.1"
-
应用更改:
sudo nmcli connection up "Wired connection 1"
或者,如果不想中断连接,可以尝试:

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 | 特点 |
|---|---|---|---|
| 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-resolved或NetworkManager)来动态控制网络配置,这些服务的设计目标是自动处理网络变化,它们会根据自身的配置逻辑覆盖/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)。