21x9.org | System Administration | Home Automation | Smart Home
11.07.2023

Lokaler DNS Server mit Pi-Hole

Pi-Hole1 ist ein DNS-Forwarder mit eingebauter Filterfunktion. Hauptziel ist es Werbung durch sog. Blackhole-Routing2 zu filtern.

Installation

Die Inbetriebnahme kann sehr schnell mittels Docker erfolgen (die Installation von Docker erfolgt einfach durch apt install docker docker-compose):

/opt/docker/pihole/docker-compose.yml:

version: '3'  
services:  
    pihole:  
        restart: always  
        image: pihole/pihole:latest  
        network_mode: host  
        environment:  
            - TZ=Europe/Berlin  
            - WEBPASSWORD=<YOURSECRETPASSWORD>
            - VIRTUAL_HOSTAA=pi.hole  
        volumes:  
            - /docker/pi-hole/etc/pihole:/etc/pihole  
            - /docker/pi-hole/dnsmasq.d/pihole:/etc/dnsmasq.d  
            - /docker/pi-hole/etc/lighttpd:/etc/lighttpd  
        cap_add:  
            - NET_ADMIN  
            - SYS_NICE

Konfiguration

Die Weboberfläche von Pi-Hole ist erreichbar unter: http://<SERVERIP>:8000/admin/

Adlists

Pi-Hole liefert bereits eine Liste mit zu blockierenden Domains mit. Diese kann und sollte jedoch erweitert werden. Ich nutze derzeit folgende Listen:

  • https://adaway.org/hosts.txt
  • https://dbl.oisd.nl/basic/
  • https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt
  • https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt
  • https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
  • https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts
  • https://raw.githubusercontent.com/Perflyst/PiHoleBlocklist/master/AmazonFireTV.txt
  • https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
  • https://v.firebog.net/hosts/AdguardDNS.txt
  • https://v.firebog.net/hosts/Admiral.txt
  • https://v.firebog.net/hosts/Easylist.txt
  • https://v.firebog.net/hosts/Easyprivacy.txt
  • https://www.github.developerdan.com/hosts/lists/ads-and-tracking-extended.txt
  • https://www.github.developerdan.com/hosts/lists/amp-hosts-extended.txt
  • https://www.github.developerdan.com/hosts/lists/dating-services-extended.txt
  • https://www.github.developerdan.com/hosts/lists/facebook-extended.txt
  • https://www.github.developerdan.com/hosts/lists/tracking-aggressive-extended.txt

Settings / DNS

Pi-Hole löst DNS-Abfragen nicht selbst auf, sondern nutzt dazu Upstream-DNS-Server. Es werden diverse Anbieter unterstützt. Ich nutze folgende Einstellungen:

  • IPv4:
    • Quad9 (filtered, DNSSEC)
      • 9.9.9.9
      • 149.112.112.112
  • IPv6:
    • Quad9 (filtered, DNSSEC)
      • 2620:fe::fe
      • 2620:fe::9
  • Custom DNS 1 (IPv4)
    • 116.202.176.26

Wer stark auf Content-Delivery-Networks (CDNs) angewiesen ist und weniger Wert auf Privatsphäre legt, kann auch die ECS (Extended-Client-Subnet) Varianten von Quad 9 nutzen. Hierbei werden Teile der eigenen IP-Adresse übermittelt, damit das CDN den geografisch schnellsten Server zurück liefern kann.

Settings / DNS / Advanced DNS settings

Hier nutze ich folgende Einstellungen:

  • (x) Never forward non-FQDN A and AAAA queries
  • (x) Never forward reverse lookups for private IP ranges
  • (x) Use DNSSEC

Settings / DHCP

Ich nutze Pi-Hole auch als DHCP3, denn die Adminoberfläche lädt schneller als die meines Routers. Ich nutze hier, neben den obligatorischen Angaben zur IP-Range und Gateway, folgende Einstellungen:

  • (x) Enable DHCPv4 rapid commit (fast address assignment)
  • (x) Enable IPv6 support (SLAAC + RA)

Settings / Privacy

Da ich keine Statistiken, etc. benötige schalte ich die hierfür nötige Datenspeicherung ab:

  • (x) Anonymous mode: This disables basically everything except the live anonymous statistics

Router Einstellungen

An meinem Router muss ich nun natürlich DHCP abschalten. Damit alle meine Geräte die Pi-Hole-Instanz als DNS-Server nutzen, muss ich dessen IP-Adresse als DNS-Server (für IPv4 und IPv6) hinterlegen. Alternativ kann ich dies natürlich auch an meinen Geräten selbst einstellen, muss dies dann aber eben auch an jedem Gerät tun, statt einmalig, zentral am Router.

Update

Um Pi-Hole aktuell zu halten, wird jede Nacht mittels cronjob folgendes Script ausgeführt:

cd /opt/docker/pihole
/usr/bin/docker-compose exec pihole pihole -g
/usr/bin/docker-compose pull
/usr/bin/docker-compose up -d

  1. https://pi-hole.net ↩

  2. https://en.wikipedia.org/wiki/Black_hole_(networking) ↩

  3. https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol]-Server ↩

Tags: docker linux pi-hole dns dhcp docker-compose

Mehr

  • ZFS
  • Serverüberwachung mit checkmk
  • Auf ins Fediverse mit Firefish
  • Wildcard-Zertifikate mit letsencrypt, lexicon und dehydrated
  • Serververwaltung mit Ansible

Tags

docker linux pi-hole dns dhcp docker-compose

Archiv

  • Mar 2025 (2)
  • May 2024 (2)
  • Oct 2023 (1)
  • Aug 2023 (5)
  • Jul 2023 (31)

  • Ältere Einträge (95)

Feeds

Atom 1.0 RSS JSON
  • Datenschutz
  • Impressum
  • Archiv