新安装的CentOS 7系统配置DNS详解:从入门到精通

刚拿到一台新安装的CentOS 7服务器,那种感觉就像拿到一把还没开刃的宝剑,潜力巨大但需要精心打磨,在将其投入生产环境之前,有一项看似基础却至关重要的配置——DNS设置,DNS(Domain Name System),即域名系统,是互联网的“电话簿”,它负责将我们熟悉的域名(如www.google.com)翻译成计算机能理解的IP地址(如142.251.42.206),如果DNS配置不当,你的服务器可能无法访问外网更新软件、无法连接其他服务,甚至无法被外界正常访问。
本文将手把手地带你完成CentOS 7的DNS配置,不仅告诉你“怎么做”,还会解释“为什么这么做”,并提供一些故障排查的技巧,让你彻底掌握这项核心技能。
一、 理解CentOS 7的网络配置文件
在开始动手之前,我们先来认识一下CentOS 7中与DNS相关的几个核心配置文件,与早期的版本不同,CentOS 7同时存在传统配置和新式配置方法,理解它们的关系是关键。
1、/etc/resolv.conf:这是最核心的DNS配置文件,系统会从这个文件中读取DNS服务器地址(nameserver)和域名搜索域(search)。但请注意:在默认情况下,这个文件是由系统动态生成的,直接修改它可能重启网络后就被覆盖了,我们需要通过其他方式去控制它。

2、/etc/sysconfig/network-scripts/ifcfg-<interface_name>:这是网络接口的配置文件,其中<interface_name> 是你的网络接口名,通常如ifcfg-ens33、ifcfg-eth0 等,在这里面配置的DNS1、DNS2 参数,是控制/etc/resolv.conf 的传统方式之一。
3、/etc/NetworkManager/NetworkManager.conf:NetworkManager是CentOS 7默认的网络管理服务,它的主配置文件可以设置全局的DNS参数。
4、/etc/hosts:本地主机名解析文件,它可以绕过DNS,直接提供IP地址和主机名的映射关系,通常用于本地测试或小型网络。
二、 方法一:通过修改网络接口配置文件(推荐)
这是最常用、最持久的方法,适用于大多数场景,尤其是服务器环境。

