本文将为您介绍如何在CentOS7上搭建主备DNS服务器。我们将使用Bind作为DNS服务器,并使用Keepalived实现DNS服务器的高可用性。
一、安装Bind
在CentOS7上安装Bind的方法非常简单。使用以下命令即可快速安装:
sudo yum install bind bind-utils -y
二、配置主DNS服务器
第一步是配置主DNS服务器。以下是我们需要执行的步骤:
2.1 配置Bind
首先,我们需要编辑Bind的配置文件以支持主DNS服务器。我们需要打开文件 /etc/named.conf:
sudo vi /etc/named.conf
找到以下语句并取消注释,以便允许对外提供DNS服务:
// allow-query { localhost; };
改为:
allow-query { any; };
然后添加一个新的区块来指定我们将要支持的域名:
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};
上述配置指定了需要支持的域名(example.com),并将其类型定义为 master 即主DNS服务器的形式。该配置还指定了主DNS服务器使用的文件位置,并禁止了区域更新。
现在,我们需要创建一个名为 example.com.zone 的新文件,该文件将保存我们的DNS记录。使用以下命令即可创建该文件:
sudo vi /var/named/example.com.zone
然后,在该文件中添加以下内容:
$TTL 86400
@ IN SOA example.com. root.example.com. (
2019110501 ; Serial
7200 ; Refresh
3600 ; Retry
1209600 ; Expire
3600 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
;
@ IN MX 10 mail.example.com.
;
www IN A 192.168.1.2
mail IN A 192.168.1.3
ns1 IN A 192.168.1.4
ns2 IN A 192.168.1.5
上述代码包含了指定域名的SOA记录、NS记录、MX记录以及A记录。此外,指定了主DNS服务器的IP地址。
2.2 启动和测试Bind
成功配置Bind之后,我们需要启动它。使用以下命令即可启动:
sudo systemctl start named
sudo systemctl enable named
现在我们可以使用 dig 命令来测试新的DNS服务器是否正常工作。使用以下命令测试:
dig example.com
这将查询DNS服务器以查找 example.com 的IP地址。如果域名解析正常,应该会看到与 example.com 相关联的IP地址。
三、安装和配置备用DNS服务器
然后是安装和配置备用DNS服务器。以下是我们需要执行的步骤:
3.1 安装Keepalived
我们需要在备用服务器上安装Keepalived来实现高可用性。使用以下命令即可快速安装:
sudo yum install keepalived -y
3.2 配置Keepalived
此外,我们还需要配置Keepalived,以便在主DNS服务器出现故障时自动将流量切换到备用DNS服务器。使用以下命令打开 keepalived.conf 文件:
sudo vi /etc/keepalived/keepalived.conf
并将以下配置添加到该文件中:
! Configuration File for keepalived
global_defs {
router_id LB_01
}
vrrp_script check_named {
script "systemctl status named | grep -q 'active (running)'"
interval 10
weight 2
}
vrrp_instance VI_DNS {
interface ens33
state BACKUP
virtual_router_id 51
priority 150
virtual_ipaddress {
192.168.1.10
}
track_script {
check_named
}
}
上述配置指定了Keepalived的全局定义和两个组件(vrrp_script 和 vrrp_instance):
global_defs 包含 router_id 域,用于标识Keepalived实例。
vrrp_script 定义了一个名为 check_named 的脚本,用于检查DNS服务是否处于活动状态。
vrrp_instance 包含了Virtual Router Redundancy Protocol (VRRP)实例的配置。该实例标识为 VI_DNS,使用网卡 ens33 连接。在该实例中,指定了优先级、虚拟IP地址、以及 track_script 模块需要检查的脚本。
3.3 启动和测试Keepalived
配置完Keepalived之后,我们需要启动它。使用以下命令即可启动:
sudo systemctl start keepalived
sudo systemctl enable keepalived
现在,我们可以测试前面章节中创建的DNS服务器的高可用性。使用以下命令测试:
dig example.com @192.168.1.10
这将查询DNS服务器以查找 example.com 的IP地址。如果域名解析正常,应该会看到与 example.com 相关联的IP地址。
现在,您已经成功完成了主备DNS服务器的搭建。如果主DNS服务器出现故障,Keepalived将自动将流量切换到备用DNS服务器,确保您的DNS服务器具有高可用性。