Linux DNS客户端配置核心是设置DNS服务器地址,最直接方式为编辑/etc/resolv.conf;但若启用systemd-resolved或NetworkManager,需先停用对应服务或通过nmcli配置,否则手动修改会被覆盖。

Linux DNS 客户端配置的核心在于让系统知道该向哪个服务器发起域名查询。最直接、最底层的方式就是修改 /etc/resolv.conf,但它是否“生效”,取决于你用的是哪种网络管理机制。下面说清楚几种常见且实用的配置路径。
直接编辑 resolv.conf(适合临时调试或静态网络)
这个文件是 resolver 库读取 DNS 服务器地址的唯一来源,格式简单:
- nameserver 后跟一个 IP 地址,每行一个;系统按顺序尝试,超时才换下一个
- 可写多个,例如:
nameserver 223.5.5.5和nameserver 114.114.114.114 - 支持 search 设置搜索域,比如
search local test.com,这样查web会自动试web.local、web.test.com - 注意:若系统启用
systemd-resolved或NetworkManager,手动改完可能被秒覆盖
禁用 systemd-resolved 后固定 resolv.conf
很多现代发行版(如 Ubuntu 20.04+、Fedora)默认启用 systemd-resolved,它会让 /etc/resolv.conf 指向一个 stub 文件,直接编辑无效。要彻底接管,需停用它:
- 执行
sudo systemctl disable --now systemd-resolved - 删掉符号链接:
sudo rm /etc/resolv.conf - 新建真实文件:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf - 加不可变属性防覆盖:
sudo chattr +i /etc/resolv.conf(需要时再用chattr -i解除)
通过 NetworkManager 配置(桌面环境首选)
如果你用的是 GNOME、KDE 等桌面系统,NetworkManager 是主力网络管理器,应优先走它的配置流程,避免冲突:
- 查当前连接名:
nmcli connection show - 为连接设置 DNS 并禁用 DHCP 自动分配:
sudo nmcli connection modify "Wired connection 1" ipv4.dns "202.96.128.86 202.96.128.166" ipv4.ignore-auto-dns yes - 重启连接生效:
sudo nmcli connection down "Wired connection 1" && sudo nmcli connection up "Wired connection 1" - 图形界面用户也可打开
nm-connection-editor,在 IPv4 设置里填 DNS 并取消勾选 “Automatic DNS”
使用 dnsmasq 做本地 DNS 缓存与转发(进阶推荐)
当需要更稳定、更快的解析,或想自定义某些域名指向(比如开发时映射 dev.local 到本机),dnsmasq 是轻量又可靠的选择:
- 安装后启用:
sudo apt install dnsmasq && sudo systemctl enable --now dnsmasq - 关键配置(
/etc/dnsmasq.conf):no-resolv(不读 resolv.conf)、server=8.8.8.8(指定上游)、cache-size=1000 - 把
/etc/resolv.conf改成只写nameserver 127.0.0.1,所有查询先经本地缓存 - 还能配合
/etc/hosts或自定义 conf-dir 实现内网域名解析


















