Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dns_isc_bind_centos_6_-_master-slave_und_tsig

Dies ist eine alte Version des Dokuments!


DNS ISC bind CentOS 6 - Master-Slave und TSIG

DNS ISC bind ist ein DNS-Server, welcher die Namensauflösung in einem Netzwerk realisieren kann. Der DNS-Server des ISC (Internet System Consortium) ist einer der meist eingesetzten Namensserver weltweit und ebenfalls der bei den aktuell 13 weltweiten Root-Nameservern verwendete DNS-Server.

:!: HINWEIS - Die gezeigten Ausführungen basieren auf dem nachfolgenden internen DokuWiki-Eintrag: DNS ISC bind CentOS 6

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Konstellationsbeschreibung

Nachfolgend soll ein Überblick gegeben werden, wie sich die Beziehung zwischen Master-Server und Slave-Server in der nachfolgend gezeigten Konstellation darstellt:

 +-------------------+                                                                                         +---------------------+
 |                   |                                                                                         |                     |
 |   MASTER-Server   |                                                                                         |   SLAVE-Server      |
 |   =============   |                                                                                         |   ============      |
 |                   |                                                                                         |                     | 
 |   Präsenz:        |                                                                                         |   Präsenz:          | 
 |   DMZ             |                                                                                         |   DMZ, Intranet     | 
 |                   |                                                                                         |                     | 
 +-------------------+                                                                                         +---------------------+
 |                   |                                                                                         |                     |
 |   DMZ-IP-Adresse: |                                                                                         |   DMZ-IP-Adresse:   |
 |   192.168.0.20    | -------> Transfer der Zone DMZ   <------> Anfrage des Transfers der Zone DMZ   <------- |   192.168.0.10      |     
 |                   |                                                                                         |                     |
 |   DMZ-IP-Adresse: |                                                                                         |   intra-IP-Adresse: |
 |   192.168.0.20    | -------> Transfer der Zone intra <------> Anfrage des Transfers der Zone intra <------- |   192.168.1.1       |
 |                   |                                                                                         |                     |
 +-------------------+                                                                                         +---------------------+

:!: WICHTIG - Die Zone DMZ - muss - über die IP-Adressen - 192.168.0.20 ←→ 192.168.0.10 transferiert werden!
:!: WICHTIG - Die Zone intra - muss - über die IP-Adressen - 192.168.0.20 ←→ 192.168.1.1 transferiert werden!

:!: HINWEIS - Falls die Zone intra auch über die IP-Adresse 192.168.0.10 des Slave-Servers transferiert wird, ist der Inhalt FALSCH und entspricht dem Inhalt der Zone DMZ !!!

Es wird ein Zonen-Transfer durchgeführt, wobei die

  • gleichen Zonen-Definitionen, z.B. dmz.tachtler.net, intra.tachtler.net uvm. in
  • unterschiedlichen View-Definitionen, localhost, DMZ, intra

verwendet werden.

:!: WICHTIG - Dabei können die Inhalte der Zonen-Definitionen durchaus unterschiedlich sein !!!

Beispiel::

Abfrage der IP-Adresse von –> mx1.tachtler.net in der View - DMZ

# dig mx1.tachtler.net
...
;; ANSWER SECTION:
mx1.tachtler.net.       10800   IN      A       192.168.0.60
...

Abfrage der IP-Adresse von –> mx1.tachtler.net in der View - intra

# dig mx1.tachtler.net
...
;; ANSWER SECTION:
mx1.tachtler.net.       10800   IN      A       88.217.171.167
...

Master-Konfiguration

Nachfolgende Konfiguration ist eine Beispielkonfiguration, welche auf bestimmte Ansichten und Bedürfnisse zugeschnitten ist. Dies Konfiguration erhebt keinen Anspruch auf Vollständigkeit.

Nachfolgend soll die Konfigurationsdatei

  • /etc/named.conf

zu einer Master-Konfigurationsdatei angepasst werden.

