如何在CentOS/RHEL系列服务器中配置DNS服务器

在 CentOS/RHEL 系列服务器中配置 DNS 服务器,核心是通过网卡配置文件(永久生效)或直接修改 DNS 解析文件(临时生效)实现,以下是具体步骤,适用于所有主流衍生版本(含 Rocky Linux、AlmaLinux):

一、推荐:通过网卡配置文件配置(永久生效)

DNS 配置与网卡绑定,重启网络或服务器后配置不会丢失,是生产环境的首选方式。

1. 确认网卡名称

先确定需要配置 DNS 的网卡(如eth0ens33):
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 解析功能

pingnslookup测试域名解析(如解析百度):
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 解析正常。

四、常见问题解决

  1. DNS 配置不生效
    • 检查网卡配置文件中DNS1/DNS2是否拼写正确,参数值是否为 IP 格式。
    • 执行systemctl restart NetworkManager重启网络管理服务,强制同步配置。
  2. 解析慢或失败
    • 优先选择与服务器同地域的 DNS(如国内用 114.114.114.114,国外用 8.8.8.8)。
    • 检查防火墙是否拦截 DNS 端口(UDP 53),放行命令:firewall-cmd --add-port=53/udp --permanent && firewall-cmd --reload
  3. 多网卡 DNS 冲突
    • 确保仅在默认路由对应的网卡中配置 DNS,避免多网卡 DNS 相互覆盖。
通过以上步骤,可完成 DNS 服务器的永久或临时配置,满足服务器域名解析需求。
阅读剩余
THE END