Allgemeine DNS-Server-Konfiguration [2]

Grundlagen

- Das DNS ist ein hierarchisches System, in der Form eines Baumes.
- Die Spitze wird als »
.« geschrieben und wird »root« (Wurzel) genannt.

- Darunter siedeln sich Top Level Domains (TLDs) wie .com, .org, .de, usw an


Vollständige Namensanfrage an www.pc-erfahrung.de:

1.) Anfrage an Root-Server. Dieser gibt als Antwort den Nameserver, der für .de zuständig ist 2.) Anfrage an de-Namerserver. Dieser gibt als Antwort den für pc-erfahrung.de zuständigen Nameserver. 3.) Letzterer hat die passenden Eintrag für den Host www, so dass die IP-Adresse von www.pc-erfahrung.de aufgelöst werden kann.

/etc/named.conf = Konfigurationsdatei für Bind
/etc/named.boot = Frühere Versionen von BIND (vor 8.1) verwendeten diese Datei.


forwarder = ist ein anderer Nameserver, der befragt werden kann
Root-Level-Server = Es gibt insgesamt 13 Root-Server auf der Welt, welche die Wurzel des hierarchisch organisierten DNS bilden. Diese haben Infos über die Nameserver, welche die Domains .org, .com, .de, etc verwalten. Root-Server. Die Root-Server beantworten ausschließlich iterative Anfragen. Sie wären sonst mit der Anzahl der Anfragen schlicht überlastet.
Master-Nameserver = Enthält die DNS-Informationen
Slave-Nameser = Enthält die gespiegelten Daten des Master-Nameserver

ttl = (Time-To-Live) Wie lange darf eine Information im Cache gespeichert werden?

Autorative Antwort = Man erhält Antwort direkt vom zuständigen Nameserver

Nicht-Autorative Antwort = Man erhält Antwort aus dem Cache eines anderen Nameservers

Konfiguration von BIND als Caching-Only-Nameserver

- Ein DNS-Cache bzw. Caching-Only-Nameserver verwaltet keine Hosts und Informationen

- leitet lediglich Namensanfragen an einen anderen Nameserver weiter.
- Bei der Weiterleitung hat der Nameserver folgende Möglichkeiten: 1.) Die Antwort wird aus dem Cache gelesen 2.) Wenn nein, fragt er einen anderen Namserver 3.) Wenn dieser keine Antwort hat, wird eine vollständige Namensabfrage durchgefürt.

// Konfigurationsdatei für einen caching-only Nameserver

options {
directory "/var/named"; // Arbeits-Vrz. Festlegen
forward only // Nur forwarder befragen, Root-Server befragen nicht erlaubt.
forward first // Standard, zuerst forwarder, dann Root-Server befragen
};

forwarders {

111.222.333.444;
999.888.777.666;
};

/*Caching-Only-Nameserver enthalten lediglich Zone-Files für localhost und den Root-Server, da sie selbst keine DNS-Informationen verwalten*/
zone "." in{
type hint;
file "root.hint";
};

zone "localhost" in {
type master;
file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
type master;
file "127.0.0.zone";
};


// root.hints ¿ enthält Infos zu den Root-Level-Servern. Auszug:

.                       6D IN NS        G.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
//...
//...
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10
//...
//...
I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241

Erweiterte Konfiguration

// Definition von Netzen, die in Options eingebunden werden
acl boeseHosts {
0.0.0.0/8;
224.0.0.0/8;
usw;
};

options {
directory "/var/named"; // Arbeits-Vrz. Festlegen
version "8.2.3.5";
dump-file "dump";
// Server-Sump-Datei, wen SIGINT an named geschickt wird.
recursion yes; // Es dürfen forwarder befragt werden
fetch-glue no; // Additional Data werden nicht gespeichert
datasize 500M; // Max. RAM, den Bind benutzen darf
listen-on port 1234{ 192.168.0.1; }; // Auf dieser Interface wird gelauscht
allow_query { 192.168.0.0/24; }; // Dieses Hosts dürfen Anfragen stellen
blackhole { boeseHosts; }; // Diese dürfen keine Anfragen stellen. BoeseHosts = siehe oben.
};

// Diese Datei enthält die Root-Server
zone "." in{
type hint; // Typ festlegen, dass dieses File die Root-Server definiert
file "root.hint";
};

// Vorwärtsauflösung der Zone test.home
// Übersetzung von Namen in IP-Adressen
zone "test.home" in {
type master; // Masterserver für Zone test.home
file "test.home.zone";
};

