Met Pi-hole blokkeer je advertenties en trackers in websites en apps op je hele thuisnetwerk. Je installeert de software op een Raspberry Pi of andere Linux-computer bij je thuis en stelt Pi-hole dan als dns-server in bij al je apparaten in huis.
Auteur: Koen Vervloesem
Het principe achter Pi-hole (https://pi-hole.net/) is eenvoudig. Je installeert het op een Raspberry Pi of andere Linux-computer en zorgt dat de computers in je thuisnetwerk je Pi-Hole als dns-server gebruiken. Via de dns-aanvragen worden dan advertenties, trackers en kwaadaardige websites geblokkeerd, ook in-app advertenties in je mobiele apps of advertenties op je smart-tv. Dat werkt met een zwarte lijst van domeinen die bekend staan om het aanleveren van dubieus materiaal. Pi-hole nestelt zich als proxy tussen de aanvrager en de dns-server en laat alleen de aanvragen door die niet op een zwarte lijst staan. Bij de andere aanvragen geeft Pi-hole het ongeldige adres 0.0.0.0 terug. De ontwikkelaars omschrijven Pi-hole als een “zwart gat voor internetadvertenties”.
Je kunt ook allerlei statistieken bekijken in de web interface, nakijken welke “phone home” dns-aanvragen je IoT-apparaten doen, specifieke blacklists of whitelists toevoegen, enzovoort. En als je weg van huis op je smartphone surft via een vpn-verbinding naar je huis, dan krijg je alle voordelen van Pi-Hole ook onderweg. In dit artikel installeren we Pi-hole, gaan we ermee aan de slag en tonen we je wat er nog allemaal mogelijk is, behalve advertenties en trackers blokkeren.
Ondanks de naam werkt Pi-hole niet uitsluitend op een Raspberry Pi. De software draait in principe op elke Linux-computer en vereist maar 512 Mbyte RAM en ongeveer 52 Mbyte schijfruimte. Er is officiële ondersteuning voor Raspbian, Debian, Ubuntu, Fedora en CentOS.
Op al deze besturingssystemen verloopt de installatie hetzelfde:
wget -O basic-install.sh https://install.pi-hole.net sudo bash basic-install.sh
Volg de instructies van het installatieprogramma. Kies een dns-provider uit de lijst of Custom om zelf de IP-adressen van dns-servers (of de dns-server van je router) in te voeren.
Daarna krijg je de vraag om te selecteren welke zwarte lijsten je wilt gebruiken. Standaard staan ze allemaal ingeschakeld, dat kun je gerust zo houden. IPv4 en IPv6 laat je het beste ook standaard allebei ingeschakeld.
Daarna waarschuwt het programma je dat het een vast IP-adres op je Pi instelt. Als je momenteel dhcp gebruikt voor de toekenning, stelt Pi-hole je huidige IP-adres in als vast adres. Voor de zekerheid ken je in je router het beste dit IP-adres ook vast toe aan het mac-adres van je Pi. Zo voorkom je problemen als je router ooit hetzelfde IP-adres aan een ander apparaat in je thuisnetwerk toekent.
Tot slot krijg je de vraag of je de web interface van Pi-hole wilt instellen. Kies de standaardkeuze ‘On’. Ook de volgende vragen om de webserver lighttpd te installeren en om dns-aanvragen te loggen, beantwoord je bevestigend. Voor de privacy modus kies je het beste ook de standaardoptie 0 (Show everything). Die kun je achteraf altijd nog veranderen als je niet alle informatie wilt loggen.
Na de installatie toont het script de URL http://IP/admin waarop je de beheerinterface van Pi-hole in je webbrowser kunt vinden. Noteer het bijbehorende wachtwoord dat je nodig hebt voor het beheerdersaccount. Je kunt op het dashboard al wat informatie over de dns-aanvragen van de lokale machine (de Pi zelf waarop Pi-hole staat) zien. Klik je in het menu links op ‘Login’ en voer je het wachtwoord in, dan krijg je toegang tot de instellingen.
Je kunt Pi-hole ook in een Docker-container draaien (https://github.com/pi-hole/docker-pi-hole/). Daardoor ben je er zeker van dat Pi-hole door zijn wijzigingen aan de netwerkconfiguratie niet interfereert met je besturingssysteem. En draai je het domotica-systeem Home Assistant al via Hass.io (https://www.home-assistant.io/hassio/), dan kun je in dit Docker-gebaseerde systeem ook een add-on met Pi-hole installeren. Klik daarvoor in de web interface van Home Assistant in het linkerpaneel op Hass.io, kies bovenaan voor ‘Add-on Store’ en klik dan bij ‘Community Hass.io Add-ons’ op ‘Pi-hole’ en dan op ‘Install’.
Pi-hole draait nu op je Pi en blokkeert al dns-aanvragen die vanaf je Pi vertrekken naar domeinen op één van de zwarte lijsten. Maar nu dien je er nog voor te zorgen dat ook de dns-aanvragen vanaf je andere apparaten gefilterd worden. Dat doe je door voor elk van je apparaten op je thuisnetwerk als dns-server je Pi in te stellen.
Gelukkig hoef je dat niet voor elk van je apparaten één voor één te doen: dat kan eenvoudig in de instellingen van de dhcp-server van je router. Mogelijk duurt het even voordat al je apparaten de nieuwe dns-server gebruiken. De lokale dns-cache legen kan het proces versnellen. In Ubuntu doe je dat met de volgende twee opdrachten:
sudo /etc/init.d/dns-clean sudo /etc/init.d/networking force-reload
Vanaf nu zou je in het dashboard van Pi-hole de aanvragen en geblokkeerde aanvragen moeten zien binnenkomen. Als je slechts één specifiek apparaat wilt laten filteren door Pi-hole, stel dan alleen op dat apparaat Pi-hole als dns-server in.
Als de dhpc-server van je router geen ondersteuning biedt om een dns-server in te stellen, dan kun je altijd de ingebouwde dhcp-server van Pi-hole gebruiken voor je netwerk. Die schakel je in Settings / DHCP in. Schakel dan wel eerst de dhcp-server van je router uit, want anders conflicteren beide met elkaar.
In het dashboard krijg je een mooi overzicht met bovenaan de belangrijkste cijfers: het totaal aantal dns-aanvragen, het aantal clients, het aantal geblokkeerde aanvragen, het percentage geblokkeerde aanvragen en het aantal domeinen op de zwarte lijst. Daaronder krijg je over de periode van de laatste 24 uur grafieken met het aantal aanvragen en de activiteit van de verschillende clients. De schijfdiagrammen eronder tonen de verdeling van de types dns-aanvragen en door wie de aanvragen beantwoord zijn (de zwarte lijst, de cache van Pi-hole of de upstream dns-servers). Tot slot krijg je ook enkele tabellen te zien met de top tien van toegelaten en geblokkeerde domeinen en van de actiefste clients.
Naast het dashboard zal je ook vaak de pagina Query Log raadplegen. Die toont elke dns-aanvraag en de status (doorgestuurd, uit de cache gehaald, geblokkeerd). De zoekfunctie is handig als je wilt weten wie welke dns-aanvraag heeft gedaan. En met een klik op ‘Blacklist’ of ‘Whitelist’ in de rechterkolom zet je het desbetreffende domein op de zwarte respectievelijk witte lijst.
Het onderdeel Long term data laat je toe om grafieken, logs of statistieken van een specifieke periode te bekijken. Handig als er iets aan je netwerk of je clients veranderd is en je wilt bekijken wat voor impact dat heeft gehad. Op de pagina’s Whitelist en Blacklist voeg je eenvoudig manueel een domein toe aan je witte lijst respectievelijk zwarte lijst. De domeinen die je met de knoppen in de Query Log hebt toegevoegd, verschijnen hier ook. En als je voor een specifieke periode het filteren van dns-aanvragen door Pi-hole wilt uitschakelen, doe je dat op de pagina Disable.
Onder het menu Tools vind je nog wat hulpmiddelen voor Pi-hole. Met ‘Update Gravity’ update je je zwarte lijst met de nieuwste online beschikbare lijsten. Sowieso voert Pi-hole wekelijks deze update uit. In Query Lists kun je opvragen of een specifiek domein zich in je zwarte lijst bevindt. En in Tail pihole.log volg je live de dns-aanvragen en de reacties die Pi-hole geeft. Handig om problemen te debuggen.
Onder Settings / DNS vind je nog enkele handige dns-instellingen. Allereerst kun je hier nog je upstream dns-servers veranderen die je tijdens de installatie van Pi-hole ingesteld hebt. Onderaan kun je bij de geavanceerde instellingen ‘DNSSEC’ inschakelen. Daarmee valideert Pi-hole bij alle dns-aanvragen naar de upstream dns-server of de door de dns-server teruggestuurde informatie wel een correcte digitale handtekening heeft.
DNSSEC inschakelen, geeft je wat meer zekerheid dat niemand via gemanipuleerde dns-informatie je probeert naar kwaadaardige websites om te leiden. Je dient dan wel als upstream dns-server een server te kiezen die DNSSEC ondersteunt. Van de in de standaardlijst opgenomen dns-servers zijn dat Google, Cloudflare, DNS.WATCH en Quad9. Merk op dat DNSSEC inschakelen je logbestanden heel wat groter maakt. Nadat je Use DNSSEC aangevinkt hebt, klik je onderaan rechts op ‘Save’.
Bezoek daarna eens een website die zijn domein met DNSSEC gevalideerd heeft, zoals mozilla.org. In pihole.log zie je dan ‘validation result is SECURE’. Bij andere domeinen zie je ‘validation result is INSECURE’. Overigens vind je nu ook in de Query Log in de kolom Status bij de aanvragen die Pi-hole naar een upstream dns-server doorstuurt de melding SECURE in het groen bij een met DNSSEC gevalideerd domein en INSECURE in het geel voor andere domeinen.
Je vindt op internet allerlei zwarte lijsten die je eenvoudig aan Pi-hole toevoegt. Op de website The Big Blocklist Collection (https://firebog.net/) vind je een lijst met tientallen zwarte lijsten. Een lijst waar een vinkje bij staat zal waarschijnlijk geen problemen opleveren. Staat er een kruisje bij een lijst, dan blokkeert die waarschijnlijk ook nuttige domeinen en zal je dus regelmatig een domein op je whitelist moeten plaatsen om nog te kunnen surfen.
Op die pagina vind je zwarte lijsten voor allerlei doeleinden: verdachte domeinen, advertentiedomeinen, trackingdomeinen, kwaadaardige domeinen, pornodomeinen, coinjackingdomeinen, enz. Voeg ze niet allemaal toe, want er zitten ook veel dubbele in als je meerdere domeinen toevoegt. Als je uit elke categorie een domein met een vinkje toevoegt, dan zit je al vrij goed.
Als je liever zelf geen keuzes maakt, kun je ook de lijst https://dbl.oisd.nl/ toevoegen van het Nederlandse Pi-hole-communitylid sjhgvr. Die heeft alle zwarte lijsten die hij vond toegevoegd, net zolang totdat het geen problemen meer opleverde met normaal surfen. Hij updatet zijn lijst dagelijks. Tijdens de redactiesluiting bevatte de lijst bijna 1,5 miljoen domeinen. Na installatie van de lijst in Pi-hole ging het aantal geblokkeerde domeinen duidelijk omhoog, zonder grote negatieve effecten op het surfen. De enkele nuttige URL’s die op de blacklist stonden, heb ik op de Reddit-post https://www.reddit.com/r/pihole/comments/9xwwwy/just_sharing_my_blocklist/ van de blacklist gemeld en de auteur heeft ze telkens snel op zijn whitelist gezet.
Heb je dus één of meerdere zwarte lijsten gekozen, ga dan naar Settings / Blocklists en voeg daar de URL’s in het tekstveld toe, één URL per regel. Klik daarna onderaan rechts op ‘Save and Update’. Pi-hole verzamelt daarna alle domeinen uit alle lijsten in één grote lijst en stelt die als zwarte lijst in. De nieuw toegevoegde lijsten krijgen vanaf nu ook wekelijks een update.
Pi-hole komt ook met een commandline-opdracht: pihole. Zo update je Pi-hole met pihole -up en voer je de configuratiestappen na de eerste installatie opnieuw uit met pihole -r. Met pihole -c krijg je statistieken te zien, zoals het dashboard van de web interface maar dan op de commandline. En met pihole -t tail log bekijk je live de dns-aanvragen die Pi-hole verwerkt. In de online documentatie (https://docs.pi-hole.net/core/pihole-command/) vind je meer uitleg over de mogelijkheden, bijvoorbeeld om je zwarte en witte lijst bij te werken.
In de online documentatie vind je nog enkele gidsen (https://docs.pi-hole.net/guides/) om meer met Pi-hole te doen. Zo lees je hoe je op je Pi-hole je eigen recursieve dns-server draait in plaats van een upstream dns-server te gebruiken. Ook krijg je een stappenplan om DNS-over-HTTPS (DoH) in te stellen, waardoor alle dns-aanvragen naar buiten via https versleuteld worden. Onder andere Cloudflare heeft DoH in zijn dns-server 1.1.1.1 geïmplementeerd.
Verder vind je daar ook hoe je naast Pi-hole een OpenVPN-server installeert, zodat je Pi-hole ook onderweg op je laptop of smartphone via een vpn-verbinding naar je OpenVPN-server thuis kunt gebruiken. Zo ben je ook onderweg verzekerd dat ongewenste domeinen geblokkeerd worden. Bovendien heb je dan ook van buitenaf toegang tot de beheerinterface van Pi-hole. En tot slot bevat de documentatie ook een gids om DNS-over-Tor in te stellen.
Sommige apparaten willen systemen, zoals Pi-hole en andere dns-filters, te slim af zijn en gebruiken hun eigen dns-server in plaats van de dns-server die je dhcp-server aangeeft. Dan worden die dns-aanvragen van die apparaten uiteraard niet door Pi-hole gefilterd. Gelukkig kun je daar meestal wel iets aan doen. Je dient in je router/firewall alle dns-aanvragen (tcp- of udp-poort 53) naar een ander IP-adres dan dat van Pi-hole te onderscheppen en naar Pi-hole door te sturen. Hoe dat juist gebeurt, hangt van je router af.
Het leuke aan Pi-hole is dat er een hele levendige community rond is ontstaan. We vermeldden al de verschillende zwarte lijsten die door anderen bijgehouden worden. Verder is er ook PADD (https://github.com/jpmck/PADD), een commandline programma dat uitgebreidere statistieken dan het ingebouwde pihole -c toont. Als je een klein tft-scherm op je Pi aansluit, kun je met PADD een eenvoudig statusschermpje voor Pi-hole maken. Ook de Android-app Pi-hole van Jose Aviles is leuk: hiermee kun je vanaf je Android-telefoon statistieken en grafiekjes bekijken. En zo zijn er nog talloze projecten te vinden die Pi-hole uitbreiden.