Ubuntu Server / DNS-Server fürs eigene Netzwerk.

ubuntu_onps3a
Wer sich noch nicht 100% mit DNS und Bind9 unter Linux auskennt, der wird sicher früher oder später eine Testmaschine aufbauen und etwas probieren wollen.
Und genau dafür soll dies eine kleine Anleitung zum Thema Bind9 unter Linux sein.
Ich gehe hier von einem frisch installieren Rechner ohne extra Software aus (Ubuntu 9.04. Server). Während der Installation habe ich nur den OpenSSH Server angemarkert, da die Kiste einfach zu laut zum Denken ist und direkt nach der Installation in den Keller wanderte und ich das Display für nen anderen Rechner wieder brauche. Für eine lokale Installation an der Konsole ist OpenSSH nicht unbedingt nötig.

Bevor wir loslegen, schreib ich noch ein paar Zeilen wozu DNS eigentlich da ist. Wenn es zu langweilig wird, kannst du gleich mit der Konfiguration loslegen.
DNS = Domain Name Service oder auch das Globale Adressbuch im Internet. Alle Server im Internet basieren auf IP-Adressen  (OSI Schicht 3) . Da es der Nutzer wie Du und Ich aber es mit den Zahlen nicht so hat, merkt er sich doch lieber Namen. Also z.b. funrecycler,google,ebay oder yahoo. Nun nach der Eingabe der URL im Browser fragt der Rechner einen DNS Server nach der richtigen IP-Adresse. z.B.
Name:   www.funrecycler.com
Address: 67.215.65.132
Nach meiner Erfahrung sind 90% der Fehler, die auf Servern auftreten (WIN und Linux), DNS Fehler. Also wenn der Domaincontroller mal wieder buggt, wird es Zeit, sich mal mit dem Thema näher zu beschäftigen 🙂
Ok: Basteln wir uns nun einen eigenen zusammen. Wenn Ihr wirklich nur testen wollt, nehmt keine real existierenden TLD, da eure Tests dann sicher nicht ganz realistisch sind. domain.deu gibt es im hiesigen Netz da draußen nicht, also kann man damit testen.
sudo apt-get install bind9
installiert wie von Zauberhand den bind9 auf dem Server.
Als erstes solltet ihr dem Server klar machen, um welche Domain er sich so kümmern soll und in welchen Datenbanken er bei Anfragen nachsehen soll. Im Prinzip steht nichts weiter drin als: Schaue bei Anfragen der Zone domain.deu in der entsprechenden domain.deu.db. Weiterhin gibts noch die reverse Einträge auch wieder in einer Datei.
/etc/bind/named.conf.local
// Anfang
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include “/etc/bind/zones.rfc1918”;
# domain zone
zone “domain.deu” {
type master;
file “/etc/bind/zones/domain.deu.db”;
};

# For reverse DNS
zone “0.168.192.in-addr.arpa” {
type master;
file “/etc/bind/zones/rev.0.168.192.in-addr.arpa”;
};
// Ende

in der Datei
/etc/bind/named.conf.options sollte noch der Forwarder des ISPs eingetragen werden, damit alle restlichen Anfragen auch beantwortet werden können.
forwarders {
68.87.76.178;
};

Die Datei /etc/resolv.conf ist sicher schon von dem Lokalen System bekannt und sagt dem lokalen System, wo er den DNS Server findet.
Hier muß dann natürlich die IP des Servers rein. Übrigens dann auch auf den anderen Rechnern, die den DNS nutzen sollen.
search domain.deu.
nameserver 192.168.0.19

Nun müssen noch die Datenbanken, die ja eigentlich nur Textdateien sind, angelegt werden.
sudo mkdir /etc/bind/zones
sudo vi /etc/bind/zones/domain.deu.db
Hier gehören dann folgende rein. Der genau Aufbau ist unter Wikipedia auch recht gut beschrieben.
$TTL 3D
@ IN SOA ns.mydomain.com. admin.mydomain.com. (
2007062001
28800
3600
604800
38400
);
domain.deu.    IN      NS         ns.domain.deu.
Rechner1       IN      A          192.168.0.100
Rechner2       IN      A          192.168.0.200
gw             IN      A          192.168.0.1
www            IN      CNAME      Rechner1

Fehlt eigentlich nur noch die Reverse lookup Datei:
sudo vi /etc/bind/zones/rev.0.168.192.in-addr.arpa
$TTL 3D
@       IN      SOA     ns.domain.deu. admin.domain.deu (
2007062001
28800
604800
604800
86400
)
IN      NS      ns.domain.deu.
1       IN      PTR     gw.domain.deu.
10      IN      PTR     Rechner1.domain.deu.
11      IN      PTR     Rechner2 domain.deu.

Nach der ganzen Aktion muss der Bind neu gestartet werden.
sudo /etc/init.d/bind9 restart
* Stopping domain name service… bind9   [ OK ]
* Starting domain name service… bind9   [ OK ]
Nur wenn der Dienst sauber gestartet wurde, sind keine Schreibfehler passiert. Klappt was nicht, hab’ ich oder Ihr einen Fehler gemacht. 🙂
Prüfen kann man nun die Namensauflösung mit
dig domain.deu
und
nslookup www