40.3. Die Konfigurationsdatei /etc/named.conf

Alle Einstellungen zum Nameserver BIND sind in der Datei /etc/named.conf vorzunehmen. Die Zonendaten selbst, die Rechnernamen, IP-Adressen usw. für die zu verwaltenden Domains, sind in separaten Dateien im Verzeichnis /var/lib/named abzulegen, dazu aber später mehr.

Die /etc/named.conf unterteilt sich grob in zwei Bereiche, zum einen der Abschnitt options für allgemeine Einstellungen und zum anderen die zone-Einträge für die einzelnen Domains. Außerdem kann man noch einen Bereich logging, sowie Einträge vom Typ acl (engl. Access Control List) definieren. Kommentarzeilen beginnen mit einem #-Zeichen, alternativ ist // auch erlaubt. Eine minimalistische /etc/named.conf stellt Beispiel 40.2, „Minimalistische Datei /etc/named.conf“ dar.

Beispiel 40.2. Minimalistische Datei /etc/named.conf

options { 
        directory "/var/lib/named"; 
        forwarders { 10.0.0.1; };
        notify no;
};

zone "localhost" in {
       type master;
       file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.zone";
};

zone "." in {
        type hint;
        file "root.hint";
};

40.3.1. Wichtige Konfigurationsoptionen

directory "filename";

gibt das Verzeichnis an, in dem der BIND die Dateien mit den Zonendaten findet; dies ist in der Regel /var/lib/named.

forwarders { ip-address; };

verwendet man, um den oder die Nameserver (meist des Providers) anzugeben, an den oder die die DNS-Anfragen weitergereicht werden, die nicht direkt beantwortet werden können. Anstelle von ip-address verwenden Sie eine IP-Adresse wie 10.0.0.1.

forward first;

bewirkt, dass die DNS-Anfragen zu erst geforwarded werden, bevor versucht wird diese über die Root-Nameserver aufzulösen. Anstelle von forward first kann man auch forward only schreiben, dann werden alle Anfragen weitergeleitet und die Root-Nameserver werden gar nicht mehr angesprochen. Das kann für Firewall-Konfigurationen sinnvoll sein.

listen-on port 53 { 127.0.0.1; ip-address; };

sagt BIND, auf welchen Netzwerkinterfaces und welchem Port er Anfragen der Clients entgegen nehmen soll. Die Angabe port 53 kann man sich dabei sparen, da 53 ohnehin der Standardport ist. Mit 127.0.0.1 lässt man Anfragen von localhost zu. Lässt man diesen Eintrag komplett weg, werden standardmäßig alle Interfaces verwendet.

listen-on-v6 port 53 { any; };

sagt BIND, auf welchem Port er auf Anfragen der Clients horcht, die IPv6 verwenden. Außer any ist alternativ nur noch none erlaubt, da der Server stets auf der IPv6-Wildcard-Adresse horcht.

query-source address * port 53;

Dieser Eintrag kann notwendig sein, wenn eine Firewall die externen DNS-Abfragen blockiert. So wird BIND dazu gebracht, Anfragen nach außen von Port 53 aus und nicht von den hohen Ports > 1024 zu stellen.

query-source-v6 address * port 53;

Dieser Eintrag muss für Anfragen über IPv6 verwendet werden.

allow-query { 127.0.0.1; net; };

bestimmt die Netze, aus denen Clients DNS-Anfragen stellen dürfen. Anstelle von net trägt man Adressenangaben wie 192.168.1/24 ein; dabei ist /24 eine Kurzschreibweise für die Anzahl der Bits in der Netzmaske, in diesem Fall 255.255.255.0.

allow-transfer { ! *; };

regelt, welche Rechner Zonentransfers anfordern dürfen, dieses Beispiel unterbindet sie, aufgrund des ! * komplett. Ohne diesen Eintrag können Zonentransfers ohne Einschränkungen von überall angefordert werden.

statistics-interval 0;

