Hier werden wir einen primären und einen sekundären DNS Server aufsetzen.
Es wird davon ausgegangen, dass zwei Server zur Verfügung stehen.
Inhalt
Einleitung
Auf die Grundlagen des DNS-Systems wird hier nicht eingegangen, genauso wenig wie dass man _nebst_ dem Webserver noch zwei Maschinen für die Nameserver haben sollte und es _keine_ gute Idee ist den DNS-Server auf dem gleichen Rechner wie den Webserver zu betreiben.
Das folgende Tutorial zeigt wie man auf RedHat/CentOS schnell einen Hosting tauglichen Nameserver aufsetzen kann.

Man muss dann einzig darauf achten, es so einzustellen, dass die Hauptkonfiguration unter: /etc/named/named.conf liegt, sowie die Verzeichnisse /var/log/named, /var/named/data und /var/named/slaves existieren.
Wir werden zuerst den primären Nameserver aufsetzen, dann den sekundären und schlussendlich diese so konfigurieren, dass sie sich aktualisieren.
Als erster installieren wir dazu auf beiden Maschinen bind9:
yum install bind |
Primärer und Sekundärer Nameserver
Auf beiden Nameservern sollte man erst den Standort des Haupt-Konfigurationsfiles named.conf anpassen; dies ist Standardmässig unter: /etc/named.conf, da wir aber beim nameserver noch einige weitere Configfiles haben werden macht es Sinn dafür ein eigenes verzeichnis zu verwenden und das file unter: /etc/named/named.conf zu haben.
Dazu fügen wir in die Datei: /etc/sysconfig/named folgende Zeile an:
OPTIONS="-c /etc/named/named.conf" |
Dann erstellen wir noch das Basisverzeichnis:
mkdir -pv /etc/named/ |
Primärer Nameserver
Zuerst erstellen wir die Konfigurationsverzeichnisse für die Zonen, sowie die Reverse-Zonen:
mkdir -p /etc/named/zones |
Nun bearbeiten wie die Hauptkonfiguration in /etc/named/named.conf:
options { directory "/var/named/data"; listen-on { x.x.x.x; }; listen-on-v6 { none; }; auth-nxdomain no; # conform to RFC1035 allow-transfer { "none"; }; }; include "/etc/rndc.key"; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndckey"; }; }; logging { channel simple_log { file "/var/log/named/named.log" versions 3 size 5m; //severity warning; //severity debug 10; print-time yes; print-severity yes; print-category yes; }; category default { simple_log; }; }; include "/etc/named/zones.conf"; |
Nun müssen wir eine sog. "rndc-key" erstellen:
rndc-keygen > /etc/rndc.key |
Das sog. "root-zone" file enthält die Informationen zu den rootservern, das wir erstellen müssen:
vi /etc/named/zones/named.ca
; 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.cache ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; ; last update: Jan 29, 2004 ; related version of root zone: 2004012900 ; ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; 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 ; ; 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 ; ; 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 ; ; operated by RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 ; ; operated by ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 ; ; operated by WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 ; End of File |
Nun erstellen- oder bearbeiten wir die Datei /etc/named/zones.conf, die die Zonefiles konfiguriert.
Hier ist die Konfiguration für einen beispieldomain "example.org" angegeben. Diese muss dann durch die tatsächlichen Domain ersetzt werden, die man verwalten möchte:
zone "example.org" { type master; file "/etc/named/zones/example.org"; }; zone "example.net" { type master; file "/etc/named/zones/example.net"; }; zone "example.com" { type master; file "/etc/named/zones/example.com"; }; # etc... |
Dann noch die sog. "reverse" Zonen eintragen; diese wird gebraucht, wenn man nicht die IP über den Domainamen, sondern halt eben umgekehrt den Domainnamen über die IP-Adresse herausfinden möchte.
Diese fügen wir in der selben Datei wie oben (_/etc/named/zones.conf_) unten an:
zone "." IN { type hint; file "/etc/named/zones/named.ca"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "/etc/named/zones/127.0.0"; }; #usw. |
Nun erstellen wir je eine Beispieldatei für die Namens-Zone und die reverse-zone; den Rest sollte sich daraus ableiten lassen:
/etc/named/zones/example.org
("example.org" ist hier die Domain des DNS Servers, "x.x.x.x" ist dessen IP!)
@ IN SOA dns.example.org. postmaster.example.org. ( 2008061701 ; serial number 3600 ; refresh 600 ; retry 86400 ; expire 3600 ) ; minimum TTL ; ; Zone NS records ; @ NS dns.example.org. @ NS dns2.example.org. ; ; Zone records ; @ A x.x.x.x @ MX 10 mail.example.org MX 10 mail.example.org example.org. IN TXT "v=spf1 mx ptr ~all" mail.example.org. IN TXT "v=spf1 a -all" www A x.x.x.x // Hier lassen sich dann weitere Hosts integrieren |
Ein solches file muss dann für jede gehostete Domain gemacht werden.
/etc/named/reverse-zones.conf
<SMALL>Hinweise:<BR>
Dieses file listet alle IPs auf, die auf nahmen aufgelöst werden. Bei vielen verschiednen IP-Ranges macht es evtl. sinn dies in mehrere file pro IP aufzuteilen; im normalfall reicht aber ein file.<BR>
Im reverse Zonefile sind die IPs immer in umgekehrter Reihenfolge, also z.B. statt: "10.0.0.1" ist "1.0.0.10" zu verwenden<BR>
"x, y und z" sind also die letzten Ziffern der IP Adresse, also z.B. 1.0.0.x</SMALL>
$ORIGIN 1.1.10.in-addr.arpa. $TTL 86400 ; 1 day @ IN SOA dns.example.org. root.dns.example.org. ( 2018022101 ; serial 28800 ; refresh (8 hours) 14400 ; retry (4 hours) 3600000 ; expire (5 weeks 6 days 16 hours) 86400 ; minimum (1 day) ) IN NS dns.example.org. 1 IN PTR host1.example.org. 2 IN PTR host2.example.org. 3 IN PTR host3.example.org. |
Sekundärer Nameserver
Nun kommen wir also zum Sekundären Nameserver; dieser hat selbst keine Zonen, da er seinen "cache" immer vom primären Nameserver bezieht. – Dieser ist daher auch etwas einfacher aufzusetzen.
Als erstes muss man auf dem primären DNS-Server im der Datei /etc/named/named.conf bei der Option: allow-transfer das "none" mit der IP-Adresse des sekundären Servers– und eine neue option "notify yes" ersetzen:
options { # ggf. weitere optionen allow-transfer { x.x.x.x; }; notify yes; }; |

Wenn man beim editieren vergisst, diese zu erhöhen, findet kein Zonentransfer statt und die Slaves arbeiten mit den veralteten Daten weiter.
Nun kann man erst mal alle, für den primären Nameserver beschriebenen Konfigurationsdateien auf den sekundären kopieren. Am einfachsten geht dies mit rsync:
rsync --rsh=/usr/bin/ssh -auq --delete /etc/named/ server2:/etc/named/ rsync --rsh=/usr/bin/ssh -auq --delete /var/named/ server2:/var/named/ rsync --rsh=/usr/bin/ssh -auq --delete /etc/named/named.conf server2:/etc/named/named.conf |
Nun passt man die Datei: /etc/named/named.conf auf dem sekundären Server an und ändert den "allow-transfer"-Block in:
allow-notify { x.x.x.x; }; |
Wobei man das "x.x.x.x" mit der IP-Adresse des primären servers ersetzt.
Die Datei: /etc/named/zones.conf ändert man dann wie folgt ("x.x.x.x" ist die IP des primären servers)t:
zone "domainname" { type slave; masters { x.x.x.x; }; file "/var/named/slaves/example.org"; }; zone "0.168.192.in-addr.arpa" { type slave; masters { x.x.x.x; }; file "/var/named/slaves/reverse-zones.slave"; }; //usw. |
Das wärs dann auch schon. 😉
Related Links
- DNS-Server: Gutes Tutorial dazu auf ubunusers.de.
- zytrax.com: Zone-Transfer: Informationen über bind Zone Transfer
One thought on “DNS-Server”