在CentOS上安装BIND(Berkeley Internet Name Domain)DNS服务器是一个常见的任务,特别是在需要搭建内部DNS服务或进行网络配置优化时,以下是一个详细的步骤指南,包括安装、配置和测试BIND DNS服务器的过程。
准备工作
1.1 CentOS系统环境准备

确保你已经有一个运行着CentOS操作系统的服务器,本文将以CentOS 7或CentOS 8为例进行介绍,你需要具备管理员权限,并且可以通过SSH连接到服务器。
1.2 确认网络配置
检查服务器的IP地址、子网掩码、网关等网络配置信息是否正确,并且能够正常访问外部网络。
1.3 确认域名的注册与解析
在进行BIND DNS服务器的安装与配置之前,确保你已经注册了你打算使用的域名,并且完成了域名解析的配置。
安装BIND软件包
使用YUM包管理器来安装BIND软件包:

sudo yum install bind bindutils y
安装完成后,可以通过以下命令确认是否安装成功:
named v
终端将返回你安装的BIND软件的版本信息。
配置BIND DNS服务器
3.1 编辑主配置文件
主要的配置文件是/etc/named.conf,使用文本编辑器打开它,并进行相应的配置。
sudo vi /etc/named.conf
在文件中添加以下内容(假设我们的域名为example.com):
options {
listenon port 53 { any; };
directory "/var/named";
dumpfile "/var/named/data/cache_dump.db";
statisticsfile "/var/named/data/named_stats.txt";
allowquery { any; };
recursion yes;
};
zone "example.com" IN {
type master;
file "/var/named/forward.example.com";
allowupdate { none; };
};
zone "1.168.192.inaddr.arpa" IN {
type master;
file "/var/named/reverse.example.com";
allowupdate { none; };
};3.2 创建区域文件

正向区域文件
创建正向区域文件/var/named/forward.example.com:
sudo vi /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反向区域文件
创建反向区域文件/var/named/reverse.example.com:
sudo vi /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服务
启动BIND服务并设置其在系统启动时自动启动:
sudo systemctl start named sudo systemctl enable named
配置防火墙
开启DNS服务请求通过防火墙:
firewallcmd permanent addservice=dns firewallcmd reload
或者,如果你使用的是其他防火墙管理工具,如iptables,请相应地配置规则以允许DNS流量。
修改客户端设备的DNS设置
在客户端设备上,将DNS设置为指向你搭建的内网DNS服务器的IP地址,可以通过编辑/etc/resolv.conf文件,将nameserver的值修改为你的DNS服务器的IP地址。
sudo vi /etc/resolv.conf
添加或修改以下行:
nameserver 192.168.1.1
测试DNS解析
使用ping或nslookup命令测试域名解析是否正常工作:
ping www.example.com nslookup www.example.com
如果一切配置正确,你应该能够看到对应的IP地址。
常见问题及解答(FAQs)
Q1: BIND服务无法启动怎么办?
A1: 如果BIND服务无法启动,首先检查配置文件是否有语法错误,可以使用以下命令检查配置文件的语法:
namedcheckconf /etc/named.conf namedcheckzone /var/named/forward.example.com /etc/named.conf
如果发现错误,根据提示修正配置文件后重新启动服务,确保防火墙设置允许DNS流量通过。
Q2: 如何更改BIND的监听端口?
A2: 默认情况下,BIND监听UDP和TCP的53端口,如果你需要更改监听端口,可以在/etc/named.conf中修改listenon指令,如果你想让BIND监听5353端口,可以修改为:
listenon port 5353 { any; };确保防火墙规则也相应地更新以允许新的端口。
