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:
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 ------> | 192.168.0.10 | | | | | | DMZ-IP-Adresse: | | intra-IP-Adresse: | | 192.168.0.20 | -------> Transfer 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
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 ...
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
:
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-sha256; 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 { key intra. ; "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.
... 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.
... // 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 !!!
... // 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.
... // 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).
...
// 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.
... // TSIG ---------------------------------------------------------------- key "intra." { algorithm hmac-sha256; 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:
... 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"; }; // Only following destination can resolv the zon informations. match-destinations { key intra. ; "intra"; }; // Allow transfer for server with key. server 192.168.0.1 { keys intra. ; }; ...
WICHTIG - Es kommen unterschiedliche View-Definitionen zum Einsatz !!!
Bei den View-Definitionen
localhost
unddmz
kommt eine Definition zum Einsatz die einem Slave-Server mit dem TSIG-Schlüssel
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
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. ; };
... 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
dmz.tachtler.net
und diedynamic/master/dmz.tachtler.net.zone.db
sind entsprechend der einzelnen verwendeten Zonen unterschiedlich.
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
:
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-sha256; 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 { key intra. ; "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.
... 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.
... // No notification form this DNS-Server to anyone. notify no; ...
Es sollen keine Benachrichtigungen vom Slave-Server bei Zonenänderungen Versand werden.
... // 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.
... // 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 !!!
...
// 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.
... // TSIG ---------------------------------------------------------------- key "intra." { algorithm hmac-sha256; 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:
... 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"; }; // Only following destination can resolv the zon informations. match-destinations { 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
unddmz
kommt eine Definition zum Einsatz die einem Master-Server mit dem TSIG-Schlüssel
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
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. ; };
... 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
dmz.tachtler.net
und diedynamic/master/dmz.tachtler.net.zone.db
sind entsprechend der einzelnen verwendeten Zonen unterschiedlich.
WICHTIG - Eine Besonderheit genießt jedoch die
intra.tachtler.net
bzw. dessen „reverse“ Auflösung
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 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
Um einen TSGI-Schlüssel(paar) zu erstellen, kann nachfolgender Befehl genutzt werden:
# dnssec-keygen -a hmac-sha256 -b 128 -n HOST intra. Kintra.+163+32328
* Die Generierung kann einige Zeit in Anspruch nehmen, je nach Leistungsfähigkeit des Servers.
Anschließend sollten zwei Dateien entstanden sein, was mit nachfolgendem Befehl überprüft werden kann:
# ls -la *intra.* -rw-r--r-- 1 root root 49 Aug 6 14:15 Kintra.+163+32328.key -rw------- 1 root root 168 Aug 6 14:15 Kintra.+163+32328.private
Hier ist nur die Datei
Kintra.+113+32328.private
interessant, dessen Inhalt mit nachfolgendem Befehl ausgegeben werden kann:
# cat Kintra.+163+32328.private Private-key-format: v1.3 Algorithm: 163 (HMAC_SHA256) Key: kfgHKkh27TApI3pD+z2GIB== Bits: AAA= Created: 20120806121239 Publish: 20120806121239 Activate: 20120806121239
HINWEIS - Hier kann nun die „Zeichenkette“, welche nach der Bezeichnung Key:
steht verwendet werden.
Die Dateien selbst, können gelöscht werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# rm Kintra.+163+32328.*
Nun muss die jeweilige Konfigurationsdatei
/etc/named.conf
des
um nachfolgende Zeilen erweitert werden, damit dem jeweiligen Server der gleiche TSIG-Schlüssel bekannt ist und verwendet werden kann (nur relevanter Ausschnitt):
... key "intra." { algorithm hmac-sha256; secret "kfgHKkh27TApI3pD+z2GIB=="; }; ...
Zur Überprüfung, ob ein Zonen-Transfer erfolgreich durchgeführt wurde, kann nachfolgender Befehl genutzt werden, der die Log-Datei
/var/named/data/named.run
auf dem Slave-Server, zur Ausgabe auf den Bildschirm bring (nur relevanter Ausschnitt):
... 06-Aug-2012 14:21:35.719 general: info: zone tachtler.net/IN/intra: Transfer started. 06-Aug-2012 14:21:35.720 xfer-in: info: transfer of 'tachtler.net/IN/intra' from 192.168.0.20#53: connected using 192.168.1.1#57420 06-Aug-2012 14:21:35.723 general: warning: zone tachtler.net/IN/intra: main._domainkey.tachtler.net/A: bad owner name (check-names) 06-Aug-2012 14:21:35.723 general: info: zone tachtler.net/IN/intra: transferred serial 2012080502: TSIG 'intra' 06-Aug-2012 14:21:35.724 xfer-in: info: transfer of 'tachtler.net/IN/intra' from 192.168.0.20#53: Transfer completed: 1 messages, 98 records, 2459 bytes, 0.003 secs (819666 bytes/sec) 06-Aug-2012 14:21:35.218 general: info: zone 171.217.88.in-addr.arpa/IN/intra: Transfer started. 06-Aug-2012 14:21:35.219 xfer-in: info: transfer of '171.217.88.in-addr.arpa/IN/intra' from 192.168.0.20#53: connected using 192.168.1.1#58583 06-Aug-2012 14:21:35.220 general: info: zone 171.217.88.in-addr.arpa/IN/intra: transferred serial 2012080502: TSIG 'intra' 06-Aug-2012 14:21:35.220 xfer-in: info: transfer of '171.217.88.in-addr.arpa/IN/intra' from 192.168.0.20#53: Transfer completed: 1 messages, 6 records, 306 bytes, 0.001 secs (306000 bytes/sec) ...
Falls ein Fehler, wie nachfolgend dargestellt (nur relevanter Ausschnitt),
... 06-Aug-2012 13:00:36.510 general: info: zone 171.217.88.in-addr.arpa/IN/intra: refresh: failure trying master 192.168.0.20#53 (source 192.168.1.1#0): tsig indicates error ...
in der Log-Datei auftreten sollte und der Zonen-Transfer, nicht stattgefunden hat, sollten nachfolgende Konfigurationen überprüft werden:
localhost
match-clients { !key intra. ; "localhost"; };
match-destinations { "localhost"; };
intra
match-clients { key intra. ; "intra"; };
match-destinations { key intra. ; "intra"; };
server 192.168.1.1 { keys intra; };
server 192.168.0.20 { keys intra; };
Um einen Zonen-Transfer über eine Firewall, welche z.B. bei alle ausgehenden Verbindungen, via NAT die Absender-IP-Adresse umschreibt (MASQUERADING), sind nachfolgende iptables-Regeln
der MASQUERADING-Regel einzufügen:
Um die aktuellen iptables
-Regeln (CHAIN NAT) erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -t nat -nvL --line-numbers Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 980 packets, 82233 bytes) num pkts bytes target prot opt in out source destination 1 5224 379K SNAT all -- * eth0 0.0.0.0/0 0.0.0.0/0 to:10.0.0.10 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Nachfolgende Befehle, fügen folgende iptables
-Regeln dem iptables
-Regelwerk (CHAIN NAT) jeweils ab der Position 1 hinzu, ohne das der Paketfilter angehalten werden muss:
-A POSTROUTING -s 192.168.1.1/32 -d 192.168.0.20/32 -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A POSTROUTING -s 192.168.1.1/32 -d 192.168.0.20/32 -o eth0 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -s 192.168.1.1/32 -d 192.168.0.20/32 -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -s 192.168.1.1/32 -d 192.168.0.20/32 -o eth0 -p udp -m udp --dport 53 -j ACCEPT
und hier die Befehle:
# iptables -I POSTROUTING 1 -s 192.168.1.1/32 -d 192.168.0.20/32 -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT # iptables -I POSTROUTING 1 -s 192.168.1.1/32 -d 192.168.0.20/32 -o eth0 -p udp -m udp --dport 53 -j ACCEPT # iptables -I OUTPUT 1 -s 192.168.1.1/32 -d 192.168.0.20/32 -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT # iptables -I OUTPUT 1 -s 192.168.1.1/32 -d 192.168.0.20/32 -o eth0 -p udp -m udp --dport 53 -j ACCEPT
Ein erneute Abfrage des iptables
-Regelwerts (CHAIN NAT) , sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -t nat -nvL --line-numbers Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 980 packets, 82233 bytes) num pkts bytes target prot opt in out source destination 1 36 2160 ACCEPT tcp -- * eth0 192.168.1.1 192.168.0.20 tcp dpt:53 2 82 10989 ACCEPT udp -- * eth0 192.168.1.1 192.168.0.20 udp dpt:53 3 5224 379K SNAT all -- * eth0 0.0.0.0/0 0.0.0.0/0 to:192.168.0.10 Chain OUTPUT (policy ACCEPT 3598 packets, 294K bytes) num pkts bytes target prot opt in out source destination 1 36 2160 ACCEPT tcp -- * eth0 192.168.1.1 192.168.0.20 tcp dpt:53 2 82 10989 ACCEPT udp -- * eth0 192.168.1.1 192.168.0.20 udp dpt:53
Die neuen Zeilen sind an Position 1 und Postition 2 zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 1 36 2160 ACCEPT tcp -- * eth0 192.168.1.1 192.168.0.20 tcp dpt:53 2 82 10989 ACCEPT udp -- * eth0 192.168.1.1 192.168.0.20 udp dpt:53 ... 1 36 2160 ACCEPT tcp -- * eth0 192.168.1.1 192.168.0.20 tcp dpt:53 2 82 10989 ACCEPT udp -- * eth0 192.168.1.1 192.168.0.20 udp dpt:53 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]