在 CentOS/RHEL 系列服务器中配置 DNS 服务器,核心是通过网卡配置文件(永久生效)或直接修改 DNS 解析文件(临时生效)实现,以下是具体步骤,适用于所有主流衍生版本(含 Rocky Linux、AlmaLinux):
DNS 配置与网卡绑定,重启网络或服务器后配置不会丢失,是生产环境的首选方式。
先确定需要配置 DNS 的网卡(如eth0、ens33):
网卡配置文件路径为 /etc/sysconfig/network-scripts/ifcfg-<网卡名>(如ifcfg-eth0),执行编辑命令:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
 
 
 
在文件中添加或修改DNS1(首选 DNS)和DNS2(备用 DNS),示例:
DNS1=8.8.8.8    # 谷歌公共DNS(通用)
DNS2=114.114.114.114  # 国内公共DNS(适合国内环境)
PEERDNS=no
 
 
 
- 说明:PEERDNS=no用于防止 DHCP 自动获取的 DNS 覆盖手动配置,静态 IP 场景可省略,但动态 IP 场景建议添加。
重启网络服务,让 DNS 配置同步到系统:
nmcli c reload
nmcli c up eth0
 
 
 
适用于临时测试场景,配置会在服务器重启或网络服务重启后丢失。
系统实时使用的 DNS 配置存储在 /etc/resolv.conf,直接编辑:
在文件中添加nameserver项,示例:
nameserver 8.8.8.8    
nameserver 114.114.114.114  
 
 
 
- 注意:若系统启用NetworkManager服务,直接修改此文件可能被自动覆盖,永久配置需用方法一。
配置完成后,通过以下命令确认 DNS 是否正常工作:
输出应包含配置的 DNS 服务器(如nameserver 8.8.8.8),说明配置已同步。
用ping或nslookup测试域名解析(如解析百度):
ping -c 3 baidu.com
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 服务器的永久或临时配置,满足服务器域名解析需求。