linux系统中域名无法解析时,可通过四种方法修改dns:一、直接编辑/etc/resolv.conf;二、配置systemd-resolved服务;三、使用networkmanager的nmcli命令;四、临时指定dns测试。

如果您在Linux系统中遇到域名无法解析的问题,可能是当前配置的DNS服务器不可用或响应缓慢。以下是修改DNS地址的多种方法:
一、修改/etc/resolv.conf文件
该文件是Linux系统中用于指定DNS解析服务器的核心配置文件,系统会按顺序读取其中的nameserver行进行域名解析。直接编辑此文件可立即生效,但部分系统可能被网络管理服务覆盖。
1、使用sudo权限打开/etc/resolv.conf文件:sudo nano /etc/resolv.conf
2、删除原有nameserver行,添加新的DNS服务器地址,例如:nameserver 8.8.8.8 和 nameserver 114.114.114.114
3、保存并退出编辑器(nano中按Ctrl+O回车保存,Ctrl+X退出)
4、验证修改是否生效:cat /etc/resolv.conf
二、通过systemd-resolved服务配置
systemd-resolved是现代Linux发行版(如Ubuntu 20.04+、Fedora、Debian 10+)默认启用的DNS解析管理服务,其配置优先级高于直接修改resolv.conf,且能避免被覆盖。
1、创建或编辑resolved的配置文件:sudo nano /etc/systemd/resolved.conf
2、取消注释并修改DNS行,例如:DNS=8.8.8.8 1.1.1.1
3、取消注释并设置FallbackDNS(可选):FallbackDNS=114.114.114.114 223.5.5.5
4、重启resolved服务:sudo systemctl restart systemd-resolved
5、确认当前使用的DNS:systemd-resolve --status | grep "DNS Servers"
三、使用NetworkManager图形界面或nmcli命令
当系统使用NetworkManager管理网络连接时,可通过其接口持久化设置DNS,避免重启后丢失,且适用于有线/无线连接的独立配置。
1、列出所有连接名称:nmcli connection show
2、为指定连接(如"System eth0")设置DNS:sudo nmcli connection modify "System eth0" ipv4.dns "223.5.5.5 119.29.29.29"
3、设置DNS模式为手动(禁用自动获取):sudo nmcli connection modify "System eth0" ipv4.ignore-auto-dns yes
4、重新激活连接使配置生效:sudo nmcli connection down "System eth0" && sudo nmcli connection up "System eth0"
四、临时修改DNS(仅当前会话有效)
该方法不写入任何配置文件,适用于快速测试特定DNS服务器的连通性与解析效果,重启或断网后失效。
1、清空当前DNS缓存(如已启用):sudo systemd-resolve --flush-caches
2、使用dig命令指定DNS服务器查询域名:dig @8.8.8.8 example.com
3、使用nslookup指定DNS服务器:nslookup example.com 114.114.114.114
4、若需全局临时覆盖,可设置环境变量(部分工具支持):export SYSTEMD_RESOLVED_DNS_SERVERS="1.1.1.1"










