CentOS上搭建DNS服务器,需安装BIND软件包,配置named.conf文件及区域文件,启动并启用named服务
Linux CentOS DNS服务器配置指南
DNS服务器
什么是DNS
DNS(Domain Name System,域名系统)是一个分布式数据库,用于将易于记忆的域名(如www.example.com)转换为计算机能够理解的IP地址(如192.168.1.1),它通过分层结构实现全球范围内的域名解析服务。
DNS服务器类型
- 主DNS服务器(Primary Master):存储和管理域名的权威数据,负责处理写入请求。
- 辅助DNS服务器(Secondary Slave):从主服务器同步数据,提供冗余备份。
- 缓存DNS服务器(Caching Only):仅缓存解析结果,加速查询速度。
在CentOS上部署DNS服务器
安装BIND DNS软件
BIND(Berkeley Internet Name Domain)是最常用的DNS服务器软件。
sudo yum install bind bindutils bindchroot y
- bind:主程序包。
- bindutils:包含
nslookup
、dig
等实用工具。 - bindchroot:增强安全性,通过Chroot隔离BIND进程。
配置主配置文件/etc/named.conf
修改以下关键参数:
参数 | 默认值 | 修改建议 | 说明 |
---|---|---|---|
listenon port 53 |
0.0.1 |
any; |
允许所有接口监听 |
allowquery |
localhost; |
any; |
允许所有客户端查询 |
dnssecvalidation |
yes |
no |
禁用DNSSEC验证(若需转发) |
示例配置片段:
options { listenon port 53 { any; }; allowquery { any; }; forwarders { 114.114.114.114; 8.8.8.8; }; recursion yes; dnssecvalidation no; };
定义域名区域
编辑/etc/named.rfc1912.zones
文件,添加正向和反向解析区域:
正向解析区域(例如example.com
)
zone "example.com" IN { type master; file "example.com.zone"; allowupdate { none; }; };
反向解析区域(例如168.1.x
)
zone "1.168.192.inaddr.arpa" IN { type master; file "192.168.1.rev"; allowupdate { none; }; };
创建区域文件
在/var/named/
目录下创建区域文件:
正向区域文件(example.com.zone
)
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2023100101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400) ; Minimum TTL @ IN NS ns1.example.com. ns1 IN A 192.168.1.1 www IN A 192.168.1.100 mail IN MX 10 mail.example.com.
反向区域文件(168.1.rev
)
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2023100102 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400) ; Minimum TTL @ IN NS ns1.example.com. 1 IN PTR ns1.example.com. 100 IN PTR www.example.com.
设置防火墙规则
开放DNS服务端口(53/TCP和UDP):
firewallcmd permanent addservice=dns firewallcmd reload
启动并启用服务
sudo systemctl start named sudo systemctl enable named
客户端配置与测试
配置客户端DNS
修改客户端的/etc/resolv.conf
文件,添加DNS服务器IP:
nameserver 192.168.1.1
或通过nmcli
命令持久化配置:
nmcli con mod "YourConnectionName" ipv4.dns "192.168.1.1" nmcli con up "YourConnectionName"
测试解析
使用以下命令验证DNS服务:
nslookup www.example.com ping www.example.com
常见问题与解答
Q1: 如何更新区域文件后立即生效?
- 操作:增大区域文件的
Serial
号(例如从2023100101
改为2023100102
),然后执行:sudo systemctl restart named
- 说明:辅DNS服务器通过检查
Serial
号判断是否需要同步数据。
Q2: DNS服务器无法解析外部域名怎么办?
- 原因:未配置转发器或递归功能未开启。
- 解决:在
named.conf
中添加forwarders
参数(如公共DNS服务器8.8.8
),并确保recursion yes;
生效。
扩展功能
功能 | 配置项 | 说明 |
---|---|---|
负载均衡 | 为同一域名配置多个A记录 | 实现流量分发 |
安全加固 | 限制allowquery 范围 |
仅允许特定IP查询 |
日志记录 | 启用logging 选项 |
记录查询日志 |
通过以上步骤,您可以在CentOS上成功搭建一个功能完整的DNS服务器,根据实际需求,可进一步配置高级功能如辅助DNS、负载均衡或DNSSEC