BIND


BIND (Berkeley Internet Name Domain) ist ein DNS-Server, entwickelt von der Berkeley Universität. Die Entwicklung von BIND wurde später vom ISC (Internet Software Consortium) als Open Source Software übernommen.

Beim Domain Name System (DNS) handelt es sich um einen Dienst, der in TCP/IP Netzwerken hauptsächlich die Aufgabe hat, Hostnamen in IP-Adressen und umgekehrt aufzulösen. Das Domain Name System (DNS) wurde 1983 von Paul Mockapetris erstmals beschrieben.

Das DNS System wird weltweit über Root-Server aufgebaut und bilden die Stammzone. Informationen über Root-Server findet man z.B. auf der Seite www.root-servers.org.


Bind steht in fast allen BSD Systemen und Linux Distibutionen in den Softwarequellen zur Verfügung.


Der Ort der Konfigurationsdateien unterscheidet sich dabei sehr stark von den eingesetzten System oder der Art der Installation, wie z.B. TarBall Pakete.



Möchte man bei Red Hat Systemen die Programme dig oder nslookup verwenden, muß möglicherweise das Paket bind-utils nachinstalliert werden.






Der Start und stop von bind kann auch über die int b.z.w systemd Prozessverwaltung gesteuert werden.


Syntax:

  • Red Hat ⇒ /etc/init.d/named start|stop|restart oder service named start|stop|status oder systemctl start|stop|status named
  • Debian ⇒ /etc/init.d/bind9 start|stop|restart oder servive bind9 start|stop|status oder systemctl start|stop|status bind9
  • kill -HUP `pidof named` ⇒ Liest die Konfigurationsdatei neu ein.


  • rndc [commando] ⇒ Das Programm rndc dient ausschließlich zur Steuerung von BIND.



rndc Kommandos:

  • reload ⇒ Lädt Konfigurations und Zonendateien neu.
  • halt ⇒ Beendet den Nameserver sofort. Laufende Schreibvorgänge und Zonentransfers werden abgebrochen.
  • stop ⇒ Beendet named. Laufende Schreibvorgänge und Zonentransfers werden abgeschlossen.
  • freeze ⇒ Friert Schreibvorgänge auf Zonendateien ein. Nützlich, wenn Zonendateien bearbeitet werden.
  • thaw ⇒ Taut Schreibvorgänge wieder auf. Danach sollte ein reload ausgeführt werden.




Beispiele:

[root@zaphod ~]# chkconfig --level 3 named on



[root@zaphod ~]# chkconfig --list named
named          	0:Aus	1:Aus	2:Aus	3:Ein	4:Aus	5:Aus	6:Aus

RedHat

Oberes Beispiel legt fest, dass bind automatisch startet, wenn das System im Runlevel 3 gebootet wird.





named.conf


Die Datei „named.conf“ ist die Basiskonfigurationsdatei von bind. Je nach System befindet sich diese Datei im Verzeichnis „/etc/bind“ (Debian) oder in „/etc“ (Red Hat). Bei einer Tarball Installation befindet sich die „named.conf“ im Verzeichnis „/usr/local.

Eine Definition von Konfigurationsmöglichkeiten der „named.conf“ befindet sich weiter unten.



Beispiele von named.conf Dateien unter Debian 6 (Jessie):


In der Datei “/etc/bind/named.conf„ befinden sich lediglich include Anweisungen.

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";





In der Datei “/etc/bind/named.conf.local„ werden bei Debian die Zonen Dateien definiert.

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

include "/etc/bind/rndc.key";

zone "peanut.com" {
        type master;
        file "/var/cache/bind/db.peanut.com";
        };

zone "5.168.192.in-addr.arpa" {
        type master;
        file "/var/cache/bind/db.192.168.5";
        };





Die Datei “/etc/bind/named.conf.options„ enthält globale Optionen für den Nameserver. Der Inhalt dieser Datei ist, z.B. bei RedHat in der Datei „named.conf“ enthalten.

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

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // 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 {
         87.118.100.175;
         };

         auth-nxdomain no;    # conform to RFC1035
         listen-on { 127.0.0.1; 192.168.5.202; };
         //listen-on-v6 { any; };
};





Beispiel einer named.conf Datei unter RedHat :