:!: WICHTIG - Nachfolgend wird beschrieben, welche ZIELE die HIER nachstehende Konfigurationsdatei hat bzw. erfüllen soll!!!

Folgende Zielsetzung hat die nachstehende Konfigurationsdatei /etc/named.conf:

  1. Master Nameserver
  2. für die Zonen
    • dmz.tachtler.net
    • intra.tachtler.net
  3. nicht für die Zone
    • tachtler.net
  4. Namensauflösung forward und reverse
  5. nur für ein internes Netzwerk, keine externen Anfragen zur Beantwortung
  6. Es sollen immer die root-Server für nicht autoritativen Anfragen benutzt werden
  7. Der Einsatz von views, welche aktuell jedoch auf identische Dateien verweisen!
  8. Vorerst noch kein DNSSEC

/etc/named.conf

Die jeweiligen Kommentare erklären die nachfolgend durchgeführten Einstellung (komplette Konfigurationsdatei):

//
// Tachtler - named.conf
//
 
// acl -----------------------------------------------------------------
 
acl masterlist {
        127.0.0.1/32;
        192.168.0.20/32;
};
 
acl slavelist {
        192.168.0.10/32;
        192.168.1.1/32;
}
 
acl dmz {
        192.168.0.0/24;
};
 
acl intra {
        192.168.1.0/24;
};
 
// options -------------------------------------------------------------
 
options {
        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";
        /*
         * With problems while censorship with ISP no forwards will
         * be defined. Asking the root-server!
         *
         * // DNS-Server which will asked when local answers not found.
         * forwarders { 212.18.3.5; 212.18.0.5; };
         * // Route the questions to the Forwarders first, not only.
         * forward first;
         */
        // Allow notification form this DNS-Server to slave DNS-Server.
        notify yes;
        also-notify { 192.168.0.10; 192.168.1.1; };
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        query-source address * port *;
        // No answer, when asking for bind-version.
        version "";
        // Accept no old questions and configurations.
        auth-nxdomain no;
        // Allow these HOSTs to ask ordinary DNS questions.     
        allow-query { localhost; dmz; intra; edmz; };
        // Allow these HOSTs to ask recursiv DNS questions.
        allow-recursion { localhost; dmz; intra; edmz; };
        // Local interfaces to listen on
        listen-on port 53 { masterlist; };
        // Enable zonetransfer to these HOSTs.
        allow-transfer { masterlist; slavelist; };
        // Local address for zone transfers.
        transfer-source 192.168.0.20;
        // The maximum number of outbound zone transfers running concurrently.
        transfers-out 999;        
        // Warn only, if names not correct, like DKIM for e-mail.
        check-names master warn;
        // Recursion to other nameserver and reslovers.
        recursion yes;
        // Enable zones with no zone files.
        empty-zones-enable yes;
 
        // DNSSEC-Options first set to no!
        // TODO
        // default: dnssec-enable yes;
        dnssec-enable no;
        // TODO
        //default: dnssec-validation yes;
        dnssec-validation no;
        // TODO
        //default: dnssec-lookaside auto;
        dnssec-lookaside auto;
 
        /* Path to ISC DLV key */
        // TODO
        bindkeys-file "/etc/named.iscdlv.key";
 
        /* Path to dynamic content */
        managed-keys-directory "/var/named/dynamic";
};
 
// logging -------------------------------------------------------------
 
logging {
        channel default_debug {
                file "data/named.run";
                severity info;
                print-severity yes;
                print-time yes;
                print-category yes;
        };
        category default {
                default_debug;
        };
};
 
// TSIG ----------------------------------------------------------------
 
key "intra." {
        algorithm hmac-md5;
        secret "kfgHKkh27TApI3pD+z2GIB==";
};
 
// zones ---------------------------------------------------------------
 
