在CentOS系统中配置DNS服务器是网络管理中的重要任务,无论是搭建本地域名解析服务还是为内网用户提供域名解析支持,掌握DNS配置方法都十分必要,本文将以BIND(Berkeley Internet Name Domain)为例,详细介绍在CentOS下配置DNS服务器的步骤与注意事项。

安装DNS服务软件
首先需要安装BIND软件包,它是Linux系统中最常用的DNS服务器实现,通过以下命令进行安装:
sudo yum install bind bind-utils -y
安装完成后,启动named服务并设置为开机自启:
sudo systemctl start named sudo systemctl enable named
使用systemctl status named检查服务状态,确保服务正常运行。
配置主配置文件
BIND的主配置文件位于/etc/named.conf,需要根据实际需求进行修改,首先备份原始配置文件:
sudo cp /etc/named.conf /etc/named.conf.bak
使用vim编辑器打开主配置文件:
sudo vim /etc/named.conf
关键配置项包括:
- 监听地址:将
listen-on port 53 { 127.0.0.1; };修改为listen-on port 53 { any; };以允许所有客户端访问,或指定特定IP地址。 - 允许查询:将
allow-query { localhost; };修改为allow-query { any; };或指定网段,如allow-query { 192.168.1.0/24; };。 - 区域配置:在文件末尾添加正向和反向解析区域声明。
配置区域文件
区域文件用于存储域名与IP地址的映射关系,首先创建正向解析区域文件,例如example.com:

sudo vim /var/named/example.com.zone ```注意替换实际域名和IP):
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2025110101 ; serial 3600 ; refresh 1800 ; retry 604800 ; expire 86400 ) ; minimum IN NS ns1.example.com. IN MX 10 mail.example.com. ns1 IN A 192.168.1.10 www IN A 192.168.1.20 mail IN A 192.168.1.30
同样创建反向解析区域文件:
```bash
sudo vim /var/named/192.168.1.db
添加反向解析记录:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025110101 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
IN NS ns1.example.com.
10 IN PTR ns1.example.com.
20 IN PTR www.example.com.
30 IN PTR mail.example.com.
确保区域文件的所有权为named用户:
sudo chown named:named /var/named/example.com.zone sudo chown named:named /var/named/192.168.1.db
配置区域声明
在/etc/named.conf中添加区域声明,在options语句后添加以下内容:
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.db";
allow-update { none; };
};
检查配置文件语法是否正确:
sudo named-checkconf sudo named-checkzone example.com /var/named/example.com.zone sudo named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.db
启动服务与测试
重启named服务使配置生效:
sudo systemctl restart named
使用dig或nslookup命令测试DNS解析:

dig @localhost www.example.com nslookup 192.168.1.20
若能正确返回解析结果,说明DNS配置成功,若需远程访问,确保防火墙允许53端口流量:
sudo firewall-cmd --permanent --add-port=53/tcp sudo firewall-cmd --permanent --add-port=53/udp sudo firewall-cmd --reload
安全加固建议
- 限制查询范围:在
named.conf中设置allow-query { localhost; 192.168.1.0/24; };仅允许特定客户端查询。 - 启用DNSSEC:通过
dnssec-keygen生成密钥,并在区域配置中添加DNSSEC记录。 - 定期更新:及时更新BIND软件包以修复安全漏洞。
相关问答FAQs
Q1: 如何排查DNS服务无法解析的问题?
A: 首先检查named服务状态(systemctl status named),确认服务正常运行,然后使用named-checkconf和named-checkzone检查配置文件语法是否正确,检查防火墙设置,确保53端口未被阻止,最后使用dig命令测试解析,观察返回的错误信息,常见的包括区域文件权限错误、SOA记录格式错误等。
Q2: 如何配置DNS转发功能?
A: 在/etc/named.conf的options语句中添加forwarders选项,指定上游DNS服务器地址,
options {
forwarders { 8.8.8.8; 114.114.114.114; };
forward only;
};
forward only表示所有非本地区域的查询都将转发到指定服务器,若设置为forward first则优先转发,失败后尝试递归查询,修改后重启named服务即可生效。