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 y
2、安装 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.2
3. 配置反向解析区域文件
创建或修改/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 named
2、设置 BIND 服务开机自启:
- sudo systemctl enable named
3、检查 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.2
3、使用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