DNS的主从架构与数据同步
一、主从架构
// 主服务器
[root@tk ~]# cat /etc/named.conf
//
// named.conf
options {
directory "/var/named";
recursion no;
// 修改为允许从服务器的IP地址下载主服务器的配置文件
allow-transfer { 10.0.0.205; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "test.cn" IN {
type master;
file "test.cn.zone";
};
zone "test1.cn" IN {
type master;
file "test1.cn.zone";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@tk ~]#
// 配置地址库文件中从服务器的地址
[root@tk ~]# cat /var/named/test.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
test.cn. NS tk
test.cn. NS gitlab
tk A 10.0.0.200
gitlab A 10.0.0.205
www A 10.0.0.201
www A 10.0.0.202
abc A 10.0.0.203
* A 1.1.1.1
bieming CNAME abc
[root@tk ~]#
[root@tk ~]# systemctl restart named
// 从服务器
[root@gitlab named]# cat /etc/named.conf
//
// named.conf
options {
directory "/var/named";
};
zone "test.cn" IN {
// 类型为slave
type slave;
// 配置文件设置,也可以放到其他目录下,但是我们要修改named
// 的权限为rwx
file "/var/named/slaves/test.cn.slave";
// 声明主服务器
masters { 10.0.0.200; };
// 以明文方式存储
masterfile-format text;
};
[root@gitlab named]# systemctl restart named
[root@gitlab named]# ls slaves/
test.cn.slave
[root@gitlab named]# nslookup www.test.cn
// 此时就会同步数据
[root@gitlab named]# cat slaves/test.cn.slave
$ORIGIN .
$TTL 86400 ; 1 day
test.cn IN SOA test.cn. rname.invalid. (
0 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS tk.test.cn.
NS gitlab.test.cn.
$ORIGIN test.cn.
* A 1.1.1.1
abc A 10.0.0.203
bieming CNAME abc
gitlab A 10.0.0.205
tk A 10.0.0.200
www A 10.0.0.201
A 10.0.0.202
[root@gitlab named]#
二、数据同步
// 主服务器的地址库中的配置
[root@tk ~]# cat /var/named/test.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
// 数据的版本号,由10个数字组成
2021111111 ; serial
// 每隔1天主从进行数据交互
1D ; refresh
// 失效之后的时间间隔每一个1小时向主服务器尝试建立联系
1H ; retry
// 真正的失效时间,1周,就是说每隔一个小时就行联系,一直联
// 系不上,此时会不在尝试
1W ; expire
// 失效记录的记忆时间3小时
3H ) ; minimum
test.cn. NS tk
test.cn. NS gitlab
tk A 10.0.0.200
gitlab A 10.0.0.205
www A 10.0.0.201
www A 10.0.0.202
abc A 10.0.0.203
* A 1.1.1.1
bieming CNAME abc
[root@tk ~]#