在CentOS 6.5系统中搭建DNS(域名系统)服务器,可以通过BIND(Berkeley Internet Name Domain)软件实现,DNS作为互联网的核心服务之一,负责将人类可读的域名转换为机器可识别的IP地址,是网络通信的基础,本文将详细介绍在CentOS 6.5上安装、配置和管理DNS服务器的完整步骤,包括主从服务器配置、区域文件管理及常见问题排查。

安装BIND软件包
确保系统已更新至最新状态,然后安装BIND相关软件包,打开终端,执行以下命令:
sudo yum update -y sudo yum install bind bind-utils -y
bind是DNS服务器的核心软件包,bind-utils提供了测试DNS服务的工具(如nslookup、dig等),安装完成后,启动BIND服务并设置开机自启:
sudo service named start sudo chkconfig named on
配置主DNS服务器
主DNS服务器的配置文件位于/etc/named.conf,该文件定义了DNS服务器的全局参数和区域声明,以下是基础配置示例:
options {
listen-on port 53 { 127.0.0.1; any; }; # 监听所有接口的53端口
directory "/var/named"; # 区域文件存放目录
allow-query { any; }; # 允许所有客户端查询
recursion yes; # 启用递归查询
};
zone "example.com" IN {
type master; # 主区域类型
file "example.com.zone"; # 区域文件名
allow-transfer { 192.168.1.100; }; # 允许从服务器IP
allow-update { none; }; # 禁止动态更新
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.zone"; # 反向解析区域文件
};
保存配置文件后,创建正向和反向区域文件,以example.com为例,正向区域文件/var/named/example.com.zone内容如下:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025081501 ; 序列号
3600 ; 刷新间隔
1800 ; 重试间隔
604800 ; 过期时间
86400 ) ; 最小TTL
@ IN NS ns1.example.com.
ns1 IN A 192.168.1.10
www IN A 192.168.1.20
mail IN A 192.168.1.30
反向区域文件/var/named/192.168.1.zone内容如下:

$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025081501
3600
1800
604800
86400 )
@ IN NS ns1.example.com.
10 IN PTR ns1.example.com.
20 IN PTR www.example.com.
30 IN PTR mail.example.com.
注意:区域文件的所有者需设置为named,权限为640:
sudo chown named:named /var/named/example.com.zone sudo chown named:named /var/named/192.168.1.zone sudo chmod 640 /var/named/*.zone
配置从DNS服务器
从DNS服务器用于主服务器的冗余和负载均衡,在从服务器上安装BIND后,修改/etc/named.conf,区域声明调整为:
zone "example.com" IN {
type slave;
file "slaves/example.com.zone"; # 区域文件将自动下载至slaves目录
masters { 192.168.1.10; }; # 主服务器IP
};
重启named服务后,从服务器会自动从主服务器同步区域文件,检查/var/named/slaves/目录确认文件是否同步成功。
测试与故障排查
使用nslookup或dig工具测试DNS解析是否正常:
nslookup www.example.com dig example.com MX
若解析失败,检查以下事项:

- 防火墙规则:确保53端口(TCP/UDP)已开放:
sudo iptables -I INPUT -p tcp --dport 53 -j ACCEPT sudo iptables -I INPUT -p udp --dport 53 -j ACCEPT
- 日志文件:查看
/var/log/messages或/var/named/named.run定位错误信息。 - 配置语法:使用
named-checkconf检查配置文件语法,named-checkzone验证区域文件:sudo named-checkconf /etc/named.conf sudo named-checkzone example.com /var/named/example.com.zone
安全加固建议
- 限制查询范围:在
options段中设置allow-query { localhost; trusted_network; };,避免开放解析。 - 启用DNSSEC:通过
dnssec-keygen生成密钥,并在区域中添加DNSKEY和RRSIG记录。 - 定期更新:保持BIND软件版本最新,修补安全漏洞。
相关问答FAQs
Q1: 如何修改DNS服务器的监听地址,仅允许内网访问?
A1: 在/etc/named.conf的options段中,将listen-on port 53 { any; }修改为内网IP段,例如listen-on port 53 { 127.0.0.1; 192.168.1.0/24; };,然后重启named服务。
Q2: DNS区域文件中的序列号(Serial Number)作用是什么?从服务器如何同步更新?
A2: 序列号是一个10位数字,格式为YYYYMMDDSS,每次修改区域文件后需递增,从服务器会定期检查主服务器的序列号,若发现更大值则触发区域传输(AXFR)同步数据,序列号未正确更新可能导致从服务器无法同步。