Pi-Hole – Werbeblocker für das Heimnetz

Ich möchte euch dieses spannende kleine Tool namens Pi-Hole nicht vorenthalten und beschreibe in diesem Beitrag wie ihr in eurem Heimnetz einen auf DNS basierten Werbeblocker (oder auch Adblocker genannt) installieren könnt. Pi-Hole schützt dabei euer komplettes Heimnetz vor Werbung.

Browser Addons wie Adblock Plus oder uBlock Origin werden mit dieser Methode hinfällig. Auch Handys oder Tablets sind automatisch von Werbung befreit.

Block Ads

Pi-Hole wurde für einen Raspberry Pi entwickelt, läuft aber nicht nur unter Raspbian oder Xbian, sondern auch auf anderen Debian Distributionen ohne weitere Probleme.

Was ist das?

Im Grunde besteht Pi-Hole es aus einem Dnsmasq und Lighttpd Dienst.

Pi-Hole füttert Dnsmasq mit einer Liste von über 100.000 Domainnamen die Werbung ausliefern oder Telemetriedaten von Benutzern sammeln möchten. Ein Lighttpd Webserver wird installiert um Statistiken und Query Logs anschaulich darzustellen.

pi-hole_dashboard

Wie funktioniert das?

Die PI-Hole IP-Adresse wird mittels DHCP automatisch oder manuell auf den Clients konfiguriert. Ab sofort geht jede DNS Anfrage wie z.B. https://adminforge.de nicht mehr wie gewohnt zum DNS Server eures Providers sondern zum Pi-Hole Server in eurem Heimnetz. Dort wird die aufgerufene Domain sowie alle verlinkten Domains mit einer Liste an Domainnamen verglichen und bei Match direkt auf dem Pi-Hole Server geblockt. Alle gültigen Anfragen werden wie gewohnt an den Client ausgeliefert.

Punkt 1: Installation von Pi-Hole

Ich gehe davon aus euer Raspbian oder Debian Betriebssystem ist installiert und ihr kennt euer Netzwerkinterface (meist wlan0 oder eth0).

Installiert zuerst curl:

apt-get install curl

Nun kann auch schon die Pi-Hole Installation losgehen:

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

Im nachfolgenden Installationsmenü immer Weiter drücken bis das Netzwerkinterface zur Asuwahl steht.

Dort euer genutztes Interface auswählen wo eure IP-Adresse konfiguriert ist wlan0 oder eth0.
Nun könnt ihr DNS Server festlegen, wählt Custom aus und fügt die DNS IP-Adressen aus dem Router ein.

Beispiel FRITZ!Box:
Unter http://fritz.box im Menüpunkt Internet -> Online-Monitor -> Genutzte DNS-Server findet ihr zwei DNS IP-Adressen die ihr im Pi-Hole hinterlegt.

Drückt <Weiter> bis die Installation abgeschlossen ist.

Punkt 2: Webinterface aufrufen

Im Browser kann nun das Admin Webinterface aufgerufen werden.

http://192.168.1.x/admin or http://pi.hole/admin

Punkt 3: Lokaler DNS-Server im Router einstellen

Nun könnt ihr den Pi-Hole im Heimnetz als DNS-Server eintragen. Ich führe das anhand eines Beispiel-Routers auf.

Beispiel FRITZ!Box:
Unter http://fritz.box im Menüpunkt Heimnetz -> Heimnetzübersicht -> Netzwerkeinstellungen scrollt herunter auf IPv4-Adressen und legt in der Zeile Lokaler DNS-Server die IP-Adresse eures Pi-Hole Servers fest.

Nach dem Klick auf OK könnt ihr das WLAN am Handy oder Rechner aus- und wieder einschalten und Werbefrei surfen.

Punkt 4: Cronjob anpassen (veraltet !)

In der Datei /etc/cron.d/pihole kommentieren wir Zeile 22 ein und aktivieren somit ein wöchentliches Update von Pi-Hole.
Ein manuelles Update ist mit pihole -up möglich.

# Pi-hole: A black hole for Internet advertisements
# (c) 2015, 2016 by Jacob Salmela
# Network-wide ad blocking via your Raspberry Pi
# http://pi-hole.net
# Updates ad sources every week
#
# Pi-hole is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This file is under source-control of the Pi-hole installation and update
# scripts, any changes made to this file will be overwritten when the softare
# is updated or re-installed. Please make any changes to the appropriate crontab
# or other cron file snippets.

# Pi-hole: Update the ad sources once a week on Sunday at 01:59
#          Download any updates from the adlists
59 1    * * 7   root    /usr/local/bin/pihole updateGravity

# Pi-hole: Update Pi-hole! Uncomment to enable auto update
30 2    * * 7   root    /usr/local/bin/pihole updatePihole

# Pi-hole: Flush the log daily at 00:00 so it doesn't get out of control
#          Stats will be viewable in the Web interface thanks to the cron job above
00 00   * * *   root    /usr/local/bin/pihole flush

Danach starten wir den Crond neu.

service cron restart

Punkt 5: Listen hinzufügen (Update 15. März 2019)

Wir holen uns die folgende Datei von der firebog.net Webseite:

wget "https://v.firebog.net/hosts/lists.php?type=nocross" -O /etc/pihole/adlists.list

