安装bindutils和named,编辑/etc/named.conf配置主配,添加正向/反向zone,firewallcmd开放5
CentOS架设DNS服务器详细指南
环境准备
系统要求
项目 | 要求 |
---|---|
操作系统 | CentOS 7/8 |
内存 | ≥512MB |
存储空间 | ≥200MB(用于存储区域文件) |
网络环境 | 公网IP或内网固定IP |
软件选择
软件组件 | 版本说明 |
---|---|
BIND | 11+(CentOS默认版本) |
firewalld | 系统自带防火墙管理工具 |
安装BIND服务
安装基础软件包
yum install y bind bindutils
验证安装结果
named v # 输出示例:BIND 9.11.4RedHat9.11.43.Pkg.el7_9.x86_64
配置文件详解
主配置文件路径
文件路径 | 说明 |
---|---|
/etc/named.conf |
主配置文件 |
/etc/named/ |
区域配置文件存放目录 |
/var/named/ |
区域文件和日志文件存放目录 |
named.conf核心配置
options { listenon port 53 { any; }; # 监听所有接口的53端口 directory "/var/named"; # 数据文件存放路径 dumpfile "/var/named/data/cache_dump.db"; # 缓存转储文件 statisticsfile "/var/named/data/named_stats.txt"; # 统计文件 recursion yes; # 启用递归查询 allowquery { any; }; # 允许所有客户端查询 };
配置正向解析区域
创建区域配置文件
cd /etc/named/ vim example.com.zone # 创建新区域文件
区域文件内容示例
$TTL 86400 ; 默认生存时间(1天) @ IN SOA ns1.example.com. admin.example.com. ( 2023100101 ; 序列号 3600 ; 刷新时间(1小时) 1800 ; 重试间隔(30分钟) 1209600 ; 过期时间(2周) 86400 ) ; 最小生存时间(1天) IN NS ns1.example.com. IN NS ns2.example.com. ns1 IN A 192.168.1.1 ; 主DNS服务器IP ns2 IN A 192.168.1.2 ; 备用DNS服务器IP www IN A 192.168.1.100 ; 主机记录 mail IN A 192.168.1.101 ; 邮件服务器记录
修改主配置文件引用
在named.conf
中添加:
zone "example.com" IN { type master; file "example.com.zone"; allowupdate { none; }; };
配置反向解析区域
创建反向区域文件
vim 1.168.192.inaddr.arpa.zone
反向区域文件内容示例
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2023100101 ; 序列号 3600 ; 刷新时间 1800 ; 重试间隔 1209600 ; 过期时间 86400 ) ; 最小生存时间 IN NS ns1.example.com. IN NS ns2.example.com. 1 IN PTR ns1.example.com. ; IP对应主机名映射 2 IN PTR ns2.example.com. 100 IN PTR www.example.com. 101 IN PTR mail.example.com.
修改主配置文件引用
在named.conf
中添加:
zone "1.168.192.inaddr.arpa" IN { type master; file "1.168.192.inaddr.arpa.zone"; allowupdate { none; }; };
安全策略配置
限制可查询网段
修改named.conf
中的allowquery
配置:
allowquery { 192.168.1.0/24; 127.0.0.1; } ; 仅允许内网和本地回环地址查询
配置访问控制列表(ACL)
acl "trusted" { 192.168.1.0/24; localhost; }; options { allowquery { trusted; }; };
防火墙配置
开放DNS服务端口
firewallcmd permanent addservice=dns firewallcmd reload
验证端口状态
firewallcmd listall | grep dns # 输出示例:services: dns
服务管理与优化
设置开机自启
systemctl enable named
查看服务状态
systemctl status named # 应显示:active (running)
性能优化参数
在named.conf
的options
部分添加:
forwarders { 8.8.8.8; 8.8.4.4; }; # 指定上游DNS服务器 maxcachesize 50%; # 缓存占用内存比例
测试验证
使用dig命令测试
dig @127.0.0.1 www.example.com # 测试正向解析 dig @127.0.0.1 x 192.168.1.100 # 测试反向解析
预期输出示例
;; ANSWER SECTION: www.example.com IN A 192.168.1.100 ;; ADDITIONAL SECTION: ...
常见问题排查
症状 | 可能原因 | 解决方案 |
---|---|---|
无法解析新记录 | 区域文件未重新加载 | rndc reload |
反向解析失败 | PTR记录配置错误 | 检查反向区域文件语法 |
外部网络无法访问 | 防火墙未开放端口 | firewallcmd addservice=dns |
递归查询超时 | 未配置forwarders | 添加上游DNS服务器配置 |
相关问题与解答
Q1:如何为现有域名添加新的子域名记录?
A1:
- 编辑对应的区域文件(如
example.com.zone
) - 添加新记录示例:
shop IN A 192.168.1.102 ; 新增子域名记录 api IN A 192.168.1.103 ; API服务器记录
- 重新加载配置:
rndc reload
- 验证:
dig @localhost shop.example.com
Q2:如何配置DNS服务器的转发功能?
A2:
- 在
named.conf
的options
部分添加forwarders
配置:forwarders { 114.114.114.114; }; # 使用阿里公共DNS作为转发器
- 禁用递归查询(可选):
recursion no;
- 重新加载服务:
rndc restart
- 此时服务器将作为转发器,把非本域查询请求转发到指定
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/204465.html