linux域名解析失败时,可通过五种方法配置dns:一、直接编辑resolv.conf(临时生效);二、networkmanager图形配置(桌面环境持久);三、修改dhclient.conf强制指定dns;四、systemd-resolved服务统一管理;五、禁用覆盖锁定resolv.conf。

如果您在Linux系统中遇到域名无法解析的问题,可能是由于DNS服务器配置不正确或未生效。以下是修改resolv.conf文件以配置DNS的多种方法:
一、直接编辑resolv.conf文件
该方法适用于临时配置DNS,修改后立即生效,但重启网络服务或系统后可能被覆盖。
1、使用root权限打开/etc/resolv.conf文件,例如执行命令:sudo nano /etc/resolv.conf。
2、删除原有nameserver行(如有),添加新的DNS服务器地址,例如:nameserver 8.8.8.8和nameserver 114.114.114.114。
3、保存文件并退出编辑器。
4、执行命令验证是否生效:nslookup example.com。
二、通过NetworkManager配置DNS
该方法适用于使用NetworkManager管理网络连接的桌面环境,配置持久且不易被覆盖。
1、打开NetworkManager连接编辑界面,例如运行:nm-connection-editor。
2、选择当前使用的连接,点击“编辑”按钮。
3、切换到“IPv4设置”选项卡,在“DNS服务器”栏中输入目标DNS地址,多个地址用空格分隔,例如:8.8.8.8 1.1.1.1。
4、取消勾选“自动从DHCP获取DNS地址”选项。
5、点击“保存”,然后断开并重新连接该网络。
三、修改DHCP客户端配置文件
该方法适用于通过DHCP获取IP但需强制指定DNS的场景,可防止DHCP响应覆盖resolv.conf。
1、编辑dhclient配置文件:sudo nano /etc/dhcp/dhclient.conf。
2、在文件末尾添加一行:supersede domain-name-servers 202.106.0.20, 114.114.114.114;。
3、保存后重启网络管理服务:sudo systemctl restart NetworkManager或sudo systemctl restart networking。
四、使用systemd-resolved服务配置
该方法适用于启用systemd-resolved的现代Linux发行版,通过统一解析器管理DNS策略。
1、检查服务状态:systemctl is-active systemd-resolved,确保为active。
2、编辑resolved配置文件:sudo nano /etc/systemd/resolved.conf。
3、取消注释并修改DNS行,例如:DNS=1.1.1.1 8.8.8.8;如需指定特定接口DNS,可添加Domains=~example.com。
4、保存后执行:sudo systemctl restart systemd-resolved。
5、确认配置已加载:resolvectl status。
五、禁用NetworkManager对resolv.conf的覆盖
该方法用于锁定手动编辑的resolv.conf内容,防止其他服务自动改写。
1、创建符号链接指向只读位置:sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf(若使用systemd-resolved)。
2、或使用chattr命令锁定文件:sudo chattr +i /etc/resolv.conf。
3、如需后续修改,必须先执行:sudo chattr -i /etc/resolv.conf。










