Raspberry Pi VPN – Teil 9: Installation Pi-Hole

Raspberry Pi VPN

Mit der Einrichtung eines VPN-Tunnels vom Smartphone auf unseren eigenen VPN-Server haben wir bereits viel für die Sicherheit am Smartphone erreicht. Nun gehen wir einen Schritt weiter und installieren Pi-Hole zusätzlich auf den VPN-Server (Raspberry Pi). Pi-Hole klinkt sich in das System der Namensauflösung am Raspberry Pi ein und und hat dadurch die Möglichkeit, unliebsame Tracking- oder Werbe-Server zu blockieren. Gesteuert wir Pi-Hole über mitgelieferte Blacklists, die bekannte Tracker beinhalten. Darüber hinaus lassen sich vom Anwender eigene Black- und White-Listen anlegen und so die werksseitigen Vorgaben an die eigenen Bedürfnisse anpassen.

Wie funktioniert Pi-Hole

Mit Werbung
App mit Werbung

Wie in der Einleitung bereits kurz angerissen, ist Pi-Hole eine Software, die sich in die Namensauflösung des Raspberry Pi einschleift. So muss jedes Datenpaket, das eine DNS-Anfrage (Domain Name System) enthält, zwangsweise an Pi-Hole vorbei. Und nachdem wir Pi-Hole auf unserem VPN-Server installieren werden, trifft das auch auf alle Datenpakete zu, die durch den VPN-Tunnel vom Smartphone kommen.

Pi-Hole kann folglich alle Namensauflösungsvorgänge des (oder der) Smartphones analysieren und gegebenenfalls blockieren.

Wer sich unter Namensauflösung noch nichts vorstellen kann, der kann es selber auf einem Unixsystem (zum Beispiel dem Raspberry Pi) mit dem host Kommando einmal ausprobieren:

$ host heise.de
heise.de has address 193.99.144.80
heise.de has IPv6 address 2a02:2e0:3fe:1001:302::
heise.de mail is handled by 10 relay.heise.de.

Das ist die DNS-Anfrage für heise.de und die liefert drei Ergebnisse: eine IPv4 Adresse, eine IPv6 Adresse und den Namen des Mail-Servers. Typischerweise wissen wir von einer Webseite im Internet nur den Namen – damit die Datenpakete aber ihren Weg finden, wird die IP-Adresse benötigt. Und die liefert uns DNS. Beim Surfen im Internet passiert das natürlich unsichtbar im Hintergrund – der Browser macht das automatisch, so dass sich der Mensch um IP-Adressen normalerweise keine Gedanken machen muss.

Ohne Werbung
App mit Pi-Hole ohne Werbung

Jetzt muss man wissen, dass beim Aufruf einer Webseite oftmals mehrere DNS-Anfragen notwendig sind. Einmal für die Webseite selbst und dann für weitere Elemente, die in diese Webseite eingebunden sind, so weit diese unter einem anderen Domänennamen verlinkt sind. Das können Bilder sein, oder Videos, aber auch Werbung oder Tracking-Services.

Bei jeder Anforderung einer Namensauflösung prüft nun Pi-Hole ob der angefragte Domänenname in einer hinterlegten Blacklist eingetragen ist. Ist das der Fall, dann blockiert Pi-Hole die Anfrage und sendet selbst 0.0.0.0 als ungültige IP-Adresse zurück. Ist der Domänenname in keiner Blacklist verzeichnet, wird die Anfrage an den DNS-Server weitergeleitet und die Anfrage so beantwortet. Auf diese Weise können bekannte Tracking- und Werbeserver effektiv blockiert werden. Und das gilt universell für alles, was auf DNS basiert, also nicht nur für Webseiten, sondern auch für Apps, wie man an den beiden Beispielbildern sehen kann.

Mehr zu Pi-Hole findet sich auf der Pi-Hole Website und bei Github.com. Dazu gibt es eine umfangreiche Dokumentation.

Installation von Pi-Hole

Typischerweise installiert man OpenVPN (PiVPN) zuerst und wenn der Tunnel funktioniert, dann kommt Pi-Hole an die Reihe. Die Installation von Pi-Hole starten wir am Raspberry Pi mit:

curl -sSL https://install.pi-hole.net | bash

Das führt zu folgenden Abfragen:

Bei den meisten Abfragen können die Vorgaben einfach bestätigt werden, wichtig sind die folgenden Eingabefenster:

Interfaceauswahl

An sich wäre das Tunnelinterface tun0 die richtige Auswahl, allerdings kann es passieren, dass die Installation dann später auf einen Fehler mit der DNS Resolution läuft (zumindest in der aktuellen Version v4.2.2). Deshalb ist meine Empfehlung, in dieser Auswahl das LAN-, bzw. WLAN-Interface zu selektieren, je nachdem, wie der Raspberry Pi angebunden ist. Das Tunnelinterface werden wir dann später ergänzen.

