介绍
我们有文章介绍了如何配置 Linux 版本的 3CX 双击热备。在整个配置过程中,我们需要另外一台 Linux 的 DNS 服务器,当实现双机热备功能时,备机执行脚本来修改 DNS 服务器中的记录值的功能。
那么本篇我们就来讲讲如何简单搭建一个 Linux 版本的 DNS 服务器。
这里我们使用的环境为:
- Debian 10.2
搭建 DNS
首先需要注意的是这个 DNS 服务器需要设置为静态 IP,如果 IP 变来变去,话机也没办法一直能解析到 3CX 正确的 IP。
这里我们的 DNS 服务器的 IP 是 10.168.1.53
系统装好后,我们需要安装 dns 服务和它的组件:
$ sudo apt install -y bind9 dnsutils
?Tips: 如果 Linux 发行版为 centos,dns 服务是 named
bind9 默认装在 /etc/bind/ 目录下,其中配置文件为 named.conf
,我们看一下他里面记录了哪些信息:
$ cat /etc/bind/named.conf
可以看到这个文件是载入了以下三个文件:
/etc/bind/named.conf.options
/etc/bind/named.conf.local
/etc/bind/named.conf.default-zones
其中 options 结尾的是 DNS 服务器的配置文件;local 结尾的是本地 DNS 服务的配置,我们会在这里声明内部的 FQDN; default-zones 是默认的 zone 文件。
接下来我们给 options 文件先做个备份:
$ cd /etc/bind/$ cp named.conf.options named.conf.options.bak
然后我们将以下内容写入到 options 文件中:
options { listen-on { any; }; listen-on-v6 { none; }; allow-query { any; }; recursion yes; allow-recursion { any; }; allow-transfer {none;}; forwarders { 223.5.5.5; 8.8.8.8; }; };
其中:
- listen-on : 允许查询的 IPv4 地址
- listen-on-v6 : 允许查询的 IPv6 地址
- allow-query : 是否可以查询。如果只允许内网查询的话可设置为 internals
- allow-recursion : 是否允许递归查询,只允许内网查询可设置为 internals
- allow-transfer : 是否允许将 zone 信息转发给其他 DNS 服务器
- forwarders : 本机没有的 DNS 记录,去下面的 DNS 服务器中查询
写入后保存并重启 bind9 服务:
$ sudo service bind9 restart
然后我们查看一下 bind9 服务是否在运行中:
$ sudo service bind9 status
如果服务没有正常运行,就是 options 文件设置有问题。
那么我们已经可以查询本机做一下测试了:
$ dig www.3cx.com @127.0.0.1
如果查询有结果,并且下面的 SERVER 显示的是 127.0.0.1#53,那就说明 DNS 服务器已经跑起来了,并且工作正常!
设置内部 FQDN
既然要设置 FQDN,我们就要建一个域(zone)。比如我这里用的内部 FQDN 为 3cx.debian.domain
。那么域就是 debian.domain。
编辑 named.conf.local
文件,加入以下内容:
zone "debian.domain" { type master; file "/etc/bind/db.debian.domain"; };
将上面的 debian.domain
替换成用户的域。
接着我们在创建一个 db.debian.domain
文件,并填入下面的信息:
$TTL 3600 @ IN SOA 3cx.debian.domain. root.debian.domain. ( 2007010401 ; Serial 3600 ; Refresh [1h] 600 ; Retry [10m] 86400 ; Expire [1d] 600 ) ; Negative Cache TTL [1h]; @ IN NS 3cx.debian.domain. @ IN MX 10 3cx.debian.domain. 3cx IN A 10.168.1.53
记得修改对应的记录值。
修改完后重启一下 bind9 服务:
$ sudo service bing9 restart
然后查一下我们的域名是否可以查询:
$ dig 3cx.debian.domain @127.0.0.1
如上图所示就大功告成了。
应用
我们首先需要将 /etc/resolv.conf
文件中的第一行改为:
nameserver 10.168.1.53
这里的 DNS 改成我们的 DNS 服务器的 IP。
然后话机的 IP 可以直接通过 DHCP 下发,也可以通过公司的主 DNS 做转发(做转发的话有缓存,failover 速度会慢一点)。
那么我们可以 配合Linux 版本的 3CX 双击热备 实现 3CX 的双击热备功能。