Danach lesen wir die Listen mit folgendem Befehl ein:

pihole -g

Nun sollten wir etwas über 1 Millionen Domains in der Blockliste haben.

Punkt 6: Munin Plugin (optional)

Eine kleine Eigenkreation um auch über einen längeren Zeitraum grafisch alles festzuhalten. (nicht schön aber funktionell)

Pi-Hole Stats:

#!/bin/sh

# Munin plugin displaying Pi-Hole Stats
# by Dominion https://adminforge.de
# v1.0

case $1 in
   config)
        cat <<'EOM'
graph_title Pi-Hole Stats
graph_info Displays details of Pi-hole
graph_vlabel pi-hole
graph_category pi-hole
blocked.label Ads Blocked
blocked.info Number of Ads Blocked.
query.label Query
query.info Number of Query look ups.
forwarded.label Forwarded
forwarded.info Number of forwarded look ups.
cached.label Cached
cached.info Number of cached look ups.
reply.label Reply
reply.info Number of reply look ups.
EOM
        exit 0;;
esac

awk 'match($0,/ \/etc\/pihole\/gravity.list | query\[.*\] | forwarded | cached | reply /){y=substr($0,RSTART,RLENGTH);if(y ~ /^ query/)y="query";a[y]++} END{for (x in a) {y=x;gsub(/^[ \t]+/,"",x);gsub(/[ \t]+$/,"",x);if(x=="/etc/pihole/gravity.list")x="blocked";print x ".value " a[y]}}' /var/log/pihole.log

Pi-Hole Domains Being Blocked:

#!/bin/sh

# Munin plugin displaying Pi-Hole Domains Being Blocked
# by Dominion https://adminforge.de
# v1.0

case $1 in
   config)
        cat <<'EOM'
graph_title Pi-Hole Domains Being Blocked
graph_info Displays details of Pi-hole
graph_vlabel pi-hole domains
graph_category pi-hole
domainsblocked.label Domains Being Blocked
domainsblocked.info Number of Domains Being Blocked.
EOM
        exit 0;;
esac

cat /etc/pihole/gravity.list | wc -l | awk -F "[ \t\n/,]+" '{ print "domainsblocked.value "$1""; exit; }'

Weitere nützliche Anleitungen:

 

Dominion

Dominion

Linux Systemadministrator

Das könnte Dich auch interessieren …

15 Antworten

  1. Avatar Stefan sagt:

    Dickes Dankeschön für das Munin-Plugin! Das Admin-Tool von Pihole ist sehr gut, aber jetzt passt alles perfekt in mein Munin-System für das gesamte LAN

  2. Avatar steubi sagt:

    Geht das auch wenn Librelec installeirt ist?

  3. Avatar Artur sagt:

    Danke für deinen Artikel, es ist alles sehr verständlich beschrieben 🙂
    Gruß Artur

  4. Avatar King Tavor sagt:

    Ja, und es „convertiert“ IPv6 DNS zu IPv4 DNS was praktisch ist wen man noch Windows Server 2003 im einsatz hat aber schon bei Windows 10 angekommen ist 🙂

  5. Avatar Marty sagt:

    Danke für die Anleitung.

    Ich habe leider eine alte Fritzbox ( 7240) und dadurch kann ich Punkt 3 nicht befolgen.

    Heimnetz -> Heimnetzübersicht -> Netzwerkeinstellungen ->IPv4 (Der Pfad ist bei mir auch etwas anders)
    „Lokaler DNS-Server“ taucht da leider nicht auf. Zwar könnte ich bei jedem Gerät alles mit der Hand ändern, aber das ist ja auch nicht so schön. Gibt es da eine einfache Lösung?

  6. Avatar Bobba sagt:

    Gibt es eine kleines Howto für die Munin-Stats? 🙂

  7. Avatar Perflyst sagt:

    Hallo, wie genau installiert man das Munin Plugin?
    Einfach die Python Skripte in eine Datei und fertig oder was genau muss man machen?
    Ne kleine Erklärung wäre super! 😉

  8. Avatar Alex sagt:

    Hallo,
    weiß jemand wie man bei der FritzBox den PiHole als DNS Server einrichten kann, wenn man eine Verbindung zu der FritzBox per VPN herstellt? Bei VPN fungiert immer die FritzBox als DNS Server.

    • Dominion Dominion sagt:

      Hallo Alex,

      je nach Betriebssystem anders. Unter Android bei der VPN Einstellung auf „Erweiterte Optionen“ klicken und dort unter DNS die Pi-Hole IP Adresse eintragen.

      Gruß,
      Dominion

  9. Avatar Jochen sagt:

    Kleiner Hinweis für alle, die keinen DNS-Server im Router einstellen können: Pihole kann einen eigenen DHCP-Server liefern. Ich habe einfach im Router den DHCP-Server ausgeschaltet und im Pihole den DHCP-Server mit dem selben Adressbereich aktiviert. Funktioniert wunderbar.
    Ich wollte schon meinen simplen O2-Router ersetzen. Das ist nun gar nicht nötig.

  10. Avatar Anonymous sagt:

    There may be noticeably a bundle to find out about this. I assume you made sure nice factors in features also.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.