Upstream DNS Provider

Der Upstream DNS Provider ist der DNS-Server, an den sich Pi-Hole selbst zur Namensauflösung wendet. Hier sollte Custom gewählt werden.

Upstream DNS Server Adresse

Und in der darauf folgenden Eingabemaske geben wir die IP-Adresse unseres eigenen DNS-Servers im lokalen Netz ein. Üblicherweise ist das der eigene Internetrouter. Diese Adresse hatten wir bei der Konfiguration von PiVPN zu diesem Zweck ebenfalls eingetragen.

Den eigenen Router nehmen wir aus folgenden Grund: Externe DNS-Server, wie die im Beispiel angegebenen beiden von Google, können zwar alle Domänennamen im Internet auflösen, aber nicht die Namen der Geräte im eigenen Heimnetz. Die kennt aber der Internetrouter, weil er fast immer gleichzeitig auch DHCP- und DNS-Server ist. Wer also einen File- oder Printserver im eigenen Netz betreibt, oder weitere Raspberry Pis – und wer über den VPN-Tunnel darauf zugreifen möchte, der muss den internen DNS-Server, also den Internetrouter hier eintragen.

Blockierlisten

Bei der Abfrage der Blockierlisten übernehmen wir die Voreinstellung (alle Listen ausgewählt) und bestätigen mit Enter. Später können wir nicht gewünschte Listen in der Weboberfläche jederzeit wieder deaktivieren.

IPV4 und IPv6

Bei der Auswahl der IP-Protokolle können wir IPv6 getrost abwählen. Durch den VPN-Tunnel kommt ausschließlich IPv4.

Pi-Hole complete

Damit ist die Installation abgeschlossen. Das letzte Bild gibt die Links zum Install-Log und zur Weboberfläche aus, sowie das Admin-Passwort dafür. An dieser Stelle sollte ein Reboot erfolgen. Die Ausgabe des Intstallationsvorgangs auf der Konsole sieht in etwa wie folgt aus – man erkennt, dass nicht jede Fehlermeldung kritisch ist.

$ curl -sSL https://install.pi-hole.net | bash
stty: Standardeingabe: Unpassender IOCTL (I/O-Control) für das Gerät

  [✗] Root user check
  [i] Script called with non-root privileges
      The Pi-hole requires elevated privileges to install and run
      Please check the installer for any concerns regarding this requirement
      Make sure to download this script from a trusted source

  [✓] Sudo utility check
