在CentOS 7系统中,DNS(域名系统)配置的正确性直接影响网络访问的稳定性和效率,DNS的主要作用是将人类可读的域名(如www.example.com)解析为机器可识别的IP地址,默认情况下,CentOS 7会从网络管理器(NetworkManager)或DHCP服务器获取DNS配置,但在某些场景下,如内网服务访问、特定域名解析需求或静态IP环境,手动修改DNS配置是必要的,本文将详细介绍在CentOS 7系统中修改DNS配置的多种方法、注意事项及常见问题排查。

修改DNS配置的方法
通过NetworkManager修改(适用于动态IP环境)
NetworkManager是CentOS 7默认的网络管理工具,支持图形界面和命令行两种配置方式,对于使用DHCP动态获取IP地址的系统,优先通过NetworkManager管理DNS配置,避免配置冲突。
图形界面操作
打开“设置”>“网络”,选择当前活动的网络连接(如以太网或WLAN),点击“配置”按钮,切换到“IPv4”或“IPv6”选项卡,在“DNS服务器”字段中输入DNS地址(如8.8.8.8、114.114.114.114),点击“保存”即可,配置生效后,可通过cat /etc/resolv.conf查看DNS设置。命令行操作
使用nmcli命令行工具修改,为以太网连接(enp0s3)添加DNS服务器:sudo nmcli con mod enp0s3 ipv4.dns "8.8.8.8 114.114.114.114" sudo nmcli con up enp0s3
修改后,NetworkManager会自动更新
/etc/resolv.conf文件。
直接编辑/etc/resolv.conf(临时生效)
/etc/resolv.conf是系统解析DNS的核心配置文件,但直接编辑该文件的方法仅在NetworkManager未运行或禁用时推荐使用,因为重启网络服务或系统后,配置可能被覆盖。

- 使用文本编辑器(如vi)打开文件:
sudo vi /etc/resolv.conf
- 添加或修改DNS服务器地址,格式为:
nameserver 8.8.8.8 nameserver 114.114.114.114
- 保存文件后,立即生效,但需注意后续网络管理操作可能覆盖该配置。
通过/etc/sysconfig/network-scripts/配置(适用于静态IP环境)
对于使用静态IP地址的系统,DNS配置应与网络接口配置文件绑定,确保持久化生效。
- 定位网络接口配置文件(如ifcfg-enp0s3):
ls /etc/sysconfig/network-scripts/
- 编辑该文件,添加或修改DNS相关参数:
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
在文件中添加以下内容:
DNS1="8.8.8.8" DNS2="114.114.114.114"
- 重启网络服务使配置生效:
sudo systemctl restart network
使用systemd-resolved服务(推荐)
CentOS 7默认使用systemd-resolved服务管理本地DNS解析,该服务可提供更稳定的DNS缓存和解析功能。
- 启用并启动
systemd-resolved服务:sudo systemctl enable --now systemd-resolved
- 创建或修改
/etc/systemd/resolved.conf文件,取消注释并修改DNS服务器:sudo vi /etc/systemd/resolved.conf
设置以下参数:
DNS=8.8.8.8 114.114.114.114
- 重启服务并创建符号链接(确保
/etc/resolv.conf指向systemd-resolved生成的文件):sudo systemctl restart systemd-resolved sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
常见问题排查
DNS配置不生效
检查/etc/resolv.conf文件权限是否为644,确认NetworkManager或systemd-resolved服务状态正常,若使用静态IP,确保DNS配置在网卡文件中正确设置,并重启网络服务。
域名解析失败
使用nslookup或dig命令测试DNS解析:nslookup www.example.com
若返回错误,可能是DNS服务器不可达或防火墙(如firewalld、iptables)拦截了DNS查询端口(53),可通过
sudo firewall-cmd --permanent --add-service=dns && sudo firewall-cmd --reload开放端口。
相关问答FAQs
Q1: 修改DNS配置后,如何验证是否生效?
A1: 可以通过以下方式验证:
- 使用
cat /etc/resolv.conf查看当前DNS服务器地址是否与配置一致; - 执行
nslookup www.baidu.com测试域名解析,若返回正确的IP地址,则说明配置生效; - 使用
systemctl status systemd-resolved或systemctl status NetworkManager检查相关服务运行状态是否正常。
Q2: 为什么直接修改/etc/resolv.conf后重启网络服务,配置被重置?
A2: 在CentOS 7中,/etc/resolv.conf文件通常由NetworkManager或systemd-resolved服务自动管理,直接编辑该文件后,若重启网络服务或NetworkManager,服务会根据其配置重新生成该文件,导致手动修改失效,建议通过NetworkManager的配置文件或systemd-resolved服务管理DNS,确保配置持久化。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复