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";
};
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.
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.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.