DNS 主从同步原理
- 主从同步:主每次修改配置文件需要修改一下序列号,主从同步主要 看序列号。
- 从DNS:从是可以单独修改,主从不会报错。但从修改后,主端同步给从后 从端修改数据会丢失
- 主从原理:从会监听主的 TCP 53 端口,它会隔一段时间去探测 主配置文件中的序列号,如果主端 序列号更新后 从端探测到会 将主端内容 同步到本地。
- 同步模式:从主动探测时间比较缓慢,可以设置主端,每次变更序列号时主动将,数据信息,推送给从端。
DNS实验环境
master服务器:172.16.2.116
slave1服务器: 172.16.2.225
关闭selinux。
安装步骤
1.安装软件
yum install -y bind bind-utils bind-chroot
说明:
/etc/named.conf,/etc/named.rfc1912.zones是主配置文件
/var/named/named.ca是根区域解析库文件
/var/named/named.localhost, /var/named/named.loopback 是本机和环回地址的解析库文件
rndc---remote name domain controller这是一个辅助管理工具,默认情况下与BIND安装在同一主机,而且只能通过127.0.0.1连接named进程,监听的端口号是TCP/953。
2.修改主服务器配置文件
2.1配置named.conf文件
这个配置文件主要分3段内容,options是全局配置,logging是日志配置,最后是区域解析库配置以及所包含的区域解析库文件配置。
只修改第二行和最后一行为any
options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; };
2.2编辑/etc/named.rfc1912.zones在文件末尾添加一个正向解析区域和一个反向解析区域
1 zone "hanli.com" IN { 2 type master; 3 file "hanli.com.zone"; 4 allow-transfer { 172.16.2.225;}; 5 }; 6 zone "2.16.172.in-addr.arpa" IN { 7 type master; 8 file "2.zone"; 9 allow-transfer { 172.16.2.225}; 10 };
2.3 创建hanli.com.zone解析库文件和反向解析库文件
[[email protected]] /var/named$ cat hanli.com.zone $TTL 1D hanli.com. IN SOA ns.hanli.com. admin.hanli.com. ( 2018030422 2H 10M 1W 1D ) hanli.com. IN NS ns1.hanli.com. @ IN NS ns2.hanli.com. ns1.hanli.com. IN A 172.16.2.116 ns2.hanli.com. IN A 172.16.2.225 hanli.com. IN MX 10 mx1.hanli.com. IN MX 20 mx2.hanli.com. mx1.hanli.com. IN A 172.16.2.116 mx2.hanli.com. IN A 172.16.2.116 www.hanli.com. IN A 172.16.2.116 master IN CNAME www.hanli.com. web IN CNAME www.hanli.com.
2.zone反向解析库文件
[[email protected]] /var/named$ cat 2.zone $TTL 1d @ IN SOA ns.hanli.com. admin.hanli.com. ( 2018030422; 2H; 10M; 1W; 1D; ) IN NS ns.hanli.com. IN NS ns2.hanli.com. 200 IN PTR www.hanli.com. 200 IN PTR ns.hanli.com. 250 IN PTR ns2.hanli.com.
注意事项:
- 区域解析库文件第一个记录必须是SOA记录,必须有NS记录并且正解区域要有NS记录的A记录,反解则不需要有NS记录对应的A记录。
- $TTL表示宏定义,TTL(Time- To-Live),简单的说它表示一条域名解析记录在DNS服务器上缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
- 这个文件里所有的域名结尾的点号一定不能省略。
- 区域解析库文件是放在/var/named目录下,由named进程是以named用户运行,还要让区域解析库文件的属组为named。
[[email protected]] /var/named$ ll total 24 -rw-r--r--. 1 root named 342 Mar 4 23:05 2.zone drwxr-x---. 7 root named 61 Mar 4 18:26 chroot drwxrwx---. 2 named named 23 Mar 4 18:38 data drwxrwx---. 2 named named 31 Mar 4 18:46 dynamic -rw-r--r--. 1 root named 643 Mar 4 23:05 hanli.com.zone -rw-r-----. 1 root named 2281 May 22 2017 named.ca -rw-r-----. 1 root named 152 Dec 15 2009 named.empty -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost -rw-r-----. 1 root named 168 Dec 15 2009 named.loopback drwxrwx---. 2 named named 6 Jan 22 21:30 slaves
检查配置文件语法
# named-checkconf
没有任何输出表示 /etc/named.conf没有语法错误
# named-checkzone "frank.com" "frank.com.zone"
zone frank.com/IN: loaded serial 201802001
OK
正向解析区域检查没问题
# named-checkzone "frank.com" "138.zone"
zone frank.com/IN: loaded serial 201802001
OK
反向解析区域检查没问题
2.4 启动named服务,并测试
# systemctl start named.service
[[email protected]] /var/named/chroot/etc/named$ dig -t A web.hanli.com @172.16.2.116 ; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 <<>> -t A web.hanli.com @172.16.2.116 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36950 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;web.hanli.com. IN A ;; ANSWER SECTION: web.hanli.com. 86400 IN CNAME www.hanli.com. www.hanli.com. 86400 IN A 172.16.2.116 ;; AUTHORITY SECTION: hanli.com. 86400 IN NS ns1.hanli.com. hanli.com. 86400 IN NS ns2.hanli.com. ;; ADDITIONAL SECTION: ns1.hanli.com. 86400 IN A 172.16.2.116 ns2.hanli.com. 86400 IN A 172.16.2.116 ;; Query time: 1 msec ;; SERVER: 172.16.2.116#53(172.16.2.116) ;; WHEN: Sun Mar 04 22:16:52 CST 2018 ;; MSG SIZE rcvd: 144
到此DNS主服务器已经配置完毕并能正常工作。
3、从服务器配置192.168.138.201
3.1、安装bind
3.2、编辑/etc/named.conf将监听IP地址改一下,其它不需要更改
options { listen-on port 53 { 172.16.2.225;127.0.0.1; };
3.3 编辑/etc/named.rfc1912.zones
zone "hanli.com" IN { type slave; masters { 172.16.2.116; }; file "slaves/hanli.com"; }; zone "2.16.172.in-addr.arpa" IN { type slave; masters { 172.16.2.116; }; file "slaves/2.zone"; };
3.4 注意事项:从服务器的区域解析库文件应当是从主服务器加载过来的,所以无需创建区域解析库文件。
3.5 启动named服务,测试同步功能
# systemctl start named
检查/var/named/slaves目录
# ll /var/named/slaves/
total 8
-rw-r--r--. 1 named named 268 Feb 21 13:14 138.zone
-rw-r--r--. 1 named named 554 Feb 21 13:14 frank.com.zone
这2个文件是自动从主服务器同步过来的。