DNS mit bind9
DNS-Allgemeines
- Jeder mit dem Internet verbundene Rechner besitzt eine IPAdresse, über die er weltweit erreichbar ist.
- Den meisten Menschen fällt es schwer, sich IPAdressen zu merken. Aus diesem Grund werden sprechende Namen wie z.B. www.xinux.com vergeben.
- Vor dem Aufbau einer Verbindung müssen diese Namen in IPAdressen umgewandelt werden, was heute die DNSServer erledigen.
- In der Anfangszeit des Internet wurde hierfür eine große HostsDatei verwendet.
- Diese wurde zentral gepflegt und musste von den Systemadministratoren regelmäßig aktualisiert werden.
- Mit der zunehmenden Größe des Internets wurde diese Administration immer umständlicher.
- An Stelle einer Datei sollte eine Datenbank verwendet werden.
- Diese sollte allerdings nicht zentral auf einem Rechner liegen, sondern verteilt auf allen Rechnern des damaligen Internet.
- Jeder Administrator sollte für die Namensgebung seiner eigenen Rechner verantwortlich sein
- Desweiteren sollte er für die Namensauflösung der anderen Computer auf die Datenbanken der anderen Administratoren zugreifen.
- Um unterscheiden zu können, welche Rechnernamen lokal und welche Rechnernamen zu einem anderen Administrator gehören, wurde das Domänenkonzept eingeführt.
- Hierzu wird ein hierarchisch geordneter Baum verwendet, mit dessen Hilfe der richtige Datenbankserver schnell gefunden werden kann.
- Der Rechnername wird dabei nach rechts durch den entsprechenden Pfad im Baum erweitert.
Domain Name Service
Installation bind9
- apt install bind9 .
Staren stoppen
- systemctl restart bind9
- systemctl restart bind9
- systemctl restart bind9
Konfiguration von bind9
Hauptkonfiguration
Standardmäßig ist die Konfiguration von bind9 auf mehrere Dateien aufgeteilt:
/etc/bind/named.conf
#Diese Datei inkludiert einfach nur die anderen 3 Dateien include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones";
/etc/bind/named.conf.options
#Allgemeine Optionen
options {
dnssec-validation auto;
listen-on-v6 { any; };
};
/etc/bind/named.conf.default-zones
#Standardzonen
zone "." {
type hint;
file "/usr/share/dns/root.hints";
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
/etc/bind/named.conf.locale
#Standardmässig leer
#Hier werden die sogenanten Zonen angelegt.
zone "vulkan.int" {
type master;
file "vulkan.int";
notify no;
};
zone "81.168.192.in-addr.arpa" {
type master;
file "81.168.192.in-addr.arpa";
allow-transfer { 192.168.249.121 };
};
Zonen Datei
- Die Zonendatei enthält die Informationen zu den Adressen, und sieht folgendermaßen aus:
$TTL 300 ; 5 minutes
@ IN SOA ns.vulkan.int. technik.xunix.de. (
2011090204 ; serial
14400 ; refresh (4 hours)
3600 ; retry (1 hour)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
NS ns.vulkan.int.
ns.vulkan.int. IN A 192.168.81.21
Sekundärer Nameserver
- Um Ausfallsicherheit zu gewährleisten, kann es sinnvoll sein, mehrere DNS-Server zu betreiben.
Dazu muss man in der named.conf des sekundären Nameservers die Zone die man Spiegeln will mit folgender Konfiguration hinzufügen:
zone "vulkan.int" {
type slave;
file "vulkan.int";
masters { 192.168.81.21; };
};
Update
- Der Sekundäre Server refreshed dann wie im SOA-Record seine Zonendateien über seinen Master.
- Dieses Verhalten ist von default her aktiv, wobei der Slave-Server nur von seinem Master ein Update erlaubt.
Notify
- Notify ermöglicht dem primären Nameserver dem sekundären Server mitzuteilen das sich möglicherweise Dateien geändert haben, woraufhin dieser ein Update verlangt.
- Dieses Verhalten ist von default her aktiv, wobei Master-Server nur ihren Slaves notify schicken, und Slaves nur notifys von ihren Mastern akzeptieren.
Dazu muss in der Zonen-Datei der Sekundäre Nameserver in den NS-Records eingetragen werden:
$TTL 300 ; 5 minutes
@ IN SOA ns.vulkan.int. technik.xunix.de. (
2011090604 ; serial
14400 ; refresh (4 hours)
3600 ; retry (1 hour)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
IN NS ns.vulkan.int.
IN NS tunesien.alpha.quadrant.
ns.vulkan.int. IN A 192.168.81.21
www IN A 192.168.81.43
Forward Zone
- Damit in diesem Beispiel unser Primärer Domain Server den Sekundären findet und auch noch im rest des Netzwerkes die Rechner kennt müssen wir eine Forward Zone einrichten die zurück auf unseren Top-Level-Domain Name-Server zeigt:
zone "alpha.quadrant" {
type forward;
forwarders { 192.168.240.21; };
};
Berechtigungen und Einschränkungen=
- wenn der Nameserver einen anderen Nameserver nicht die root Nameserver befragen soll
- kann man forwarders benutzen
forwarders
forwarders {
213.133.98.96;
213.133.99.99;
213.133.100.100;
};
- mit allow-query ist gemeint wer erlaubt ist anfragen zu stellen für Zonen für die der Nameserver selbst zuständig ist
allow-query
{ 0.0.0.0/0; };
- mit allow-recursion ist gemeint wer erlaubt ist anfragen zu stellen für die der Nameserver andere quellen befragen muss also die außerhalb seiner Zuständigkeit liegen
allow-recursion {
2.2.2.2
};
- ist gemeint wer erlaubt ist eine komplette Zone abzufragen also alle unter Domains die zur Verfügung stehen dies wird normal nur für den sekundären Nameserver gebraucht
allow-transfer {
1.2.2.2;
};
DNS Auflösungsüberprüfung
host und dig. Diese Tools ermöglichen es, Informationen von DNSServern abzufragen. Das einfachere der beiden Programme ist host. Eine simple Anfrage wird mit host www.heise.de ausgeführt. Als Ausgabe erhält man die IPAdresse des WWWServers: www.heise.de has address 193.99.144.85
