在 Red Hat Enterprise Linux (RHEL) 系统中,正确配置域名系统(DNS)是确保网络连通性、软件更新、服务访问等基础功能正常运行的关键步骤,DNS负责将人类易于记忆的域名(如 www.redhat.com)解析为机器能够识别的IP地址,本文将详细介绍在RHEL系统中添加和配置DNS服务器的几种主流方法,涵盖从临时测试到永久生效的各种场景,并重点推荐适用于现代RHEL版本的最佳实践。

临时修改 /etc/resolv.conf(适用于快速测试)
/etc/resolv.conf 是Linux系统中用于配置DNS解析的核心文件,系统上的所有解析请求(除非被特殊配置覆盖)都会首先查询此文件中定义的DNS服务器,直接编辑此文件是更改DNS最快的方法,但通常具有临时性。
操作步骤:
-
使用文本编辑器(如
vi或nano)打开/etc/resolv.conf文件:sudo vi /etc/resolv.conf
-
在文件中添加或修改
nameserver行,每一行代表一个DNS服务器的IP地址,系统会按照从上到下的顺序进行查询。# 示例配置 nameserver 8.8.8.8 # Google Public DNS nameserver 114.114.114.114 # 114 DNS nameserver 192.168.1.1 # 局域网网关(如果其提供DNS服务) -
保存并退出文件,更改将立即生效。
重要提示:
在现代RHEL版本(如RHEL 7, 8, 9)中,/etc/resolv.conf 文件通常由 NetworkManager 服务动态管理,这意味着当您重启网络服务或重启系统后,NetworkManager 可能会根据其自身的网络连接配置覆盖您手动在此文件中的修改,此方法仅推荐用于临时的故障排除或快速测试,不作为永久配置方案。
使用 NetworkManager 永久配置(推荐方法)
NetworkManager 是RHEL及其衍生系统中用于管理网络连接的默认工具,通过其命令行界面 nmcli 进行配置,可以确保DNS设置在网络重启或系统重启后依然保持不变,是当前最推荐的永久性配置方法。
操作步骤:
-
查看当前网络连接名称:
需要知道要修改的网络连接的名称,使用以下命令列出所有活动和非活动的连接:nmcli connection show
输出可能类似于:
NAME UUID TYPE DEVICE ens160 5a062d2a-4c3b-4f4a-8c4d-8c4d8c4d8c4d ethernet ens160在此示例中,连接名称为
ens160。
-
修改DNS服务器设置:
使用nmcli connection modify命令来为指定的连接添加DNS服务器,可以同时设置多个DNS地址,用空格隔开。# 使用 nmcli 为 ens160 连接设置两个DNS服务器 sudo nmcli connection modify ens160 ipv4.dns "8.8.8.8 114.114.114.114"
ipv4.dns参数用于设置IPv4的DNS服务器。- 如果需要设置IPv6的DNS服务器,应使用
ipv6.dns参数。
-
(可选)自动更新 /etc/resolv.conf:
为了确保NetworkManager自动管理resolv.conf,可以设置ipv4.ignore-auto-dns为no(这通常是默认值)。sudo nmcli connection modify ens160 ipv4.ignore-auto-dns no
-
应用配置:
修改完成后,需要重新激活网络连接以使更改生效。sudo nmcli connection up ens160
或者,也可以重启整个
NetworkManager服务:sudo systemctl restart NetworkManager
-
验证配置:
- 检查连接的DNS设置是否已更新:
nmcli connection show ens160 | grep ipv4.dns
输出应显示您刚刚设置的DNS地址。
- 查看
/etc/resolv.conf文件,确认其内容已自动更新:cat /etc/resolv.conf
应包含由
NetworkManager生成的nameserver条目,并附带注释表明其由NetworkManager管理。
- 检查连接的DNS设置是否已更新:
通过图形用户界面(GUI)配置
对于安装了桌面环境的RHEL系统,也可以通过图形界面轻松配置DNS。
- 打开“设置”应用程序。
- 导航至“网络”或“Wired”选项。
- 点击您正在使用的有线连接旁边的齿轮图标。
- 在弹出的窗口中,选择“IPv4”或“IPv6”标签页。
- 将DNS方法设置为“自动(仅DHCP地址)”以外的选项,如“手动”。
- 在“DNS”服务器字段中,输入您希望使用的DNS服务器IP地址,多个地址用逗号或空格分隔。
- 点击“应用”按钮保存更改。
编辑网络脚本文件(适用于旧版或特定场景)
在RHEL 6及更早版本中,网络配置主要通过 /etc/sysconfig/network-scripts/ 目录下的脚本文件(如 ifcfg-eth0)进行,虽然在新版RHEL中不推荐,但在某些禁用了NetworkManager的特殊环境中可能仍会用到。
操作步骤:
-
找到对应的网络接口配置文件,
ifcfg-ens160。
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens160
-
在文件中添加或修改以下行:
DNS1=8.8.8.8 DNS2=114.114.114.114 -
保存文件后,重启网络服务以应用更改:
sudo systemctl restart network
配置方法对比
| 方法 | 配置文件/命令 | 持久性 | 推荐场景 |
|---|---|---|---|
| 临时修改 | /etc/resolv.conf |
临时,易被覆盖 | 快速测试、临时故障排查 |
| NetworkManager | nmcli |
永久 | RHEL 7/8/9 推荐,服务器和桌面环境通用 |
| 图形界面 | GNOME/KDE 设置 | 永久 | 安装了桌面环境的用户 |
| 网络脚本 | /etc/sysconfig/network-scripts/ifcfg-* |
永久 | RHEL 6及更早版本,或禁用NetworkManager的环境 |
验证与故障排除
完成DNS配置后,务必进行验证以确保其正常工作。
-
使用
nslookup或dig命令:nslookup www.redhat.com dig www.redhat.com
如果命令能够成功返回域名对应的IP地址,则说明DNS配置正确。
-
检查服务状态:
确保NetworkManager服务正在运行:systemctl status NetworkManager
相关问答FAQs
为什么我直接修改了 /etc/resolv.conf,重启后配置就丢失了?
解答: 这是因为在现代RHEL系统中,/etc/resolv.conf 文件默认由 NetworkManager 服务动态生成和管理,当系统启动或网络状态发生变化时,NetworkManager 会根据其内部存储的网络连接配置(通过 nmcli 或GUI设置)来重写此文件,任何直接对 /etc/resolv.conf 的手动修改都会被覆盖,要实现永久配置,必须使用 nmcli 等工具修改 NetworkManager 的连接配置,而不是直接编辑 resolv.conf。
我可以同时配置 IPv4 和 IPv6 的 DNS 服务器吗?
解答: 当然可以,IPv4和IPv6的DNS服务器是分开配置的,使用 nmcli 时,您可以通过不同的参数分别设置它们,为名为 ens160 的连接同时设置IPv4和IPv6 DNS,可以执行以下两条命令:
# 设置 IPv4 DNS sudo nmcli connection modify ens160 ipv4.dns "8.8.8.8 8.8.4.4" # 设置 IPv6 DNS sudo nmcli connection modify ens160 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
配置完成后,重新激活连接,/etc/resolv.conf 文件中就会同时包含 nameserver(IPv4)和 nameserver(IPv6地址)条目,系统将能够解析两种类型的地址记录。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/261739.html