Als je net lekker zit te surfen, of die ene website die je zocht gevonden hebt, dan zit je niet te wachten op allerlei advertenties en pop-ups. Niet op je laptop, computer, smartphone of tablet. Maar hoe zorg je er nou voor dat je hier geen last van hebt? En niet op iedere apparaat speciale Adblockers hoeft te installeren? Wat jij zoekt is Pi-hole, netwerk-brede advertentie blokkering.
Pi-hole stond al lange tijd op mijn to-do lijst. Vorig jaar heb ik er kort eens mee gestoeid, maar eigenlijk nooit meer in mijn thuisnetwerk ingezet. De manier waarop de software werkt is eigenlijk heel eenvoudig. Het berust op DNS-query’s (bevragingen) van domeinen die bekend staan als advertentiedomeinen. Hierdoor kan Pi-hole ingrijpen als er een advertentie getoond tracht te worden en hem bij je weg houden.

Dus, stel dat jij naar een website gaat en er een advertentie getoond zou worden, dan vult jouw browser de advertentie in door naar de URL van de website te gaan en de inhoud te tonen. Jouw browser maakt verbinding met fictiefadvertentiedomein.nl en gebruikt hiervoor DNS om het domein te vertalen naar een IP-adres. Want wij denken in domeinnamen, maar computers en netwerkapparatuur hebben het IP-adres nodig. Pi-hole is in staat om zo’n DNS-query op te zoeken op een lijst van bekende advertentiedomeinen en bij een treffer het resultaat niet terug te geven. Op die manier weet je browser niet hoe hij bij de inhoud van de advertentie moet komen en krijg je hem uiteindelijk ook niet te zien. Is het een legitiem domein, dan zorgt Pi-hole ervoor dat er netjes een DNS-antwoord terugkomt en jouw browser kan verbinden. Dit is een simpele vertaling van wat er gebeurd, achter de schermen komt er natuurlijk nog iets meer bij kijken, maar dat regelt Pi-hole.

Het voordeel van een netwerk-brede manier om advertenties te blokkeren is dat ook advertenties in mobiele apps en op verschillende apparaten direct worden geblokkeerd. Het maakt immers niet uit waar de advertentie wil verschijnen, je Pi-hole vangt het verzoek af en neemt actie. Door middel van een uitgebreid dashboard kun je zien hoe goed het systeem zijn werk doet, maar ook nog wat aanvullende configuratie uitvoeren. Denk hierbij het toevoegen van extra blocklists en de mogelijkheid om domeinen zelf te black/white-listen.

Dit is eigenlijk een heel makkelijke en doeltreffende manier om van advertenties en tracking af te komen. Dus wat doe je dan? Spullen bestellen, wachten op de (altijd) te late pakketdienst en bouwen maar! Ik kies ervoor om de nieuwe Raspberry Pi 4 in te zetten, voorzien van 2GB RAM (want aanbieding!), een micro-SD-kaartje en een behuizing. Nu had ik een eenvoudige plastic case besteld, maar kreeg vanuit Cooler Master toch wel iets heel tofs opgestuurd, namelijk de Pi CASE 40! Wie Cooler Master volgt op Social Media heeft dit crowdfunding project kunnen zien. Een schitterend afgewerkte aluminium case, met zelfs een 90-graden conversie van de GPIO-connector. Bij de foto’s van de installatie kun je dit straks uitgebreid zien. De Pi-hole software is gratis en kan worden gedownload via GitHub. Hiermee is de lijst met benodigdheden compleet.