stty: Standardeingabe: Unpassender IOCTL (I/O-Control) für das Gerät

  [✓] Root user check

        .;;,.
        .ccccc:,.
         :cccclll:.      ..,,
          :ccccclll.   ;ooodc
           'ccll:;ll .oooodc
             .;cll.;;looo:.
                 .. ','.
                .',,,,,,'.
              .',,,,,,,,,,.
            .',,,,,,,,,,,,....
          ....''',,,,,,,'.......
        .........  ....  .........
        ..........      ..........
        ..........      ..........
        .........  ....  .........
          ........,,,,,,,'......
            ....',,,,,,,,,,,,.
               .',,,,,,,,,'.
                .',,,,,,'.
                  ..'''.

  [✓] Disk space check
  [✓] Update local cache of available packages

  [✓] Checking apt-get for upgraded packages... up to date!

  [i] Installer Dependency checks...
  [✓] Checking for apt-utils
  [i] Checking for dialog (will be installed)
  [✓] Checking for debconf
  [✓] Checking for dhcpcd5
  [✓] Checking for git
  [✓] Checking for iproute2
  [✓] Checking for whiptail
  [i] Using interface: wlan0
  [i] Using   [✓] Set IP address to 192.168.0.167 
  You may need to restart after the install is complete
  [i] IPv4 address: 192.168.0.167/24
  [i] IPv6 address: 
  [i] Web Interface On
  [i] Web Server On
  [i] Logging On.
  [✗] Check for existing repository in /etc/.pihole
  [✓] Clone https://github.com/pi-hole/pi-hole.git into /etc/.pihole

  [✗] Check for existing repository in /var/www/html/admin
  [✓] Clone https://github.com/pi-hole/AdminLTE.git into /var/www/html/admin

  [i] Main Dependency checks...
  [✓] Checking for cron
  [✓] Checking for curl
  [✓] Checking for dnsutils
  [✓] Checking for iputils-ping
  [i] Checking for lsof (will be installed)
  [i] Checking for netcat (will be installed)
  [✓] Checking for psmisc
  [✓] Checking for sudo
  [✓] Checking for unzip
  [✓] Checking for wget
  [i] Checking for idn2 (will be installed)
  [i] Checking for sqlite3 (will be installed)
  [✓] Checking for libcap2-bin
  [i] Checking for dns-root-data (will be installed)
  [i] Checking for resolvconf (will be installed)
  [✓] Checking for libcap2
  [i] Checking for lighttpd (will be installed)
  [i] Checking for php-common (will be installed)
  [i] Checking for php-cgi (will be installed)
  [i] Checking for php-sqlite3 (will be installed)
  [✓] Enabling lighttpd service to start on reboot...

  [i] FTL Checks...

  [✓] Detected ARM-hf architecture (armv7+)
  [i] Checking for existing FTL binary...
  [✓] Downloading and Installing FTL
  [✓] Creating user 'pihole'
  [✓] Installing scripts from /etc/.pihole

  [i] Installing configs from /etc/.pihole...
  [✓] No dnsmasq.conf found... restoring default dnsmasq.conf...
  [✓] Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf

  [i] Installing blocking page...
  [✓] Creating directory for blocking page, and copying files
  [✓] Backing up index.lighttpd.html

  [✓] Installing sudoer file

  [✓] Installing latest Cron script

  [✓] Installing latest logrotate script
  [i] Backing up /etc/dnsmasq.conf to /etc/dnsmasq.conf.old

  [i] Skipping firewall configuration
  [✓] man pages installed and database updated
  [i] Testing if systemd-resolved is enabled
  [i] Systemd-resolved is not enabled
  [✓] Restarting lighttpd service...
  [✓] Enabling lighttpd service to start on reboot...
  [i] Restarting services...
  [✓] Enabling pihole-FTL service to start on reboot...
  [✓] Restarting pihole-FTL service...
  [✓] Deleting existing list cache
  [i] Pi-hole blocking is enabled
  [i] Neutrino emissions detected...
  [✓] Pulling blocklist source list into range

  [i] Target: raw.githubusercontent.com (hosts)
  [✓] Status: Retrieval successful

  [i] Target: mirror1.malwaredomains.com (justdomains)
  [✓] Status: Retrieval successful

  [i] Target: sysctl.org (hosts)
  [✓] Status: Retrieval successful

  [i] Target: zeustracker.abuse.ch (blocklist.php?download=domainblocklist)
  [✓] Status: Retrieval successful

  [i] Target: s3.amazonaws.com (simple_tracking.txt)
  [✓] Status: Retrieval successful

  [i] Target: s3.amazonaws.com (simple_ad.txt)
  [✓] Status: Retrieval successful

  [i] Target: hosts-file.net (ad_servers.txt)
  [✓] Status: Retrieval successful

  [✓] Consolidating blocklists
  [✓] Extracting domains from blocklists
  [i] Number of domains being pulled in by gravity: 135418
  [✓] Removing duplicate domains
  [i] Number of unique domains trapped in the Event Horizon: 113156
  [i] Nothing to whitelist!
  [i] Number of regex filters: 0
  [✓] Parsing domains into hosts format
  [✓] Cleaning up stray matter

  [✓] Force-reloading DNS service
  [✓] DNS service is running
  [i] Pi-hole blocking will be enabled
  [i] Enabling blocking
  [✓] Reloading DNS service
  [✓] Pi-hole Enabled
fatal: Keine Namen gefunden, kann nichts beschreiben.
fatal: Keine Namen gefunden, kann nichts beschreiben.
  [i] Web Interface password: _U1S_eR0
  [i] This can be changed using 'pihole -a -p'

  [i] View the web interface at http://pi.hole/admin or http://192.168.0.167/admin

  [i] You may now configure your devices to use the Pi-hole as their DNS server
  [i] Pi-hole DNS (IPv4): 192.168.0.167
  [i] If you set a new IP address, please restart the server running the Pi-hole

  [i] The install log is located at: /etc/pihole/install.log
Installation Complete! 

Nacharbeiten

Bevor wir mit Pi-Hole arbeiten können sind ein paar Nacharbeiten erforderlich.

Admin Passwort ändern

Das kryptische Passwort, das während der Installation vergeben wurde, kann sich niemand merken, wir setzen also zuerst ein neues Admin-Passwort mit:

$ pihole -a -p
Enter New Password (Blank for no password): 
Confirm Password: 
  [✓] New password set

Das Passwort wird zur Anmeldung in der Pi-Hole-eigenen Weboberfläche benötigt.

Anpassung der PiVPN Konfiguration an Pi-Hole

Wir erinnern uns, dass wir bei der Installation von PiVPN als DNS-Server unseren eigenen Internet Router eingetragen hatten. Das war auch richtig, so lange PiVPN eigenständig gelaufen ist. Nun kommt Pi-Hole dazu und muss in die Linie der Namensauflösung eingeschleift werden. Wir müssen also PiVPN so umkonfigurieren, dass Pi-Hole als DNS-Server verwendet wird. Oder – um es etwas genauer auszudrücken: PiVPN soll angeschlossenen VPN-Clients (also Smartphones) mitteilen, dass Pi-Hole künftig der richtige Ansprechpartner für DNS-Anfragen ist. Das erreichen wir durch eine Änderung in der PiVPN-Konfigurationsdatei:

