Das Tutorial beschreibt die Installation eines DHCP und DNS Servers auf einem Raspberry Pi 2 mit 512 MB RAM.
Als Grundlage dient ein Beitrag aus der Raspberry Pi Geek 05-06/2017 Seite 48.
Hier wird der DNS Server(Unbound) mit Addblocker beschrieben. Der DNS benutzt nur DNSSEC Upstream-Server.
Da die Listings auf der Heft CD fehlen werden diese hier zur Verfügung gestellt.
Im Tar Archiv sind alle benutzten Scripte, Timer, Services und Beispiel x.conf Dateien enthalten diese Bitte anpassen.
Ups eine xyz.tar.gz Datei ist mit der Foren Software nicht möglich !! dann Bitte unzip verwenden.
Für den DHCP Server wird der isc-dhcp-server verwendet.
Es waren einige Änderungen nötig da die Cronjobs in /etc/cron.weekly/ nicht liefen wird mit Timern gearbeitet.
Der DNS/DHCP Server wurde im Menü einer Fritzbox 7490 als Lokaler DNS Server eingetragen.
Eine Abfrage des RasPi ergab "GNU/Linux 8 (jessie)" das wird Aktuallisiert, mit "raspi-config" bekommt er den Hostnamen "dns-raspi".
Das Tar Archiv wird nach /home/pi kopiert und entpackt. Mit Hilfe der Datei 50-dns.network bekommt der RasPi eine statische IP.
less /etc/os-release
sudo apt update
sudo apt upgrade
sudo apt install dnsutils
sudo raspi-config
rsync projekt_dns.tar.gz pi@192.168.101.xx:/home/pi
cd /home/pi
tar xzvf projekt_dns.tar.gz
sudo cp 50-dns.network /etc/systemd/network/
sudo reboot
Dann wird der DHCP Server Installiert, Konfiguriert dazu die dhcpd.conf Datei anpassen dann Start des Servers.
Nachtrag 1:
Das in der dhcpd.conf benutzte Netz, die Range, der Router(Default Gateway), die Such Domain und die DNS IP
sind ein Beispiel und sollten an die eigenen Anforderungen angepasst werden um solche Fehler zu vermeiden.
sudo apt-get install isc-dhcp-server
sudo cp isc-dhcp-server /etc/default/
sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf_alt
sudo cp dhcpd.conf /etc/dhcp/
sudo systemctl start isc-dhcp-server
systemctl status isc-dhcp-server
Der DNS Server wird installiert dann eine Kontrolle der unbound.conf Datei.
Nur diese Zeile sollte vorhanden sein: include: "/etc/unbound/unbound.conf.d/*.conf"
Step 1: Mit der simple.conf die Datei entspricht dem Listing 1.
Dann ein Test für die eigenen *.conf Dateien. Die Antwort muss "unbound-checkconf: no errors" ergeben.
sudo cp simple.conf /etc/unbound/unbound.conf.d/
unbound-checkconf /etc/unbound/unbound.conf.d/simple.conf
Step 2: Mit der localzone.conf die Datei entspricht dem Listing 4.
Wenn der Test OK war beide Dateien scharf schalten.
sudo cp localzone.conf /etc/unbound/unbound.conf.d/
unbound-checkconf /etc/unbound/unbound.conf.d/localzone.conf
sudo service unbound reload
service unbound status
Step 3: Mit der complex.conf die Datei entspricht dem Listing 3.
Dann den Schlüssel Importieren und Kontrolle ob die Dateien root.hints und root.key da sind.
sudo cp complex.conf /etc/unbound/unbound.conf.d/
sudo curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache
sudo unbound-anchor -v
ls -la /etc/unbound/
unbound-checkconf /etc/unbound/unbound.conf.d/complex.conf
Step 4: Mit dem Addblocker das entspricht dem Listing 5 und Listing 6. Zuerst die Liste der geblockten Hosts laden.
Dann den Addblocker in der unbound.conf dem DNS Serer bekannt machen, dazu die Zeile eintragen.
sudo curl -sS -L --compressed "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=unbound&showintro=0&mimetype=plaintext" -o /etc/unbound/unbound.conf.d/unbound-ad-servers
sudo nano /etc/unbound/unbound.conf
include: "/etc/unbound/unbound.conf.d/unbound-ad-servers"
Step 5: Da nur die simple.conf oder complex.conf laufen kann wird die simple.conf umbenannt oder gelöscht.
Dann wird die complex.conf und die localzone.conf für den DNS Server scharf geschalten.
sudo mv /etc/unbound/unbound.conf.d/simple.conf ~/simple.conf.test
sudo rm /etc/unbound/unbound.conf.d/simple.conf
sudo service unbound reload
Step 6: Abweichung vom Listing 7. Periodisches Updaten der Addblocker Hosts Liste und der Schlüssel Datei für den DNS Server.
Es wurden 2 Script Dateien gebaut die unbound_update.sh und die hints_update.sh auch um einzeln Testen zu können.
Die beiden Scripte werden von den Unbound Timern gestartet nicht mit Hilfe von cron oder anacron.
sudo cp hints_update.sh /etc/unbound/unbound.conf.d/
sudo cp unbound_update.sh /etc/unbound/unbound.conf.d/
sudo cp add-block-weekly.service /etc/systemd/system/
sudo cp add-block-weekly.timer /etc/systemd/system/
sudo cp hints-monthly.service /etc/systemd/system/
sudo cp hints-monthly.timer /etc/systemd/system/
sudo chown root:root /etc/systemd/system/add-block-weekly.service
sudo chown root:root /etc/systemd/system/add-block-weekly.timer
sudo chown root:root /etc/systemd/system/hints-monthly.service
sudo chown root:root /etc/systemd/system/hints-monthly.timer
sudo systemctl enable add-block-weekly.timer
sudo systemctl enable hints-monthly.timer
sudo systemctl start add-block-weekly.timer
sudo systemctl start hints-monthly.timer
systemctl list-timers
systemctl status add-block-weekly.timer
systemctl status add-block-weekly.service
systemctl status hints-monthly.timer
systemctl status hints-monthly.service
Alles anzeigen
Step 7: Kontroll Abfragen auf dem DNS Server.
Abfrage 1 sollte so aussehen.
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: raspi-geek.de
Address: 195.122.146.144
Abfrage 2 sollte so aussehen.
ct.de. 86400 IN A 193.99.144.80
Abfrage 3 sollte das wichtige ad flag mitbringen.
flags: qr rd ra ad;
Fehler Quellen.
In der dhcp.conf wird ein _ im Hostnamen ignoriert deshalb sind in der dhcp.conf nur noch - Zeichen im Namen.