登录
首页 >  文章 >  linux

Linux配置DNS服务器方法详解

时间:2026-04-04 09:22:12 194浏览 收藏

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

Linux怎么配置DNS服务器_Linux修改DNS解析设置方法教程【实战】

如果您在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.5DNS2=119.29.29.29

4、保存后重启网络服务:sudo systemctl restart NetworkManagersudo 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学习网公众号。

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>