nmcli con mod ipv4.dns "DNS1 DNS2"
命令或编辑/etc/resolv.conf
文件添加DNS服务器CentOS 7编辑增加DNS详细指南
在CentOS 7系统中,合理配置DNS服务器能够显著提升域名解析效率、增强网络稳定性并优化访问速度,以下是三种主流的配置方法,涵盖命令行工具、配置文件修改及图形化界面操作,适用于不同场景需求。
通过nmcli
命令行工具快速设置(推荐方式)
此方法基于NetworkManager服务实现动态管理,适合需要即时生效且不影响其他网络参数的场景。
步骤如下:
- 查看当前可用的网络连接名称或UUID
执行命令nmcli connection show
,获取如ens160
这样的接口标识符,若存在多个连接,需准确选择目标设备。 - 修改指定连接的DNS服务器地址
使用格式:nmcli con mod <连接名称> ipv4.dns "IP1 IP2 ..."
示例:将ens160
的DNS设置为阿里云和谷歌公共DNS:nmcli con mod ens160 ipv4.dns "114.114.114.114 8.8.8.8"
- 禁用自动获取DHCP分配的DNS(可选但建议)
添加参数确保静态配置优先:nmcli con mod ens160 ipv4.ignoreautodns yes
- 重启网络连接使配置生效
运行nmcli con up ens160
或先下线再上线:nmcli con down ens160 && nmcli con up ens160
- 验证结果
通过cat /etc/resolv.conf
检查是否已更新为新DNS列表。
⚠️注意:该方法的优势在于无需手动干预底层文件,且支持多DNS冗余备份;但缺点是重启后可能因服务恢复导致配置丢失(可通过后续章节的方法固化)。
直接编辑网卡配置文件(传统静态方式)
当需要永久保留DNS设置时,可直接修改对应网卡的脚本文件,此方法不受NetworkManager干扰,适合服务器环境。
操作流程:
- 定位目标网卡的配置文件路径
默认存放于/etc/sysconfig/networkscripts/
目录下,文件名格式为ifcfg<接口名>
,例如物理网卡通常为ifcfgeth0
,逻辑接口可能是ifcfgens33
等,可通过ls /etc/sysconfig/networkscripts/
确认实际名称。 - 添加/修改DNS条目
用文本编辑器打开文件后,设置以下参数:DNS1=首选DNS服务器IP
(必填)DNS2=备用DNS服务器IP
(可选) 如下:DNS1=8.8.8.8 # Google主DNS DNS2=8.8.4.4 # Google辅助DNS PEERDNS=no # 关键!禁止从DHCP或其他来源自动更新DNS
- 重启网络服务应用变更
执行命令:systemctl restart network
- 交叉验证配置一致性
再次查看/etc/resolv.conf
,确认其内容与网卡配置完全匹配,若不同步,可能是由于NetworkManager仍在覆盖该文件(见下一章节解决方案)。
优势对比:相比
nmcli
方式,此方法更稳定可靠,尤其适用于生产环境中对网络稳定性要求较高的场景。
手动维护/etc/resolv.conf
文件(临时性方案)
虽然直接编辑系统级解析器配置文件看似简单,但在默认情况下会被NetworkManager动态重置,仅推荐作为辅助手段使用。
实施细节:
- 备份原文件以防误操作
建议先将当前配置存档:cp /etc/resolv.conf /root/backup_resolv.conf
- 按需追加新的nameserver记录
例如添加国内高速节点:nameserver 223.5.5.5 # 阿里云DNS nameserver 114.114.114.114 # 中国电信DNS
- 阻止NetworkManager自动覆盖(关键步骤!)
修改主控配置文件以解除自动管理模式:- 编辑
/etc/NetworkManager/NetworkManager.conf
,在[main]
部分加入一行:dns=none
- 然后重启服务加载新策略:
systemctl restart NetworkManager
- 编辑
- 测试连通性与解析效果
尝试解析常见域名如ping www.baidu.com
,观察是否能正确返回IP地址。
方法类型 | 持久化能力 | 适用场景 | 典型命令示例 |
---|---|---|---|
nmcli交互式配置 | 中等(依赖服务状态) | 快速调试、临时调整 | nmcli con mod ...; nmcli con up ... |
网卡脚本直接编辑 | 高 | 服务器长期部署 | vi ifcfgeth0; systemctl restart network |
resolv.conf手工维护 | 低(易被覆盖) | 临时测试、补充备用节点 | vi /etc/resolv.conf; systemctl restart NetworkManager |
常见问题与解答
Q1: 如果我希望同时使用企业内部自建DNS和公共DNS该如何操作?
✅ A: 可以在任一配置方法中按优先级顺序排列多个DNS IP,例如在网卡配置中写:
DNS1=192.168.1.100
(内网主节点), DNS2=8.8.8.8
(谷歌公共节点),系统会依次尝试每个服务器直至成功响应。
Q2: 修改后发现/etc/resolv.conf
没有被更新怎么办?
✅ A: 这是由于NetworkManager仍在管理该文件导致的,解决方法有两种:①采用第二种方法直接编辑网卡配置文件并设置PEERDNS=no
;②若坚持使用第三种方法,则必须修改/etc/NetworkManager/NetworkManager.conf
中的dns=none
选项来禁用自动刷新机制