1. 介绍
当我们在部署一个企业级的网络时,DNS服务器是必不可少的一部分。CentOS 7.x 提供了 DNS 服务器的软件包 BIND9,可以用来构建一个分布式、高可用性的 DNS 服务器架构。本文就将向您介绍如何在 CentOS 7.x 上搭建主、从 DNS 服务器。
2. 环境准备
在开始之前,请确保您有两台 CentOS 7.x 服务器,并且这两台服务器之间可以互相通信。一台作为主 DNS 服务器,一台作为从 DNS 服务器。
下面是两台服务器的 IP 地址和主机名:
主 DNS 服务器 | 从 DNS 服务器 |
---|---|
192.168.1.100 | 192.168.1.101 |
dns-master.example.com | dns-slave.example.com |
3. 在主 DNS 服务器上安装 BIND9
在主 DNS 服务器上安装 BIND9:
sudo yum install bind bind-utils -y
安装完成后,启动 BIND9:
sudo systemctl start named
查看 BIND9 的状态:
sudo systemctl status named
如果出现如下信息,则表示 BIND9 已经正确启动:
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-06-04 14:16:53 CST; 2 weeks 0 days ago
Main PID: 22255 (named)
CGroup: /system.slice/named.service
└─22255 /usr/sbin/named -u named -c /etc/named.conf
BIND9 启动后,默认监听 53 端口,可以使用以下命令验证:
sudo netstat -tulpn | grep named
如果出现以下信息,则表示 BIND9 正确监听在 53 端口:
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 22255/named
tcp6 0 0 :::53 :::* LISTEN 22255/named
udp 0 0 0.0.0.0:53 0.0.0.0:* 22255/named
udp6 0 0 :::53 :::* 22255/named
4. 配置主 DNS 服务器
4.1 配置域名解析
在主 DNS 服务器上,编辑 /etc/named.conf 文件:
sudo vi /etc/named.conf
在 options 段落中添加:
listen-on port 53 { any; };
allow-query { any; };
forwarders { 8.8.8.8; 8.8.4.4; };
其中,listen-on 表示允许哪些 IP 地址访问 BIND9;allow-query 表示允许哪些 IP 地址查询 DNS 服务;forwarders 表示转发 DNS 请求。
在前面添加以下内容:
zone "example.com" IN {
type master;
file "example.com.zone";
};
其中,zone 表示定义域名解析的区块,example.com 表示需要解析的域名,type 表示该区块的类型为 master(主区块),file 表示该区块的配置文件为 example.com.zone。
在 /var/named/ 目录下创建 example.com.zone,内容如下:
$ORIGIN example.com.
$TTL 86400
@ IN SOA dns-master.example.com. admin.example.com. (
1 ; serial number
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ; minimum TTL
)
@ IN NS dns-master.example.com.
@ IN NS dns-slave.example.com.
@ IN A 192.168.1.100
www IN CNAME example.com.
其中,$ORIGIN 定义了这个区块的起始域名为 example.com.;$TTL 表示缓存的有效时间为 86400 秒;SOA 表示 Start Of Authority,admin.example.com 表示表示网站管理员的邮箱地址,数字 1 表示序列号。这里使用 DNS 主机名作为主机名服务器的名称;NS 表示 Name Server,A 表示 Address,CNAME 表示 Canonical Name,分别表示 DNS 服务器、IP 地址、域名的别名。
检查 /etc/named.conf 配置文件是否正确:
sudo named-checkconf
如果出现 No errors,则表示配置文件正确。
检查 example.com.zone 文件是否正确:
sudo named-checkzone example.com /var/named/example.com.zone
如果出现 zone example.com/IN: loaded serial 1,则表示文件正确。
4.2 配置防火墙规则
开放 53 端口:
sudo firewall-cmd --zone=public --add-port=53/tcp --permanent
sudo firewall-cmd --zone=public --add-port=53/udp --permanent
sudo firewall-cmd --reload
5. 在从 DNS 服务器上安装 BIND9
在从 DNS 服务器上安装 BIND9:
sudo yum install bind bind-utils -y
安装完成后,启动 BIND9:
sudo systemctl start named
查看 BIND9 的状态:
sudo systemctl status named
如果出现如下信息,则表示 BIND9 已经正确启动:
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-06-04 14:16:53 CST; 2 weeks 0 days ago
Main PID: 22255 (named)
CGroup: /system.slice/named.service
└─22255 /usr/sbin/named -u named -c /etc/named.conf
6. 配置从 DNS 服务器
6.1 配置域名解析
在从 DNS 服务器上,编辑 /etc/named.conf 文件:
sudo vi /etc/named.conf
在 options 段落中添加:
listen-on port 53 { any; };
allow-query { any; };
forwarders { 8.8.8.8; 8.8.4.4; };
在前面添加以下内容:
zone "example.com" IN {
type slave;
masters { 192.168.1.100; };
file "example.com.zone";
};
其中,type 表示该区块的类型为 slave(从区块),masters 表示需要同步的主 DNS 服务器的 IP 地址,file 表示该区块的配置文件为 example.com.zone。
检查 /etc/named.conf 配置文件是否正确:
sudo named-checkconf
检查 example.com.zone 文件是否正确:
sudo named-checkzone example.com /var/named/example.com.zone
6.2 配置防火墙规则
开放 53 端口:
sudo firewall-cmd --zone=public --add-port=53/tcp --permanent
sudo firewall-cmd --zone=public --add-port=53/udp --permanent
sudo firewall-cmd --reload
7. 测试
在客户端上,将 DNS 解析服务器指向从 DNS 服务器:
sudo vi /etc/resolv.conf
添加:
nameserver 192.168.1.101
使用 nslookup 命令查询主 DNS 服务器是否可以正常解析 example.com:
nslookup example.com 192.168.1.100
使用 nslookup 命令查询从 DNS 服务器是否可以正常解析 example.com:
nslookup example.com 192.168.1.101
如果都能正常解析,则表示主、从 DNS 服务器部署成功。
8. 总结
本文详细介绍了在 CentOS 7.x 上部署主、从 DNS 服务器的相关操作。主 DNS 服务器负责处理域名解析请求,从 DNS 服务器通过与主 DNS 服务器同步数据来提高 DNS 服务的稳定性和可用性。要注意的是,在配置防火墙规则时,需要开放 53 端口。