DNS-Server [1.1] [1.2.1] [1.2.2] [1.2.3]
Das Domain Name System = DNS heutzutage ein wichtiger Dienst im TCP/IP basierendem Netzwerk. Es ist quasi wie ein weltweit umfassendes "Register" in dem nach Namen im Netzwerk gesucht werden kann und die entsprechende Registernummer (IP) für einen Verbindungsaufbau zu finden. Bei dem Netzwerk kann es sich um das WWW Netz handeln oder einfach um ein Hausinternes-Netzwerk. Ziel ist es, mit dem entsprechenden Ansprechpartner nicht über seine IP-Adresse sondern einfach über seinen Namen eine Kommunikation aufbauen zu können.
(ganz grobe Verallgemeinerung!)
1. Installation DNS-Server
Die ganze Angaben zur Installation und zur Konfiguration basieren auf einen Ubuntu 14.04 Server!
Ich gehe hier auf den DNS-Server "bind" ein der Universität Berkeley (USA) Anfang der 80ziger Jahre entwickelt wurde. Inzwischen wird dieser DNS-Server "BIND" vom
Internet System Consortium weiterentwickelt. Dies ist leider nur eine und einfache Methode einen Hausinternen-DNS Server in Betrieb zu nehmen. Reicht aber im Normalfall für einen einfachen Gebrauch vollkommen aus. Für große Firmennetze ist das Grundprinzip identisch nur sind noch eine Menge andere Einträge vonnöten.
Terminal-Eingabe
apt-get install bind9
Folgendes Verzeichnis wird angelegt
/etc/bind
├── bind.keys
├── db.0
├── db.127
├── db.255
├── db.empty <- Dummy-Datei
├── db.local
├── db.root
├── named.conf
├── named.conf.default-zones
├── named.conf.local <- userbezogene Zoneneinträge
├── named.conf.options
├── rndc.key
└── zones.rfc1918
/etc/default/bind9
apt-get install dnsutils
Programme wie dig und nslookup zu Überprüfung von DNS-Funktionalität!
2. Konfiguration des DNS-Server
2.1 Vorbereitende Maßnahmen:
hostname -f -- > centrum.test-centrum.local
hostname -d -- > test-centrum.local
Diese Information liefert uns die /etc/hosts Datei.
Ferner erfahren wir durch den Befehl named -v die Version des DNS-Servers.
Aktuelle Version zur Zeit: BIND 9.9.5-3ubuntu0.1-Ubuntu (Extended Support Version)
Als nächstes editieren wir die Datei: nano /etc/bind/named.conf.options
und aktivieren :
//forwarders {
// 0.0.0.0;
// };
durch folgende Änderung:
forwarders {
192.168.0.248; <--- feste IP des Rechners, auf dem DNS Server laufen soll
};
Als letze vorbereitende Maßnahme editieren wir noch : nano /etc/default/bind9
# run resolvconf?
RESOLVCONF=no
# startup options for the server
OPTIONS="-4 -u bind" <----- der Eintrag -4 wurde ergänzt
Da im Hausinternen-Netzwerk in Regel noch IP4 zum Einsatz kommt, kann mach die Option um den Parameter '-4' ergänzen, hierdurch wird die Performance der späteren Names-Auflösung beschleunigt.
Jetzt endlich kommt man zu eigentlichen Konfiguration. Dafür sind folgende Dateien von Bedeutung:
In dieser Datei müssen Sie ihre eigenen (usereignenen) festgelegten Zonendateien dem DNS-Server bekannt gemacht werden
Bei mir sieht die Datei wie folgt aus:
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
// Eigene Zonendefinition
// Zone zur Auflösung 'Name nach IP-Adresse' 'forward'
zone "test-centrum.local" { <--- Domainname 'test-centrum.local' $ORIGIN
type master;
file "/etc/bind/db.centrum"; <--- Datei: db.Dateiname und Pfad
};
// Zone zur Auflösung 'IP-Adresse nach Name' 'reverse'
zone "0.168.192.in-addr.arpa" { <---- IP-Adressen Kreis $ORIGIN
type master;
file "/etc/bind/db.0.168.192"; <---- Datei: db.Dateiname und Pfad
};
Die Filenamen und Pfadangaben sind frei wählbar, sie sollten aber der Lesbarkeit wegen sinnvolle Namen innehaben.
2. /etc/bind/db.centrum
Diese Datei muss aus einer 'Dummy-Datei' erstellt werden. Dazu kopieren Sie die Datei 'db.empty' und vergeben ihr den neuen Namen 'db.centrum'.
db.centrum hat folgenden Inhalt:
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS localhost.
Folgende Einträge bzw. Änderungen sind vorzunehmen.
$TTL 86400
; | DomainName | Mailadresse Veranwortliche |
@ IN SOA test-centrum.local. root.test-centrum.local. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
IN NS centrum.test-centrum.local.
centrum IN A 192.168.0.248
;
; Ab hier die RechnerNamen einfügen
;
ns1 IN CNAME centrum
rech1 IN A 192.168.0.200
3. /etc/bind/db.0.168.192
Diese Datei sollte aus einer 'Dummy-Datei' erstellt werden. Dazu kopieren die Datei 'db.empty' in 'db.0.168.192' um.
Ich bin etwas bequem und habe als Vorlage für die 'Reverse' Datei die 'Forward' Datei 'db.centrum' verwendet.
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA test-centrum.local. root.test-centrum.local. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS centrum.test-centrum.local.
;
; Ab hier die IPAdressen einfügen
;
248 IN PTR centrum.test-centrum.local.
200 IN PTR rech1.test-centrum.local.
Die Syntax der Datei erscheint einem zuerst recht kompliziert. Aber bei der Einrichtung eines Hauseigenen-DNS Server gibt es nur ein paar grundlegende Punkte die man wissen oder beachten muss.
2.2 Aufbau der Zonen-Datei 'Forward'
2.2.1 $TTL 86400
Die 'Time To Live' der Zone beträgt 86400 Sek oder 1440 Min oder 24 Std.
Die TTL Option gibt an wie lange eine schon erfolgte Namensauflösung in einem speziellen Cache vorgehalten wird. Dies hat zum einen den Vorteil das bei einer erneuten Anfrage des selben Namens die Anwortzeit scheller wird und der DNS-Server entastet wird. Zum anderen kann durch das Caching von Namensauflösungen ein kurzzeitiger Ausfall des DNS-Servers überbrückst werden. Das geht aber nur mit Namen, die sich schon im Cache befinden, neue Namen können bei einem Ausfall des DNS-Servers natürlich nicht in den Cache gelangen.
2.2.2 SOA
Der 'Start Of Authority' enthält technische Angaben zur Steuerung für die Zone wie z.B.: Seriennummer oder Timer.
2.2.2.1 '@'
Das Symbol '@' hat hier nicht die Bedeutung für eine E-Mail sondern dient hier als Platzhalter für den Zonennamen (Domainnamen) oder auch als $ORIGIN bezeichnet.
Den $ORIGIN oder Platzhalter-Inhalt findet man in der Datei 'named.conf.local'.
Bei meiner Beispiel-DNS-Server sieht das ganze so aus:
zone "test-centrum.local" { <---- "test-centrum.local" = $ORIGIN
type master;
file "/etc/bind/db.centrum";
};
Das wichtigste ist jedoch die Berücksichtigung des Punktes "." nach einem Namen.
Welche Konsequenzen das Vergessen, zeigt das folgende Beispiel:
test-centrum.local. ---> Umsetzung nach test-centrum.local ohne das $ORIGIN angehängt wird.
test-centrum.local ---> Umsetzung nach test-centrum.local.test-centrum.local ist so in der Regel nicht gewünscht.
2.2.2.2 eMail-Adresse
Neben dem Domain-Namen muß auch ein Verantwortlicher der Zonendatei angegeben werden. Fehlt diese Angabe so kann es zu mehr als dubiosen Fehlermeldungen des DNS-Servers kommen. Hierbei ist darauf zu achten, das das Symbol '@' nicht in der Konfigurationsdatei verwendet werden darf!
statt root@test-centrum.local muss man das Symbol '@' durch einen Punkt ersetzen, also
root.test.centrum.local .
Normalerweise gibt verwendet man an dieser Stelle ein 'Dummy-Postfach' und nicht eine real existierende eMail-Adresse. Will man es doch machen so geht geschieht das folgendermaßen:
uwe.von.royen@test-centrum.local --> uwe\.von\.royen.test-centrum.local .
Punkte vor dem '@' werden aufleglöst durch '\.' .
2.2.2.3 Seriennummer
Die Seriennummer hat eigentlich nur eine Signalfunktion für einen Master und Save DNS-Server.Auf dem Master muss ein Eintrag existieren woran der Slave erkennen kann, das sich die Datenbank auf dem Master verändert hat. und eine neue Synchronisation erfolgen muss. Betreibt man sein Netzwerk nur mit einem Master DNS-Server macht eine recht simple Seriennummer ( hier in meinem Beispiel '1') Sinn, in einem größeren Netzwerk ist es besser wie folgt die Seriennummer zu erzeugen:
YYYYMMDDVV
│ │ │ └── ldf. Zahl 1 bis n
│ │ └──── Tag 2015013101 z.B.
│ └────── Monat
└───────── Jahr
- 2.2.2.4 Refresh
- Sekundenabstand, in dem die Slaves anfragen, ob sich etwas geändert hat (Empfehlung laut Ripe-203: 86400 ≙ 24 Stunden)
- 2.2.2.5 Retry
- Sekundenabstand, in denen ein Slave wiederholt, falls sein Master nicht antwortet (Empfehlung laut Ripe-203: 7200 ≙ 2 Stunden)
- 2.2.2.6 Expire
- wenn der Master auf einen Zonentransfer-Request nicht reagiert, deaktiviert ein Slave nach dieser Zeitspanne in Sekunden die Zone (Empfehlung laut Ripe-203: 3600000 ≙ 1000 Stunden)
- 2.2.2.7 TTL
- Time to Live für Negatives Caching (Empfehlung laut Ripe-203: 172800 ≙ 2 Tage). Ursprünglich hatte dieses Feld die Bedeutung eines Minimum-TTL-Werts für alle Resource Records der Zone und wurde in der Praxis als Standardwert verwendet, wenn bei einem Resource Record kein TTL-Wert angegeben war; diese Bedeutung wurde mit abgeschafft.
- Ergänzung:
- Wird der TTL Wert nicht im SOA Record angeben, sondern so als individuelle TTL-Wert ( nicht zu Verwechseln mit dem globalen $TTL ) für bestimmte Resource Records vergeben, so muß der TTL Wert unbedingt vor 'IN' stehen! Dieser neue TTL-Wert ist dann für alle nachfolgenden Einträge gültig, bis ein neuer Wert gesetzte wird oder ein neuer SOA Record in der Zonen-Datei auftaucht. Der TTL Wert wird in Sekunden angegeben, Sie können aber auch die Einheiten m=Minuten, h=Stunden, d=Tage, w=Woche verwenden.
- z.B.:
- ...
-
www 20m A 192.168.1.2 ; ab hier gilt TTL=20 ??? ist unklar!!! Siehe Regel 10
test A 1.2.3.4 ; TTL=20 aus vorherigem Eintrag
...
2.2.2.8 IN
Klasse 'IN' für Internet-Adresse.
Das Kennzeichnung 'IN' braucht eigentlich nur im ersten Resourcen Record (RR)
angegeben werden.
2.2.2.9 NS
NS steht als Kennzeichen für einen NameServer.
IP-Adressen sind in NS-Records nicht erlaubt!
Wird ein eigener Nameserver verwendet, dessen Hostname "centrum.test-centrum.local"
lauten soll, muss ein zusätzlich passenden A-Record definieren.
2.2.2.10 A oder AAAA
Mit dem A-Record wird dem einem Namen im DNS-Server eine IPv4-Adresse zugeordnet.
Mit dem AAAA-Record ("quad-A")geschieht die Zuordnung einer IPv6-Adresse.
2.2.2.11 CNAME
CNAME-Record weist einem Namen ein weiteren Namen (Alias) zu.
Die Abkürzung CNAME steht für "canonical name" (canonical = anerkannt, bezeichnet also
den primären, quasi echten Namen).
2.2.2.12 PTR
Der PTR (Pointer) - Resourcen Record ordnet einer IP-Adresse ein oder mehrere Namen
zu.Sie sind praktisch als Umkehrzuweisung (reverse) ein Name mehrere IP-Adressen zu.
Praktisch die Umkehrung zum A-Record.
2.2.2.13 MX
Der MX-Resourcen Record muss man nicht kann man aber in einem eigenen Homenetz-
Werk haben. Es zeigt einen eigenen E-Mail-Server an, der nicht unbedingt im öffentlichen
Internet bekannt sein muß, aber recht gute Dienste im eigene Homenetz = Intranetz leisten
kann. Er dient als zentraler Anlaufpunkt für E-Mail der stellvertretend z.B von T-Online die
E-Mail für alle User abholen und versenden kann. Der eigene E-Mail Server verteilt dann im
Intranet die E-Mail an die entsprechenden User.
Die Abkürzung MX steht für "mail exchange" und gibt die Adresse bzw. Namen des
zuständigen Mail-Servers an. Der oder die Einträge eines MX-Records müssen immer auf
einen A-Record verweisen!
Beispiele:
domain.tld. IN MX 10 mail.variomedia.de. <---- öffentlicher Mail-Server
*.domain.tld. IN MX 10 mail.variomedia.de.
oder
mail A 212.227.144.210 <---- öffentlicher Mail-Server
example.com. MX 10 mail.example.com
example.com. MX 20 backupmail.provider.com
oder wie in meinem Beispiel wo der Mail-Server in einer Intranet-Umgebung steht:
....
;
IN NS centrum.test-centrum.local.
IN MX 10 mail.test-centrum.local.
mail IN A 192.168.0.200
centrum IN A 192.168.0.248
...
Der Wert 10 gibt die Priorität des Mail-Servers an. Der Eintrag macht besonders bei mehren Mail-Server innerhalb einer Zone Sinn. Je niedrigen die Zahl desto höher die Priorität mit der ein Mail-Server die Mails zur Verarbeitung weitergeleitet bekommt.
3. Beispiele für Optimierung der Zoneneinträge
DNS Server [1.1] [1.2.1] [1.2.2] [1.2.3]
hier geht es weiter ...
Wichtige Links:
bind9 Internet
System Consortium
bind http://de.wikipedia.org/wiki/BIND
DNS Server http://wiki.ubuntuusers.de/DNS-Server_Bind
DNS & BIND Bücher DNS und BIND im IPv6 - kurz & gut
DNS und BIND 4. Auflage super Buch!