当前位置:首页 > 云服务器 > 正文

centos7 搭建dns 服务器

entOS7搭建 DNS服务器可通过安装BIND软件包,启动服务并配置区域文件实现域名与IP双向解析

环境准备与基础配置

1 系统要求

组件 版本/规格 备注
OS CentOS 7.x 推荐最小安装模式
CPU/内存 ≥1核+512MB 生产环境建议2核4GB以上
网络 固定IP地址(非DHCP动态分配) 确保防火墙放行DNS端口

2 关闭冲突服务

执行以下命令停止可能存在的竞争性进程:

systemctl stop named # 停止旧版BIND服务(如有) systemctl disable named yum remove bind bind-utils -y # 彻底卸载旧包


安装BIND软件包

1 通过EPEL源安装最新版

yum install epel-release -y # 启用扩展仓库 yum install bind bind-utils -y # 安装DNS主程序及工具集

验证安装结果:named -v应显示BIND版本号(如9.11.x系列)

2 配置文件路径说明

文件名 作用 默认位置
named.conf 全局配置文件 /etc/named.conf
named.rfc1912.zones 区域模板规范 /etc/named.rfc1912.zones
localdomain.zone 本地域名解析示例 /var/named/


核心配置步骤详解

1 修改主配置文件(/etc/named.conf)

关键参数调整示例:

centos7 搭建dns 服务器 第1张

️ 注意:生产环境务必限制allow-query范围,推荐使用内网IP段(如168.0.0/24)

2 创建正向解析区域(以example.com为例)

新建文件/var/named/example.com.zone并写入:

技巧:serial字段需随每次修改递增,确保变更生效

3 反向解析配置(IP反查域名)

创建/var/named/192.168.1.arpa如下:

$TTL 86400 @ IN SOA ns.example.com. admin.example.com. ( 2024052001 ; serial number同步正向区域 3600 ; refresh interval 1800 ; retry interval 604800 ; expiry time 86400 ) ; minimum TTL IN NS ns.example.com. IN PTR 100.168.192.in-addr.arpa. ns.example.com. IN PTR 101.168.192.in-addr.arpa. webserver.example.com.


权限与SELinux管理

1 文件属主修正

chown root:named /var/named/.zone # 设置正确的所有者和用户组 chmod 640 /var/named/.zone # 限制访问权限

2 SELinux策略更新(重要!)

若遇到服务启动失败,执行:

centos7 搭建dns 服务器 第2张

setsebool -P named_write_master_zones on ausearch -m access -ts recent | grep named # 排查拒绝日志

提示:临时测试可执行setenforce 0禁用SELinux验证功能


服务启动与测试验证

1 启动守护进程

systemctl start named systemctl enable named # 设置为开机自启 systemctl status named # 查看运行状态

成功标志:绿色active状态且无报错信息

2 客户端测试方法对比表

测试工具 命令示例 预期结果
dig dig @localhost example.com 返回A记录192.168.1.101
nslookup nslookup webserver 解析出对应的IP地址
host host -t NS example.com 显示权威DNS服务器为ns.example.com
systemctl journalctl journalctl -u named 查看详细的启动日志

3 常见错误排查指南

现象 可能原因 解决方案
named无法启动 语法错误/权限不足 named-checkconf校验配置
外部无法解析 firewalld未放行UDP53 firewall-cmd --add-port=53/udp
SELinux阻止写入 boolean开关未开启 setsebool -P named_write_master_zones on


高级优化建议

  1. 缓存加速:在options段添加directory "/var/cache/named"并创建专用缓存目录
  2. 日志分割:配置logging { channel default_debug { file "/var/log/named/debug.log"; print-time yes; }; }实现分级存储
  3. 视图控制:使用view "internal" { match { subnet 192.168.1.0/24; } ... }实现内外网隔离解析
  4. 性能监控:定期检查rndc stats统计命令获取请求量、命中率等指标


相关问题与解答

Q1: 如果修改了区域文件后不需要重启服务吗?

A: 根据serial机制自动刷新,但实际部署中建议执行rndc reload命令重新加载配置,避免服务中断,命令格式为:rndc reload [视图名称](默认为主视图)

Q2: 如何防止恶意递归放大攻破?

A: 在options配置段添加以下参数限制递归行为:

recursion no; # 完全禁止递归查询 allow-recursion { none; };# 或仅允许特定IP段进行递归 query-source address port 53; # 强制使用固定源端口增强

centos7 搭建dns 服务器 第3张

DNS
0