Installatie op een Raspberry Pi
Je kunt kiezen uit een aantal manieren om Pi-hole te draaien. Zo is er een variant voor Docker, maar ook een ouderwetse installatie. Aangezien ik hiervoor mij Raspberry Pi ga gebruiken kies ik gewoon voor een normale installatie. De eerste stap is het clonen van de GitHub repository.
git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole
Vervolgens ga ik de directory in en start ik het installatiescript.
cd "Pi-hole/automated install/"
sudo bash basic-install.sh
Als de installatie is afgerond ben je eigenlijk al klaar voor actie. Het is aan te raden om je Pi-hole een vast IP-adres te geven, want straks wil je dat alle apparaten in je netwerk weten hoe ze moeten verbinden naar je Pi-hole. Om de rest van de configuratie af te ronden kan je gebruikmaken van de webinterface. Je komt daar eenvoudig door in je browser naar http://ip-adres-vanje-pihole te gaan. Net even wat makkelijker dan alles op de commandline doen.
Nu de Pi-hole straks verantwoordelijk is voor het aannemen van DNS-queries is het wel van belang dat hij weet waar legitieme vragen naartoe gestuurd moeten worden. Dit noemen we een upstream DNS-server. Voordat je hem in gebruik kunt nemen moet je een upstream server opgeven. Ik kies voor de DNS-servers van Cloudflare, aangezien dit de snelste servers zijn. Hierover heb ik eerder al eens een handig blog geschreven. Het instellen van de upstream DNS-server doe je bij Settings.

Wanneer Pi-hole klaar is voor gebruik moet je nog wel zorgen dat ieder apparaat in je netwerk de Pi-hole gaat gebruiken. Hiervoor configureer je hem als DNS-server. In je thuisnetwerk is er een apparaat dat verantwoordelijk is voor het uitdelen van IP-adressen, ook wel je DHCP-server genoemd. Hier moet je een kleine aanpassing doen zodat de DHCP-server de Pi-hole als DNS-server meegeeft. Ik gebruik een FortiGate Firewall welke ook de DHCP-server is in mijn netwerk. Een voorbeeld van hoe de Pi-hole opgenomen kan worden vind je hieronder.

Na het instellen is het slim om even te controleren of je DNS-server juist doorgegeven wordt aan de verschillende apparaten in het netwerk. Op een computer met Microsoft Windows kun je dit controleren bij de details van je netwerkverbinding.

Een handige manier om te controleren of je Pi-hole goed werkt is een zoekopdracht op Google. De bovenste resultaten zijn vaak advertenties via Google en die worden geblokkeerd door Pi-hole. Kies zo’n advertentie en als de pagina niet wordt getoond dan weet je dat je Pi-hole actief is. Mocht je om wat voor reden dan ook tegen een blokkade aanlopen die je niet wilt, dan kun je het domein toevoegen aan de whitelist. Vanaf dat moment wordt de blokkade niet meer doorgezet.
Inzicht in de prestaties van je Pi-hole
Nadat ik zelf mijn Pi-hole een tijdje in gebruik had zag ik op het dashboard dat gemiddeld 15% van alle domeinen die opgevraagd werden door mijn Pi-hole direct de prullenbak ingingen. Kun je nagaan hoeveel procent er dus, vaak zonder dat je het weet, richting advertentie domeinen gaat. Het dashboard geeft je in een oogopslag interessante informatie over de werking van je Pi-hole. Het totaal aantal queries, het aantal geblokkeerde queries, percentage geblokkeerd en het aantal domeinen op de blocklist. Dit wordt aangevuld met wat aanvullend inzicht in het aantal queries over de laatste 24 uur.

Vanuit Query Log kun je details zien over de query’s die door Pi-hole worden verwerkt. Dit is niet alleen handig om inzicht te krijgen in wat er achter de schermen gebeurd, maar ook in het geval een query geblokkeerd of vrijgegeven moet worden. Kies je voor Blacklist achter een query, dan wordt hij voortaan niet meer doorgelaten door je Pi-hole.

Andersom zoeken kan ook, puur op geblokkeerde queries met de mogelijkheid om foutieve blokkades op de whitelist te zetten.

Extra bronnen voor advertentiedomeinen
Pi-hole is vanuit zichzelf al voorzien is van een flinke lijst met geblokkeerde domeinen. Dit mechanisme wordt ook gravity genoemd. Het is ook mogelijk om zelf nog aanvullende lijsten op te voeren met advertentiedomeinen of andere domeinen die je niet wilt. Ideaal! Bij de menuoptie Adlists kun je de url opgeven van een blacklist en zo de informatie toevoegen en bijhouden.
