在Arch Linux系统中,DNS(域名系统)配置是确保网络连接正常的关键环节,正确的DNS配置能够加速域名解析、提升上网体验,并增强网络安全性,本文将详细介绍Arch Linux中DNS配置的多种方法,包括使用systemd-resolved、NetworkManager、直接编辑resolv.conf文件以及针对静态IP地址的配置方案,同时涵盖常见问题的排查和优化建议。
DNS配置基础概念
DNS的作用是将人类可读的域名(如www.example.com)转换为机器可识别的IP地址,在Linux系统中,DNS解析通常由以下组件协同完成:
- 解析器库:如glibc的
nsswitch.conf,决定查询DNS的顺序(如先查本地文件再查DNS服务器)。 - 本地缓存:如systemd-resolved,缓存DNS记录以减少重复查询。
- DNS服务器配置:指定使用的DNS服务器地址(如8.8.8.8、1.1.1.1等)。
使用systemd-resolved进行DNS配置(推荐)
systemd-resolved是现代Linux系统默认的DNS解析服务,支持本地缓存、DNS over TLS(DoT)和DNS over HTTPS(DoH)等功能,安全性更高。
启用并检查systemd-resolved状态
sudo systemctl enable --now systemd-resolved systemctl status systemd-resolved
运行后,可通过resolvectl status查看当前DNS配置。
配置DNS服务器
编辑/etc/systemd/resolved.conf文件:
[Resolve] DNS=8.8.8.8 1.1.1.1 # Google和Cloudflare的DNS服务器 FallbackDNS=114.114.114.114 # 备用DNS Domains=~. # 本域名优先解析 DNSStubListener=yes # 监听本地53端口 DNSOverTLS=yes # 启用DNS over TLS
保存后重启服务:

sudo systemctl restart systemd-resolved
验证配置
resolvectl query archlinux.org
若返回解析结果且显示号(表示缓存命中),则配置成功。
使用NetworkManager管理DNS(适用于桌面环境)
Arch Linux中常用的网络管理工具NetworkManager默认会接管DNS配置,需确保其与systemd-resolved协同工作。
配置NetworkManager
编辑/etc/NetworkManager/NetworkManager.conf:
[main] dns=systemd-resolved # 使用systemd-resolved作为DNS后端
设置DNS服务器
在NetworkManager的连接配置中指定DNS:
nm-connection-editor # 图形界面配置 # 或通过命令行: nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 1.1.1.1" nmcli connection up "连接名称"
检查DNS状态
nmcli general status
直接编辑/etc/resolv.conf(不推荐,但兼容旧系统)
传统方式是直接编辑/etc/resolv.conf,但需注意该文件可能被NetworkManager或systemd-resolved覆盖。

临时配置
sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf
永久配置(需锁定文件)
sudo chattr +i /etc/resolv.conf # 防止被修改
手动指定DNS服务器
# /etc/resolv.conf nameserver 8.8.8.8 nameserver 1.1.1.1 search localdomain # 默认搜索域
静态IP环境下的DNS配置
若使用静态IP地址(通过netctl或systemd-networkd配置),需在配置文件中明确指定DNS。
使用netctl
编辑/etc/netctl/eth-static:
Connection=ethernet
Interface=ens33
IP=static
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=('8.8.8.8' '1.1.1.1') # 关键部分
启用配置:
sudo netctl start eth-static
使用systemd-networkd
编辑/etc/systemd/network/20-wired.network:
[Match] Name=ens33 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8 1.1.1.1
重启网络服务:

sudo systemctl restart systemd-networkd
DNS配置对比与选择
下表总结了不同配置方式的适用场景和优缺点:
| 配置方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| systemd-resolved | 现代系统,需缓存或加密DNS | 支持DoT/DoH,性能高 | 配置较复杂 |
| NetworkManager | 桌面环境,动态网络 | 图形化界面,自动管理 | 依赖NetworkManager服务 |
| 直接编辑resolv.conf | 旧系统或简单需求 | 简单直接 | 易被覆盖,无缓存 |
| 静态IP配置文件 | 服务器或固定IP环境 | 集成度高,重启后生效 | 需手动维护配置文件 |
常见问题排查
- DNS解析失败
检查/etc/resolv.conf是否被正确设置,或通过dig archlinux.org测试解析。 - DNS污染或劫持
使用resolvectl status确认是否启用了加密DNS(DoT/DoH),或手动配置可信DNS服务器。
相关问答FAQs
Q1: 如何在Arch Linux中切换为使用Cloudflare的DNS(1.1.1.1)?
A1: 编辑/etc/systemd/resolved.conf,将DNS字段修改为DNS=1.1.1.1 1.0.0.1,保存后重启systemd-resolved服务,若使用NetworkManager,可通过nmcli命令或图形界面更新DNS服务器地址。
Q2: 为什么修改/etc/resolv.conf后重启系统又恢复默认?
A2: 因为/etc/resolv.conf可能被systemd-resolved或NetworkManager自动管理,解决方案:
- 若使用
systemd-resolved,通过/etc/systemd/resolved.conf配置DNS。 - 若需手动控制,执行
sudo chattr +i /etc/resolv.conf锁定文件,或禁用相关服务的自动管理功能。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/243401.html