Die Basiskonfigurationsdatei “/etc/named.conf„ für bind unter RedHat.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
	listen-on port 53 { 192.168.5.202; 127.0.0.1; };
	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { localhost; };
	forwarders	{ 87.118.100.175; };
	recursion yes;

	dnssec-enable yes;
	dnssec-validation yes;
	dnssec-lookaside auto;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "peanut.com" IN {
	type master;
	file "peanut.com.zone";
};

zone "5.168.192.in-addr.arpa" IN {
	type master;
	file "192.168.5.zone";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";




Definitionen


  • options



In der Direktive „options“ kann mit dem Schlüsselwort „forwarders“ die IP Adresse des Nameservers des Internetproviders angeben oder auf andere Root-Server verwiesen werden. Optional gibt es Listen von DNS Server bei „Chaos Computer Club e.V., German Privacy Foundation e.V., FoeBuD e.V.“. Ohne „forwarders“ wendet sich bind an irgendeinen erreichbaren Root-Server.

forwarders	{ 87.118.100.175; };


options {
        ....
        forward only;
        forwarders {
                87.118.100.175;
                62.141.58.13;
                # portangaben sind bei manchen Providern nötig.(meist aber nicht).
                87.118.104.203 port 110;
        };
        ....
};


Mit „forward only“ wird verhindert, falls ein forwarder einmal nicht antwortet, dass der Nameserver auf eigene Faust versucht, die Anfrage zu bedienen. In jenem Fall wird dann eine Fehlermeldung ausgegeben.


Standardmäßig lauscht bind bei Debian auf allen Netzwerkschnittstellen. Dies kann mit der Option „listen-on“ eingeschränkt werden, so dass die Internen Zonen nicht im Internet preisgegeben werden. Hierfür muß die IP-Adresse des Servers (192.168.5.202) und Localhost (127.0.0.1) eingetragen werden.

listen-on { 127.0.0.1; 192.168.5.202; };



listen-on port 53 { 127.0.0.1; 192.168.5.202; };





Um den Zugriff auf den DNS Server einzuschränken oder Netze, die den Server abfragen dürfen, können Statements gesetzt werden. Es können dabei auch mehrere Netze oder Hosts definiert werden.

options {
    ....
    allow-query { 192.168.5.0/24; };
    # oder 
    allow-query { 192.168.5.0/24; 192.168.178.0/24; };
    # möglich sind weitere Statements wie
    allow-query { localhost; };
    allow-query { any; };
    ....
};


Hier wird der Zugriff auf den DNS Server auf das eigene Netzwerk beschränkt. Anfragen aus dem Internet werden nicht beantwortet. Der Eintrag „localhost“ erlaubt nur dem lokalen Rechner auf den DNS Server zuzugreifen, bei „any“ wird dies jeden Rechner erlaubt.


  • Weitere Optionen:


  • allow-recursion { 192.168.5/24; }; ⇒ Erlaubt nur den eigenen Clients des Netzwerks rekursive Anfragen an den Nameserver.
  • allow-recursion { none; }; ⇒ schaltet das Caching für andere Domains aus.
  • dnssec-enable yes; ⇒ bind nimmt Anfragen auf beliebige Ports an, nicht nur 53.




  • zone


Es werden zwei Zonen Dateien erstellt, z.B. die Datei „peanut.com.zone“ als Forward Lookup Zone und sorgt für die Auflösung von Hostnamen zu IP-Adressen. Die Zonendatei z.B. „192.168.5.zone“ die Auflösung von IP-Adressen zu Hostnamen.

zone "peanut.com" IN {
	type master;
	file "peanut.com.zone";
};
 
zone "5.168.192.in-addr.arpa" IN {
	type master;
	file "192.168.5.zone";
};


5.168.192.in-addr.arpa ist hier die Subdomain für alle Adressen von 192.168.5.0 bis 192.168.5.255. Diese Bezeichnung aus der zone Direktive kann in Zonendateien als @ referenziert werden.

Die Option „master“ zeigt, dass es sich um einen primären DNS Server handelt.



Es können die Zonen jedoch nicht nur als „master“, sondern auch als „slave“ DNS konfiguriert werden.

zone "peanut.com" {
        ....
        type slave;
        ...
};
masters {
      192.168.0.3;
      ...........;
};




Die Zonendateien können bei Debian Installationen in der Datei “/var/cache/bind„ als db.* Dateien wie z.B. „db.peanut.com“ für die Forward Lookup Zone und „db.192.168.5“ als Reverse Lookup Zone angelegt werden. Definiert werden die db.* Dateien bei Debian in der Datei “/etc/bind/named.conf.local„ mit absoluter Pfadangabe.

file "/var/cache/bind/db.peanut.com";




Bei RedHat Systemen können die Zonendateien auch ohne absoluter Pfadangabe definiert werden, da schon in der „options“ Direktive der Pfad festgelegt wird. Die Zonendateien befinden sich bei RedHat in der Datei “/var/named„ und werden in der Datei “/etc/named.conf„ definiert.

options {
         ...
         directory 	"/var/named";
         ...
};



file "peanut.com.zone";






Die vom DNS-Server benötigten Daten für die Namensauflösung sind in Zonendateien gespeichert. Bei diesen Dateien wird unterschieden zwischen Forward Lookup Zonendateien (domainname.zone) die Zuständig für die Auflösung von Hostnamen in IP Adressen und die Reverse Lookup Zonen (x.x.x.zone) für die Auflösung von IP-Adressen in Hostnamen sind. Eine Reverse Lookup Zone stellt FQDNs (Fully Qualified Domain Names) zur Verfügung, wenn die IP-Adresse bekannt ist.



Primäre DNS Zonen


Primäre DNS Zonen werden mit dem Typ „master“ in der Konfigurationsdatei des Nameservers definiert.

// Definition der Forward Lookup Datei
zone "peanut.com" IN {
	type master;
	file "peanut.com.zone";
};

// Definition der Reverse Lookup Datei 
zone "5.168.192.in-addr.arpa" IN {
	type master;
	file "192.168.5.zone";
};





Forward Lookup Zonendatei


Forward Lookup Zonendateien werden bei RedHat Systemen in der Datei “/var/named/domainname.zone„, bei Debian Systemen in der Datei “/var/cache/bind/db.domainname„ gepeichert. Diese können jedoch auch in jedem anderen Verzeichnis gespeichert werden.

$TTL 86400
@	IN SOA  nougat.peanut.com. root.peanut.com. (
						001        ; serial
						86400      ; refresh (1 Day)
						7200       ; retry (2 Hours)
						604800     ; expire (1 Week)
						172800 )   ; minimum (2 Days)
;
@		IN	NS	nougat.peanut.com.
nougat		IN	A	192.168.5.202
schoko		IN      A	192.168.5.201
kekse		IN	A	192.168.5.200
enterprise	IN      A	192.168.5.203
toaster		IN	A	192.168.5.204		




Definitionen


Als erstes wird ein SOA-Record (Start of Authority) angelegt. Hier werden grundlegende Eigenschaften der Zone festgelegt um mit anderen Servern dieser Zone zu kommunizieren und welcher DNS-Server die Änderungen für eine Zone entgegen nimmt. Das [@] referenziert auf den Namen der Zone und steht hier für die Domain „peanut.com“.

Zuerst wird die DNS Klasse IN (Internet-Klasse) festgelegt. Der Eintrag „nougat.peanut.com.“ hängt an allen Definierten A-Records die Domain „peanut.com.“ an. Mit $TTL (Time to Life) wird eine Lebensspanne für die Resource festgelegt. Kommentare werden mit einem Semikolon eingeleitet.


Es dürfen hier keine [@] angegeben werden, alle Hostnamen müssen mit [.] getrennt eingetragen und mit einem [.] abgeschlossen werden.




Innerhalb der Klammern sind verschiedene numerische Werte:

serial
Legt die Version der Datei fest. Um einen Zonentransfer zu einer sekundären Zone zu starten, vergleichen die Nameserver die Dateiversion. Sind diese auf beiden Server gleich, wird kein Zonentransfer durchgeführt. Bei Änderungen der primären Zone muß die Versionsnummer um eins erhöht werden.


refresh
Zeigt in welchen Abständen „slave“ Server prüfen, ob sie über die aktuelle Konfiguration verfügen.


retry
Legt fest nach welcher Zeit der „slave“ erneut versuchen soll, Kontakt mit dem „master“ aufzunehmen, falls dieser nicht antwortet.


expire
Legt fest, wie lange ein „slave“ die Datenbestände der Zonendatei behalten soll bevor sie gelöscht werden, wenn ein „slave“ den „master“ nicht kontaktieren kann. Ist eine Sekundäre Zone abgelaufen, beantwortet der Nameserver keine Anfragen mehr, die sich auf diese Zone beziehen.


minimum
Legt fest wie lange Resource Records eines Cacheservers oder Clientcache gespeichert werden, bevor dessen Aktualität überprüft werden soll.



Mit NS werden die Nameserver für die Zone festgelegt. Dies sind Server mit Primären und Sekundären Zonen, Stubserver und Weiterleiter gehören nicht dazu.

Bind unterstützt weitere Resource Records wie MX (Mail Exchanger) für die SMTP-Server einer Domain. An die hier gelisteten Server senden alle SMTP-Server die Emails für diese Domain. Sollten hier mehrere Server als Mail Exchanger aufgeführt sein, wird zuerst versucht, die Mails an den Server mit der geringeren Priorität zuzustellen. Ist dieser nicht erreichbar, wird die Zustellung an den Server mit der nächsten Priorität versucht.

@		IN	NS	nougat.peanut.com.
@		IN	NS	nameserver2.peanut.com.
@		IN	MX     10	mailserver1.peanut.com.
@		IN	MX     20	mailserver2.peanut.com.




nougat		IN	A	192.168.5.202
schoko		IN      A	192.168.5.201
kekse		IN	A	192.168.5.200
enterprise	IN      A	192.168.5.203
toaster		IN	A	192.168.5.204
hobnob          IN      AAAA    4f62:142:4cc:0:504c:9eff:fcbc:66af


Die Auflösung eines FQDN in eine IPv4-Adresse sind vom A-Record Typ, für IPv6-Adressen vom Typ AAAA.



Reverse Lookup Zonendatei


Hier wird die Zuordnung von IP-Adressen zu den Hostnamen hergestellt. Der SOA Eintrag in dieser Datei ist mit dem der Forward Lookup Datei identisch.

$TTL 86400
@	IN SOA  nougat.peanut.com. root.peanut.com. (
						001        ; serial
						86400      ; refresh (1 Day)
						7200       ; retry (2 Hours)
						604800     ; expire (1 Week)
						172800 )   ; minimum (2 Days)
;
@		IN	NS	nougat.peanut.com.
202		IN	PTR	nougat.peanut.com.
201		IN	PTR	schoko.peanut.com.
200		IN	PTR	kekse.peanut.com.
203		IN	PTR	enterprise.peanut.com.
204		IN	PTR	toaster.peanut.com.


In Reverse Lookup Dateien gibt es noch den Record-Typ PTR (Pointer), der mit dem letzten Oktett einer IP-Adresse auf den FQDN (Full Qualified Domain Name) zeigt.


Es sollte darauf geachtet werden, dass die erstellten Zonendateien ausreichend Rechte besitzen. Primäre DNS Zonendateien müssen von named mindestens gelesen werden dürfen.




-rw-r-----  1 root  named  192.168.5.zone
-rw-r-----  1 root  named  peanut.com.zone



-rw-r-----  1 root  bind  db.192.168.5
-rw-r-----  1 root  bind  db.peanut.com





Sekundäre DNS Zonen


Sekundäre Zonen können z.B. zur Ausfallsicherheit des primären DNS-Servers oder um Zweigstellen eines Betriebes mit Namensauflösungen zu bedienen verwendet werden.

FIXME




Der Ort, in dem bind seine Dateien hinterlegt ist je nach Installationsart, Tarball oder aus den Systemquellen unterschiedlich.


Datei Pfad Debian Red Hat
named.conf /etc/named.conf Hauptkonfigurationsdatei
named.rfc1912.zones /etc/named.rfc1912.zones Ausgelagerte Definitionen der Zonendateien
named.conf /etc/bind/named.conf Hauptkonfiguratiosdatei mit Include Anweisungen
named.conf.local /etc/named.conf.local Definition der Zonendateien
zones.rfc1918 /etc/bind/zones.rfc1918 Ausgelagerte Definitionen der Zonendateien
named.conf.options /etc/named.conf.options Globale Optionen für Nameserver
named.ca /var/named/named.ca Enthält eine Liste von Root-Server und deren IP Adressen
db.root /etc/bind/db.root Enthält eine Liste von Root-Server und deren IP Adressen
db.domainname /var/cache/bind/db.domainname Datei für Forward Lookup Zone (Hostnames→IP Adressen)
db.x.x.x /var/cache/bind/db.x.x.x Datei für Reverse Lookup Zone (IP Adressen→Hostnames)
domainname.zone /var/named/domainname.zone Datei für Forward Lookup Zone (Hostnames→IP Adressen)
x.x.x.zone /var/named/x.x.x.zone Datei für Reverse Lookup Zone (IP Adressen→Hostnames)





host.conf


In der Datei “/etc/host.conf„ kann festgelegt werden, ob DNS Anfragen zuerst von der Datei “/etc/hosts„ oder von bind bedient werden. Dazu fügt man in der Datei “/etc/host.conf„ folgendes hinzu.

FIXME

order hosts,bind





resolv.conf


Die Datei “/etc/resolv.conf„ beschreibt für alle Netzwerkdienste welche Nameserver sie nutzen sollen. Oftmals enthält die Datei die IP Adresse des Nameservers des Internetproviders oder des DSL Routers. Damit das Gateway den eigenen Nameserver nutzt, muss der Parameter „nameserver“ in der “/etc/resolv.conf„ auf die Adresse „127.0.0.1“ verweisen.

FIXME

Wenn das Gateway seinen Internetzugang über einen Router mit eigenem DHCP Server oder PPP bezieht, wird die „resolv.conf“ bei jedem Verbindungsaufbau automatisch aktualisiert und die manuellen Änderungen überschrieben. Der Nameserver bleibt für den Gateway Rechner wirkungslos.




Bei einem Internetzugang mit DHCP Router gibt eine Statische IP Adress Konfiguration Abhilfe. Bei einigen Linux Distributionen bietet die Netzwerkkonfiguration auch die Möglichkeit, DHCP zu nutzen.

Dazu öffnet man die Datei “/etc/network/interfaces„. Hier trägt man über die Option „dns-nameservers“ die IP Adresse des eigenen DNS Servers ein. Ist der DNS Server auf dem Einwahlrechner genügt der Eintrag der IP des „localhost“.

....
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
provider dsl-provider
dns-nameservers 127.0.0.1
....

Beispieleintrag für die Datei “/etc/network/interfaces„.

Nach einem Neustart des Netzwerks…

/etc/init.d/networking restart


… sollte der eigene DNS Server in der Datei “/etc/resolv.conf„ angezeigt werden.



nsswitch.conf


Die Datei “/etc/nsswitch.conf„ steuert verschiedene Netzwerkfunktionen für alle Programme, die auf die libc Bibliothek zurückgreifen. Damit die Namensauflösung funktioniert, muss die Datei folgende Zeilen enthalten.

hosts: files dns
...
...



FIXME



dhcpd.conf


Falls ein DHCP Server im System benutzt wird und mit diesem DNS Anfragen weitergegeben sollen, muß man die entsprechenden Zeilen in der Datei “/etc/dhcpd.conf„ ändern, damit die Clients nicht den DNS des Internetproviders sondern den Lokalen DNS kontaktieren.




Um im bind DNS Server das Logging zu aktivieren, ergänzt man die Datei “/etc/bind/named.conf.local„ um folgende Zeilen.

 // Logging
 logging {
         channel "named_log" {
         file "/var/log/named/named.log" versions 10 size 500k;
         severity dynamic;
         print-category yes;
         print-severity yes;
         print-time yes;
         };
         channel "query_log" {
         file "/var/log/named/lognamed-query.log" versions 10 size 500k;
         serverity debug;
         print-severity yes;
         print-time yes;
         };
   
         category default { named_log; };
         category queries { query_log; };
};



FIXME



Mit den folgenden Kommandos erzeugt man dann leere Log Dateien und stellt sicher, dass „named“ b.z.w. „bind9“ diese verändern darf.

# mkdir /var/log/named
# touch /var/log/named/named.log
# touch /var/log/named/named-query.log
# chown -R bind:bind /var/log/named



In der Datei “/var/log/named/named.log„ sollten jetzt Meldungen Protokolliert werden. Überprüfen kann man das mit „tail -f /var/log/named/named.log“.




Benutzt man dynamisches DNS mit DHCP sollte man die Datei “/etc/named.conf„ (RedHat ) oder “/etc/bind/named.conf.local„ (Debian ) wie folgt anpassen.

# Anpassungen in named.conf.local
include "/etc/bind/rndc.key";

# Zonen durch dhcp Server aktualisieren
zone "<domain>" {
         type master;
         notify no;
         file "/etc/bind/db.<netzwerkdomain>";
         allow-update { key "rndc-key"; };
};
 
zone "0.168.192.in-addr.arpa" {
         type master;
         notify no;
         file "/etc/bind/db.192.168.0";
         allow-update { key "rndc-key"; };
};



FIXME



Um zu verhindern, dass bind beim DNS Server des Internetproviders nachfragt, sollte in der Datei “/etc/dhcpd.conf„ die IP Adresse des Rechners eingetragen sein, auf den der DNS Server läuft.

Zusätzlich sollte man in der Datei “/etc/dhcpd.conf„ den Domainnamen des lokalen Netzwerks angeben. Dies führt dazu, dass bei den DHCP Clients in der Datei “/etc/resolv.conf„ die Zeile „search homenet“ eingetragen wird.

# Dynamische Konfiguration
option domain-name-servers 192.168.5.202;
option domain-name "peanut.com"
include                 "/etc/bind/rndc.key";
ddns-updates            on;
ddns-update-style       interim;
ddns-domainname         "peanut.com."
update-static-leases    on;

zone peanut.com. {
        primary 127.0.0.1;
        key "rndc.key"; }

zone 5.168.192.in-addr.arpa {
        primary 127.0.0.1;
        key "rndc.key"; }



  • include ⇒ Liest die Schlüsseldatei.
  • ddns-updates ⇒ Aktiviert Dynamische Nameserverupdates.
  • ddns-update-style ⇒ Beschreibt wie Update durchgeführt werden soll.
  • ddns-domainname ⇒ Domainname des Lokalen Netzes.
  • update-static-leases ⇒ Veranlaßt DHCP Server Informationen über Statisch konfigurierte Hosts an den Nameserver weiterzuleiten.



FIXME




Ein Cache Only DNS-Server verfügt über keine eigenen Zonendateien. Erhält er eine Anfrage von einem Client, muss er die Anfrage an andere DNS Server weiterleiten. Das Ergebnis der Anfrage wird dann in einem Cache gespeichert, um bei einer erneuten Anfrage schneller antworten zu können.


Um den Nameserver auch anderen Rechnern zugänglich zu machen, sollte dafür gesorgt werden, dass der Server an einer Netzwerkschnittstelle lauscht. Bei Debian ist dies in der Datei “/etc/bind/named.conf.options„, bei RedHat die Datei “/etc/named.conf„. Die Angabe der Port Nummer ist bei Debian Systemen nicht notwendig.

listen-on port 53 { 192.168.5.202; 127.0.0.1; };


Hier sollte die IP Adresse des Rechners auf dem der DNS Server läuft eingetragen werden.


Als nächstes editiert man die Datei “/etc/named.conf„ (Red Hat ) oder “/etc/bind/named.conf.options„ (Debian ) in der Direktive „options“, wer auf den DNS Server zugreifen darf.

Zum testen kann man vorläufig den Eintrag großzügig setzen, so dass jeder den Nameserver abfragen darf, oder auf das Lokale Netzwerk beschränken.

allow-query     { any; };
# oder gleich
allow-query     { 192.168.5.0/24; };





Mit forwarders kann definiert werden, von welchen DNS Server der Cache Only DNS Server seine Informationen bezieht. Ohne forwarders wendet dieser sich direkt an die Root Server.

forwarders      { 87.118.100.175; };





Sollte eine Firewall auf dem System aktiv sein, muß in den IPTables der Port 53 geöffnet werden. Bei RedHat kann der Port auch in der Datei “/etc/sysconfig/iptables geöffnet werden.

-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT





Damit der DNS Server auch verwendet wird muss in der Datei „/etc/resolv.conf“ die IP Adresse des Nameservers stehen.

nameserver 127.0.0.1




Nutzt man auf dem Rechner DHCP wird häufig bei einem Neustart des Rechners dieser Wert vom „dhclient-script“ überschrieben. Alternativ kann der DNS Server noch in den Konfigurationsdateien der Netzwerkschnittstelle konfiguriert werden. Bei RedHat ist dies in der Datei „/etc/sysconfig/network-scripts/ifcfg-eth0“ möglich.



DNS1=127.0.0.1





Bei Debian verwendet man die Datei „/etc/network/interfaces“.

dns-nameservers 192.168.5.202





Nach dem anpassen der Konfigurationsdateien sollten diese neu eingelesen werden.

[root@zaphod ~]# rndc reload
server reload successful


Dieses Kommando ist für alle Linux Systeme gültig.



Um zu prüfen, ob der Cache Only Nameserver auch funktioniert, kann nslookup genutzt werden.

[root@zaphod ~]# nslookup heise.de
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	heise.de
Address: 193.99.144.80





Cloud