DNS und DHCP Server auf einem Raspberry Pi 2

  • 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.

    Code
    1. less /etc/os-release
    2. sudo apt update
    3. sudo apt upgrade
    4. sudo apt install dnsutils
    5. sudo raspi-config
    6. rsync projekt_dns.tar.gz pi@192.168.101.xx:/home/pi
    7. cd /home/pi
    8. tar xzvf projekt_dns.tar.gz
    9. sudo cp 50-dns.network /etc/systemd/network/
    10. 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.


    Fehler



    Code
    1. sudo apt-get install isc-dhcp-server
    2. sudo cp isc-dhcp-server /etc/default/
    3. sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf_alt
    4. sudo cp dhcpd.conf /etc/dhcp/
    5. sudo systemctl start isc-dhcp-server
    6. 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"

    Code
    1. sudo apt install unbound
    2. less /etc/unbound/unbound.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.

    Code
    1. sudo cp simple.conf /etc/unbound/unbound.conf.d/
    2. 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.

    Code
    1. sudo cp localzone.conf /etc/unbound/unbound.conf.d/
    2. unbound-checkconf /etc/unbound/unbound.conf.d/localzone.conf
    3. sudo service unbound reload
    4. 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.

    Code
    1. sudo cp complex.conf /etc/unbound/unbound.conf.d/
    2. sudo curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache
    3. sudo unbound-anchor -v
    4. ls -la /etc/unbound/
    5. 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.

    Code
    1. 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
    2. sudo nano /etc/unbound/unbound.conf
    3. 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.

    Code
    1. sudo mv /etc/unbound/unbound.conf.d/simple.conf ~/simple.conf.test
    2. sudo rm /etc/unbound/unbound.conf.d/simple.conf
    3. 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.


    Step 7: Kontroll Abfragen auf dem DNS Server.


    Code
    1. nslookup raspi-geek.de
    2. dig @localhost ct.de
    3. dig @localhost dnssec.works


    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.

    Files

    Edited once, last by md_fg ().

  • Quote

    Fehler Quellen.

    In der dhcp.conf wird ein _ im Hostnamen ignoriert deshalb sind in der dhcp.conf nur noch - Zeichen im Namen.


    Im DNS-Namen sind nur Buchstaben, Zahlen und das 'Minus-Zeichen' erlaubt.


    Als Buchstaben sind, abhängig von der verwendeten Sprache, auch die jeweiligen Umlaute im Punycode erlaubt.

    Keine erlaubten Zeichen bei der Namensgebung von Systemen sind der Unterstrich, der Doppelpunkt und der Klammeraffe @.

    Selber denken,
    wie kann man nur?

  • Hallo, danke für die Anleitung!


    Ich habe mich bis zu Step 6 vorgehangelt, komme nun aber nicht weiter da unbound beim Start meldet:

    "Failed to start unbound.service: The name org.freedesktop.PolicyKit1 was not provided by any .service files

    See system logs and 'systemctl status unbound.service' for details."


    Lösung: Paket "policykit-1" nach installieren.

    Edited once, last by bitti1 ().

  • Servus Leute

    "Mit Hilfe der Datei 50-dns.network bekommt der RasPi eine statische IP."

    Funktioniert das auch mit einem Raspi3b+ und aktuellem Raspian 9? Also reicht das kopieren der individuell konfigurierten Datei?

    Ich hab die Datei konfiguriert und nach /etc/systemd/network/ kopiert aber der Raspi bekommt nach Reboot immer noch eine DHCP-Adresse.


    Gruß Dirk

  • Hallo Dirk

    Hier sollten keine Fragen gestellt werden. Siehe dazu hier:

    Wie frage ich nach Hilfe


    Das ist eine Ausnahme zu Frage 1 Ja zu Frage 2 Nein

    Siehe Dir die Ausgabe von systemctl an und suche nach dhcpd


    Code
    1. systemctl status
    2. sudo systemctl stop dhcpcd.service
    3. sudo systemctl disable dhcpcd.service
    4. sudo reboot