在CentOS系统中配置DNS服务器通常使用BIND(Berkeley Internet Name Domain)软件包,它是目前最流行的DNS服务器实现之一,下面将详细介绍在CentOS 7/8系统中安装、配置和测试DNS服务器的完整步骤。

确保系统已更新到最新状态,打开终端,执行以下命令更新系统包:sudo yum update -y(对于CentOS 7)或sudo dnf update -y(对于CentOS 8),安装BIND软件包,使用命令sudo yum install bind bind-utils -y或sudo dnf install bind bind-utils -y,安装完成后,启动named服务(BIND的守护进程)并设置开机自启:sudo systemctl start named和sudo systemctl enable named,检查服务状态确保正常运行:sudo systemctl status named。
BIND的主要配置文件位于/etc/named.conf,这是全局配置文件,定义了服务器的基本参数,在编辑前建议先备份原文件:sudo cp /etc/named.conf /etc/named.conf.bak,使用vi或nano编辑器打开文件:sudo vi /etc/named.conf,关键配置项包括:options段落中设置监听地址(如listen-on port 53 { 127.0.0.1; 192.168.1.100; };,其中192.168.1.100为服务器IP)、允许查询的地址(allow-query { localhost; 192.168.1.0/24; };)、数据目录(directory "/var/named";)等,确保dnssec-validation设置为no(如果暂时不启用DNSSEC),并检查recursion yes;是否启用。
接下来创建区域文件,定义正向解析和反向解析区域,假设要配置example.com域的正向解析,首先在/etc/named.conf末尾添加区域声明:
zone "example.com" IN {
type master;
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.db";
allow-update { none; };
};
然后创建区域文件,正向区域文件路径为/var/named/example.com.zone,使用named-checkzone命令生成模板:sudo named-checkzone example.com /dev/null | sudo tee /var/named/example.com.zone,编辑该文件,添加以下内容:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025100101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.example.com.
IN MX 10 mail.example.com.
ns1 IN A 192.168.1.100
www IN A 192.168.1.101
mail IN A 192.168.1.102
反向区域文件/var/named/192.168.1.db的创建方式类似:sudo named-checkzone 1.168.192.in-addr.arpa /dev/null | sudo tee /var/named/192.168.1.db为:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025100101
3600
1800
604800
86400 )
IN NS ns1.example.com.
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 /var/named/192.168.1.db,使用named-checkconf检查配置文件语法:sudo named-checkconf,以及named-checkzone检查区域文件: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。
配置防火墙允许DNS流量,执行:sudo firewall-cmd --permanent --add-service=dns和sudo firewall-cmd --reload,测试DNS解析功能,使用nslookup或dig命令,nslookup www.example.com或dig @192.168.1.100 www.example.com,反向解析测试:nslookup 192.168.1.101,如果无法解析,检查/var/log/messages日志文件排查错误。

以下是常见配置参数说明表格:
| 参数 | 位置 | 说明 |
|---|---|---|
| listen-on port 53 | options | 监听的IP地址和端口 |
| allow-query | options | 允许查询的客户端IP或网段 |
| directory | options | 区域文件存储目录 |
| zone "域名" | named.conf末尾 | 定义正向解析区域 |
| zone "反向地址.in-addr.arpa" | named.conf末尾 | 定义反向解析区域 |
| file "区域文件名" | zone声明 | 指定区域文件路径 |
| SOA记录 | 区域文件起始 | 起始授权机构记录,包含序列号、刷新时间等 |
| NS记录 | 区域文件 | 名称服务器记录 |
| A记录 | 区域文件 | 主机地址记录 |
| PTR记录 | 反向区域文件 | 指针记录,实现IP到域名映射 |
相关问答FAQs:
-
问题:如何配置DNS转发,将无法解析的请求转发到上游DNS服务器?
解答:在/etc/named.conf的options段落中添加转发配置,forwarders { 8.8.8.8; 114.114.114.114; }; forward first;第一行指定上游DNS服务器IP,第二行表示优先转发转发器,若转发失败则尝试自行解析,修改后重启named服务即可生效。
-
问题:如何为局域网内的其他客户端配置使用此DNS服务器?
解答:在客户端设备的网络设置中,将DNS服务器地址修改为CentOS DNS服务器的IP(如192.168.1.100),在Linux客户端可编辑/etc/resolv.conf文件,添加nameserver 192.168.1.100;在Windows客户端中,进入“网络和共享中心”→“更改适配器设置”→右键选择网络连接→“属性”→“Internet协议版本4(TCP/IPv4)”→“属性”,手动设置DNS服务器地址,确保客户端能访问DNS服务器的53端口(TCP/UDP)。