// Rückwärts-Auflösung der Domain test.home
// Also Übersetzung von IP-Adressen in Namen.
// Jedes Subnetz benötigt eine eigene Zone.
zone "2.30.172.in-addr.arpa" in {
type master; // Masterserver für Zone 172.30.2.0
file "172.30.2.zone";
};

// Nameserver ist Slaveserver für diese Zone.
zone "example.com" in {
type slave; // Slaveserver für example.com
file "example.com.zone";
masters { 192.168.0.1; }; // Dies ist der Masterserver der Zone
};

// Anfragen an diese Zone leitet Bind an anderen Server weiter.
zone "andereDomain.com" in {
type forward;
forward only; // Nur Weiterleiten
forwarders { 212.85.44.2; }; // Zuständigen Nameserver definieren
};

Typen in dem Zonenabschnitt

type hint; = Dieses Zonenfile enthält die root-Server

type master; = Der Nameserver fungiert als Masterserver für diese Zone.

type slave; = Der Nameserver fungiert als Slaveserver für diese Zone.

type forward; = Der Nameserver leitet alle Anfragen an diese Domain weiter.


Wichtige Optionen im Zonenabschnitt

forward first | only = Anfragen weiterleiten. First = Zuerst selbst versuchen, dann Root-Server fragen

forwarders = Zuständige Nameserver definieren (max.3 pro Zone)

 

allow_query { 192.168.0.0/24; }; = Dieses Hosts dürfen Anfragen stellen
allow-transfer { 192.168.0.0/24; }; = Welche Slaveserver dürfen Zonentransfer (Spiegelung) durchführen?
notify yes | no = Soll Masterserver die Slaveserver informieren, wenn Änderungen vorgenommen wurden?
also-notiy { IP-Adresse, IP-Adresse } = Auch diese Server sollen bei Änderungen informiert werden.
masters { IP-Adresse }; = Zuständigen Masterserver festlegen (bei Konfiguration als Slaveserver)

BIND und Logging

Channel = Was passiert mit Meldungen?

Category = Welche Meldungen gehen in welchen Channel?

// Auszug named.conf^
logging {
// Channel default-log definieren. Meldungen werden in logs/named.log geschrieben
channel default-log { file "logs/named.log" version 5 size 10M; severity debug; print-severity yes; };
// meldungen der Kategorie default gehen an channel default-log
category default { default-log; };
// Channel queries-log definieren
channel queries-log { file "logs/queries.log"; severity info; };
// meldungen der Kategorie queries gehen an channel queries-log
category queries { queries-log; };
};

Channel-Optionen
file DATEINAME; = Meldungen an diesen Channel werden in DATEINAME gespeichert
syslog KATEGORIE; = Meldungen an diesen Channel werden an Syslog übergeben
null; = Meldungen werden ignoriert

severity = Entspricht der Priorität für syslog. Mögliche Werte: critical, error, warning, notice, info, debug, dynamic.
print-category yes | no = Kategorie der Meldung mit ausgeben?
print-severity yes | no = Priorität der Meldung mit ausgeben?
print-time yes | no = Zeitstempel mit ausgeben?

Category-Optionen
default = Alle Meldungen
queries = Anfragen an den server
lame-servers = Fehlerhaften Anfragen eines Remote-Nameservers
statistics = Statistische Informationen
panic = Interne Probleme (Bsp.: Absturz von BIND)
update = Meldungen über dynamische Updates
xfer-in = eingehende Zonentransfers
xfer-out = abgehende Zonentransfer
load = Meldungen über das Laden von Zonenfiles

Grundlagen

- Das DNS ist ein hierarchisches System, in der Form eines Baumes.
- Die Spitze wird als »
.« geschrieben und wird »root« (Wurzel) genannt.

- Darunter siedeln sich Top Level Domains (TLDs) wie .com, .org, .de, usw an


Vollständige Namensanfrage an www.pc-erfahrung.de:

1.) Anfrage an Root-Server. Dieser gibt als Antwort den Nameserver, der für .de zuständig ist 2.) Anfrage an de-Namerserver. Dieser gibt als Antwort den für pc-erfahrung.de zuständigen Nameserver. 3.) Letzterer hat die passenden Eintrag für den Host www, so dass die IP-Adresse von www.pc-erfahrung.de aufgelöst werden kann.

/etc/named.conf = Konfigurationsdatei für Bind
/etc/named.boot = Frühere Versionen von BIND (vor 8.1) verwendeten diese Datei.


forwarder = ist ein anderer Nameserver, der befragt werden kann
Root-Level-Server = Es gibt insgesamt 13 Root-Server auf der Welt, welche die Wurzel des hierarchisch organisierten DNS bilden. Diese haben Infos über die Nameserver, welche die Domains .org, .com, .de, etc verwalten. Root-Server. Die Root-Server beantworten ausschließlich iterative Anfragen. Sie wären sonst mit der Anzahl der Anfragen schlicht überlastet.
Master-Nameserver = Enthält die DNS-Informationen
Slave-Nameser = Enthält die gespiegelten Daten des Master-Nameserver

