linux系统dns配置有五种方法:一、直接编辑/etc/resolv.conf(临时生效);二、通过systemd-resolved服务持久化配置;三、使用nmcli为networkmanager连接设置dns;四、利用resolvconf工具管理;五、修改网卡配置文件实现重启后生效。

Linux系统无法上网或域名解析失败时,往往是因为DNS服务器地址配置错误或失效,必须手动修改nameserver地址才能恢复正常解析。
直接编辑/etc/resolv.conf(临时生效)
这一步操作起来很简单,直接用文本编辑器打开并写入即可,适合快速验证DNS是否为故障根源。
使用root权限打开文件:sudo nano /etc/resolv.conf
删除原有nameserver行(如有),新增一行:nameserver 8.8.8.8
如需添加备用DNS,换行再加一行:nameserver 114.114.114.114。注意:系统按顺序尝试,第一个无响应才用第二个,所以优先级很重要。
保存退出后执行 cat /etc/resolv.conf 确认内容已写入。该配置立即生效,但【重启后可能被NetworkManager或systemd-resolved覆盖】。
通过systemd-resolved持久化配置
适用于使用systemd的现代发行版(如Ubuntu 20.04+、Fedora、Debian 11+),能避免resolv.conf被自动重写。
方法一:编辑主配置文件
运行 sudo nano /etc/systemd/resolved.conf → 找到DNS=这一行,取消注释并填入地址,例如:
DNS=8.8.8.8 114.114.114.114
方法二:使用独立配置片段(推荐)
创建目录:sudo mkdir -p /etc/systemd/resolved.conf.d
新建配置文件:sudo nano /etc/systemd/resolved.conf.d/custom-dns.conf
写入以下内容:
[Resolve]
DNS=8.8.8.8 114.114.114.114
FallbackDNS=1.1.1.1
重启服务使配置落地:sudo systemctl restart systemd-resolved
使用NetworkManager设置(桌面环境首选)
如果你在GNOME、KDE等桌面环境中使用图形化网络管理,直接改resolv.conf会被NM无视,必须走nmcli路径。
第一步:查出当前激活的连接名
nmcli connection show --active | grep ethernet 或 nmcli connection show --active | grep wifi
第二步:为该连接设置DNS
sudo nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8 114.114.114.114"
第三步:关闭自动获取DNS,强制使用手动配置
sudo nmcli connection modify "Wired connection 1" ipv4.ignore-auto-dns yes
第四步:重启连接生效
sudo nmcli connection down "Wired connection 1" && sudo nmcli connection up "Wired connection 1"
Debian/Ubuntu系使用resolvconf工具
该方法专用于resolvconf管理resolv.conf的系统,常见于旧版Ubuntu和Debian。
方法1:向head段注入DNS(全局生效)
echo "nameserver 8.8.8.8" | sudo tee /etc/resolvconf/resolv.conf.d/head
sudo resolvconf -u
方法2:为特定接口配置(更精准)
echo "nameserver 114.114.114.114" | sudo tee /etc/resolvconf/resolv.conf.d/tail
sudo resolvconf -u
执行完后检查:cat /etc/resolv.conf 应能看到来自head和tail的nameserver行。