步骤 1:确定你的网络接口名称
打开终端,输入以下命令:
ip addr
或者
ifconfig
你会看到类似以下的输出:
1: lo: ...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute dynamic ens33
valid_lft 86384sec preferred_lft 86384sec
inet6 fe80::20c:29ff:fexx:xx/64 scope link
valid_lft forever preferred_lft forever这里ens33 就是我的网络接口名,你的可能是eth0,ens192 等,请记下它。
步骤 2:编辑网络接口配置文件
使用你喜欢的文本编辑器(如vi,vim,nano) 编辑对应的配置文件,这里以ens33 和nano 为例:
sudo nano /etc/sysconfig/network-scripts/ifcfg-ens33
步骤 3:配置DNS参数
在打开的文件中,找到或添加以下两行:
DNS1=8.8.8.8 # 主DNS服务器,这里以Google的公共DNS为例 DNS2=114.114.114.114 # 备DNS服务器,这里以国内114DNS为例
你也可以添加DNS3。
请确保文件中的BOOTPROTO 参数是static 或none,并且已经正确配置了IPADDR,NETMASK,GATEWAY 等静态IP信息,如果是DHCP获取IP,通常也会自动获取DNS,但为了持久化,我们依然可以加上这两行,它们会覆盖DHCP下发的DNS设置。
一个完整的静态IP配置示例:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static # 使用静态IP地址 DEFROUTE=yes ... IPADDR=192.168.1.100 # 你的静态IP NETMASK=255.255.255.0 # 子网掩码 GATEWAY=192.168.1.1 # 网关地址 DNS1=8.8.8.8 # 主DNS DNS2=114.114.114.114 # 备DNS ... NAME=ens33 DEVICE=ens33 ONBOOT=yes # 确保开机自启
步骤 4:重启网络服务
保存并退出编辑器后,需要重启网络服务以使更改生效:
sudo systemctl restart network
或者只重启特定的网络接口:
sudo ifdown ens33 && sudo ifup ens33
步骤 5:验证配置
检查/etc/resolv.conf 文件是否已经更新:
cat /etc/resolv.conf
你应该能看到nameserver 行已经变成了你设置的地址:
Generated by NetworkManager nameserver 8.8.8.8 nameserver 114.114.114.114
使用ping 或nslookup 或dig 命令测试DNS解析是否正常工作:
ping -c 4 baidu.com
如果能正常收到回复,说明DNS配置成功!
nslookup google.com dig github.com
三、 方法二:直接修改/etc/resolv.conf(临时或特殊用途)
正如前面警告所说,直接修改这个文件可能不是永久性的,但在某些特定情况下(比如快速测试、或在容器内),你可以这样做。
sudo nano /etc/resolv.conf
修改为:
nameserver 8.8.8.8 nameserver 1.1.1.1 search localdomain
保存即可立即生效,但一旦系统重启或NetworkManager服务重启,这个文件很可能被重写。
如何防止/etc/resolv.conf 被覆盖?
如果你确实希望直接管理这个文件,可以这样做:
1、 在/etc/NetworkManager/NetworkManager.conf 的[main] 部分添加:
[main]
dns=none2、 然后运行:
sudo systemctl restart NetworkManager3、 现在你就可以自由编辑/etc/resolv.conf 而不会被覆盖了,但这种方法通常不推荐给新手,因为它绕过了NetworkManager的DNS管理功能。
四、 方法三:使用NetworkManager的命令行工具(nmcli)
nmcli 是管理NetworkManager的强大命令行工具,非常适合在远程终端操作。
查看当前连接:
nmcli connection show
修改连接的DNS(以连接名 ‘ens33’ 为例):
sudo nmcli con mod ens33 ipv4.dns "8.8.8.8 114.114.114.114"
让DNS配置立即生效:
sudo nmcli con down ens33 && sudo nmcli con up ens33
1、DNS解析失败:
命令dig www.example.com,如果没反应,说明DNS服务器可能无法访问或网络有问题。
检查ping 8.8.8.8 看是否能通,如果能通IP但不能解析域名,绝对是DNS配置问题。
2、清除DNS缓存:
CentOS 7默认没有像Windows那样强大的DNS缓存,但如果你安装了nscd(Name Service Cache Daemon),则需要清理它:
sudo systemctl restart nscd3、使用host 和dig 命令:
这两个工具比ping 能提供更详细的DNS查询信息,是排查问题的利器。
dig www.baidu.com @8.8.8.8 # 指定使用8.8.8.8来查询www.baidu.com
host github.com 114.114.114.1144、多网卡环境:
如果服务器有多个网络接口(如内网和外网),确保每个接口的DNS配置是正确的,或者合理配置路由策略,以免解析混乱。
为新安装的CentOS 7配置DNS是一项基础但至关重要的任务,推荐大多数用户使用方法一(修改/etc/sysconfig/network-scripts/ifcfg-ens33 文件),因为它提供了持久、可靠的配置,理解不同配置文件之间的关系,能够让你在遇到问题时快速定位和解决。
一个稳定可靠的DNS配置是你的服务器畅游互联网世界的基石,花几分钟时间正确配置它,将为后续的软件安装、系统更新和服务部署扫清无数障碍,你的CentOS 7宝剑已经开刃,可以去更广阔的世界闯荡了!
文章摘自:https://idc.huochengrm.cn/dns/14368.html
评论
袭峰
回复新安装的CentOS 7配置DNS,首先编辑`/etc/resolv.conf`文件,设置nameserver为你的DNS服务器地址,然后重启网络服务或重启系统使配置生效。
房雪松
回复新安装的CentOS 7配置DNS的步骤包括:打开网络配置文件,修改或添加dns域名服务器地址(如8.6和备用IP),保存退出后重启网络服务或使用systemctl命令使设置生效,确保网络连接正常并测试新的解析功能是否有效即可成功完成配置的步骤了!