ttl = (Time-To-Live) Wie lange darf eine Information im Cache gespeichert werden?

Autorative Antwort = Man erhält Antwort direkt vom zuständigen Nameserver

Nicht-Autorative Antwort = Man erhält Antwort aus dem Cache eines anderen Nameservers

Konfiguration von BIND als Caching-Only-Nameserver

- Ein DNS-Cache bzw. Caching-Only-Nameserver verwaltet keine Hosts und Informationen

- leitet lediglich Namensanfragen an einen anderen Nameserver weiter.
- Bei der Weiterleitung hat der Nameserver folgende Möglichkeiten: 1.) Die Antwort wird aus dem Cache gelesen 2.) Wenn nein, fragt er einen anderen Namserver 3.) Wenn dieser keine Antwort hat, wird eine vollständige Namensabfrage durchgefürt.

// Konfigurationsdatei für einen caching-only Nameserver

options {
directory "/var/named"; // Arbeits-Vrz. Festlegen
forward only // Nur forwarder befragen, Root-Server befragen nicht erlaubt.
forward first // Standard, zuerst forwarder, dann Root-Server befragen
};

forwarders {

111.222.333.444;
999.888.777.666;
};

/*Caching-Only-Nameserver enthalten lediglich Zone-Files für localhost und den Root-Server, da sie selbst keine DNS-Informationen verwalten*/
zone "." in{
type hint;
file "root.hint";
};

zone "localhost" in {
type master;
file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
type master;
file "127.0.0.zone";
};


// root.hints ¿ enthält Infos zu den Root-Level-Servern. Auszug:

.                       6D IN NS        G.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
//...
//...
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10
//...
//...
I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241

Erweiterte Konfiguration

// Definition von Netzen, die in Options eingebunden werden
acl boeseHosts {
0.0.0.0/8;
224.0.0.0/8;
usw;
};

options {
directory "/var/named"; // Arbeits-Vrz. Festlegen
version "8.2.3.5";
dump-file "dump";
// Server-Sump-Datei, wen SIGINT an named geschickt wird.
recursion yes; // Es dürfen forwarder befragt werden
fetch-glue no; // Additional Data werden nicht gespeichert
datasize 500M; // Max. RAM, den Bind benutzen darf
listen-on port 1234{ 192.168.0.1; }; // Auf dieser Interface wird gelauscht
allow_query { 192.168.0.0/24; }; // Dieses Hosts dürfen Anfragen stellen
blackhole { boeseHosts; }; // Diese dürfen keine Anfragen stellen. BoeseHosts = siehe oben.
};

// Diese Datei enthält die Root-Server
zone "." in{
type hint; // Typ festlegen, dass dieses File die Root-Server definiert
file "root.hint";
};

// Vorwärtsauflösung der Zone test.home
// Übersetzung von Namen in IP-Adressen
zone "test.home" in {
type master; // Masterserver für Zone test.home
file "test.home.zone";
};

// Rückwärts-Auflösung der Domain test.home
// Also Übersetzung von IP-Adressen in Namen.
// Jedes Subnetz benötigt eine eigene Zone.
zone "2.30.172.in-addr.arpa" in {
type master; // Masterserver für Zone 172.30.2.0
file "172.30.2.zone";
};

// Nameserver ist Slaveserver für diese Zone.
zone "example.com" in {
type slave; // Slaveserver für example.com
file "example.com.zone";
masters { 192.168.0.1; }; // Dies ist der Masterserver der Zone
};

// Anfragen an diese Zone leitet Bind an anderen Server weiter.
zone "andereDomain.com" in {
type forward;
forward only; // Nur Weiterleiten
forwarders { 212.85.44.2; }; // Zuständigen Nameserver definieren
};

Typen in dem Zonenabschnitt

type hint; = Dieses Zonenfile enthält die root-Server

type master; = Der Nameserver fungiert als Masterserver für diese Zone.

type slave; = Der Nameserver fungiert als Slaveserver für diese Zone.

type forward; = Der Nameserver leitet alle Anfragen an diese Domain weiter.


Wichtige Optionen im Zonenabschnitt

forward first | only = Anfragen weiterleiten. First = Zuerst selbst versuchen, dann Root-Server fragen

forwarders = Zuständige Nameserver definieren (max.3 pro Zone)

 