sudo nano /etc/openvpn/server.conf

Hier suchen wir nach der Zeile:

push "dhcp-option DNS 192.168.0.1"

und ändern sie wie folgt:

push "dhcp-option DNS 10.8.0.1"

192.168.0.1 ist in meinem Beispiel die IP-Adresse des Internet Routers, die kann in anderen Netzen natürlich anders lauten. Und 10.8.0.1 ist das Tunnelinterface am Raspberry Pi. Die Adresse kann 1:1 so übernommen werden – PiVPN konfiguriert immer diese Adresse. Jetzt werden VPN-Clients alle DNS-Anfragen an Pi-Hole richten und Pi-Hole seinerseits versorgt sich dann beim Internet Router. Vor dem Speichern überprüfen wir sicherheitshalber, dass kein weiterer Eintrag mit push "dhcp-option DNS ... existiert.

Ergänzung des Tunnel-Interfaces in Pi-Hole

Bei der Installation von Pi-Hole (weiter oben in diesem Artikel) hatten wir als Interface den LAN, bzw WLAN-Anschluss des Raspberry Pi eingetragen. Das belassen wir auch so, aber wir müssen zusätzlich das Tunnelinterface ergänzen, damit Pi-Hole auch dort DNS-Anfragen filtert. Pi-Hole hat bei der Installation eine Konfigurationsdatei mit Namen 01-pihole.conf im Verzeichnis /etc/dnsmasq.d angelegt. Die wollen wir aber nicht direkt verändern, damit unsere Anpassung nicht durch künftige Updates oder Änderungen überschrieben wird. Wir legen also besser eine zweite eigene Konfigurationsdatei im selben Verzeichnis an:

sudo nano /etc/dnsmasq.d/02-my.conf

und schreiben folgende Zeile hinein:

interface=tun0

Damit sind alle Nacharbeiten abgeschlossen, wir müssen nur noch einen Reboot vornehmen, damit die Konfigurationsänderungen auch übernommen werden.

Weboberfläche von Pi-Hole

Pi-Hole

Pi-Hole bringt eine sehr umfangreiche Weboberfläche mit, die Statistiken und die aktuellen DNS-Anfragen anzeigt und es ermöglicht Einstellungen zu ändern und White- und Blacklists zu pflegen. Der Aufruf erfolgt im Browser unter dem Namen des Raspberry Pi (oder seiner IP-Adresse) mit angehängtem /admin/, also zum Beispiel:

http://raspi167/admin/

Unter Query Log sind dann die letzten DNS-Anfragen zu sehen, die über Pi-Hole gelaufen sind und in den Farben grün und rot, ob sie weitergeleitet oder blockiert wurden.

Pi-Hole Queries

Zu jedem Eintrag gibt es rechts einen Button, mit dem wir die entsprechende Domäne in unsere eigene White- bzw. Blacklist aufnehmen können.

Es ist nicht alles schlecht

Ich bin kein Freund des radikalen Unterdrückens von Werbung, weil sich meine eigenen Webseiten natürlich auch nur durch Werbung finanzieren. Wer das ähnlich sieht, der kann über die Pi-Hole Weboberfläche ein wenig experimentieren, welche Blocklists den eigenen Vorstellungen entsprechen. Zu diesem Zweck ist die Suchfunktion unter Tools – Query Lists hilfreich, mit der man die Blockierlisten nach bestimmten Domänennamen durchsuchen kann.

Pi-Hole Whitelist

Ich bin aber sehr wohl dagegen, dass das Surfen in Internet getrackt wird und große Internetunternehmen umfangreiche Daten über uns Bürger anhäufen. Aus diesem Grund ist diese Artikelserie entstanden. Aber auch hier gilt es zu differenzieren, denn Tracking ist nicht gleich Tracking. So verwendet zum Beispiel die Verwertungsgesellschaft Wort auch Tracking-Pixel. Die VG-Wort ist in Deutschland in etwa vergleichbar mit der GEMA für Musik, aber eben für Verlage, Schriftsteller und auch Web-Autoren. Die können über die VG-Wort Vergütungen für ihre Texte im Internet erhalten, allerdings nur, wenn die VG-Wort ermitteln kann, wie oft diese Texte (also Webseiten) im Jahr aufgerufen werden. Daten über die Besucher der Webseiten werden dabei nicht gespeichert. Trotzdem werten einige der Pi-Hole Blocklists die Erfassung der VG-Wort als Tracking, was technisch ja durchaus stimmen mag. Als Anwender von Pi-Hole kann man dem abhelfen, in dem man selbst eine Whitelist anlegt. Zum Beispiel mit den neun Servern der VG-Wort, wie ich das in dem Beispiel gemacht habe.

