Bind9 DNS-Server: Unterschied zwischen den Versionen
imported>Raymond →Einleitung: Hinweis DNS-Server |
imported>Raymond →Installation: typo |
||
Zeile 21: | Zeile 21: | ||
====Installation==== | ====Installation==== | ||
Zunächst muss das notwendige Paket "bind" auf der | Zunächst muss das notwendige Paket "bind" auf der Kommandozeile installiert werden: | ||
<pre> | <pre> |
Aktuelle Version vom 11. Januar 2013, 22:09 Uhr
Hinweis
Diese Anleitung beruht auf der Beschreibung des Forenmitglieds Flutsch. Die Diskussion zum Thema kann im Forum verfolgt werden
Einleitung
Was soll erreicht werden?
Die Diskstation soll ein DNS-Server werden, der eine (oder mehrere) lokale Zonen verwaltet, um die Rechner im LAN mit Namen ansprechen zu können und Anfragen von Webdomains sollen an den Router weitergeleitet werden. Es soll also möglich sein, sowohl lokale als auch Internetdomains aufzulösen.
Ein DNS-Server wird im Paket-Zentrum ab DSM 4.2 auch angeboten.
Voraussetzungen
Vorgehensweise
Installation
Zunächst muss das notwendige Paket "bind" auf der Kommandozeile installiert werden:
ipkg install bind
Steuerung
Nach der Installation muss man die Datei /opt/etc/named/named.conf erstellen. Ist diese Konfigurationsdatei angelegt, kann man den Server starten:
/opt/etc/init.d/S09named start
Weitere Optionen sind:
/opt/etc/init.d/S09named start /opt/etc/init.d/S09named stop /opt/etc/init.d/S09named reload /opt/etc/init.d/S09named status
Konfiguration
Die Konfiguration von bind geschieht prinzipiell in der named.conf Datei, welche standardmäßig unter /opt/etc/named/ zu finden ist. Aus Gründen der Übersichtlichkeit sollte die Konfiguration jedoch nicht völlig in der named.conf passieren. Ich empfehle eine Konfiguration in zwei Dateien. Die named.conf enthält sämtliche globalen Einstellungen und Zonen. Im gleichen Verzeichnis legt man noch eine named.conf.local an, welche die lokalen Zonen enthält.
Neben der Konfiguration in den besagten zwei Dateien benötigt man noch Zonendateien für jede, der in der Konfiguration angelegten Zonen. Diese Zonendateien enthalten sämtliche Einstellungen und Records der betreffenden Zone. Des weiteren benötigt man noch eine rndc.conf und eine rndc.key Datei. Diese beiden Dateien enthalten einen Schlüssel, mit welchem man mit dem bind-Server kommunizieren kann. Die Kommunikation mit Bind erfolgt gesichert über das Loopback-Interface (127.0.0.1) auf Port 953. Das Verzeichnis /opt/etc/named/ und alle darin enthaltenen Dateien gehören zur Gruppe root und speziell dem User root. Die Dateien haben die Rechte 744 - das Verzeichnis selbst hat volle Rechte (777). Im folgenden Abschnitt soll eine Beispielkonfiguration für das oben beschriebene Szenario angegeben und dokumentiert werden. Dieses Dokument erhebt nicht den Anspruch die Bind-Dokumentation oder Fachbücher zu ersetzen. Für weitere Informationen zu bind sind die eben genannten Quellen die erste Wahl.
Konfigurationsdateien
named.conf
# /opt/etc/named/named.conf # allow requests from these subnets acl corpnets { 192.168.0.0/24; 127.0.0.1/32; }; options { directory "/opt/etc/named"; allow-query { corpnets; }; auth-nxdomain no; query-source address * port 53; //listen-on-v6 { any; }; forward first; forwarders { 192.168.0.2; }; }; // prime the server with knowledge of the root servers zone "." { type hint; file "root.db"; }; // be authoritative for the localhost forward and reverse zones, and for // broadcast zones as per RFC 1912 zone "localhost" { type master; file "local.db"; }; zone "127.in-addr.arpa" { type master; file "127.db"; }; zone "0.in-addr.arpa" { type master; file "0.db"; }; zone "255.in-addr.arpa" { type master; file "255.db"; }; # Logging logging { channel "named_log" { file "named.log" versions 5 size 500k; severity dynamic; print-category yes; print-severity yes; print-time yes; }; channel "query_log" { file "named-query.log" versions 5 size 500k; severity debug; print-severity yes; print-time yes; }; category default { named_log; }; category queries { query_log; }; }; # Local Domains include "/opt/etc/named/named.conf.local";
Die named.conf ist die Hauptkonfigurationsdatei und liegt in „/opt/etc/named/“. Der erste Eintrag definiert eine ACL (Access Control List) namens Corpnet. Diese Liste enthält IP Bereiche der Form (x.x.x.x/xx) also einer IP nebst Subnet in Byteschreibweise. Das erste Compound ist „options“. Hier werden die globalen Einstellungen des namedaemons festgelegt.
- Directory legt das Basisverzeichnis fest. Hier sucht bind nach relativen Pfadangaben.
- Allow-query enthält eine oder mehrere zuvor festgelegte ACLs. Nur diesen festgelegten Adressen oder Adressbereichen ist der Zugriff auf den Server gestattet.
- Forward first legt fest, dass nicht direkt auflösbare Anfragen erst an einen oder mehrere übergeordnete DNS-Server weitergereicht werden und erst, wenn diese auch kein Ergebnis liefern, wird eine rekursive Abfrage an die Root-Server geschickt.
- Forwarders legt wiederum eine Liste der zu befragenden Forwarder fest. In unserem Fall sollte dies der Internetrouter sein.
Die zone-Compounds legen die zu verwaltenden Zonen fest. Die Zonen „<name>“ steht dabei für eine Domain, deren IPs verwaltet werden sollen. Die Zonen „<ip-segment>.inaddr. arpa“ stehen für Reverse-Zonen, die IP-Adressen Namen zuordnet. Die Zone „.“ ist hierbei die wichtigste. Sie legt fest, dass alle unbekannten Domains weitergereicht werden sollen (type hint;) und hält für den fall, dass auch der Internetrouter nichts findet eine Liste mit root-Servern bereit, die in diesem Fall rekursiv befragt werden (z.B.: www.heise.de → . → de → heise → www → IP: 193.99.144.80). Ebenfalls wichtig sind die Zonen „localhost“ und „127.in-addr.arpa“, welche für die Auflösung von Localhost in 127.0.0.1 und vice versa zuständig sind. Das Logging Compound erstellt zwei Logfiles. Eine generelle und eine für die Domainanfragen. Beide befinden sich ebenfalls im Basisverzeichnis. Das letzte Statement bindet die named.conf.local ein, in der wir unsere lokalen Zonen definieren können.
named.conf.local
# Do any local configuration here zone "intranet.lan" { # unser BIND ist der Zonenmaster, der die Zone verwaltet type master; # unser BIND soll übergeordneten DNS Servern von dieser Zone nichts mitteilen notify no; # Die Zonendatei, welche Informationen zu dieser Zone vorhält file "intranet.lan.db"; }; # Die Reverse-Pointer Zone, welche IPs in Namen auflösen kann (nicht zwingend nötig) zone "0.168.192.in-addr.arpa" { type master; notify no; file "192.168.0.db"; };
0.db
; ; BIND reverse data file for broadcast zone ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost.
127.db
; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. 1.0.0 IN PTR localhost.
255.db
; ; BIND reverse data file for broadcast zone ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost.
local.db
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 127.0.0.1 @ IN AAAA ::1
root.db
; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.root ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; ; last update: Dec 12, 2008 ; related version of root zone: 2008121200 ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30 ; ; FORMERLY NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ; ; FORMERLY C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; FORMERLY TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; FORMERLY NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; FORMERLY NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2F::F ; ; FORMERLY NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; FORMERLY AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803F:235 ; ; FORMERLY NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; OPERATED BY VERISIGN, INC. ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30 ; ; OPERATED BY RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FD::1 ; ; OPERATED BY ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42 ; ; OPERATED BY WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 M.ROOT-SERVERS.NET. 3600000 AAAA 2001:DC3::35 ; End of File
intranet.lan.db
; ; BIND reverse data file for local loopback interface ; $TTL 86400 @ IN SOA intranet.lan. root.intranet.lan. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS diskstation.intranet.lan. diskstation IN A 192.168.0.1 router IN A 192.168.0.2 bridge IN A 192.168.0.3 printer IN A 192.168.0.4 pap2 IN A 192.168.0.7 thor IN A 192.168.0.10 flutsch IN CNAME thor www IN CNAME diskstation
192.168.0.db
; ; BIND reverse data file for local loopback interface ; $TTL 86400 @ IN SOA intranet.lan. root.intranet.lan. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL NS diskstation.intranet.lan. 1 PTR diskstation.intranet.lan. 2 PTR router.intranet.lan. 10 PTR thor.intranet.lan.
Zu den Reverse-Pointern ist zu sagen, wenn man eine Zone „16.172.in-addr.arpa“ definiert, muss man entsprechend in den Pointern nicht nur die letzte Stelle der IP zuordnen, sondern die letzten beiden (ebenfalls in umgekehrter Reihenfolge – z.B. 13.0 für 172.16.0.13). Der Punkt hinter dem Domainnamen ist essenziell, da BIND sonst denkt, es handle sich um einen Host, nicht die komplette Domain.
empty.db
Ob man diese Datei wirklich braucht, weiss ich noch nicht so genau. Zur Sicherheit gebe ich sie mal mit an.
; BIND reverse data file for empty rfc1918 zone ; ; DO NOT EDIT THIS FILE - it is used for multiple zones. ; Instead, copy it, edit named.conf, and use that copy. ; $TTL 86400 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS localhost.
zones.rfc1918
Ob man diese Datei wirklich braucht, weiss ich noch nicht so genau. Zur Sicherheit gebe ich sie mal mit an.
zone "10.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "16.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "17.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "18.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "19.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "20.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "21.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "22.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "23.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "24.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "25.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "26.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "27.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "28.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "29.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "30.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "31.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; zone "168.192.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
rndc.conf
/* * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* $Id: rndc.conf,v 1.1 2002/05/25 02:34:08 mcr Exp $ */ /* * Sample rndc configuration file. */ options { default-server localhost; default-key "key"; }; server localhost { key "key"; }; key "key" { algorithm hmac-md5; secret "akoqcyiuiH1fKoAtRmuemQ=="; };
Diese Datei kann so wie sie hier steht übernommen werden. Sie ist für die Kommunikation mit dem BIND-Server erforderlich. Nur der secret-String muss durch den betreffenden Key (siehe rndc.key) ersetzt werden.
rndc.key
Die Datei rndc.key erstellt man nicht manuell, sondern durch den Aufruf rndc-confgen -a in der Konsole, während man sich jedoch im Basisverzeichnis von BIND befindet. Es wird die Datei rndc.key erstellt, welche man sich mittels cat rndc.key anzeigen lassen kann. Das secret kopiert man nun an die entsprechende Stelle in der rndc.conf.
key "rndc-key" { algorithm hmac-md5; secret "akoqcyiuiH1fKoAtRmuemQ=="; };
Das Ergebnis
Sind alle Dateien kopiert, und ist der BIND wie oben beschrieben gestartet, sollte man nun einen Nameserver haben, der die lokale Zone intranet.lan verwaltet, sowie die Reverse-Zone für 192.168.0.x. Außerdem leitet er alle Anfragen an den Router weiter, die er nicht auflösen kann. Testen kann man die Installation nun, indem man an einem Client die DS als DNS Server einrichtet und testweise Anfragen mittels nslookup losschickt.