Ohne diesen Eintrag produziert BIND stündlich mehrere Zeilen Statistikmeldungen in /var/log/messages. Die Angabe von 0 bewirkt, dass diese komplett unterdrückt werden; hier kann man die Zeit in Minuten angeben.

cleaning-interval 720;

Diese Option legt fest, in welchem Zeitabstand BIND seinen Cache aufräumt. Die Aktivität führt jedes Mal zu einem Eintrag in /var/log/messages. Die Zeitangabe erfolgt in Minuten. Voreingestellt sind 60 Minuten.

interface-interval 0;

BIND durchsucht regelmäßig die Netzwerkschnittstellen nach neuen oder nicht mehr vorhandenen Interfaces. Setzt man diesen Wert auf 0, so wird darauf verzichtet und BIND lauscht nur auf den beim Start gefundenen Interfaces. Alternativ kann man das Intervall in Minuten angeben. Voreingestellt sind 60 Minuten.

notify no;

Das no bewirkt, dass keine anderen Nameserver benachrichtigt werden, wenn an den Zonendaten Änderungen vorgenommen werden oder der Nameserver neu gestartet wird.

40.3.2. Logging

Was und wie wohin mitprotokolliert wird, kann man beim BIND recht vielseitig konfigurieren. Normalerweise sind die Voreinstellungen ausreichend. Beispiel 40.3, „Logging wird unterdrückt“ zeigt die einfachste Form eines solchen Eintrags und unterdrückt das „Logging“ komplett.

Beispiel 40.3. Logging wird unterdrückt

logging {
        category default { null; };
};

40.3.3. Zonen-Einträge

Beispiel 40.4. Zone-Eintrag für meine-domain.de

zone "meine-domain.de" in {
       type master;
       file "meine-domain.zone";
       notify no;
};

Nach zone wird der Name der zu verwaltenden Domain angegeben, hier willkürlich meine-domain.de gefolgt von einem in und einem in geschweiften Klammern gesetzten Block zugehöriger Optionen; vgl. Beispiel 40.4, „Zone-Eintrag für meine-domain.de“. Will man eine „Slave-Zone“ definieren, ändert sich nur der type auf slave und es muss ein Nameserver angegeben werden, der diese Zone als master verwaltet – das kann aber auch ein „slave“ sein; vgl. Beispiel 40.5, „Zone-Eintrag für andere-domain.de“.

Beispiel 40.5. Zone-Eintrag für andere-domain.de

zone "andere-domain.de" in {
       type slave;
       file "slave/andere-domain.zone";
       masters { 10.0.0.1; };
};

Die Zonen-Optionen:

type master;

Das master legt fest, dass diese Zone auf diesem Nameserver verwaltet wird. Das setzt eine korrekt erstellte Zonendatei voraus.

type slave;

Diese Zone wird von einem anderen Nameserver transferiert. Muss zusammen mit masters verwendet werden.

type hint;

Die Zone . vom Typ hint wird für die Angabe der Root-Nameserver verwendet. Diese Zonendefinition kann man unverändert lassen.

file "meine-domain.zone" oder file "slave/andere-domain.zone";

Dieser Eintrag gibt die Datei an, in der die Zonendaten für die Domain eingetragen sind. Bei einem slave braucht die Datei nicht zu existieren, da ihr Inhalt von einem anderen Nameserver geholt wird. Um Master- und Slave-Dateien auseinander zu halten, gibt man für die Slave-Dateien das Verzeichnis slave an.

masters { server-ip-address; };

Diesen Eintrag braucht man nur für Slave-Zonen und er gibt an, von welchem Nameserver die Zonendatei transferiert werden soll.

allow-update { ! *; };

Diese Option regelt den Schreibzugriff von extern auf die Zonendaten. Damit wäre es Clients möglich, sich selbst im DNS einzutragen, was aus Sicherheitsgründen nicht wünschenswert ist. Ohne diesen Eintrag, sind Zonen-Updates generell untersagt, dieses Beispiel würde daran auch nichts ändern, da ! * ebenfalls alles verbietet.