安装bind,编辑named.conf,定义zone,添加NS/A记录,开放防火墙53端口,启动name
CentOS7上搭建DNS服务器详细教程
环境准备
系统要求
| 项目 | 要求 |
|---|---|
| 操作系统 | CentOS 7.x |
| 内存 | ≥512MB(建议1GB+) |
| 存储空间 | ≥200MB(含日志文件) |
| 网络环境 | 公网IP或内网固定IP |
基础网络配置
# 查看网络接口名称 ip addr show # 配置网卡(示例eth0) nmcli con mod "System eth0" ipv4.addresses "192.168.1.10/24" ipv4.gateway "192.168.1.1" ipv4.dns "8.8.8.8" nmcli con up "System eth0"
安装BIND DNS服务
安装软件包
# 更新YUM源 yum update y # 安装BIND yum install y bind bindutils # 验证安装 named V
启动与自启设置
# 启动服务 systemctl start named # 设置开机自启 systemctl enable named # 查看运行状态 systemctl status named
核心配置文件解析
/etc/named.conf主配置文件
// 全局配置示例
options {
listenon port 53 { 192.168.1.10; any; }; // 监听地址
directory "/var/named"; // 数据存放目录
dumpfile "/var/named/data/cache_dump.db";
statisticsfile "/var/named/data/named_stats.txt";
recursion yes; // 开启递归查询
allowquery { any; }; // 允许所有客户端查询
};
正向解析区域配置
// 在named.conf中添加zone配置
zone "example.com" IN {
type master;
file "example.com.zone"; // 对应文件路径:/var/named/example.com.zone
allowupdate { none; }; // 禁止动态更新
};
反向解析区域配置
// 反向解析配置示例(针对192.168.1.x/24)
zone "1.168.192.inaddr.arpa" IN {
type master;
file "1.168.192.zone"; // 对应文件路径:/var/named/1.168.192.zone
};
区域文件制作
创建目录结构
mkdir p /var/named/ chown named:named /var/named/
正向区域文件示例 (/var/named/example.com.zone)
$TTL 86400 ; 默认生存时间(秒)
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; Serial Number
3600 ; Refresh (秒)
1800 ; Retry (秒)
1209600 ; Expire (秒)
86400 ) ; Minimum TTL (秒)
IN NS ns1.example.com.
IN NS ns2.example.com.
ns1 IN A 192.168.1.10 ; 主DNS服务器IP
ns2 IN A 192.168.1.11 ; 备用DNS服务器IP
www IN A 192.168.1.100 ; Web服务器IP
mail IN A 192.168.1.101 ; 邮件服务器IP
反向区域文件示例 (/var/named/1.168.192.zone)
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; Serial Number
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.example.com.
IN NS ns2.example.com.
10 IN PTR ns1.example.com.
11 IN PTR ns2.example.com.
100 IN PTR www.example.com.
101 IN PTR mail.example.com.
安全加固设置
SELinux配置
# 添加BIND相关策略 setsebool P named_write_master_zones on
防火墙配置
# 开放TCP/UDP 53端口 firewallcmd permanent addport=53/tcp addport=53/udp firewallcmd reload
测试验证
使用dig命令测试
# 测试正向解析 dig @192.168.1.10 www.example.com # 测试反向解析 dig x 192.168.1.100 @192.168.1.10
使用nslookup交互测试
# 进入交互模式 nslookup example.com 192.168.1.10 > server 192.168.1.10 # 指定DNS服务器 > www.example.com # 查询记录
常见问题处理
| 现象 | 解决方法 |
|---|---|
| 服务无法启动 | 检查named.conf语法错误,使用namedcheckconf /etc/named.conf检测 |
| 域名解析失败 | 确认区域文件中的NS记录与实际服务器IP匹配,检查SOA记录中的序列号 |
| 客户端无法访问DNS服务器 | 检查防火墙规则,确认53端口已开放,SELinux策略正确 |
| 递归查询功能异常 | 在options中设置forwarders指向上游DNS,或保持recursion yes;配置 |
相关问题与解答
Q1:如何将DNS服务器设置为缓存服务器?
A:需修改named.conf配置文件,在options段添加forwarders指令指向上游DNS,并关闭递归查询:

options {
forwarders { 8.8.8.8; 8.8.4.4; }; # Google公共DNS
recursion no; # 关闭递归查询
};
此时DNS服务器将作为转发缓存服务器,不直接提供域名解析。
Q2:如何实现DNS主从架构?
A:需在主服务器配置中添加allowtransfer指令,并在从服务器配置zone类型为slave:
主服务器配置:

zone "example.com" IN {
type master;
file "example.com.zone";
allowtransfer { 192.168.1.11; }; # 允许从服务器IP同步数据
};
从服务器配置:
zone "example.com" IN {
type slave;
file "slaves/example.com.zone"; # 数据文件路径
masters { 192.168.1.10; }; #
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/202925.html