view "localhost" {
 
        // Only following clients can resolv the zone informations.
        match-clients { !key intra. ; "localhost"; };
        // Only following destination can resolv the zon informations.
        match-destinations { "localhost"; };
 
        // Recursion to other nameserver and reslovers.
        recursion yes;
 
        /*
         * All view MUST contain the root zone with the worldwide root 
         * server definitions.
         * 
         * Updating the root zone could be done with follwing command:
         * # dig NS . @a.root-servers.net > /var/named/named.ca
         */
        zone "." IN {
                type hint;
                file "named.ca";
        };
 
        /*
         * All view MUST contain the definitions for all the localhost
         * names and addresses, as recommended in RFC1912.
         */
        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
 
        zone "dmz.tachtler.net" IN {
                type master; 
                file "dynamic/master/dmz.tachtler.net.zone.db";
                allow-update { none; };
        };
 
        zone "intra.tachtler.net" IN {
                type master; 
                file "dynamic/master/intra.tachtler.net.zone.db";
                allow-update { none; };
        };
 
        zone "0.168.192.in-addr.arpa" IN {
                type master;
                file "dynamic/master/0.168.192.zone.db";
                allow-update { none; };
        };
 
        zone "1.168.192.in-addr.arpa" IN {
                type master;
                file "dynamic/master/1.168.192.zone.db";
                allow-update { none; };
        };
 
};
 
view "dmz" {
 
        // Only following clients can resolv the zone informations.
        match-clients { !key intra. ; "dmz"; };
        // Only following destination can resolv the zon informations.
        match-destinations { "dmz"; };
 
        // Recursion to other nameserver and reslovers.
        recursion yes;
 
        /*
         * All view MUST contain the root zone with the worldwide root 
         * server definitions.
         * 
         * Updating the root zone could be done with follwing command:
         * # dig NS . @a.root-servers.net > /var/named/named.ca
         */
        zone "." IN {
                type hint;
                file "named.ca";
        };
 
        /*
         * All view MUST contain the definitions for all the localhost
         * names and addresses, as recommended in RFC1912.
         */
        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
 
        zone "dmz.tachtler.net" IN {
                type master; 
                file "dynamic/master/dmz.tachtler.net.zone.db";
                allow-update { none; };
        };
 
        zone "intra.tachtler.net" IN {
                type master; 
                file "dynamic/master/intra.tachtler.net.zone.db";
                allow-update { none; };
        };
 
        zone "0.168.192.in-addr.arpa" IN {
                type master;
                file "dynamic/master/0.168.192.zone.db";
                allow-update { none; };
        };
 
        zone "1.168.192.in-addr.arpa" IN {
                type master;
                file "dynamic/master/1.168.192.zone.db";
                allow-update { none; };
        };
 
};
 
view "intra" {
 
        // Only following clients can resolv the zone informations.
        match-clients { key intra. ; "intra"; };
        // Only following destination can resolv the zon informations.
        match-destinations { "intra"; };
 
        // Allow transfer for server with key.
        server 192.168.0.1 { keys intra. ; };
 
        // Recursion to other nameserver and reslovers.
        recursion yes;
 
        /*
         * All view MUST contain the root zone with the worldwide root 
         * server definitions.
         * 
         * Updating the root zone could be done with follwing command:
         * # dig NS . @a.root-servers.net > /var/named/named.ca
         */
        zone "." IN {
                type hint;
                file "named.ca";
        };
 
        /*
         * All view MUST contain the definitions for all the localhost
         * names and addresses, as recommended in RFC1912.
         */
        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
 
        zone "dmz.tachtler.net" IN {
                type master; 
                file "dynamic/master/dmz.tachtler.net.zone.db";
                allow-update { none; };
        };
 
        zone "intra.tachtler.net" IN {
                type master; 
                file "dynamic/master/intra.tachtler.net.zone.db";                
                allow-update { none; };
        };
 
        zone "0.168.192.in-addr.arpa" IN {
                type master;
                file "dynamic/master/0.168.192.zone.db";
                allow-update { none; };
        };
 
        zone "1.168.192.in-addr.arpa" IN {
                type master;
                file "dynamic/master/1.168.192.zone.db";
                allow-update { none; };
        };
 
};
 
