Raspberry Pi als DNS-Server

V 1.00

1. Daten Intranet

Netzwerk: 192.168.20.0/24

Subnetzmaske: 255.255.255.0

Broadcast-Adresse: 192.168.20.255

Interner Server: 192.168.20.210

Raspberry (DNS-Server): 192.168.20.225

ListenpunktDNS-Zone: firma.home

Um eine eigene Domain zu erstellen, wird in diesem HOWTO als Beispiel der Domainname firma.home benutzt. Einzelne Rechner werden zu dieser Domain hinzugefügt. Es wird eine »home«-TLD benutzt, um sicherzustellen, dass niemand ausserhalb des Intranets durch diese Domain gestört wird.

2. BIND9 installieren

Mit dem folgenden Befehl werden alle notwendigen Pakete für den DNS Server installiert:

sudo apt-get install bind9 bind9utils dnsutils

Nach der Installation wird BIND automatisch gestartet. Mit dem Befehl »dig« kann die Funktion des Servers überprüft werden:

dig www.orf.at
^- in den dnsutils enthalten

; <<>> DiG 9.10.3-P4-Raspbian <<>> www.orf.at
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48785
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.orf.at. IN A
;; ANSWER SECTION:
www.orf.at. 52453 IN A 194.232.104.149
www.orf.at. 52453 IN A 194.232.104.141
www.orf.at. 52453 IN A 194.232.104.150
www.orf.at. 52453 IN A 194.232.104.140
www.orf.at. 52453 IN A 194.232.104.3
www.orf.at. 52453 IN A 194.232.104.139
www.orf.at. 52453 IN A 194.232.104.4
www.orf.at. 52453 IN A 194.232.104.142
;; Query time: 1 msec
;; SERVER: 192.168.20.20#53(192.168.20.20)
;; WHEN: Tue Nov 20 14:49:09 CET 2018
;; MSG SIZE rcvd: 156

Diese oder eine ähnliche Anzeige erscheint, wenn alles funktioniert.

3. Statische IP-Adresse

Zum Betrieb des Raspberry als DNS Server ist eine fixe IP-Adresse erforderlich.

Die statische IP-Adresse wird in der /etc/dhcpcd.conf eingetragen.

sudo nano /etc/dhcpcd.conf

Am Ende der Datei folgendes eintragen:

# eigenes Netzwerk
interface eth0
static ip_address=192.168.20.225/24
static routers=192.168.20.20
static domain_name_servers=192.168.20.20

Es sind natürlich die zum Netzwerk gehörenden Adressen zu verwenden.

Nachdem die Datei gespeichert ist, den Raspberry neu starten …

sudo reboot

… und mit

ifconfig

die Einstellung überprüfen.

4. Konfiguration

Die Konfigurationsdateien liegen im /etc/bind/ Verzeichnis. Die /etc/bind/named.conf importiert nur weitere Dateien wie /etc/bind/named.conf.options, /etc/bind/named.conf.local
und /etc/bind/named.conf.default-zones. Für die eigene Konfiguration und Zonen sollte die /etc/bind/named.conf.local verwendet werden.

Für jede Domäne werden zwei Zonen-Dateien angelegt. Eine für den Forward- und eine für den Reverse-Lookup.

Die Reihenfolge der Dateien ist prinzipiell Nebensache, daher werden sie hier in der Reihenfolge ihres Ablaufes angelegt.

sudo nano /etc/bind/named.conf

/etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
// include "/etc/bind/named.conf.default-zones";
// include "/etc/bind/named.conf.blocked";

In der Datei /etc/bind/named.conf.local werden die Konfiguration der beiden Zonen eingetragen.

sudo nano /etc/bind/named.conf.local

etc/bind/named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
include "/etc/bind/zones.rfc1918";
// Forward-Lookup
zone "firma.home" {
type master;
file "/etc/bind/db.firma.home";
allow-transfer { acl_trusted_transfer; };
};
// Reverse-Lookup
zone "20.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.20.168.192";
};

In der db.firma.home werden die Forward-Lookup-Datei erstellt.

sudo nano /etc/bind/db.firma.home

/etc/bind/db.firma.home
;
; 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
;
; BIND forward data file for domain firma.home
;
$TTL 604800
@ IN SOA ns1.firma.home. root.ns1.firma.home. (
2018112201 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.firma.home. ; nameserver 1
IN A 192.168.20.225 ; nameserver's loop-back address
ns1 IN A 192.168.20.225 ; nameserver self
firma.home IN A 192.168.20.210
www IN CNAME firma.home.

In der db.20.168.192 werden die Reverse-Lookup-Datei erstellt.

sudo nano /etc/bind/db.20.168.192

/etc/bind/db.20.168.192
;
; 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.
;
; BIND reverse data file for 20.168.192.in-addr.arpa
;
$TTL 604800
@ IN SOA ns1.firma.home. root.ns1.firma.home. (
20181123 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.firma.home. ; nameserver
210 IN PTR www.firma.home. ; webserver 192.168.20.210
225 IN PTR ns1.firma.home. ; nameserver
231 IN PTR na1.firma.home. ; NAS Server 1 192.168.20.231
232 IN PTR na2.firma.home. ; NAS Server 2 192.168.20.232

sudo nano /etc/bind/named.conf.options

/etc/bind/named.conf.options
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// öffentliche DNS-Server
forwarders {
// see: http://www.ccc.de/de/censorship/dns-howto
// Quelle: https://www.privux.de/raspberry-dns-server/
85.214.20.141; // FoeBud
204.152.184.76; // f.6to4-servers.net, ISC, USA
194.150.168.168; // dns.as250.net; Berlin/Frankfurt
213.73.91.35; // dnscache.berlin.ccc.de
// OpenDNS
208.67.222.222;
208.67.220.220;
};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
// Der Eintrag 'acl_trusted_transfer' steuert,
// für welche IP’s ein DNS-Zonen-Transfer erlaubt ist.
acl "acl_trusted_transfer" {
none;
};
// Der Eintrag acl_trusted_clients steuert,
// von welchen IP’s aus Anfragen an den DNS-Server erlaubt sind
acl "acl_trusted_clients" {
// localhost (RFC 3330) - Loopback-Device addresses
127.0.0.0/8; // 127.0.0.0 - 127.255.255.255
// Private Network (RFC 1918) - LAN, WLAN etc.
192.168.20.0/24; // 192.168.20.0 - 192.168.20.255
// Private Network (RFC 1918) - VPN etc.
// 10.0.0.0/8; // 10.0.0.0 - 10.255.255.255
};

Quellenverzeichnis

Technik-Tips und Tricks

Blogging IT

Privux.de