home       inleiding       sysadmin       services       links       bash       werk       nothing      

DNS -- master-slave

 
We hebben in DNS-basics een tweede DNS server opgezet, en deze geactiveerd door de bestanden aangepast op server-1 in /etc/bind te kopieren naar dezelfde directory in server-2. We deden dat volgens een oefening met een cron-job (script in 'etc/cron.hourly)
Op de voor- en nadelen van master-slave versus DNS-clustering of oplossingen met scripts ga ik hier nu even niet in. Master-Slave configuratie hoort gewoon gekend te zijn bij elke linux sysadmin.
 

  1. master - slave config
     
    Er is enerzijds een aanpassing nodig in de /etc/bind/named.conf.local op de primary server of master.
    Er is anderzijds een speciale slave configuratie nodig in /etc/bind/named.conf.local op slave server(s).
     
    • de master
       
      $ cat /etc/bind/named.conf.local
      // kommentaar in de file ... 
       
      zone "domein01.crazy" {
      type master;
      notify no;
      file "/etc/bind/domein01.crazy.zone";
      allow-update { none; };
      allow-query { 172.16.0.0/16; };
      allow-transfer { 172.16.10.2; };
      };
       
      zone "16.172.in-addr.arpa" {
      type master;
      notify no;
      file "/etc/bind/16.172.in-addr.arpa.zone";
      allow-update { none; };
      allow-query { 172.16.0.0/16; };
      allow-transfer { 172.16.10.2; };
      };

      De volgende twee ZONE statements zijn belangrijk:
      type master;
      allow-transfer { 172.16.10.2; };
      (172.16.10.2 is het ip-address van nameserver2)
       

    • de slave
       
      $ cat /etc/bind/named.conf.local
      // ...kommentaar ...
       
      zone "domein01.crazy" {
      type slave;
      file "/var/cache/bind/domein01.crazy.zone";
      masters { 172.16.10.1; };
      };
       
      zone "16.172.in-addr.arpa" {
      type slave;
      file "/var/cache/bind/16.172.in-addr.arpa.zone";
      masters { 172.16.10.1; };
      };

      De volgende twee ZONE statements wijzen op slave-functie:
      type slave;
      masters { 172.16.10.1; };
      (172.16.10.1 is het ip-address van nameserver1)
       
      Merk ook de nieuwe locatie op van de zone-files in
      /var/cache/bind
       
      we kijken even naar permissions en ownership van deze directory:

      $ ls -l /var/cache
      total 28
      drwxr-xr-x  2 root root 4096 May  1  2015 apparmor
      drwxr-xr-x  3 root root 4096 Sep  8 12:41 apt
      drwxrwxr-x  2 root bind 4096 Sep 15 20:47 bind
      drwxr-xr-x  2 root root 4096 Sep  8 12:41 debconf
      drwx------  2 root root 4096 Sep  8 12:37 ldconfig
      drwxr-sr-x 34 man  root 4096 Sep  8 12:41 man
      drwxr-xr-x  2 root root 4096 Mar  7  2013 pppconfig

       
      In onze ubuntu 14.04 is dit de enige mogelijkheid. Zelf andere directories aanmaken en ownership+permissions aanpassen werkte niet.
       
      Bij andere distributies of versies kan er een andere directory worden voorzien en/of een andere owner/group.
       

  2. testen
     
    • de server
       
      We passen de zone file aan van domein01.crazy:
      $TTL 3D
      @       IN      SOA     domein01.crazy. root.domein01.crazy. (
                      2016091502      ; serial
                      8H              ; refresh
                      2H              ; retry
                      4W              ; expire
                      1D )            ; minimum
      ;
              NS      ns1.domein01.crazy.
              NS      ns2.domein01.crazy.
              MX      10 mail.domein01.crazy.
      ;
      apache          A       172.16.10.100
      ns1             A       172.16.10.1
      ns2             A       172.16.10.2
      mail            A       172.16.10.25
      router          A       172.16.0.1
      www             CNAME   apache
      web             CNAME   apache
      client          A       172.16.255.10
      lynx            CNAME   client

      We hebben de serial aangepast (opgehoogd), en een A record voor router toegevoegd.
      Vervolgens herstarten we de service bind: $ sudo service bind9 restart
       

    • de slave
       
      De slave zal automatisch om de zoveel tijd (in dit voorbeeld REFRESH om de 8 uur) de serial van de master vergelijken met die van zichzelf. Als de serial van de master is opgehoogd, volgt er een replication.
       
      We wensen echter geen uren te wachten, en voeren het volgende commando uit voor een refresh:
       
      user@ns2:~$ sudo rndc reload domein01.crazy.
      zone refresh queued
       
      We kijken nu eerst in de syslog:
       
      Sep 15 21:46:20 localhost named[879]: received control channel command 'reload'
      Sep 15 21:46:20 localhost named[879]: loading configuration from '/etc/bind/named.conf'
      Sep 15 21:46:20 localhost named[879]: reading built-in trusted keys from file '/etc/bind/bind.keys'
      Sep 15 21:46:20 localhost named[879]: using default UDP/IPv4 port range: [1024, 65535]
      Sep 15 21:46:20 localhost named[879]: using default UDP/IPv6 port range: [1024, 65535]
      Sep 15 21:46:20 localhost named[879]: sizing zone task pool based on 7 zones
      Sep 15 21:46:20 localhost named[879]: using built-in root key for view _default
      Sep 15 21:46:20 localhost named[879]: automatic empty zone: 10.IN-ADDR.ARPA
      ...
      ...
      Sep 15 21:46:20 localhost named[879]: automatic empty zone: B.E.F.IP6.ARPA
      Sep 15 21:46:20 localhost named[879]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
      Sep 15 21:46:20 localhost named[879]: reloading configuration succeeded
      Sep 15 21:46:20 localhost named[879]: reloading zones succeeded
      Sep 15 21:46:21 localhost named[879]: all zones loaded
      Sep 15 21:46:21 localhost named[879]: running
       
      Sep 15 21:48:08 localhost named[879]: received control channel command 'reload domein01.crazy.'
      Sep 15 21:48:08 localhost named[879]: zone domein01.crazy/IN: Transfer started.
      Sep 15 21:48:08 localhost named[879]: transfer of 'domein01.crazy/IN' from 172.16.10.1#53: connected using 172.16.10.2#36370
      Sep 15 21:48:08 localhost named[879]: zone domein01.crazy/IN: transferred serial 2016091502
      Sep 15 21:48:08 localhost named[879]: transfer of 'domein01.crazy/IN' from 172.16.10.1#53: Transfer completed: 1 messages, 14 records, 338 bytes, 0.003 secs (112666 bytes/sec)
      Sep 15 21:48:08 localhost named[879]: zone domein01.crazy/IN: sending notifies (serial 2016091502)

       
      We kijken tenslotte nog even in de /var/cache/bind directory:
       
      user@ns2:~$ ls -lt /var/cache/bind/

      total 12
      -rw-r--r-- 1 bind bind 742 Sep 15 21:48 domein01.crazy.zone
      -rw-r--r-- 1 bind bind 563 Sep 15 21:47 16.172.in-addr.arpa.zone
      -rw-r--r-- 1 bind bind 720 Sep 15 20:47 managed-keys.bind

       
      De time-stamps zijn in elk geval aangepast ...
      Is de zone file ook aangepast ...
       
      user@ns2:~$ cat -v /var/cache/bind/domein01.crazy.zone

      ^@^@^@^B^@^@^@^AWM-ZM-zM-x^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@_^@^A^@^F^@^@^@^CM-tM-^@^@^@^@^A^@^P^Hdomein01^Ecrazy^@^@9^Hdomein01^Ecrazy^@^Droot^Hdomein01^Ecrazy^@x+^]n^@^@pM-^@^@^@^\ ^@$M-j^@^@^AQM-^@^@^@^@=^@^A^@^O^@^@^@^CM-tM-^@^@^@^@^A^@^P^Hdomein01^Ecrazy^@^@^W^@
      ^Dmail^Hdomein01^Ecrazy^@^@^@^@P^@^A^@^B^@^@^@^CM-tM-^@^@^@^@^B^@^P^Hdomein01^Ecrazy^@^@^T^Cns1^Hdomein01^Ecrazy^@^@^T^Cns2^Hdomein01^Ecrazy^@^@^@^@1^@^A^@^A^@^@^@^CM-tM-^@^@^@^@^A^@^W^Fapache^Hdomein01^Ecrazy^@^@^DM-,^P
      d^@^@^@1^@^A^@^A^@^@^@^CM-tM-^@^@^@^@^A^@^W^Fclient^Hdomein01^Ecrazy^@^@^DM-,^PM-^?
      ^@^@^@B^@^A^@^E^@^@^@^CM-tM-^@^@^@^@^A^@^U^Dlynx^Hdomein01^Ecrazy^@^@^W^Fclient^Hdomein01^Ecrazy^@^@^@^@/^@^A^@^A^@^@^@^CM-tM-^@^@^@^@^A^@^U^Dmail^Hdomein01^Ecrazy^@^@^DM-,^P
      ^Y^@^@^@.^@^A^@^A^@^@^@^CM-tM-^@^@^@^@^A^@^T^Cns1^Hdomein01^Ecrazy^@^@^DM-,^P
      ^A^@^@^@.^@^A^@^A^@^@^@^CM-tM-^@^@^@^@^A^@^T^Cns2^Hdomein01^Ecrazy^@^@^DM-,^P
      ^B^@^@^@1^@^A^@^A^@^@^@^CM-tM-^@^@^@^@^A^@^W^Frouter^Hdomein01^Ecrazy^@^@^DM-,^P^@^A^@^@^@A^@^A^@^E^@^@^@^CM-tM-^@^@^@^@^A^@^T^Cweb^Hdomein01^Ecrazy^@^@^W^Fapache^Hdomein01^Ecrazy^@^@^@^@A^@^A^@^E^@^@^@^CM-tM-^@^@^@^@^A^@^T^Cwww^Hdomein01^Ecrazy^@^@^W^Fapache^Hdomein01^Ecrazy^

      en in de binary cache file merken we het woord router op ...
       

  3. NOTA's mei 2020
     
    Ik kan vanaf pc1 de volgende testen uitvoeren:

    • ping pc1.domein01.binnen
      ik moet effectief vanaf DNS1 pc1 kunnen pingen
    • dig pc1.domein01.binnen
      ik zoek rechtstreeks vanaf de default DNS hiet ip adres van pc1.domein01.binnen
      ;; QUESTION SECTION:
      ;pc1.domein01.binnen.       IN  A
       
      ;; ANSWER SECTION:
      pc1.domein01.binnen.    259200  IN  A   172.20.0.81
       
      ;; AUTHORITY SECTION:
      domein01.binnen.    259200  IN  NS  DNS2.domein01.binnen.
      domein01.binnen.    259200  IN  NS  DNS1.domein01.binnen.
       
      ;; ADDITIONAL SECTION:
      DNS1.domein01.binnen.   259200  IN  A   172.20.0.51
      DNS2.domein01.binnen.   259200  IN  A   172.20.0.52
       
      ;; Query time: 0 msec
      ;; SERVER: 172.20.0.51#53(172.20.0.51)
      ;; WHEN: Wed May 27 09:56:28 CEST 2020
      ;; MSG SIZE  rcvd: 134
    • dig @172.20.0.51 pc1.domein01.binnen
      ik zoek rechtstreeks vanaf DNS1 het ip adres van pc1.domein01.binnen
      ;; QUESTION SECTION:
      ;pc1.domein01.binnen.       IN  A
       
      ;; ANSWER SECTION:
      pc1.domein01.binnen.    259200  IN  A   172.20.0.81
       
      ;; AUTHORITY SECTION:
      domein01.binnen.    259200  IN  NS  DNS1.domein01.binnen.
      domein01.binnen.    259200  IN  NS  DNS2.domein01.binnen.
       
      ;; ADDITIONAL SECTION:
      DNS1.domein01.binnen.   259200  IN  A   172.20.0.51
      DNS2.domein01.binnen.   259200  IN  A   172.20.0.52
       
      ;; Query time: 1 msec
      ;; SERVER: 172.20.0.51#53(172.20.0.51)
      ;; WHEN: Wed May 27 09:59:56 CEST 2020
      ;; MSG SIZE  rcvd: 134
    • dig @172.20.0.52 pc1.domein01.binnen
      ik zoek rechtstreeks vanaf de DNS2 het ip adres van pc1.domein01.binnen

      ;; QUESTION SECTION:
      ;pc1.domein01.binnen.       IN  A
       
      ;; ANSWER SECTION:
      pc1.domein01.binnen.    259200  IN  A   172.20.0.81
       
      ;; AUTHORITY SECTION:
      domein01.binnen.    259200  IN  NS  DNS1.domein01.binnen.
      domein01.binnen.    259200  IN  NS  DNS2.domein01.binnen.
       
      ;; ADDITIONAL SECTION:
      DNS1.domein01.binnen.   259200  IN  A   172.20.0.51
      DNS2.domein01.binnen.   259200  IN  A   172.20.0.52
       
      ;; Query time: 0 msec
      ;; SERVER: 172.20.0.52#53(172.20.0.52)
      ;; WHEN: Wed May 27 10:00:56 CEST 2020
      ;; MSG SIZE  rcvd: 134