// keys ----------------------------------------------------------------
 
include "/etc/rndc.key";
 
// controls ------------------------------------------------------------
 
controls {
        inet 127.0.0.1 port 953
                allow { masterlist; } keys { rndc-key; };
};

Nachfolgend sollen die wichtigen Bestandteile der voranstehenden Konfigurationsdatei /etc/named.conf veranschaulicht werden.

Definitionen der beteiligten Server: Master- und Slave-Server

...
acl masterlist {
        127.0.0.1/32;
        192.168.0.20/32;
};
 
acl slavelist {
        192.168.0.10/32;
        192.168.1.1/32;
}
...

Es werden die IP-Adressen des Master-Servers und des Slave-Servers in ACL-Gruppen definiert, die später zum Einsatz kommen.

Definitionen zum Benachrichtigungssystem

...
        // Allow notification form this DNS-Server to slave DNS-Server.
        notify yes;
        also-notify { 192.168.0.10; 192.168.1.1; };
...

Es sollen Benachrichtigungen vom Master-Server zum Slave-Server bei Zonenänderungen Versand werden, so dass ein Zonen-Transfer ausgelöst wird.

:!: WICHTIG - Da unterschiedliche Netz-Segmente verwendet werden, müssen alle entsprechenden IP-Adressen des Slave-Servers aufgeführt werden, für die ein Zonen-Transfer durchgeführt werden soll !!!

Definitionen Server-Benachrichtigungen

...
        // Enable zonetransfer to these HOSTs.
        allow-transfer { masterlist; slavelist; };
...        

Hier werden die ACL-Gruppen verwendet, hinter denen sich die IP-Adresse befinden, auf die Server auf die ein Zonen-Transfer erlaubt ist.

Definition der Master-Server transfer IP-Adresse

...
        // Local address for zone transfers.
        transfer-source 192.168.0.20;
...

Hier wird die IP-Adresse festgelegt, mit der der Master-Server den Zonen-Transfer durchführt (Absender IP-Adresse).

Definition der gleichzeitig erlaubten Zonen-Transfers

...
        // The maximum number of outbound zone transfers running concurrently.
        transfers-out 999;
...

Der Standard-Wert liegt beim Transfer von 10 Zonen, was als Lastbeschränkung gedacht ist. Die Anzahl kann jedoch erhöht werden, was aber zu Lasten der Performance des Master-Servers und des Slave-Servers führen kann.

Definition eines TSIG-Schlüsses

...
// TSIG ----------------------------------------------------------------
 
key "intra." {
        algorithm hmac-md5;
        secret "kfgHKkh27TApI3pD+z2GIB==";
};
...

Dies ist die Definition eines TSIG-Schlüssels, welcher für bestimmte Konstellationen von Zonen-Transfers maßgeblich entscheidend ist!

:!: WICHTIG - Der Einsatz eines TSIG-Schlüssels ist bei der hier vorgestellten Konstellation des Zonen-Transfers entscheidend und wird nachfolgend behandelt:

Definitionen der "Views"

