DNS-Server auf Debian aufsetzen - Erfahrungsbericht und MiniHowTo

Status
Für weitere Antworten geschlossen.

TypeRyder

Member
Nach vier Jahren habe ich mich endlich mit BIND auseinandergesetzt. Schon längere Zeit wollte ich in unserem Heimnetzwerk einen DNS-Server aufsetzen, damit man nicht ständig die Clients einzeln konfigurieren muß und ich bei einer Änderung nicht immer jeden Client anpassen muß.

Das Netzwerk sollt so aussehen:

lokales Netz: unknown-online.local
lokale Rechner:
Gateway = cerberus
Arbeitsrechner 1 = helix
Arbeitsrechner 2 = asgard
Schlepptop = Paranoia

sowie vier Gastsysteme
Guest 1 - Guest 4

Die beiden Arbeitsrechner sind untereinander und mit dem Gateway über einen Switch verbunden. Der Gateway hängt mit einer Netzwerkkarte im internen Netz und mit der anderen am DSL-Router. Bislang ist noch keine Wireless-Komponente im Netz enthalten, die berücksichtigt werden müßte.

Als Standard-Nameserver zur Weiterleitung der DNS-Abfragen nehme ich (als T-Online-Kunde) die Nameserver der Telekom, hier habe ich drei Nameserver herausgesucht. Eine Übersicht über die Nameserver der Telekom gibt es hier: http://www.atelier89.de/users/dirk/t-o/010.html

Schritt 1: Per "apt-get install" die nötigen Pakete installiert (bind) und eifrig HowTos und Forenanleitungen gelesen.

Schritt 2: Nun geht es ans anpassen der Konfigurationsdateien.
Folgende Konfig-Dateien (unter /etc/bind/ zu finden) müssen geändert bzw. neu angelegt werden:

zu ändern:
- /etc/bind/named.conf.options
- /etc/bind/named.conf.local
- /etc/resolv.conf

neu anzulegen:
- /etc/bind/unknown-online.local.hosts

Auf die Dateien komme ich jetzt im einzelnen:

Schritt 3: -named.conf.options ändern
Diese Konfig-Datei enthält die Einträge für die Forwarder-Server. Standardmäßig bringt die BIND-Installation in der db.root-Konfigurationsdatei die DNS-Rootserver mit. Damit nun nicht jede DNS-Anfrage an die DNS-Rootserver geht, kann man eigene Nameserver definieren - die sogenannten Forwarder. Dies geschieht in der named.conf.options-Datei und sieht bei mir jetzt so aus:

Code:
options {
        directory "/var/cache/bind";

        // 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 and later use an unprivileged
        // port by default.

        //query-source address * port 53;

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        forwarders {
        217.237.148.49;
        217.237.148.65;
        217.237.148.161;
        };

        auth-nxdomain no;    # conform to RFC1035

};
Im Konfig-Punkt muss man hier einfach bei dem Punkt "forwarders {" in den nächsten Zeilen die gewünschen Nameserver eintragen. Dann die Konfig-Datei speichern und weiter zum nächsten Schritt - dem Einrichten der lokalen Zone.

Schritt 4: Lokalen Namensbereich einrichten
Vorbemerkung: Natürlich könnte ich in einem kleinen Netzwerk auch auf jedem Rechner eine hosts-Datei pflegen. Aber wenn schon DNS, dann auch richtig.

Der DNS-Server kann bereits DNS-Anfragen vom Intranet ans Internet auflösen. Jetzt möchte ich aber, daß er auch intern die IP-Adressen auflöst, so daß ich die einzelnen Systeme im lokalen Netz per Rechnername ansprechen kann.
Dazu muss ich eine Zonendatei für mein lokales Netz anlegen, in der ich die Rechnernamen sowie die dazugehörigen IP-Adressen festlege. Auf diese Zonendatei kann ich dann in der named.conf.local einen link setzen. Das sieht bei mir in der Praxis folgendermaßen aus:

Code:
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "unknown-online.local" {
        type master;
        file "/etc/bind/unknown-online.local.hosts";
        };
