求助,CentOS 7系统下更改DNS永久生效的具体步骤是什么?

在CentOS 7系统中,DNS(域名系统)配置是确保服务器能够正确解析域名至IP地址的关键环节,无论是为了提升网络访问速度、绕过DNS污染,还是为了接入特定的内部网络资源,正确地更改DNS设置都是一项基础且重要的系统管理任务,本文将详细介绍在CentOS 7中更改DNS的几种主流方法,并分析其优劣,以帮助您根据实际需求选择最合适的方案。

求助,CentOS 7系统下更改DNS永久生效的具体步骤是什么?

使用 nmcli 命令行工具(推荐)

nmcli(NetworkManager Command-Line Interface)是CentOS 7中与NetworkManager服务交互的首选命令行工具,它功能强大,能够动态、持久地修改网络配置,包括DNS设置,且操作相对安全,是现代Linux发行版推荐的方式。

查看当前网络连接名称

需要确定您要修改的网络连接的名称,这通常不是网卡设备名(如ens33),而是NetworkManager中定义的连接配置名。

nmcli connection show

执行后,您会看到一个列表,其中NAME就是连接名称,常见的连接名称可能是ens33Wired connection 1System eth0

修改指定连接的DNS服务器

假设您的连接名称是ens33,您可以使用以下命令来设置DNS服务器,这里以Google的公共DNS(8.8.8.8和8.8.4.4)为例。

sudo nmcli connection mod "ens33" ipv4.dns "8.8.8.8 8.8.4.4"
  • connection mod:修改连接配置。
  • "ens33":您的连接名称,建议用引号括起来以防名称中包含空格。
  • ipv4.dns:指定IPv4的DNS服务器地址,多个地址用空格隔开。

重启网络连接使配置生效

修改配置后,需要重新激活网络连接才能让新的DNS设置生效。

sudo nmcli connection down "ens33" && sudo nmcli connection up "ens33"

这个命令会先断开连接,然后重新连接,执行后,NetworkManager会自动将新的DNS信息写入到/etc/resolv.conf文件中。

验证DNS设置

您可以通过查看/etc/resolv.conf文件来验证DNS是否已成功更改。

cat /etc/resolv.conf

您应该能看到类似如下的输出,其中包含了您刚刚设置的DNS服务器:

# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4

可以使用nslookupdig命令来测试域名解析是否正常工作。

nslookup www.google.com

手动编辑网络接口配置文件(传统方法)

对于习惯传统配置方式的管理员,或者在不使用NetworkManager的环境中,可以直接编辑网络接口的配置文件,这种方法是持久化的,但需要手动操作和重启网络服务。

求助,CentOS 7系统下更改DNS永久生效的具体步骤是什么?

定位并编辑配置文件

网络接口配置文件位于/etc/sysconfig/network-scripts/目录下,文件名通常为ifcfg-<接口名>,例如ifcfg-ens33

sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

添加或修改DNS参数

在文件中,添加或修改以下两行,如果文件中已有DNS1DNS2,直接修改其值即可。

DNS1=8.8.8.8
DNS2=8.8.4.4

重要提示:为了防止DHCP服务器在获取IP时自动覆盖您手动设置的DNS,建议在文件中添加或确保PEERDNS参数的值为no

PEERDNS=no

重启网络服务

保存并退出编辑器后,需要重启网络服务以使配置生效。

sudo systemctl restart network

重启后,系统会读取新的配置文件,并将DNS设置应用到/etc/resolv.conf中。

直接编辑 /etc/resolv.conf(临时方法)

这是一种最直接但通常是临时性的方法,在CentOS 7中,由于NetworkManager会管理此文件,直接修改它很可能在系统重启或网络服务重启后被覆盖。

编辑文件

sudo vi /etc/resolv.conf

设置DNS服务器

清空文件原有内容(或注释掉),然后添加您需要的DNS服务器。

nameserver 8.8.8.8
nameserver 8.8.4.4

重要警告:此方法仅适用于临时测试或紧急情况,任何由NetworkManager触发的网络事件(如重新连接)都可能导致此文件被重置,从而丢失您的手动配置,不推荐在生产环境中使用此方法进行永久性更改。

方法对比

为了更清晰地选择合适的方法,下表对上述三种方法进行了比较:

求助,CentOS 7系统下更改DNS永久生效的具体步骤是什么?

方法 持久性 易用性 推荐场景
nmcli 命令 持久化 首选方法,适用于所有使用NetworkManager的CentOS 7系统
编辑 ifcfg-* 文件 持久化 传统服务器环境,或需要精细控制网络参数的场景
编辑 resolv.conf 临时 临时测试、快速故障排除、救援模式

验证与故障排除

完成DNS更改后,除了查看/etc/resolv.conf,更可靠的验证方式是使用解析工具。

  • 使用 nslookup

    nslookup www.baidu.com

    如果能返回正确的IP地址,说明DNS配置成功。

  • 使用 dig

    dig @8.8.8.8 www.github.com

    此命令直接向指定的DNS服务器(8.8.8.8)发起查询,可以用来判断特定DNS服务器是否可达及响应速度。

如果解析失败,请检查:

  1. DNS服务器地址是否正确。
  2. 网络连接是否正常(ping 8.8.8.8)。
  3. 防火墙或SELinux是否阻止了DNS查询(通常使用UDP 53端口)。

相关问答FAQs

我按照方法二修改了ifcfg-ens33文件,重启网络后/etc/resolv.conf里的DNS还是被改成了别的地址,这是为什么?

解答:这通常是因为您的网络接口配置为通过DHCP自动获取IP地址,而DHCP服务器在分配IP的同时也提供了DNS服务器信息,即使您在ifcfg-ens33文件中设置了DNS1DNS2,如果PEERDNS参数的值为yes(或者未设置,默认为yes),那么NetworkManager在获取到DHCP信息后,会用DHCP提供的DNS覆盖您的手动设置,解决方法是在ifcfg-ens33文件中明确添加一行 PEERDNS=no,这样系统就会优先使用您在文件中静态配置的DNS地址。

我需要为我的服务器配置一个内部域名解析,同时保留一个公共DNS作为备用,应该如何操作?

解答:这是一个非常常见的需求,您可以将内部DNS服务器作为首选,公共DNS作为备用,以使用nmcli为例,假设您的内部DNS服务器是168.1.100,公共DNS是114.114.114,您可以这样设置:

sudo nmcli connection mod "ens33" ipv4.dns "192.168.1.100 114.114.114.114"

然后重启连接,系统在解析域名时,会首先尝试向168.1.100查询,如果该服务器无法解析(查询的是公共域名),则会继续向114.114.114查询,这样既保证了内部域名的快速解析,又能正常访问互联网,如果您还需要设置域名搜索后缀(在访问server01时自动补全为server01.internal.com),可以使用以下命令:

sudo nmcli connection mod "ens33" ipv4.dns-search "internal.com"

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-07 08:29
下一篇 2025-10-07 08:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信