在Red Hat Enterprise Linux(RHEL)系统中,DNS配置是网络连接的基础环节,无论是企业级服务器还是桌面环境,正确配置DNS解析能确保系统高效访问互联网资源或内部网络服务,本文将详细介绍在RHEL系统中增加DNS服务器地址的多种方法,涵盖临时修改与永久生效方案,帮助用户根据实际需求选择合适的操作方式。

通过/etc/resolv.conf文件配置DNS
/etc/resolv.conf是Linux系统中控制DNS解析的核心配置文件,直接编辑该文件可快速添加或修改DNS服务器地址。
查看当前DNS配置
使用cat /etc/resolv.conf命令查看现有配置,输出示例如下:
# Generated by NetworkManager nameserver 8.8.8.8 search localdomain options rotate
nameserver字段指定了当前使用的DNS服务器IP地址,search定义了域名搜索顺序,options包含解析选项(如rotate表示轮询多个DNS)。
编辑resolv.conf文件
使用vi或nano等文本编辑器打开文件:
sudo vi /etc/resolv.conf
在文件中添加新的nameserver条目,
nameserver 114.114.114.114 # 中国公共DNS nameserver 8.8.8.8 # Google DNS nameserver 208.67.222.222 # OpenDNS
注意:若文件由NetworkManager管理(通常以注释# Generated by NetworkManager开头),直接修改可能被覆盖,需先禁用自动生成功能(见“二、通过NetworkManager图形界面配置”部分)。
验证配置有效性
修改后,使用nslookup或dig命令测试DNS解析:
nslookup www.redhat.com
若返回正确的IP地址(如132.183.105),说明DNS配置成功。
通过NetworkManager图形界面配置DNS
对于习惯图形化操作的用户,NetworkManager提供了直观的DNS配置界面,适用于桌面环境(如GNOME)。
打开网络设置
点击屏幕右上角的网络图标,选择“设置”(Settings),进入“网络”(Network)选项卡。
选择网络连接
在左侧列表中选择当前活跃的网络连接(如“Wired Connected”或“Wi-Fi”),点击右侧的齿轮图标进入详细设置。

配置IPv4 DNS
在“IPv4 Settings”标签页中,找到“DNS servers”字段,点击“+”按钮添加新的DNS服务器IP地址,可添加多个DNS,按优先级排列(越靠前优先级越高)。
保存设置
点击“应用”(Apply)按钮保存更改,NetworkManager会自动更新/etc/resolv.conf文件,无需手动干预。
通过nmcli命令行工具配置DNS
对于服务器环境或自动化脚本场景,nmcli(NetworkManager CLI)是高效的配置工具,支持批量操作和脚本集成。
查看现有连接
首先列出所有网络连接:
nmcli connection show
输出示例如下:
NAME UUID TYPE DEVICE Wired Connection 1 a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8 ethernet enp0s3
修改DNS配置
使用以下命令为指定连接添加DNS服务器:
sudo nmcli connection modify "Wired Connection 1" ipv4.dns "114.114.114.114 8.8.8.8"
若需删除原有DNS并替换为新值,可添加--forget参数:
sudo nmcli connection modify "Wired Connection 1" ipv4.dns "114.114.114.114" --forget
重启网络服务
修改完成后,重启网络连接使配置生效:
sudo nmcli connection down "Wired Connection 1" && sudo nmcli connection up "Wired Connection 1"
验证配置
使用nmcli查看DNS设置是否正确:
nmcli connection show "Wired Connection 1" | grep dns
输出应包含新增的DNS IP地址。
通过ifcfg-*配置文件永久配置DNS
对于需要持久化配置的场景(如虚拟机或容器),可直接编辑网络接口的配置文件(位于/etc/sysconfig/network-scripts/目录下)。

定位配置文件
查找对应网络接口的配置文件,例如ifcfg-enp0s3:
ls /etc/sysconfig/network-scripts/ifcfg-*
编辑配置文件
使用文本编辑器打开文件,添加或修改DNS1和DNS2字段:
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
示例配置:
TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=no # 禁用从DHCP获取DNS DNS1=114.114.114.114 DNS2=8.8.8.8 DOMAIN=localdomain
关键说明:
PEERDNS=no:防止NetworkManager覆盖自定义DNS配置;DNS1/DNS2:指定主备DNS服务器。
重启网络服务
保存文件后,重启网络服务使配置生效:
sudo systemctl restart network
常见问题与解决方案
修改resolv.conf后立即被覆盖?
若/etc/resolv.conf文件顶部有# Generated by NetworkManager注释,说明其由NetworkManager自动生成,解决方法有两种:
- 临时方案:使用
chattr +i /etc/resolv.conf锁定文件,阻止修改(需root权限); - 永久方案:通过NetworkManager或
ifcfg-*文件配置DNS,避免直接编辑resolv.conf。
配置DNS后无法解析域名?
可能原因包括:
- 防火墙阻挡:检查iptables或firewalld是否允许DNS流量(UDP 53端口):
sudo firewall-cmd --list-all
若未开放,添加规则:
sudo firewall-cmd --add-service=dns --permanent sudo firewall-cmd --reload
- DNS服务器故障:尝试ping DNS服务器IP(如
ping 8.8.8.8),确认网络连通性; - 路由问题:检查默认网关是否正确,确保数据包能到达外部网络。
在RHEL系统中增加DNS服务器地址的方法多样,可根据使用场景选择合适的方式:
- 临时修改:直接编辑
/etc/resolv.conf(适合快速测试); - 图形化配置:通过NetworkManager界面(适合桌面用户);
- 命令行自动化:使用
nmcli(适合服务器或脚本场景); - 持久化配置:编辑
ifcfg-*文件(适合虚拟机或容器)。
无论采用哪种方法,建议始终验证DNS配置的有效性,确保系统能正常解析域名。