zoukankan      html  css  js  c++  java
  • DNS之二---实现DNS主从复制

    DNS之二---实现DNS主从复制

    实现主从复制

    主从复制原理:

    1、应该为一台独立的名称服务器;
    2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;
    3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中;
    4、主服务器得允许从服务器作区域传送;
    5、主从服务器时间应该同步,可通过ntp进行;
    6、bind程序的应该保持一致;否则,应该从高,主低;

    1、实验前准备:

    主DNS服务器A: (IP地址为192.168.34.101)

    从DNS服务器B: (IP地址为192.168.34.103)

    客户端C: (IP地址为192.168.34.105)

    2、配置主DNS服务器相关文件:

    (1)在主服务器A中配置文件信息:vim /etc/named.conf

    修改完之后并重新启动DNS服务:rndc reload

    options {
            listen-on port 53 { localhost; };  # 将此行写成localhost或者注释掉(//),不写的话会,默认只能本机访问
            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";
            recursing-file  "/var/named/data/named.recursing";
            secroots-file   "/var/named/data/named.secroots";
            allow-query     { any; };   # 写成any或者注释掉(//)都可以
            allow-transfer  { 192.168.34.103; }; # 将从服务器的IP地址写入,默认只能103地址作为当前主服务器的备用服务器,否则任何主机都可以做为从服务器访问主服务器,抓取重要信息
    

    (2)修改主服务器A区域库文件的内容:

    vim /var/named/baidu.com.zone

    [root@ansiblenamed]#vim /var/named/baidu.com.zone
     
    $TTL 1D
    @       IN SOA  dns1  admin.baidu.com. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns1          
            NS      dns2           # 从服务器添加一个NS标记
    dns1    A   192.168.34.101     # 主服务器进行域名解析为IP地址
    dns2    A   192.168.34.103     # 将从服务器进行域名解析为IP地址
    www    CNAME    webs
    webs   A      6.6.6.6
    webs   A      8.8.8.8
    webs   A      7.7.7.7
    @      MX   10 mailser1
    @      MX   20 mailser2
    mailser1 A     11.9.9.9
    mailser2 A     9.9.9.9
    @       A      8.8.8.8         # 省略二级域名写入
    *       A      8.8.8.8          # 避免二级域名写错,也可以访问。
    $GENERATE  1-200  server$ A 192.168.34.$
    

    3、配置从服务器的文件:

    (1)在从服务器B上安装DNS:yum install bind

    在配置文件中修改/etc/named.conf相关配置文件

    [root@centos7_1 ~]# vim /etc/named.conf
    options {
    //      listen-on port 53 { 127.0.0.1; };  #将此行注释掉
            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";
            recursing-file  "/var/named/data/named.recursing";
            secroots-file   "/var/named/data/named.secroots";
    //      allow-query     { localhost; }; # 将此行注释掉
            allow-transfer  { none;};  # 此行必需写入,不写会不安全,而且其他任何主机都可以作为从服务器进行访问,抓取IP地址
    

    注意:将第一行的listen-on port 53端口注释掉,或者写成localhost,不然只能为本机服务,allow-query那行业注释掉。  

    (2)将从服务器B的/etc/named.rfc1912.zones配置文件加以修改

    [root@centos7_1 ~]# vim /etc/named.rfc1912.zones
    zone "baidu.com" {       # 域名要与主服务器的域名一致
            type slave;      # 类型为“奴隶的意思”
            masters {192.168.34.101;};  #将主服务器的IP地址写入
            file "slaves/baidu.com.zone.slave"; # 如果从服务器同步了主服务器之后,此时同步的数据就会存放在此目录下/var/named/slaves/
    };
    

    (3)重新加载主服务器A的DNS服务:

    [root@ansiblenamed]#rndc reload
    server reload successful
    

    (4)查询当前从DNS服务器B的同步的数据文件,此时我们可以看到/var/named/slaves目录下已经同步了主DNS服务器的数据内容:

    [root@centos7_1 ~]# ls /var/named/slaves
    baidu.com.zone.slave
    

    4、配置客户端:

    (5)下来我在客户端C配置两个DNS地址,将主从服务器的IP地址都关联起来:

    [root@centos6network-scripts]#vim ifcfg-eth0
    DEVICE=eth0
    PROTOBOOT=static
    IPADDR=192.168.34.105
    GATEWAY=192.168.34.2
    ONBOOT=yes
    DNS1=192.168.34.101  # 主服务器的DNS IP地址
    DNS2=192.168.34.103  #  从服务器的DNS IP地址
    

    (6)在客户端C查看当前配置好的DNS服务地址

    [root@centos6network-scripts]#cat /etc/resolv.conf  查看当前的配置DNS信息
    # Generated by NetworkManager
    search 10.localdomain
    nameserver 192.168.34.101
    nameserver 192.168.34.103
    

    (7)我们在客户端C用dig命令查看当前的baidu.com 网址,查看当前DNS解析IP地址是来自哪个服务器:

    [root@centos6network-scripts]#dig www.baidu.com
     
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24163
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 2
     
    ;; QUESTION SECTION:
    ;www.baidu.com.         IN  A
     
    ;; ANSWER SECTION:
    www.baidu.com.      86400   IN  CNAME   webs.baidu.com.
    webs.baidu.com.     86400   IN  A   6.6.6.6
    webs.baidu.com.     86400   IN  A   8.8.8.8
    webs.baidu.com.     86400   IN  A   7.7.7.7
     
    ;; AUTHORITY SECTION:
    baidu.com.      86400   IN  NS  dns1.baidu.com.
    baidu.com.      86400   IN  NS  dns2.baidu.com.
     
    ;; ADDITIONAL SECTION:
    dns1.baidu.com.     86400   IN  A   192.168.34.101
    dns2.baidu.com.     86400   IN  A   192.168.34.103
     
    ;; Query time: 6 msec
    ;; SERVER: 192.168.34.101#53(192.168.34.101)  #此时可以看到解析的IP地址来自于主服务器
    ;; WHEN: Thu Nov  7 09:38:55 2019
    ;; MSG SIZE  rcvd: 168
    

    (8)我们将主服务器A的网卡down掉(ifconfig ens33 down),然后在客户端C查看当前内容:

    [root@centos6network-scripts]#dig www.baidu.com
     
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54362
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 2
     
    ;; QUESTION SECTION:
    ;www.baidu.com.         IN  A
     
    ;; ANSWER SECTION:
    www.baidu.com.      86400   IN  CNAME   webs.baidu.com.
    webs.baidu.com.     86400   IN  A   8.8.8.8
    webs.baidu.com.     86400   IN  A   7.7.7.7
    webs.baidu.com.     86400   IN  A   6.6.6.6
     
    ;; AUTHORITY SECTION:
    baidu.com.      86400   IN  NS  dns1.baidu.com.
    baidu.com.      86400   IN  NS  dns2.baidu.com.
     
    ;; ADDITIONAL SECTION:
    dns1.baidu.com.     86400   IN  A   192.168.34.101
    dns2.baidu.com.     86400   IN  A   192.168.34.103
     
    ;; Query time: 12 msec
    ;; SERVER: 192.168.34.103#53(192.168.34.103)  #此时,我们看到的是从服务器的IP地址,访问网站是通过从服务器访问。
    ;; WHEN: Thu Nov  7 10:24:16 2019
    ;; MSG SIZE  rcvd: 168
    

    (9)此时,我们来验证当前的服务器同步情况,修改主服务器区域库文件内容:/var/named/baidu.com.zone

    [root@ansible~]#vim /var/named/baidu.com.zone
     
    $TTL 1D
    @       IN SOA  dns1  admin.baidu.com. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns1
            NS      dns2
    dns1    A   192.168.34.101
    dns2    A   192.168.34.103
    www    CNAME    webs
    webs   A      6.6.6.6
    webs   A      8.8.8.8
    webs   A      7.7.7.7
    @      MX   10 mailser1  #删除此条配置
    @      MX   20 mailser2  #删除此条配置
    mailser1 A     11.9.9.9
    mailser2 A     9.9.9.9
    @       A      8.8.8.8
    *       A      8.8.8.8
    $GENERATE  1-200  server$ A 192.168.34.$
    

    (10)删除之后,将DNS服务重启:rndc reload

    [root@ansible~]#rndc reload
    server reload successful
    

    (11)然后我们在客户端C上dig查询同步信息,此时,我们分别在主从服务器上都可以看到MX的配置记录,这是为什么呢?这是因为我们修改后同步不同步,不是只修改配置文件,而是要修改上面的序列号(serial),才会生效,请看第12步:

    [root@centos6network-scripts]#dig -t mx baidu.com @192.168.34.101
     
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -t mx baidu.com @192.168.34.101
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50791
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
     
    ;; QUESTION SECTION:
    ;baidu.com.         IN  MX
     
    ;; AUTHORITY SECTION:
    baidu.com.      10800   IN  SOA dns1.baidu.com. admin.baidu.com. 0 86400 3600 604800 10800
     
    ;; Query time: 7 msec
    ;; SERVER: 192.168.34.101#53(192.168.34.101)
    ;; WHEN: Thu Nov  7 10:33:31 2019
    ;; MSG SIZE  rcvd: 74
     
    [root@centos6network-scripts]#dig -t mx baidu.com @192.168.34.103
     
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -t mx baidu.com @192.168.34.103
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48437
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 4
     
    ;; QUESTION SECTION:
    ;baidu.com.         IN  MX
     
    ;; ANSWER SECTION:
    baidu.com.      86400   IN  MX  10 mailser1.baidu.com.
    baidu.com.      86400   IN  MX  20 mailser2.baidu.com.
     
    ;; AUTHORITY SECTION:
    baidu.com.      86400   IN  NS  dns1.baidu.com.
    baidu.com.      86400   IN  NS  dns2.baidu.com.
     
    ;; ADDITIONAL SECTION:
    mailser1.baidu.com. 86400   IN  A   11.9.9.9
    mailser2.baidu.com. 86400   IN  A   9.9.9.9
    dns1.baidu.com.     86400   IN  A   192.168.34.101
    dns2.baidu.com.     86400   IN  A   192.168.34.103
     
    ;; Query time: 10 msec
    ;; SERVER: 192.168.34.103#53(192.168.34.103)
    ;; WHEN: Thu Nov  7 10:33:34 2019
    ;; MSG SIZE  rcvd: 179
    

    (12)将序列号(serial)修改为1,改完之后重新加载DNS服务,rndc reload:

    [root@ansible~]#vim /var/named/baidu.com.zone
     
    $TTL 1D
    @       IN SOA  dns1  admin.baidu.com. (
                                            1       ; serial  #此处的0已经改为1
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns1
            NS      dns2
    dns1    A   192.168.34.101
    dns2    A   192.168.34.103
    www    CNAME    webs     # 此处也做了修改
    webs   A      66.66.66.66  # 此处也做了修改
    mailser1 A     11.9.9.9
    mailser2 A     9.9.9.9
    @       A      8.8.8.8
    *       A      8.8.8.8
    $GENERATE  1-200  server$ A 192.168.34.$
    

    (13)修改完配置后,重启DNS服务,并在客户端进行dig验证,此时的IP地址已经同步,并且没有了MX配置文件的记录:

    [root@ansible~]#rndc reload  重启DNS服务
    server reload successful
    [root@centos6network-scripts]#dig www.baidu.com
     
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22540
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
     
    ;; QUESTION SECTION:
    ;www.baidu.com. IN  A
     
    ;; ANSWER SECTION:
    www.baidu.com.  86400   IN  CNAME   webs.baidu.com.
    webs.baidu.com. 86400   IN  A   66.66.66.66   此时已经同步为新的IP地址
     
    ;; AUTHORITY SECTION:
    baidu.com.  86400   IN  NS  dns2.baidu.com.
    baidu.com.  86400   IN  NS  dns1.baidu.com.
     
    ;; ADDITIONAL SECTION:
    dns1.baidu.com. 86400   IN  A   192.168.34.101
    dns2.baidu.com. 86400   IN  A   192.168.34.103
     
    ;; Query time: 1 msec
    ;; SERVER: 192.168.34.101#53(192.168.34.101)
    ;; WHEN: Thu Nov 7 10:41:43 2019
    ;; MSG SIZE rcvd: 136
    

    转载至:https://www.cnblogs.com/struggle-1216/p/12582227.html

    很高兴各位朋友能欣赏作品,本文版权归作者和博客园共有,欢迎转载,请在文章页面明显位置给出原文出处,否则将追究法律责任。 原文链接: https://www.cnblogs.com/strugger-0316
  • 相关阅读:
    JB的IDE可视化MongoDB、MySQL数据库信息
    爬取QQ音乐(讲解爬虫思路)
    selenium实现淘宝的商品爬取
    爬取中国福彩网并做可视化分析
    Django的学习进阶(二)———— name
    xpath获取一个标签下的多个同级标签
    selenium中动作链的使用
    Error: Cannot find module 'electron-prebuilt'
    error Invalid tag name "–save-dev": Tags may not have any characters that encodeURIComponent encodes
    TypeError:mainWindow.loadUrl is not a function
  • 原文地址:https://www.cnblogs.com/strugger-0316/p/14970683.html
Copyright © 2011-2022 走看看