Gentoo BIND Leitfaden
1.
Einführung
Dieses Tutorial zeigt Ihnen, wie man BIND, den meistgenutzten DNS Server im
Internet, installiert und konfiguriert. Wir konfigurieren bind für Ihre
Domain mit verschiedenen Konfigurationen, eine für Ihr lokales Netzwerk und eine
für den Rest der Welt. Wir benutzen dafür verschiedene "Views". Eine Ansicht für
die interne Zone (Ihr lokales Netzwerk) und eine andere Ansicht für die externe
Zone (Rest der Welt).
2.
Daten, die im Beispiel benutzt werden
| Kurzform |
Erklärung |
Beispiel |
| IHRE_DOMAIN |
Ihr Domain Name |
gentoo.org |
| IHRE_ÖFFENTLICHE_IP |
Ihre öffentliche IP Adresse, vergeben durch den ISP |
204.74.99.100 |
| IHRE_LOKALE_IP |
Die lokale IP Adresse |
192.168.1.5 |
| IHR_LOKALES_NETZWERK |
Das lokale Netzwerk |
192.168.1.0/24 |
| SEKUNDÄRER_DNS_SERVER |
Die IP Adresse des sekundären DNS Server |
209.177.148.228 |
| ADMINISTRATOR |
Name des DNS-Server-Administrators |
root |
| ÄNDERUNGEN |
Das Änderungsdatum der Zonendatei, mit angefügter Nummer |
2009062901 |
Abbildung 2.1: Beispiel-Netzwerk |
 |
