DNS主从复制实现

介绍

DNS(Domain name server),是将IP地址转换为域名地址。当在互联网访问外部服务器时,其主机都是以IP地址及端口标识(被称之为一个套接字文件),当主机A需要与主机B通信时,A必须知道其B的IP地址,但IP地址不能方便人们的记忆,故使用其计算机名进行标识。早期的互联网通信下,服务器的计算机名与其IP地址对应关系,被记录在了hosts文件中,这也正是早期的域名解析模型。但随着互联网的服务器增加,单依靠hosts的记录所有的计算机名映射,会导致查询速度非常慢、计算机名的变更更新速度慢。其DNS可以解决由hosts文件来解释域名映射的诸多问题。

DNS服务端查询原理

正向解析: hostname —> IP

1.在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2. 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3. 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4. 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5. 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
6. 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

主从复制实现

DNS服务:
ansible-manager 10.177.96.4 主DNS服务
ansible-client1 10.177.96.14 从DNS服务

10.177.96.4 主DNS服务 上安装配置

1、安装DNS服务

[root@ansible-manager ~]# yum -y install bind bind-utils

2、修改配置文件 named.conf ,注释掉如下两行

[root@ansible-manager ~]# vim /etc/named.conf
options {
//    listen-on port 53 { 127.0.0.1; };
...
//    allow-query     { localhost; };
      allow-transfer  {10.177.96.14;};   #只允许数据传输到从DNS 10.177.96.14,为了DNS数据安全,很重要!
}

3、编辑zone文件 /etc/named.rfc1912.zones,新增域 xulx.com的内容

[root@ansible-manager named]# vim  /etc/named.rfc1912.zones
zone "xulx.com" IN {
    type master;   #建立xulx.com区域的主服务,数据库由此主机来管理
    file "xulx.com.zone";
};
....

4、编辑建立域 xulx.com的 数据库文件 xulx.com.zone

[root@ansible-manager ~]# cd /var/named/
[root@ansible-manager named]# cp -a named.localhost  xulx.com.zone
[root@ansible-manager named]# ll
total 20
drwxrwx--- 2 named named   22 Apr 25 16:29 data
drwxrwx--- 2 named named   58 Apr 27 15:37 dynamic
-rw-r----- 1 root  named 2253 Apr  5  2018 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 Aug  8  2019 slaves
-rw-r----- 1 root  named  152 Jun 21  2007 xulx.com.zone

[root@ansible-manager named]# cat /var/named/xulx.com.zone
$TTL 1D     
@    IN SOA   xulx.com. admin.xulx.com. (    
                    0    ; serial      
                    1D    ; refresh   
                    1H    ; retry     
                    1W    ; expire     
                    3H )    ; minimum  
       NS  master
master A  10.177.96.4
www  CNAME  test  
slave  A  10.177.96.14
test  A  10.177.96.51
@    A   10.177.96.4

5、检查语法

#检查named.conf的语法
[root@ansible-manager named]# named-checkconf
[root@ansible-manager named]# 
#检查zone文件的语法
[root@ansible-manager named]# named-checkzone  xulx.com /var/named/xulx.com.zone
zone xulx.com/IN: loaded serial 0
OK

6、启动服务

[root@ansible-manager named]# systemctl  restart named

7、简单测试

[root@ansible-manager named]# host xulx.com 10.177.96.4
Using domain server:
Name: 10.177.96.4
Address: 10.177.96.4#53
Aliases:

xulx.com has address 10.177.96.4

10.177.96.14 从DNS服务 安装配置

1、安装DNS服务

[root@ansible-client1~]# yum -y install bind bind-utils

2、修改配置文件 named.conf ,注释掉如下两行

[root@ansible-client1 ~]# vim /etc/named.conf
options {
//    listen-on port 53 { 127.0.0.1; };
...
//    allow-query     { localhost; };
      allow-transfer  {none;};   #从DNS数据传输,不允许任何主机访问查看,从DNS服务 只需要同步主DNS数据,也不需要将数据同步到其他主机
}

3、编辑zone文件 /etc/named.rfc1912.zones,新增域 xulx.com 的从域

[root@ansible-client1 ~]# vim /etc/named.rfc1912.zones
zone "xulx.com" IN{
  type slave;
  masters {10.177.96.4;};
  file "slaves/xulx.com.zone.slave";
};
...

4、检测配置文件语法是否正确

[root@ansible-client1 ~]# named-checkconf
[root@ansible-client1 ~]#

5、启动服务

[root@ansible-client1 ~]# systemctl  start named
[root@ansible-client1 ~]#

6、此时查看 xulx.com配置的数据库文件 slaves/xulx.com.zone.slave ,发现已经进行了数据同步,查看的话,会发现被加密了

[root@ansible-client1 ~]# cat /var/named/slaves/xulx.com.zone.slave
^§͜NQ
xulxcom.xulxcomadminxulxcomQ    :*01Q
xulxcommasterxulxcom$Q
xulxcom
±`+Qmasterxulxcom
±`*Qslavexulxcom
±`)Qtestxulxcom
±`33Qwwwxulxcomtestxulxcom

7、查看从DNS的解析 是否生效

[root@ansible-client1 ~]# host xulx.com 10.177.96.14
Using domain server:
Name: 10.177.96.14
Address: 10.177.96.14#53
Aliases:

xulx.com has address 10.177.96.4

至此,基本的主从DNS服务,已经实现

而主从DNS 数据库同步有两种方式 : 推和拉

推 :主服务器数据库一旦发生变化,立即推送到从服务器上

Note: 如果想要实现推的动作,需要注意如下两点:

1、将所有从服务的记录加上去,表明这是域名服务器,同步时 需要同步

2、每次修改数据库后,需要手动修改版本号

示例

[root@ansible-manager ~]# vim  /var/named/xulx.com.zone
$TTL 1D     
@    IN SOA   xulx.com. admin.xulx.com. (    
                    1    ; serial   #2、修改版本号    
                    1D    ; refresh   
                    1H    ; retry     
                    1W    ; expire     
                    3H )    ; minimum  
       NS  master
       NS  slave   #1、增加从DNS服务
master A  10.177.96.4
www  CNAME  test  
slave  A  10.177.96.14
@    A   10.177.96.4

#重新加载主DNS服务
[root@ansible-manager ~]# rndc reload
server reload successful
-------------------------------
#从DNS数据库文件已经发生变化
[root@ansible-client1 slaves]# ll
total 4
-rw-r--r-- 1 named named 364 Apr 28 14:27 xulx.com.zone.slave
[root@ansible-client1 slaves]# ll
total 4
-rw-r--r-- 1 named named 341 Apr 28 15:06 xulx.com.zone.slave

拉: 则通过refresh 定义拉取的时间间隔,如下,默认是一天拉取一次

[root@ansible-manager ~]# cat /var/named/xulx.com.zone
$TTL 1D     
@    IN SOA   xulx.com. admin.xulx.com. (    
                    0    ; serial      
                    1D    ; refresh    #拉取同步时间 一天一次
                    1H    ; retry     
                    1W    ; expire     
                    3H )    ; minimum  
       NS  master
master A  10.177.96.4

Note

智能DNS实现 :文章路径

Mariadb 编译安装:文章路径

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值