在 CentOS/RHEL 系列服务器中配置 DNS 服务器,核心是通过网卡配置文件(永久生效)或直接修改 DNS 解析文件(临时生效)实现,以下是具体步骤,适用于所有主流衍生版本(含 Rocky Linux、AlmaLinux):
一、推荐:通过网卡配置文件配置(永久生效)
DNS 配置与网卡绑定,重启网络或服务器后配置不会丢失,是生产环境的首选方式。
1. 确认网卡名称
先确定需要配置 DNS 的网卡(如
eth0、ens33):bash
ip link show # 列出所有网卡,排除回环接口lo
2. 编辑网卡配置文件
网卡配置文件路径为
/etc/sysconfig/network-scripts/ifcfg-<网卡名>(如ifcfg-eth0),执行编辑命令:bash
# 以网卡eth0为例,替换为实际网卡名
vi /etc/sysconfig/network-scripts/ifcfg-eth0
3. 添加 / 修改 DNS 配置项
在文件中添加或修改
DNS1(首选 DNS)和DNS2(备用 DNS),示例:ini
# 其他已有配置(如IPADDR、GATEWAY等)保留不变
DNS1=8.8.8.8 # 谷歌公共DNS(通用)
DNS2=114.114.114.114 # 国内公共DNS(适合国内环境)
# 可选:禁用DHCP自动覆盖DNS(若BOOTPROTO=dhcp需添加)
PEERDNS=no
- 说明:
PEERDNS=no用于防止 DHCP 自动获取的 DNS 覆盖手动配置,静态 IP 场景可省略,但动态 IP 场景建议添加。
4. 使配置生效
重启网络服务,让 DNS 配置同步到系统:
bash
# 重新加载网络配置(推荐,断网时间短)
nmcli c reload
# 重启指定网卡(确保配置生效)
nmcli c up eth0
二、临时配置:直接修改 resolv.conf 文件(重启失效)
适用于临时测试场景,配置会在服务器重启或网络服务重启后丢失。
1. 编辑 DNS 解析文件
系统实时使用的 DNS 配置存储在
/etc/resolv.conf,直接编辑:bash
vi /etc/resolv.conf
2. 添加 DNS 服务器地址
在文件中添加
nameserver项,示例:bash
# 清空原有内容或注释(#开头为注释)
nameserver 8.8.8.8 # 首选DNS
nameserver 114.114.114.114 # 备用DNS
- 注意:若系统启用
NetworkManager服务,直接修改此文件可能被自动覆盖,永久配置需用方法一。
三、验证 DNS 配置是否生效
配置完成后,通过以下命令确认 DNS 是否正常工作:
1. 查看当前生效的 DNS
bash
cat /etc/resolv.conf
输出应包含配置的 DNS 服务器(如
nameserver 8.8.8.8),说明配置已同步。2. 测试 DNS 解析功能
用
ping或nslookup测试域名解析(如解析百度):bash
# 方法1:ping域名(能通表示解析正常)
ping -c 3 baidu.com
# 方法2:用nslookup直接查看解析结果(需安装bind-utils工具)
# 安装工具(若未安装):yum install -y bind-utils
nslookup baidu.com
- 若输出中显示
Address: 180.101.50.242(百度 IP),说明 DNS 解析正常。
四、常见问题解决
-
DNS 配置不生效:
- 检查网卡配置文件中
DNS1/DNS2是否拼写正确,参数值是否为 IP 格式。 - 执行
systemctl restart NetworkManager重启网络管理服务,强制同步配置。
- 检查网卡配置文件中
-
解析慢或失败:
- 优先选择与服务器同地域的 DNS(如国内用 114.114.114.114,国外用 8.8.8.8)。
- 检查防火墙是否拦截 DNS 端口(UDP 53),放行命令:
firewall-cmd --add-port=53/udp --permanent && firewall-cmd --reload。
-
多网卡 DNS 冲突:
- 确保仅在默认路由对应的网卡中配置 DNS,避免多网卡 DNS 相互覆盖。
通过以上步骤,可完成 DNS 服务器的永久或临时配置,满足服务器域名解析需求。