在Debian操作系统中,域名系统(DNS)的配置是确保网络连接顺畅的关键环节,DNS负责将人类易于记忆的域名(如www.google.com)解析为机器能够识别的IP地址,正确添加或修改DNS服务器,不仅能提高网络访问速度,还能增强网络的安全性和稳定性,本文将详细介绍在Debian系统中添加DNS的几种主流方法,涵盖从传统到现代的不同配置途径,并提供验证步骤和实用建议,帮助用户根据自身需求选择最合适的方案。

编辑 /etc/resolv.conf 文件(临时方法)
/etc/resolv.conf 是Linux系统中用于配置DNS解析的核心文件,直接编辑此文件是最直观、最传统的方法,特别适用于临时的DNS测试或在不使用网络管理器的简单环境中。
文件结构解析
一个典型的 resolv.conf 文件包含以下关键指令:
nameserver: 指定DNS服务器的IP地址,可以指定多个,系统会按顺序依次查询。search: 定义当查询一个不包含完整域名的主机时(查询server1而不是server1.lan.example.com),系统会自动附加的域名后缀列表。domain: 设置本地域名,功能与search类似,但通常只指定一个域名。
操作步骤
-
使用文本编辑器(如
nano或vim)以管理员权限打开该文件:sudo nano /etc/resolv.conf
-
在文件中添加或修改
nameserver行,要使用Google和Cloudflare的公共DNS,可以添加以下内容:# This file is managed by man:systemd-resolved(8). Do not edit. # ... (其他注释) nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 1.1.1.1 -
保存文件并退出编辑器(在
nano中,按Ctrl+X,然后按Y确认,最后按Enter)。
⚠️ 重要提示:临时性
在现代Debian版本(尤其是使用systemd或NetworkManager的系统)中,直接编辑 /etc/resolv.conf 是一个临时性的操作,系统重启或网络服务重启后,该文件可能会被网络管理工具自动覆盖,导致配置丢失,此方法仅推荐用于快速验证或特殊场景,对于持久化配置,应采用下文介绍的推荐方法。
通过网络管理器配置(持久化方法)
为了确保DNS设置在网络服务重启或系统更新后依然有效,最佳实践是通过Debian使用的网络管理器进行配置,目前主流的网络管理器是 systemd-networkd 和 NetworkManager。
通过 systemd-resolved 配置
systemd-resolved 是现代Debian桌面版和服务器版默认使用的系统服务,它提供了一个本地DNS存根解析器,并能集中管理DNS设置。
-
检查服务状态: 确认
systemd-resolved服务正在运行。
systemctl status systemd-resolved
-
编辑配置文件:
systemd-resolved的主配置文件位于/etc/systemd/resolved.conf,使用管理员权限打开它:sudo nano /etc/systemd/resolved.conf
-
修改DNS设置: 在
[Resolve]部分,找到并取消注释(删除行首的)或添加以下两行:[Resolve] DNS=8.8.8.8 1.1.1.1 Domains=~.
DNS=: 后面跟着空格分隔的DNS服务器IP地址。Domains=~.: 这个设置会确保所有域名的查询都通过DNS=指定的服务器进行,避免了与本地网络域名的潜在冲突。
-
应用配置: 保存文件后,重启
systemd-resolved服务以使更改生效。sudo systemctl restart systemd-resolved
-
验证配置: 可以使用
resolvectl命令来查看当前的DNS配置状态。resolvectl status
此命令的输出会清晰显示当前网络接口所使用的DNS服务器。
通过 NetworkManager 配置
NetworkManager 在Debian桌面环境中非常常见,它提供了图形界面(GUI)和命令行界面(CLI)两种配置方式。
图形界面(GUI)配置
- 点击桌面右上角的网络图标,选择“有线设置”或“Wi-Fi设置”。
- 在弹出的网络设置窗口中,找到您正在使用的网络连接(Wired connection 1”),点击旁边的齿轮图标。
- 切换到“IPv4”或“IPv6”选项卡。
- 将“DNS”方法从“自动(DHCP)”更改为“手动”。
- 在DNS服务器地址栏中,输入您想使用的DNS服务器IP地址,每个地址用逗号或空格分隔(
8.8.8, 1.1.1.1)。 - 点击“应用”按钮关闭窗口,新设置会立即生效。
命令行(CLI)配置
使用 nmcli 工具可以高效地管理网络连接。
-
查看当前连接名称:
nmcli connection show
记下您要配置的连接的名称(如
Wired connection 1)。 -
为连接设置DNS: 使用以下命令修改指定连接的IPv4 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"
常用的公共DNS服务器推荐
选择可靠的公共DNS服务器是提升网络体验的第一步,以下是一些广受好评的选择:
| DNS提供商 | 主要DNS | 备用DNS | 特点 |
|---|---|---|---|
| Google Public DNS | 8.8.8 | 8.4.4 | 速度快,稳定,全球覆盖广 |
| Cloudflare DNS | 1.1.1 | 0.0.1 | 强调隐私保护,速度快,响应时间短 |
| Quad9 DNS | 9.9.9 | 112.112.112 | 自动拦截已知恶意网站,注重安全性 |
| 阿里DNS | 5.5.5 | 6.6.6 | 针对中国大陆用户优化,访问国内网站快 |
验证DNS配置是否生效
完成配置后,使用以下工具验证DNS是否按预期工作:
-
ping命令:通过域名测试网络连通性,如果能成功解析到IP并开始接收数据包,说明DNS基本工作正常。ping www.debian.org
-
nslookup或dig命令:这两个是专业的DNS查询工具,可以明确显示是哪个DNS服务器返回了查询结果,是验证配置的最佳工具。nslookup www.debian.org # 或使用 dig,信息更详细 dig www.debian.org
查看命令输出中的“Server”字段,确认它指向您刚刚设置的DNS服务器。
相关问答 (FAQs)
为什么我修改了 /etc/resolv.conf 文件,重启后设置又变回去了?
解答:这是因为现代Debian系统通常由systemd-resolved或NetworkManager等网络管理服务动态管理/etc/resolv.conf文件,当系统启动或网络状态发生变化时,这些服务会根据它们自身的配置文件重新生成并覆盖/etc/resolv.conf文件,导致您手动修改的内容丢失,要实现持久的DNS配置,您需要编辑网络管理服务自己的配置文件(如/etc/systemd/resolved.conf)或使用其提供的工具(如nmcli或图形界面),而不是直接编辑/etc/resolv.conf。
我可以同时设置多个DNS服务器吗?它们是如何工作的?
解答:是的,您可以并且建议设置多个DNS服务器,在配置中,您可以列出多个nameserver条目,nameserver 8.8.8.8 和 nameserver 1.1.1.1,系统的工作机制是按顺序进行查询:当您尝试访问一个域名时,系统会首先向第一个DNS服务器(8.8.8.8)发送请求,如果该服务器在规定时间内无响应或查询失败,系统会自动向第二个DNS服务器(1