allow_query { 192.168.0.0/24; }; = Dieses Hosts dürfen Anfragen stellen
allow-transfer { 192.168.0.0/24; }; = Welche Slaveserver dürfen Zonentransfer (Spiegelung) durchführen?
notify yes | no = Soll Masterserver die Slaveserver informieren, wenn Änderungen vorgenommen wurden?
also-notiy { IP-Adresse, IP-Adresse } = Auch diese Server sollen bei Änderungen informiert werden.
masters { IP-Adresse }; = Zuständigen Masterserver festlegen (bei Konfiguration als Slaveserver)

BIND und Logging

Channel = Was passiert mit Meldungen?

Category = Welche Meldungen gehen in welchen Channel?

// Auszug named.conf^
logging {
// Channel default-log definieren. Meldungen werden in logs/named.log geschrieben
channel default-log { file "logs/named.log" version 5 size 10M; severity debug; print-severity yes; };
// meldungen der Kategorie default gehen an channel default-log
category default { default-log; };
// Channel queries-log definieren
channel queries-log { file "logs/queries.log"; severity info; };
// meldungen der Kategorie queries gehen an channel queries-log
category queries { queries-log; };
};

Channel-Optionen
file DATEINAME; = Meldungen an diesen Channel werden in DATEINAME gespeichert
syslog KATEGORIE; = Meldungen an diesen Channel werden an Syslog übergeben
null; = Meldungen werden ignoriert

severity = Entspricht der Priorität für syslog. Mögliche Werte: critical, error, warning, notice, info, debug, dynamic.
print-category yes | no = Kategorie der Meldung mit ausgeben?
print-severity yes | no = Priorität der Meldung mit ausgeben?
print-time yes | no = Zeitstempel mit ausgeben?

Category-Optionen
default = Alle Meldungen
queries = Anfragen an den server
lame-servers = Fehlerhaften Anfragen eines Remote-Nameservers
statistics = Statistische Informationen
panic = Interne Probleme (Bsp.: Absturz von BIND)
update = Meldungen über dynamische Updates
xfer-in = eingehende Zonentransfers
xfer-out = abgehende Zonentransfer
load = Meldungen über das Laden von Zonenfiles

BIND neustarten

SIGHUP [1] = Bind liest Konfigurationsdatei neu ein.
SIGINT [2] = Abbild des Cache in die voreingestellte Datei schreiben
SIGTERM [15] = Alle Zonenfiles speichern und BIND stoppen

ndc und rndc ¿ mit BIND während des Betriebs kommunizieren

Mit diesen Programmen können während des Betriebs Befehle an BIND geschickt werden. Kommuniziert wird über Unix-Socket /var/run/ndc. rndc (Remote ndc) kommuniziert über TCP/IP mit Bind und kann daher auch über das Netzwerk mit BIND kommunizieren.

Die Authentifzierung erfolgt über einen gemeinsamen Schlüssel (Shared Key):

// Auszug /etc/rndc.conf
key "rndc-key" {
algorithmus hmac-md5;
secret "password";
};
options {
default-key ¿rndc-key¿;
default-server 127.0.0.1;
default-port 953;
}
// Auszug named.conf
controls {
inet * port 953 allow { localhost; }
keys { "rndc-key" };
};
key "rndc-key" {
algorithmus hmac-md5;
secret "password";
}

ndc Befehle
getpid = PID des Nameservers ausgeben
status =  Status des Nameservers ausgeben
stop = Beendet den laufenden Nameserver-Dämon.
reload ZONE=  Alle oder einzelne Zonen neu einlesen.
dumpdb = Cache des Nameservers in Datei speichern.

rndc-Befehle
halt = Hält den named-Service sofort an
querylog = Protokolliert alle Abfragen, die von Clients auf diesem Name-Server durchgeführt wurden.
refresh = Aktualisiert die Datenbank des Nameservers.
reload ZONE = Zone-Dateien neu zu laden.
stats = Schreibt die aktuellen named-Statistiken in die Datei /var/named/named.stats.
stop = Stoppen des Servers, und speichert dabei alle dynamischen Updates und die vorhandenen Incremental Zone Transfers (IXFR) Daten, vor dem Beenden.
dumpdb = Cache des Nameservers in Datei named_dump.db speichern.
trace = Debuglevel um 1 erhöhen
trace LEVEL = Debuglevel auf LEVEL setzen
notrace = Debuglevel auf 0 setzen
6 = Server-Caches leeren

Vergleich Bind 4 und 8/9 Konfiguration

// Auszug /etc/named.boot ¿ BIND 4
directory /var/named
forwarders 192.66.8.215 192.66.8.218
primary 0.0.127.in-addr.arpa db.127.0.0
cache db.cache