Weitere Artikel in dieser Kategorie:

34 Kommentare

  1. Anonymous

    Hallo,

    und erstmal danke für die Anleitungen. Funktionieren tut alles.

    Ich habe das Handy dauerhaft über PiVPN verbunden, da fast jede App mit Trackingcode verseucht ist. Die DNS-Anfragen laufen auch ordnungsgemäß im PiHole auf und werden gefiltert.

    Allerdings wird mir die Statistik ziemlich versaut, weil ich minütlich mehrere hundert Querys für meinen DynDNS-Anbieter drin stehen habe.

    Habe ich etwas falsch konfiguriert, oder ist das zwangsweise so, dass jedes VPN-Paket eine eigene DNS-Anfrage stellt?

    Oder hängt es damit zusammen, dass das VPN über TLS anstelle von UDP läuft und TLS für jedes Paket eine eigene DNS-Anfrage stellt?

  2. Helmut (Beitrag Autor)

    Dyn-DNS-Anfragen sollten überhaupt nicht bei PiHole ankommen. DNS steht vor dem Tunnelaufbau und PiHole kommt erst ins Spiel, wenn der Tunnel bereits steht.

  3. kaschmir

    Guter Artikel und klasse Projekt!
    Habe mal meinen Raspberry 3 mit Pihole installiert und dazu eine Videoanleitung veröffentlicht:

    Installation:
    https://devtube.dev-wiki.de/video-channels/pihole_01/videos

    Inbetriebnahme:
    https://devtube.dev-wiki.de/video-channels/pihole_02/videos

    Gruß Dr. Varut Kaschmir

  4. Helmut (Beitrag Autor)

    Schön gemachte Videos – vielen Dank.

  5. w-man

    Moin Helmut,

    Deine Tuts sind klasse, aber bei der Installation von pihole kommt immer die Meldung, dass DNS nicht läuft. An welcher Schraube muss ich drehen?

    Gruß
    w-man

  6. Helmut (Beitrag Autor)

    Kommt mir bekannt vor. Schau mal, ob Du nicht in diesem Artikel eine Lösung für Dein Problem findest: https://blog.helmutkarger.de/raspberry-pi-vpn-teil-12-tipps-tricks/.

  7. w-man

    Nee, leider nicht. Werde das hier https://blog.wuermkanal.de/pi-hole-tipps/ mal versuchen (Fehler bei dnsmasq beheben) und gebe dann Rückmeldung.
    Trotzdem erstmal vielen Dank!

  8. Helmut (Beitrag Autor)

    Kannst Du probieren. Wenn der Fehler, den Du beschreibst, aber bereits aufgetreten ist, ist mir nichts anderes übrig geblieben, als den Raspberry Pi von Grund auf neu aufzusetzen.

  9. w-man

    Er kann kein Socket für 10.99.99.1 anlegen. Was immer 10.99.99.1 auch sein mag.
    Ich lass es bleiben…

  10. Helmut (Beitrag Autor)

    Leider ist Deine Fehlerbeschreibung ein bisschen dünn. Hast Du denn nun den Raspberry Pi neu aufgesetzt? Also beginnend mit der Beschreibung der SD-Karte.

  11. w-man

    Das ist die Fehlermeldung von dnsmasq, neu aufgessetzt habe ich ihn noch nicht. Es läuft dort nur motion, sonst nix.
    Aber was ist das für eine IP?

  12. Helmut (Beitrag Autor)

    Die IP sieht nicht nach PiVPN aus, schau mal, was Dein Pi per DHCP zugeordnet bekommt. Aber wie auch immer, ich kann mich nur wiederholen, die Fehlermeldung bei der Pi-Hole Installation, dass DNS nicht läuft ist mir auch begegnet. Dabei hatte sich Pi-Hole das DNS wegkonfiguriert. Ich habe keine Möglichkeit gefunden, das zu beheben und kann nur empfehlen, eine komplette Neuinstallation beginnend bei Artikel 4 vorzunehmen. Und dabei auf den Punkt zu achten, der zu diesem Fehler führen kann (Interfaceauswahl, wie in Artikel 9 beschrieben).

  13. w-man

    Der Pi bekommt von der Fritzbox ’ne feste IP zugewiesen. PiVPN ist nicht installiert.

  14. Helmut (Beitrag Autor)

    Oh, das wusste ich nicht. Wenn Du Pi-Hole nicht mit PiVPN nutzt, dann ist meine Anleitung natürlich nur eingeschränkt für Dich brauchbar. Dann ist die Ursache Deines Problems natürlich auch nicht die Auswahl des Tunnelinterfaces bei der Pi-Hole Installation.

  15. Errut

    Habe nach Anleitung PIVPN auf RPI 3B mit Raspian Buster installiert und das Profil xxx.ovpn erzeugt, leider weiß ich jetzt nicht wie man dieses Profil in einen Openvpn-Client auf einer Dreambox 920 integriert.Auf meinem Handy habe ich das ausprobiert – ohne Probleme.
    Danke

  16. Helmut (Beitrag Autor)

    Prima, dass es am Handy funktioniert.
    Wenn ich richtig gegoogelt hab, dann ist eine Dreambox 920 ein digitaler Receiver für UHD und HD TV- und Radioprogramme. Hängt das Ding allein im Internet, so dass es eine VPN-Verbindung brauchen könnte?
    Wenn es dafür einen OpenVPN-Client gibt, dann müsste sich in den die xxx.ovpn Datei doch importieren lassen. Falls nein, müsstest Du das, was in der Datei steht, von Hand im OpenVPN-Client einstellen, was ein bisschen aufwändig werden könnte.

  17. errut

    Hallo, danke für die Rückmeldung. Nein ,die Dreambox hängt im gleichen Netzwerk, wollte meine Konstruktion nur ausprobieren, bevor ich woanders die Dreambox ranhänge.

  18. Christian

    Hallo,
    ich habe Heute den OpenVPN eingerichtet (nach Anleitung).
    Hat auch funktioniert nun wollte ich danach Pihole installieren.
    Leider bekomme ich immer wenn ich den Befehl zur Installation eingebe
    (curl -sSL https://install.pi-hole.net | bash) folgende Meldung
    ( Could not resolve host: install.pi-hole.net).
    Kann mir Bitte einer helfen.

  19. Helmut (Beitrag Autor)

    Klingt nach einem Problem mit der Namensauflösung. Kommst Du denn mit Deinem Raspberry Pi ins Internet?

  20. Christian

    Hallo,
    nein komme nicht ins Internet.
    Ich habe mich dann an die Tipps & Tricks gehalten und das ganze in umgekehrter Reihnfolge installiert.
    Jetzt funktioniert es.

    Noch mal vielen Dank für das Tutorial.

  21. Helmut (Beitrag Autor)

    Genau, dann bist Du auf den Fehler gelaufen, den ich bei Tipps & Tricks beschrieben habe. Die Ursache war bei mir, dass ich das Tunnelinterface tun0 für Pi-Hole ausgewählt hatte. Statt dessen muss man eth0 oder wlan0 nehmen. Dann sollte die Installation ohne Fehler durchlaufen.

  22. Mr. AtiX

    Toller Beitrag, vielen Dank.
    Ich möchte gerne nur PiHole installieren. VPN+DDNS wird bei mir vom Router bzw. der zentralen Firewall gemanaged. Eine anderweitige Nutzung/Integration habe ich nicht geplant.

    Leider vermisse ich einen Teil, der nirgends erwähnt wurde: hostap auf dem RasPi. Könntet ihr bitte etwas dazu in dieses supertolle Tutorial aufnehmen?

    Avisiert habe ich folgendes:
    Die Clients (Smartphones/SmartTV+Kodi/IoT-Devices) sollen über wlan0 zugreifen. Nur so ist sichergestellt, dass sich nichts vorbeischleicht oder vorbei gerouted wird und zwangsläufig den RasPi am eth0 passieren muss. Der gefilterte Outbound-Traffic wird dann entsprechend zum Router (ins LAN, zur Proxy, zum NAS, ins Subnet etc.) weitergeleitet/gerouted.

    Dank+Gruß

  23. Helmut (Beitrag Autor)

    Wenn ich richtig gegoogelt hab, dann macht hostAP aus dem Raspberry Pi einen WLAN-Accesspoint. Das kann man natürlich machen, für eine PiHole Infrastruktur ist das meiner Meinung nach aber überdimensioniert und unnötig. PiHole kümmert sich nur um die Namensauflösung und deshalb reicht es, DNS über PiHole zu leiten. Das kannst Du beispielsweise an der FritzBox einstellen, dass die Clients als DNS-Server den PiHole Rechner propagiert bekommen. Mehr braucht es nicht.

  24. Mr. AtiX

    Wieso soll das überdimensioniert und gar unnötig sein?

    Nehmen wir mal an, wir haben 2 Netzwerksegmente, klassisch in jedem Zuhause. Nennen wir sie rot (Gateway ins Internet) und grün (das lokale LAN).
    Nach dem sich der DSL-Router (stroh dumm) um die Verbindungen ins Internet kümmert, bleibt nichts was einen gesicherten Zugriff ins LAN regelt. So richtig DNS ins LAN macht er ja nicht.
    Auf die FritzBox Kindersicherung gehe ich, mit Grund, nicht ein. Ebenso auf die großteils, zu nichts gebrauchende, isolierte Umgebung (das Gastnetzwerk).

    Der Raspberry Pi hat ja LAN+WiFi. Hier kommt hostap ins Spiel, er generiert einen weiteren Accesspoint. Dieser lässt sich anhand ACLs nicht nur Gerätespezifisch einrichten (verbieten/gestatten), sondern auch gleich mit einem Filter oder Proxy versehen. Was dann Richtung Internet geht, ist kontrolliert und gefiltert. Ebenso der Zugriff z.B. auf das NAS im LAN.

    Nicht jedes Gerät benötigt Zugang ins Internet und die Cloud. Andere sollen hingegen vom LAN fernbleiben.

    Nun ja, in der heutigen Zeit ist es modern von Bügeleisen bis Auto an den Router zu klemmen. Dafür ist er ja schließlich da :)
    Und das nennt man schlicht und einfach lokales Netzwerk.

    Ich weiss nicht was ihr für Geräte so betreibt oder herumstehen habt. Bei mir sind es ausgenommen der Kategorie PC und Smartphone, noch SmartTV und lokale Streaminggeräte, IoT Devices und Mikrocontroller-Basteleien, SmartHome Devices und Sprachassistenten, usw.

  25. Helmut (Beitrag Autor)

    Wenn Ihnen eine handelsübliche Fritzbox als DSL-Router sicherheitsmäßig nicht genügt, dann können Sie freilich auch ein mehrstufiges Konzept realisieren. Aber ich sehe nicht, warum das nötig sein sollte. Ein normales Heimnetzwerk auch mit Smart-TV und IoT-Geräten ist mit einer vernünftig konfigurierten FritzBox gut abgesichert. Zusammen mit PiVPN auch als VPN-Zugang und mit Pi-Hole als Trackingschutz.

  26. Wolfgang

    Hallo Helmut.

    Vielen Dank für diese tolle Anleitung. Ich habe alles wie beschrieben installiert. Der Pi läuft tadelos, Pi-Hole ebenso. Außer Pi-Hole ist auf dem Raspberry nichts Installiert, auch kein VPN.

    Zur Einstellung nutze ich die grafische Oberfläche am Windows-PC. Dort wird das Dashboard angezeigt, Änderungen werden übernommen.

    Pi-Hole sitzt im Netzwerk meines Asus-Routers am nicht gemanagten Switch. Dieses Netz läuft problemlos mit Vypr-VPN auf dem Router hinter einer Fritz-Box.

    Doch ich habe folgendes Problem:

    Pi-Hole arbeitet zwar, blockiert aber so gut wie nix.

    Selbst gesetzte Einträge auf der Blacklist, z.B. Facebook.com, werden ignoriert.

    In meinem Asus RT-Router habe ich die IP des Pi-Hole als DNS-Server1 eingetragen.Dazu als Server2 die IP meines VPN-Anbieters, Vypr-VPN.

    Nehme ich nun die Vypr-IP raus, so dass nur nur der Pi-Hole im Router hinterlegt ist, habe ich keinen Internetzugang mehr.

    Eine Änderung beim Upstream DNS Server des Pi Hole, zb. auf die IP`s von Vypr bringt auch keinen Erfolg, egal ob mit oder ohne Haken bei open dns.

    Was mache ich falsch?

  27. Helmut (Beitrag Autor)

    Hallo Wolfgang,

    nachdem Deine Konfiguration anders ist, als die in meiner Artikelserie beschriebene, kann ich dazu nur schwer einen Rat geben. Aber wie es aussieht scheint die DNS-Kette nicht zu stimmen. Deine Clients, die durch Pi-Hole geschützt werden sollen, müssen Pi-Hole als DNS-Server bekannt gemacht bekommen und nur Pi-Hole. Zum Beispiel per DHCP. Pi-Hole selbst muss dann einen öffentlichen DNS-Server als Upstream DNS eingetragen bekommen. Oder den eigenen Internet Router – aber dann darf dieser natürlich nicht wieder auf Pi-Hole zurück verweisen. Ich würde folgendermaßen vorgehen:
    – Stelle fest, woher Deine Clients die Information über ihren DNS-Server bekommen. Typischerweise ist das per DHCP vom Internet Router
    – Schau am Internet Router, wie Du dort DHCP beeinflussen kannst, so dass Pi-Hole als DNS-Server bekannt gegeben wird
    – Schau, dass Pi-Hole einen DNS-Server im Internet eingetragen bekommt, oder den Internet Router. Der darf aber nicht auf Pi-Hole zurückverweisen, sondern nur ins Internet.

    Wenn es per DHCP nicht funktioniert, wäre eine alternative Möglichkeit folgende:
    – Die Clients behalten den Internet Router als DNS-Server.
    – Der Internet Router benutzt als DNS Upstream Pi-Hole (und ausschließlich Pi-Hole).
    – Pi-Hole bekommt als Upstream DNS einen oder mehrere DNS-Server im Internet, aber keinesfalls den Internet Router.

    Diese beiden alternativen Methoden bitte nicht mischen.

    Dein Fall kommt hier zwar nicht vor, aber vielleicht helfen diese Schaubilder beim Verständnis.

  28. Bernhard

    Hallo Hr.Karger!

    Habe PiVPN und Pi-Hole nach Ihren wirklich erstklassigen Anleitungen in Betrieb genommen, alles funktioniert tadellos.

    Allerdings tritt bei mir folgendes Problem auf (habe auch nach stundenlanger Internetrecherge keine ähnlichen Fälle gefunden):

    1. Beim Windows PC keine Probleme, bei jedem Neustart läuft auch OpenVPN Connect automatisch wieder an.

    2. Sobald man eines der mobilen Apple-Geräte (siehe unten) ausschaltet-einschaltet, neu startet oder auch nur das VPN in der App OpenVPN Version 3.1.2.(3096) bzw. Einstellungen ausschaltet und wieder einschaltet,wird keine neue Verbindung zum VPN-Server aufgebaut. Funktioniert auch nicht nach neuerlicher Eingabe des Passwortes!

    Auch das Löschen des Profils und neuerlicher Import der „client****.opvn“-Datei mit Passworteingabe bringt nichts!

    Die einzige Methode die greift, ist ein komplettes Löschen und neu installieren der App
    am jeweiligem Endgerät, Import der .opvn-Datei und Passworteingabe. Alles läuft wieder bis zum nächsten Ausschalten!!!

    Nur die „Täglich grüßt das Murmeltier“-Methode ist sehr mühsam und sicher auch nicht im Sinne des Erfinders!!!

    Bei Eingabe von pivpn -l am Raspi werden alle Clients als „valid“ angezeigt.

    Weiterer Schönheitsfehler wahrscheinlich „Apple-seitig“: Das „VPN“-Symbol wird in der Statusleiste nur angezeigt, wenn man sich in einem WLAN befindet. Bei eingeloggtem 3G, LTE … erfolgt keine Anzeige, obwohl die VPN-Verbindung besteht (z.B.
    Eingabe der IP des eigenen Routers 192.168.0.1. und damit Zugriff auf diesen)!

    Habe kein Android-Gerät als Vergleichsobjekt.

    Konfiguration:
    Raspberry Pi 4 mit Raspbian Buster (Version: February 2020 Release date: 2020-02-13 Kernel version: 4.19)
    iPhone SE (iOS 13.4.1), iPhone SE (iOS 13.3.1), iPad Mini 2 (iOS 12.4.6), iPad Air 2 (iOS 13.3.1), PC (Windows 10)

    Ich hoffe Sie haben eine Idee, die mir weiterhilft!

    Danke und beste Grüße.

  29. Helmut (Beitrag Autor)

    Hallo Bernhard,

    wenn es von einem Windowshobel als VPN-Client aus geht, dann dürfte serverseitig alles in Ordnung sein. Bei beiden geschilderten Eigenheiten tippe ich auf die VPN Client App am Smartphone. Mir sind bei meinen Tests auch seltsame Dinge begegnet, allerdings nicht diese hier. Ich würde schauen, ob es für iOS nicht auch andere VPN Client Apps gibt – unter Android sind es ja auch mindestens drei. Vielleicht läuft eine andere App besser. Bei Erfolg bitte gerne hier posten.

    Gutes Gelingen

  30. Bernhard

    Hallo Helmut,

    danke für den Input. Habe eine iOS-App gefunden: „Passepartout-OpenVPN Client“ die hat einige Bezahl-Anbieter zur Auswahl eben aber auch OpenVPN mit dem eigenem Server und damit funkts jetzt.

    Danke und beste Grüße.

  31. Helmut (Beitrag Autor)

    Super, Glückwunsch!

  32. Chris

    Hallo,

    vielen Dank für die Anleitung – mit Abstand die beste im Netz. Mich würde noch interessieren, wie ich die ufw-Firewall so konfigurieren kann, dass ich sie gleichzeitig mit PiVPN verwenden kann. Ich habe dazu diverse Artikel gefunden, aber keine der Lösungen funktioniert zuverlässig.

    Desweiteren wäre noch eine Anleitung hilfreich, wie denn nun z.B. von einem PC oder allgemein mit dem WLAN verbundene Geräte über den PiHole geschleift werden können.

    Danke und Gruß

  33. Mr.Noname

    Leider funktioniert die Installation nach dem Punkt:

    sudo nano /etc/openvpn/server.conf

    nicht mehr. Die Datei ist leer, was kann ich tun?

  34. Helmut (Beitrag Autor)

    Wenn es diese Datei noch nicht gibt, dann hast Du keine bestehende OpenVPN Installation. Wenn das beabsichtigt ist, dann brauchst Du OpenVPN natürlich auch nicht für Pi-Hole konfigurieren.

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.