...
view "localhost" {
 
        // Only following clients can resolv the zone informations.
        match-clients { !key intra. ; "localhost"; };
...
view "dmz" {
 
        // Only following clients can resolv the zone informations.
        match-clients { !key intra. ; "dmz"; };
...
view "intra" {
 
        // Only following clients can resolv the zone informations.
        match-clients { key intra. ; "intra"; };
...
        // Allow transfer for server with key.
        server 192.168.1.1 { keys intra. ; };
...       

:!: WICHTIG - Es kommen unterschiedliche View-Definitionen zum Einsatz !!!

Bei den View-Definitionen

  • localhost und
  • dmz

kommt eine Definition zum Einsatz die einem Slave-Server mit dem TSIG-Schlüssel

  • intra.

den Zonen-Transfer - NICHT ERLAUBT !!!

... !key intra. ; ...

Bei der View-Definition

  • intra

kommt eine Definition zum Einsatz die einem Slave-Server mit dem TSIG-Schlüssel

  • intra.

den Zonen-Transfer - ERLAUBT !!!

... key intra. ; ...

:!: WICHTIG - Die Definition des Slave-Servers mit dem dazugehörigen Key - intra. !!!

... server 192.168.1.1 { keys intra. ; };

Definitionen der "Zonen"

...
        zone "dmz.tachtler.net" IN {
                type master;
                file "dynamic/master/dmz.tachtler.net.zone.db";
                allow-update { none; };
        };
...

:!: HINWEIS - Diese Definitionen gelten für alle Zonen, lediglich der

  • Name der Zone - hier z.B. dmz.tachtler.net und die
  • Datei der Zone - hier z.B. dynamic/master/dmz.tachtler.net.zone.db

sind entsprechend der einzelnen verwendeten Zonen unterschiedlich.

Slave-Konfiguration

Nachfolgende Konfiguration ist eine Beispielkonfiguration, welche auf bestimmte Ansichten und Bedürfnisse zugeschnitten ist. Dies Konfiguration erhebt keinen Anspruch auf Vollständigkeit.

Nachfolgend soll die Konfigurationsdatei

  • /etc/named.conf

zu einer Slave-Konfigurationsdatei angepasst werden.

:!: WICHTIG - Nachfolgend wird beschrieben, welche ZIELE die HIER nachstehende Konfigurationsdatei hat bzw. erfüllen soll!!!

Folgende Zielsetzung hat die nachstehende Konfigurationsdatei /etc/named.conf:

  1. Slave Nameserver
  2. für die Zonen
    • dmz.tachtler.net
    • intra.tachtler.net
  3. nicht für die Zone
    • tachtler.net
  4. Namensauflösung forward und reverse
  5. nur für ein internes Netzwerk, keine externen Anfragen zur Beantwortung
  6. Es soll immer der Master-Server für nicht autoritativen Anfragen benutzt werden
  7. Der Einsatz von views, welche aktuell jedoch auf identische Dateien verweisen!
  8. Vorerst noch kein DNSSEC

/etc/named.conf

Die jeweiligen Kommentare erklären die nachfolgend durchgeführten Einstellung (komplette Konfigurationsdatei):

//
// Tachtler - named.conf
//
 
// acl -----------------------------------------------------------------
 
acl masterlist {
        192.168.0.20/32;
};
 
acl slavelist {
        127.0.0.1/32;
        192.168.0.10/32;
        192.168.1.1/32;
}
 
acl dmz {
        192.168.0.0/24;
};
 
acl intra {
        192.168.1.0/24;
};
 
// options -------------------------------------------------------------
 
options {
        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";
        /*
         * With problems while censorship with ISP no forwards will
         * be defined. Asking the root-server!
         *
         * // DNS-Server which will asked when local answers not found.
         * forwarders { 212.18.3.5; 212.18.0.5; };
         * // Route the questions to the Forwarders first, not only.
         * forward first;
         */
        // No notification form this DNS-Server to anyone.
        notify no;
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        query-source address * port *;
        // No answer, when asking for bind-version.
        version "";
        // Accept no old questions and configurations.
        auth-nxdomain no;
        // Allow these HOSTs to ask ordinary DNS questions.     
        allow-query { localhost; dmz; intra; edmz; };
        // Allow these HOSTs to ask recursiv DNS questions.
        allow-recursion { localhost; dmz; intra; edmz; };
        // Local interfaces to listen on
        listen-on port 53 { masterlist; };
        // Enable zonetransfer to these HOSTs.
        allow-transfer { slavelist; };
        // Local address for zone transfers.
        transfer-source 192.168.0.10;
        // The maximum number of inbound zone transfers running concurrently.
        transfers-in 999;       
        // Warn only, if names not correct, like DKIM for e-mail.
        check-names master warn;
        // Recursion to other nameserver and reslovers.
        recursion yes;
        // Enable zones with no zone files.
        empty-zones-enable yes;
 
        // DNSSEC-Options first set to no!
        // TODO
        // default: dnssec-enable yes;
        dnssec-enable no;
        // TODO
        //default: dnssec-validation yes;
        dnssec-validation no;
        // TODO
        //default: dnssec-lookaside auto;
        dnssec-lookaside auto;
 
        /* Path to ISC DLV key */
        // TODO
        bindkeys-file "/etc/named.iscdlv.key";
 
        /* Path to dynamic content */
        managed-keys-directory "/var/named/dynamic";
};
 
// logging -------------------------------------------------------------
 
logging {
        channel default_debug {
                file "data/named.run";
                severity info;
                print-severity yes;
                print-time yes;
                print-category yes;
        };
        category default {
                default_debug;
        };
};
 
// TSIG ----------------------------------------------------------------
 
key "intra." {
        algorithm hmac-md5;
        secret "kfgHKkh27TApI3pD+z2GIB==";
};
 
// zones ---------------------------------------------------------------
 
view "localhost" {
 
        // Only following clients can resolv the zone informations.
        match-clients { !key intra. ; "localhost"; };
        // Only following destination can resolv the zon informations.
        match-destinations { "localhost"; };
 
        // Recursion to other nameserver and reslovers.
        recursion yes;
 
        /*
         * All view MUST contain the root zone with the worldwide root 
         * server definitions.
         * 
         * Updating the root zone could be done with follwing command:
         * # dig NS . @a.root-servers.net > /var/named/named.ca
         */
        zone "." IN {
                type hint;
                file "named.ca";
        };
 
        /*
         * All view MUST contain the definitions for all the localhost
         * names and addresses, as recommended in RFC1912.
         */
        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
 
        zone "dmz.tachtler.net" IN {
                type slave; 
                file "dynamic/slave/dmz.tachtler.net.zone.db";
                masters { 192.168.0.20; };
        };
 
        zone "intra.tachtler.net" IN {
                type slave; 
                file "dynamic/slave/intra.tachtler.net.zone.db";
                masters { 192.168.0.20; };
        };
 
        zone "0.168.192.in-addr.arpa" IN {
                type slave;
                file "dynamic/slave/0.168.192.zone.db";
                masters { 192.168.0.20; };
        };
 
        zone "1.168.192.in-addr.arpa" IN {
                type slave;
                file "dynamic/slave/1.168.192.zone.db";
                masters { 192.168.0.20; };
        };
 
};
 
view "dmz" {
 
        // Only following clients can resolv the zone informations.
        match-clients { !key intra. ; "dmz"; };
        // Only following destination can resolv the zon informations.
        match-destinations { "dmz"; };
 
        // Recursion to other nameserver and reslovers.
        recursion yes;
 
        /*
         * All view MUST contain the root zone with the worldwide root 
         * server definitions.
         * 
         * Updating the root zone could be done with follwing command:
         * # dig NS . @a.root-servers.net > /var/named/named.ca
         */
        zone "." IN {
                type hint;
                file "named.ca";
        };
 
        /*
         * All view MUST contain the definitions for all the localhost
         * names and addresses, as recommended in RFC1912.
         */
        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
 
        zone "dmz.tachtler.net" IN {
                type slave;
                file "dynamic/slave/dmz.tachtler.net.zone.db";
                masters { 192.168.0.20; };
        };
 
        zone "intra.tachtler.net" IN {
                type slave; 
                file "dynamic/slave/intra.tachtler.net.zone.db";
                masters { 192.168.0.20; };
        };
 
        zone "0.168.192.in-addr.arpa" IN {
                type slave;
                file "dynamic/slave/0.168.192.zone.db";
                masters { 192.168.0.20; };
        };
 
        zone "1.168.192.in-addr.arpa" IN {
                type slave;
                file "dynamic/slave/1.168.192.zone.db";
                masters { 192.168.0.20; };
        };
 
};
 
view "intra" {
 
        // Only following clients can resolv the zone informations.
        match-clients { key intra. ; "intra"; };
        // Only following destination can resolv the zon informations.
        match-destinations { "intra"; };
 
        // Allow transfer for server with key.
        server 192.168.0.20 { keys intra. ; };
 
        // Recursion to other nameserver and reslovers.
        recursion yes;
 
        /*
         * All view MUST contain the root zone with the worldwide root 
         * server definitions.
         * 
         * Updating the root zone could be done with follwing command:
         * # dig NS . @a.root-servers.net > /var/named/named.ca
         */
        zone "." IN {
                type hint;
                file "named.ca";
        };
 
        /*
         * All view MUST contain the definitions for all the localhost
         * names and addresses, as recommended in RFC1912.
         */
        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
 
        zone "dmz.tachtler.net" IN {
                type slave; 
                file "dynamic/slave/dmz.tachtler.net.zone.db";
                masters { 192.168.0.20; };
        };
 
        zone "intra.tachtler.net" IN {
                type slave; 
                file "dynamic/slave/intra.tachtler.net.zone.db";
                transfer-source 192.168.1.1;                                
                masters { 192.168.0.20; };
        };
 
        zone "0.168.192.in-addr.arpa" IN {
                type slave;
                file "dynamic/slave/0.168.192.zone.db";
                masters { 192.168.0.20; };
        };
 
        zone "1.168.192.in-addr.arpa" IN {
                type slave;
                file "dynamic/slave/1.168.192.zone.db";
                transfer-source 192.168.1.1;                
                masters { 192.168.0.20; };
        };
 
};
 
// keys ----------------------------------------------------------------
 
include "/etc/rndc.key";
 
// controls ------------------------------------------------------------
 
controls {
        inet 127.0.0.1 port 953
                allow { slavelist; } keys { rndc-key; };
};

Nachfolgend sollen die wichtigen Bestandteile der voranstehenden Konfigurationsdatei /etc/named.conf veranschaulicht werden.

Definitionen der beteiligten Server: Master- und Slave-Server

...
acl masterlist {
        192.168.0.20/32;
};
 
acl slavelist {
        127.0.0.1/32;
        192.168.0.10/32;
        192.168.1.1/32;
}
...

Es werden die IP-Adressen des Master-Servers und des Slave-Servers in ACL-Gruppen definiert, die später zum Einsatz kommen.

Definitionen zum Benachrichtigungssystem

...
        // No notification form this DNS-Server to anyone.
        notify no;
...

Es sollen keine Benachrichtigungen vom Slave-Server bei Zonenänderungen Versand werden.

Definitionen Server-Benachrichtigungen

...
        // Enable zonetransfer to these HOSTs.
        allow-transfer { slavelist; };
...        

Hier werden die ACL-Gruppen verwendet, hinter denen sich die IP-Adresse befinden, auf die Server auf die ein Zonen-Transfer erlaubt ist. Hier beim Slave-Server, sollte der Slave-Server selbst eingetragen werden.

Definition der Slave-Server transfer IP-Adresse

...
        // Local address for zone transfers.
        transfer-source 192.168.0.10;
...

Hier wird die IP-Adresse festgelegt, mit der der Slave-Server den Zonen-Transfer durchführt (Empfänger IP-Adresse).

:!: WICHTIG - Für einen Zonen-Transfer über eine weitere IP-Adresse, kann die Definition auch noch in der View, oder in der Zone angegeben werden !!!

Definition der gleichzeitig erlaubten Zonen-Transfers

...
        // The maximum number of inbound zone transfers running concurrently.
        transfers-in 999;
...

Der Standard-Wert liegt beim Transfer von 10 Zonen, was als Lastbeschränkung gedacht ist. Die Anzahl kann jedoch erhöht werden, was aber zu Lasten der Performance des Master-Servers und des Slave-Servers führen kann.

Definition eines TSIG-Schlüsses

...
// TSIG ----------------------------------------------------------------
 
key "intra." {
        algorithm hmac-md5;
        secret "kfgHKkh27TApI3pD+z2GIB==";
};
...

Dies ist die Definition eines TSIG-Schlüssels, welcher für bestimmte Konstellationen von Zonen-Transfers maßgeblich entscheidend ist!

:!: WICHTIG - Der Einsatz eines TSIG-Schlüssels ist bei der hier vorgestellten Konstellation des Zonen-Transfers entscheidend und wird nachfolgend behandelt:

  • FIXME

Definitionen der "Views"

...
view "localhost" {
 
        // Only following clients can resolv the zone informations.
        match-clients { !key intra. ; "localhost"; };
...
view "dmz" {
 
        // Only following clients can resolv the zone informations.
        match-clients { !key intra. ; "dmz"; };
...
view "intra" {
 
        // Only following clients can resolv the zone informations.
        match-clients { key intra. ; "intra"; };
...
        // Allow transfer for server with key.
        server 192.168.0.20 { keys intra. ; };
...       

:!: WICHTIG - Es kommen unterschiedliche View-Definitionen zum Einsatz !!!

Bei den View-Definitionen

  • localhost und
  • dmz

kommt eine Definition zum Einsatz die einem Master-Server mit dem TSIG-Schlüssel

  • intra.

den Zonen-Transfer - NICHT ERLAUBT !!!

... !key intra. ; ...

Bei der View-Definition

  • intra

kommt eine Definition zum Einsatz die einem Master-Server mit dem TSIG-Schlüssel

  • intra.

den Zonen-Transfer - ERLAUBT !!!

... key intra. ; ...

:!: WICHTIG - Die Definition des Master-Servers mit dem dazugehörigen Key - intra. !!!

... server 192.168.0.20 { keys intra. ; };

Definitionen der "Zonen"

...
        zone "dmz.tachtler.net" IN {
                type slave;
                file "dynamic/slave/dmz.tachtler.net.zone.db";
                masters { 192.168.0.20; };
        };
...

:!: HINWEIS - Diese Definitionen gelten für alle Zonen, lediglich der

  • Name der Zone - hier z.B. dmz.tachtler.net und die
  • Datei der Zone - hier z.B. dynamic/master/dmz.tachtler.net.zone.db

sind entsprechend der einzelnen verwendeten Zonen unterschiedlich.

:!: WICHTIG - Eine Besonderheit genießt jedoch die

  • Zone - intra.tachtler.net

bzw. dessen „reverse“ Auflösung

  • Zone - 1.168.192.in-addr.arpa

Wie nachfolgend gezeigt, wird hier die Definition transfer-source entsprechend angepasst:

...
        zone "intra.tachtler.net" IN {
                type slave; 
                file "dynamic/slave/intra.tachtler.net.zone.db";
                transfer-source 192.168.1.1;                                
                masters { 192.168.0.20; };
        };
...
        zone "1.168.192.in-addr.arpa" IN {
                type slave;
                file "dynamic/slave/1.168.192.zone.db";
                transfer-source 192.168.1.1;                
                masters { 192.168.0.20; };
...

TSIG-Schlüssel

TSIG steht für (Transaction SIGnatures) und stellt eine Möglichkeit dar, die Kommunikation mithilfe eines Schlüssels weiter abzusichern.

Die Original-Dokumentation kann unter nachfolgendem externen Link eingesehen werden

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/dns_isc_bind_centos_6_-_master-slave_und_tsig.1344250578.txt.gz · Zuletzt geändert: 2012/08/06 12:56 von klaus