Linux配置DNS服务器方法详解
时间:2026-04-04 09:22:12 194浏览 收藏
当Linux系统出现“unknown host”等域名解析失败问题时,DNS配置不当往往是核心原因;本文全面梳理了五种实用且互补的DNS配置方法——从快速生效但易被覆盖的/etc/resolv.conf直接编辑,到适用于服务器环境的网卡配置持久化设置,再到桌面用户友好的NetworkManager图形与命令行操作、现代发行版推荐的systemd-resolved服务深度配置,以及仅针对特定域名的hosts文件精准映射,每种方案均附带清晰步骤和即时验证方式,助你精准定位、快速修复,彻底告别网络连通却无法上网的困扰。

如果您在Linux系统中无法解析域名,例如执行ping google.com时提示“unknown host”,则很可能是DNS服务器配置不正确或未生效。以下是多种可立即实施的DNS配置方法:
一、直接编辑/etc/resolv.conf文件
该文件是系统级DNS解析器读取的首要配置,定义了nameserver顺序列表,系统按行依次尝试查询。此方法操作最快,但可能被NetworkManager或systemd-resolved等服务覆盖。
1、使用root权限打开配置文件:sudo nano /etc/resolv.conf。
2、清空原有nameserver行(如有),添加至少一行有效DNS地址,例如:nameserver 114.114.114.114。
3、如需配置多个备用服务器,追加第二行:nameserver 8.8.8.8。
4、保存退出后,立即验证:执行nslookup baidu.com,确认返回IP地址而非错误信息。
二、修改网卡配置文件(持久化设置)
该方法通过底层网络接口配置注入DNS参数,由网络服务启动时自动写入/etc/resolv.conf,适用于RHEL/CentOS/Fedora等使用ifcfg-*脚本的系统,重启后仍有效。
1、确定当前激活的网卡名称,运行:ip -br a | grep UP,记下如ens33或eth0。
2、编辑对应配置文件:sudo nano /etc/sysconfig/network-scripts/ifcfg-ens33(将ens33替换为实际网卡名)。
3、在文件末尾新增两行:DNS1=223.5.5.5和DNS2=119.29.29.29。
4、保存后重启网络服务:sudo systemctl restart NetworkManager或sudo systemctl restart network(依发行版而定)。
三、通过NetworkManager图形/命令行界面配置
桌面环境常用此方式,NetworkManager会接管DNS管理并生成/etc/resolv.conf,避免手动编辑被覆盖,适合Ubuntu Desktop、Fedora Workstation等。
1、打开连接编辑器:nm-connection-editor。
2、双击当前有线或无线连接,切换至“IPv4 Settings”选项卡。
3、在“DNS servers”输入框中填入:1.1.1.1 223.6.6.6(空格分隔)。
4、取消勾选“Automatic DNS”选项,点击“Apply”保存。
5、断开当前连接后重新启用,使新DNS设置载入。
四、配置systemd-resolved服务
systemd-resolved作为现代Linux发行版(如Ubuntu 20.04+、Debian 11+、Arch Linux)默认的本地DNS解析代理,支持缓存、DNSSEC及域特定解析策略,需确保其处于启用状态。
1、检查服务是否运行:sudo systemctl is-active systemd-resolved,若返回inactive则执行启用命令。
2、编辑主配置文件:sudo nano /etc/systemd/resolved.conf。
3、取消DNS=行注释,设为:DNS=8.8.4.4 223.5.5.5;如需Fallback机制,同时取消FallbackDNS=行注释并填写备用地址。
4、确保/etc/resolv.conf为指向stub resolver的软链接:sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf。
5、重启服务:sudo systemctl restart systemd-resolved。
五、修改本地hosts文件(仅限指定域名)
hosts文件优先级高于DNS解析,适用于强制将特定域名映射到固定IP,常用于开发测试或屏蔽广告域名,不改变全局DNS行为。
1、以root权限打开hosts文件:sudo nano /etc/hosts。
2、在文件末尾新增一行,格式为IP后跟空格再跟域名,例如:192.168.1.100 mytest.local。
3、保存退出后,执行ping mytest.local,应直接解析为所设IP且不经过远程DNS查询。
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
241 收藏
-
247 收藏
-
379 收藏
-
273 收藏
-
402 收藏
-
433 收藏
-
214 收藏
-
198 收藏
-
192 收藏
-
423 收藏
-
414 收藏
-
203 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习