Und die dazugehörige Zonendatei für obiges Netzwerk:
Code:
$ttl 38400
unknown-online.local.   IN      SOA     cerberus.unknown-online.local. root.cerberus.unknown-online.local. (
                        1147256750
                        10800
                        3600
                        604800
                        38400 )
unknown-online.local.   IN      NS      cerberus.unknown-online.local.
cerberus.unknown-online.local.  IN      A       192.168.1.1
cerberus.unknown-online.local.  IN      HINFO   i586 GNU/Linux
cerberus.unknown-online.local.  IN      TXT     "Welcome to cerberus."
helix.unknown-online.local.     IN      A       192.168.1.30
helix.unknown-online.local.     IN      HINFO   i686 Debian-Linux
helix.unknown-online.local.     IN      TXT     "Helix-System"
asgard.unknown-online.local.    IN      A       192.168.1.40
asgard.unknown-online.local.    IN      HINFO   AMD Debian-Linux
asgard.unknown-online.local.    IN      TXT     "Asgard-System"
paranoia.unknown-online.local.  IN      A       192.168.1.100
paranoia.unknown-online.local.  IN      HINFO   i586 Debian-Linux
paranoia.unknown-online.local.  IN      TXT     "Mobiles Paranoia-System"
guest1.unknown-online.local.    IN      A       192.168.1.150
guest2.unknown-online.local.    IN      A       192.168.1.160
guest3.unknown-online.local.    IN      A       192.168.1.170
guest4.unknown-online.local.    IN      A       192.168.1.180
192.168.1.1.unknown-online.local.       IN      PTR     cerberus
192.168.1.30.unknown-online.local.      IN      PTR     helix
192.168.1.40.unknown-online.local.      IN      PTR     asgard
192.168.1.100.unknown-online.local.     IN      PTR     paranoia
192.168.1.150.unknown-online.local.     IN      PTR     guest1
192.168.1.160.unknown-online.local.     IN      PTR     guest2
192.168.1.170.unknown-online.local.     IN      PTR     guest3
192.168.1.180.unknown-online.local.     IN      PTR     guest4
Die obige Datei gibt den Namen des Netzwerkes und der darin enthaltenen Rechner an.
Gleich in der ersten Zeile findet sich der Name des Netzwerkes sowie der lokale DNS-Master. Die Angabe dahinter ist die Kontaktadresse des Masterservers - der Punkt zwischen "root" und dem Domainnamen steht für ein "@"-Zeichen.
In den darunterliegenden Zeilen finden sich Angaben zu den einzelnen Hosts und weitere Informationen wie z.B. eine kurze Hardwarebeschreibung und ein kurzer Beschreibungstext zum jeweiligen System. Unterhalb der Namenseintragungen finden sich dann die Eintragungen für das Reverse-Lookup, der Auflösung von IP-Adresse zum Rechnernamen.

Schritt 5: Den Systemen beibringen, wo sie gucken sollen
Nach dem Einrichten des Nameservers müssen nun die einzelnen Systeme im Netz noch wissen, wo sie den DNS-Server finden. Dazu muss die /etc/resolv.conf pro Rechner angepasst werden:
Code:
#Own Server
search unknown-online.local
nameserver 192.168.1.1
Nun muss ich auf dem DNS-Server noch die /etc/host.conf anpassen:
Code:
order hosts,bind
multi on
damit das System weiß, daß es die Anfragen erst mit der /etc/hosts-Datei abgleichen soll und bei Nichterfolg den lokalen BIND-Server kontaktiert.

Schritt 6: Funktionstest
Nach erfolger Konfiguration startet man den bind-daemon per "/etc/init.d/bind9 restart" neu. Dann kann man per "nslookup" die Funktionsfähigkeit testen, bei mir lief danach alles ohne probleme. Weitere Informationen bzw. tiefergehendes Wissen zum Thema DNS gibts in einigen guten Howtos und den Manpages, wenn man sich mit dem Thema noch näher auseinandersetzen möchte - ich hab für heute genug getippt *g*
 
Status
Für weitere Antworten geschlossen.
Oben