3.
BIND konfigurieren
Installation
Installieren Sie zunächst net-dns/bind.
Befehlsauflistung 3.1: Installation bind |
# emerge net-dns/bind
|
Konfiguration /etc/bind/named.conf
Die erste Datei, die wir konfigurieren, lautet
/etc/bind/named.conf. Als ersten Schritt geben wir dort das
Hauptverzeichnis, die abzuhörenden Ports mit den dazugehörigen IPs, den Pfad der
pid-Datei und eine Zeile für das ipv6-Protokoll an.
Befehlsauflistung 3.2: Abschnitt Optionen |
options {
directory "/var/bind";
listen-on-v6 { none; };
listen-on port 53 { 127.0.0.1; IHRE_LOKALE_IP; };
pid-file "/var/run/named/named.pid";
};
|
Im zweiten Abschnitt der named.conf geht es um die interne Ansicht
für unser lokales Netzwerk.
Befehlsauflistung 3.3: Interne Ansicht |
view "internal" {
match-clients { IHR_LOKALES_NETZWERK; localhost; };
recursion yes;
zone "IHRE_DOMAIN" {
type master;
file "pri/IHRE_DOMAIN.internal";
allow-transfer { any; };
};
};
|
Im dritten Abschnitt der named.conf geht es um die externe Ansicht,
die benutzt wird, um unseren Domain-Namen für den Rest der Welt aufzulösen und
um alle anderen Domain-Namen für uns aufzulösen (und für jeden, der unseren
DNS-Server benutzt).
Befehlsauflistung 3.4: Externe Ansicht |
view "external" {
match-clients { any; };
recursion no;
zone "." IN {
type hint;
file "named.ca";
};
zone "127.in-addr.arpa" IN {
type master;
file "pri/127.zone";
allow-update { none; };
notify no;
};
zone "IHRE_DOMAIN" {
type master;
file "pri/IHRE_DOMAIN.external";
allow-query { any; };
allow-transfer { SEKUNDÄRER_DNS_SERVER; };
};
};
|
Im letzten Abschnitt der named.conf geht es um die Log-Richtlinien.
Befehlsauflistung 3.5: Externe Ansicht |
logging {
channel default_syslog {
file "/var/log/named/named.log" versions 3 size 5m;
severity debug;
print-time yes;
print-severity yes;
print-category yes;
};
category default { default_syslog; };
};
|
Das /var/log/named/ Verzeichnis muss existieren und
named gehören:
Befehlsauflistung 3.6: Log-Dateien erzeugen |
# mkdir -p /var/log/named/
# chmod 770 /var/log/named/
# touch /var/log/named/named.log
# chmod 660 /var/log/named/named.log
# chown -R named /var/log/named/
# chgrp -R named /var/log/named/
|
Erzeugen der internen Zonendatei
Wir nutzen die Hostnamen und IP-Adressen des Beispielbildes. Bedenken Sie, dass
die meisten (nicht alle) Domain-Namen mit einem "." (Punkt) enden.
Befehlsauflistung 3.7: /var/bind/pri/IHRE_DOMAIN.internal |
$TTL 2d
@ IN SOA ns.IHRE_DOMAIN. ADMINISTRATOR.IHRE_DOMAIN. (
ÄNDERUNGEN ; serial
3h ; refresh
1h ; retry
1w ; expiry
1d ) ; minimum
IHRE_DOMAIN. IN MX 0 mail.IHRE_DOMAIN.
IHRE_DOMAIN. IN TXT "v=spf1 ip4:IHRE_ÖFFENTLICHE_IP/32 mx ptr mx:mail.IHRE_DOMAIN ~all"
IHRE_DOMAIN. IN NS ns.IHRE_DOMAIN.
IHRE_DOMAIN. IN NS SEKUNDÄRER_DNS_SERVER
www.IHRE_DOMAIN. IN A 192.168.1.3
ns.IHRE_DOMAIN. IN A 192.168.1.5
mail.IHRE_DOMAIN. IN A 192.168.1.3
router.IHRE_DOMAIN. IN A 192.168.1.1
hell.IHRE_DOMAIN. IN A 192.168.1.3
heaven.IHRE_DOMAIN. IN A 192.168.1.5
desktop.IHRE_DOMAIN. IN A 192.168.1.4
|
Erzeugen der externen Zonendatei
In diesem Abschnitt haben wir nur die Subdomains, die wir für die externen
Clients benötigen (www, mail und ns).
Befehlsauflistung 3.8: /var/bind/pri/IHRE_DOMAIN.external |
$TTL 2d
@ IN SOA ns.IHRE_DOMAIN. ADMINISTRATOR.IHRE_DOMAIN. (
ÄNDERUNGEN ;serial
3h ;refresh
1h ;retry
1w ;expiry
1d ) ;minimum
IHRE_DOMAIN. IN MX 0 mail.IHRE_DOMAIN.
IHRE_DOMAIN. IN TXT "v=spf1 ip4:IHRE_ÖFFENTLICHE_IP/32 mx ptr mx:mail.IHRE_DOMAIN ~all"
IHRE_DOMAIN. IN NS ns.IHRE_DOMAIN.
IHRE_DOMAIN. IN NS SEKUNDÄRER_DNS_SERVER
www.IHRE_DOMAIN. IN A IHRE_ÖFFENTLICHE_IP
ns.IHRE_DOMAIN. IN A IHRE_ÖFFENTLICHE_IP
mail.IHRE_DOMAIN. IN A IHRE_ÖFFENTLICHE_IP
|
Konfiguration abschließen
named zum default-Runlevel hinzufügen:
Befehlsauflistung 3.9: Hinzufügen zum default-Runlevel |
# rc-update add named default
|
4.
Konfiguration der Clients
Sie können Ihren eigenen DNS-Server nun für alle Rechner im lokalen Netzwerk
nutzen, um Domain-Namen aufzulösen. Bearbeiten Sie dazu die Datei
/etc/resolv.conf all Ihrer Rechner im lokalen Netzwerk.
Befehlsauflistung 4.1: Konfiguration /etc/resolv.conf |
search IHRE_DOMAIN
nameserver YOUR_DNS_SERVER_IP
|
Achten Sie darauf, dass YOUR_DNS_SERVER_IP dasselbe ist wie IHRE_LOKALE_IP, die
wir in diesem Dokument verwendet haben. Im Beispielbild ist das die IP-Adresse
192.168.1.5.
5.
Testen
Der DNS-Server kann nun getestet werden. Zuerst müssen wir dafür alle Dienste
starten.
Befehlsauflistung 5.1: Manuelles Starten der Dienste |
# /etc/init.d/named start
|
Wir werden nun ein paar Domains mit dem Kommando host testen. Jeder
Computer im lokalen Netzwerk kann für diesen Test genutzt werden. Wenn Sie
net-dns/host nicht installiert haben, können Sie dafür auch ping
nutzen. Ansonsten müssen Sie erst emerge host ausführen.
Befehlsauflistung 5.2: Durchführung des Tests |
$ host www.gentoo.org
www.gentoo.org has address 209.177.148.228
www.gentoo.org has address 209.177.148.229
$ host hell
hell.IHRE_DOMAIN has address 192.168.1.3
$ host router
router.IHRE_DOMAIN has address 192.168.1.1
|
6.
Schützen des Servers mit iptables
Wenn Sie iptables verwenden, um Ihren Server zu schützen, fügen Sie folgende
Regeln für den DNS-Dienst hinzu.
Befehlsauflistung 6.1: Iptables-Regeln |
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
|
|