在CentOS 6.8系统中配置DNS(域名系统)服务器是网络管理中的基础任务之一,本文将详细介绍如何通过BIND(Berkeley Internet Name Domain)软件包完成DNS服务器的搭建与配置,包括安装、配置文件编写、区域设置、服务启动及常见问题排查等关键步骤,帮助读者快速掌握在CentOS 6.8环境下实现域名解析的方法。

安装BIND软件包
BIND是Linux系统中最常用的DNS服务器软件,CentOS 6.8官方源中提供了bind和bind-utils两个核心包,前者包含DNS服务端程序,后者包含客户端测试工具(如nslookup、dig等),通过以下命令安装:
sudo yum install bind bind-utils -y
安装完成后,检查BIND版本以确认安装成功:
named -v # 应输出类似 "BIND 9.8.2-1.el6_9.7" 的信息
配置主配置文件
BIND的主配置文件为/etc/named.conf,该文件定义了DNS服务器的全局参数、区域声明及访问控制等,编辑文件前建议先备份:
sudo cp /etc/named.conf /etc/named.conf.bak
使用vim或nano打开文件:
sudo vim /etc/named.conf
以下是一个基础配置示例,包含监听地址、允许查询的客户端及区域声明:
options {
listen-on port 53 { 127.0.0.1; 192.168.1.100; }; # 监听本地及指定IP(需替换为实际服务器IP)
listen-on-v6 port 53 { ::1; }; # IPv6监听(可选)
directory "/var/named"; # 区域文件存放目录
dump-file "/var/named/data/cache_dump.db"; # 缓存转储文件
statistics-file "/var/named/data/named_stats.txt"; # 统计文件
allow-query { localhost; 192.168.1.0/24; }; # 允许查询的网段(根据实际需求修改)
recursion yes; # 允许递归查询
};
# 区域声明示例(正向解析区域)
zone "example.com" IN {
type master; # 主DNS服务器
file "example.com.zone"; # 区域文件名
allow-update { none; }; # 禁止动态更新
};
# 反向解析区域(基于192.168.1.0/24网段)
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.zone";
}; 注意:listen-on中的IP地址需替换为服务器的实际IP,allow-query可根据安全需求限制客户端范围。

创建区域文件
区域文件是存储域名与IP映射关系的核心文件,需根据named.conf中声明的区域名创建,文件存放于/var/named目录,需确保属主为named、权限为640。
正向解析区域文件(example.com.zone)
sudo vim /var/named/example.com.zone
``` 示例:
```conf
$TTL 86400 ; 默认TTL(秒)
@ IN SOA ns1.example.com. admin.example.com. (
2025110101 ; 序列号(修改区域时需递增)
3600 ; 刷新间隔(秒)
1800 ; 重试间隔(秒)
604800 ; 过期时间(秒)
86400 ; 负缓存TTL(秒)
)
; 名称服务器记录
IN NS ns1.example.com.
IN NS ns2.example.com.
; 主机记录(A记录)
ns1 IN A 192.168.1.100
www IN A 192.168.1.101
mail IN A 192.168.1.102
; 别名记录(CNAME)
ftp IN CNAME www.example.com. 反向解析区域文件(192.168.1.zone)
sudo vim /var/named/192.168.1.zone
``` 示例:
```conf
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025110101
3600
1800
604800
86400
)
IN NS ns1.example.com.
IN NS ns2.example.com.
; 反向PTR记录(IP到域名映射)
100 IN PTR ns1.example.com.
101 IN PTR www.example.com.
102 IN PTR mail.example.com. 设置文件权限
sudo chown named:named /var/named/example.com.zone sudo chown named:named /var/named/192.168.1.zone sudo chmod 640 /var/named/example.com.zone sudo chmod 640 /var/named/192.168.1.zone
启动并测试DNS服务
启动服务并设置开机自启
sudo service named start # 启动DNS服务 sudo chkconfig named on # 设置开机自启
检查服务状态:
service named status # 应显示 "named (pid 1234) is running..."
测试DNS解析
使用nslookup或dig工具测试域名解析:
# 测试正向解析 nslookup www.example.com # 预期输出:www.example.com 192.168.1.101 # 测试反向解析 nslookup 192.168.1.101 # 预期输出:101.1.168.192.in-addr.arpa www.example.com
若解析失败,检查/var/log/messages日志文件(tail -f /var/log/messages)排查错误,常见问题包括区域文件语法错误、权限问题或网络防火墙拦截。
防火墙与SELinux配置
CentOS 6.8默认启用防火墙(iptables)和SELinux,需开放DNS服务端口(53):
防火墙配置
sudo iptables -I INPUT -p tcp --dport 53 -j ACCEPT sudo iptables -I INPUT -p udp --dport 53 -j ACCEPT sudo service iptables save # 保存规则
SELinux配置
若SELinux为 enforcing 模式,需调整策略允许DNS服务:

sudo setsebool -P named_write_master_zones on # 允许named写入区域文件 sudo semanage port -a -t dns_port -p udp 53 # 添加UDP 53端口 sudo semanage port -a -t dns_port -p tcp 53 # 添加TCP 53端口
FAQs
问题1:修改区域文件后,DNS解析不生效怎么办?
解答:首先检查区域文件语法是否正确,使用named-checkzone命令验证:
sudo named-checkzone example.com /var/named/example.com.zone # 若输出"zone example.com/IN: loaded serial 2025110101",表示语法正确
其次确认序列号(SOA记录中的第一个数字)是否已递增,最后重启DNS服务:
sudo service named restart
问题2:客户端无法查询到外部域名,只能解析本地区域?
解答:这通常是因为未正确配置转发器(forwarder),在/etc/named.conf的options段落中添加以下内容,将未知域名转发到上游DNS服务器(如公共DNS):
forwarders {
8.8.8.8; # Google DNS
114.114.114.114; # 114 DNS
};
forward first; # 优先转发转发器,若转发器不可用则尝试自行解析 修改后保存文件并重启服务即可。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复