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