CentOS 上 BIND 服务部署与配置
一、BIND 简介
BIND(Berkeley Internet Name Domain)是广泛使用的开源DNS(域名系统)服务器软件,由互联网系统协会(Internet Systems Consortium,ISC)维护,BIND 在 Linux 系统中通常以 named 服务的形式运行,监听 53 号端口,其主要配置文件为/etc/named.conf,用于定义区域和指定区域数据库文件名称,区域数据库文件通常保存于/var/named/ 目录下,用于定义区域的资源类型。

二、安装 BIND
1、更新系统并安装 EPEL 仓库:
sudo yum update y
sudo yum install epelrelease y2、安装 BIND:
sudo yum install bind bindutils y三、配置 BIND
1. 修改主配置文件/etc/named.conf
options {
listenon port 53 { any; }; # 监听所有IPv4地址的53端口
listenonv6 port 53 { ::1; }; # 监听本地IPv6地址的53端口
directory "/var/named"; # 全局目录
dumpfile "/var/named/data/cache_dump.db";
statisticsfile "/var/named/data/named_stats.txt";
memstatisticsfile "/var/named/data/named_mem_stats.txt";
allowquery { any; }; # 允许任何来源查询
recursion yes; # 启用递归查询
dnssecenable yes; # 启用DNSSEC
dnssecvalidation yes; # 启用DNSSEC验证
dnsseclookaside auto; # 自动DNSSEC查找
bindkeysfile "/etc/named.iscdlv.key"; # ISC DLV密钥文件路径
managedkeysdirectory "/var/named/dynamic"; # 动态管理密钥目录
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";2. 配置正向解析区域文件
创建或修改/etc/named.conf 文件,添加以下内容:
zone "example.com" IN {
type master;
file "/var/named/forward.example.com";
allowupdate { none; };
};创建正向解析区域文件/var/named/forward.example.com:

$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023042401 ; 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.23. 配置反向解析区域文件
创建或修改/etc/named.conf 文件,添加以下内容:
zone "1.168.192.inaddr.arpa" IN {
type master;
file "/var/named/reverse.example.com";
allowupdate { none; };
};创建反向解析区域文件/var/named/reverse.example.com:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023042401 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
IN NS ns1.example.com.
1 IN PTR ns1.example.com.
2 IN PTR www.example.com.四、启动 BIND 服务并检查状态
1、启动 BIND 服务:
sudo systemctl start named2、设置 BIND 服务开机自启:
sudo systemctl enable named3、检查 BIND 服务状态:

sudo systemctl status named如果服务正在运行,您将看到类似以下的输出:
● named.service Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: enabled) Active: active (running) since Wed 20230222 10:22:13 EST; 2 days ago
五、测试 DNS 解析
1、修改/etc/resolv.conf:
sudo nano /etc/resolv.conf添加以下内容:
nameserver 192.168.1.1 # 您的DNS服务器IP地址2、使用dig 命令测试正向解析:
dig @localhost www.example.com预期输出:
;; ANSWER SECTION:
www.example.com. 86400 IN A 192.168.1.23、使用dig 命令测试反向解析:
dig x @localhost 192.168.1.2预期输出:
;; ANSWER SECTION:
2.168.192.inaddr.arpa. 86400 IN PTR www.example.com.六、常见问题及解决方案
Q1: BIND 服务无法启动怎么办?
A1: 请检查配置文件语法是否正确,使用以下命令检查:
namedcheckconf /etc/named.conf namedcheckzone /var/named/forward.example.com /etc/named.conf forward.example.com namedcheckzone /var/named/reverse.example.com /etc/named.conf reverse.example.com
确保没有错误信息,然后重新启动 BIND 服务。
Q2: 如何更改 BIND 服务监听的端口?
A2: 编辑/etc/named.conf 文件,找到listenon port 53,将其改为所需的端口号,
listenon port 5353 { any; };然后重新启动 BIND 服务,注意防火墙规则也需要相应调整。
Q3: 如何配置 BIND 实现DNS转发?
A3: 编辑/etc/named.conf 文件,在options 块中添加forwarders 参数,
options {
forwarders {
8.8.8.8; # Google Public DNS IP地址
8.8.4.4; # Google Public DNS IP地址备份
};
};然后重新加载 BIND 配置:
sudo systemctl reload named
