Met DNS-filtering houd je ongewenste websites buiten de deur
Om ongewenste advertenties of malafide of ongepaste websites uit je thuisnetwerk te weren, kun je gebruikmaken van DNS-filtering, bij voorkeur gecentraliseerd zodat je dit niet op elke client afzonderlijk hoeft in te stellen. We bekijken diverse oplossingen: in de cloud, op een computer en op een NAS.
In dit artikel laten we zien hoe je aan de slag kunt met DNS-filtering. Hiermee kun je bepaalde websites uitsluiten en ook voorkomen dat je advertenties te zien krijgt. We tonen gratis DNS-filters voor:
- Cloud (OpenDNS)
- Windows-pc (NxFilter en Pi-hole)
- NAS (AdGuard Home)
Lees ook: Zo wordt het internet een veilige speeltuin voor je kind
We leggen je eerst kort uit wat DNS is en hoe het werkt. DNS (Domain Name System) is een hiërarchisch opgebouwd systeem dat domeinnamen omzet naar ip-adressen. Wanneer je een URL zoals www.id.nl invoert in je browser, vraagt je browser eerst aan de lokale ‘resolver’ om de hostgegevens. Normaal gesproken wordt eerst het bestand hosts geraadpleegd, dat standaard te vinden is in de map %windir%\System32\drivers\etc.
Levert dit niets op, dan wordt eventueel een interne resolver geraadpleegd, bijvoorbeeld binnen je eigen netwerk. Ook niks? Dan wordt je DNS-verzoek doorgestuurd naar een DNS-recursor, zoals die van je internetprovider of een DNS-provider zoals Cloudflare. Als de gevraagde gegevens niet in de cache van de recursor staan, zal de DNS-recursor de root-nameservers raadplegen voor de DNS-records. Als alles goed gaat, ontvangt de DNS-recursor de gevraagde informatie stapsgewijs, van nl naar id.nl naar www.id.nl, en levert deze de nodige informatie met het ip-adres af aan je applicatie.
Het is ook mogelijk om een DNS-proxy of aangepaste DNS-server in te stellen die het DNS-verzoek eerst controleert aan de hand van een regel- of filterset. Als de aangevraagde domeinnaam op deze lijst staat, wordt het verzoek geblokkeerd of omgeleid volgens de ingestelde regels.
We bekijken hieronder enkele gratis DNS-filters. Eerst een publieke cloudfilter (OpenDNS), vervolgens twee uiteenlopende filters op een Windows-pc (NxFilter en Pi-hole) en tot slot een filter op een NAS (AdGuard Home).
Cloud
DNS-server-met-filter
De gemakkelijkste oplossing, waarvoor je geen extra apparaat nodig hebt, is het opzetten van een cloudgebaseerde DNS-server met ingebouwde filtering. Er zijn verschillende clouddiensten beschikbaar die deze mogelijkheid bieden, vaak gratis. We bespreken hier een van de populairste diensten, namelijk OpenDNS. In het kader ‘Andere cloudfilters’ vind je meer alternatieven.
De eenvoudigste oplossing is het gebruik van OpenDNS Family Shield, dat voornamelijk is bedoeld om ‘volwassen inhoud’ te blokkeren. Je hoeft alleen maar het ip-adres van de primaire en secundaire DNS-servers in te vullen: 208.67.222.123 en 208.67.220.123. Op de website van OpenDNS vind je hoe je dit doet op machineniveau: voor desktops en laptops (Windows, macOS en Linux), voor mobiele apparaten (iOS, Android, spelconsoles enzovoort) en op netwerkniveau. Aangezien een gecentraliseerde aanpak de insteek van dit artikel is, kiezen wij de laatste optie. Als je op de OpenDNS-pagina klikt op Home routers recommended, dan krijg je stap voor stap instructies voor tientallen routermodellen om de DNS-adressen aan te passen.
Over het algemeen komt het erop neer dat je het ip-adres van de webinterface van je router in je browser invoert, inlogt bij je router en vervolgens in een sectie zoals Internet (Advanced Settings) zowel de primaire als de secundaire DNS-server aanpast en opslaat.
Andere cloudfilters OpenDNS mag dan een van de bekendste DNS-filters zijn, het is zeker niet de enige. We geven in de tabel hieronder enkele alternatieven, telkens met de primaire en secundaire DNS-server. Uit de namen kun je al afleiden waarop vooral wordt gefilterd. Terwijl familievriendelijke filters het vooral hebben gemunt op kindonvriendelijke sites, bijvoorbeeld met gewelddadige of pornografische inhoud, richten andere zich voornamelijk op malafide sites, zoals phishing-sites of sites met malware of hardnekkige trackers.
Je kunt deze DNS-servers op machineniveau aanpassen, ook op mobiele apparaten, maar net zo goed centraliseren door de adressen in je routerconfiguratie in te vullen. Op Windows is DNS Jumper een handige tool die je snel een DNS-server laat kiezen.
OpenDNS Home
OpenDNS Family Shield is een handige oplossing die je één keer instelt en daarna kunt vergeten, maar helaas heb je geen controle over de instellingen. Met OpenDNS Home, ook gratis, heb je meer zeggenschap over de filtering en kun je bovendien logs raadplegen.
Registreer je eerst. Vervolgens moet je de DNS-servers wijzigen op je pc of, nog beter, in je router. Daarna controleer je op https://welcome.opendns.com of de DNS-servers correct zijn ingesteld. Klik daarna op de link in de registratie-e-mail die je hebt ontvangen om toegang te krijgen tot je online dashboard op https://dashboard.opendns.com.
Klik hier op Add a network en voer het WAN-ip-adres van je router in (www.whatismyip.org kan je dit vertellen). Bevestig de toevoeging met Add this network. OpenDNS verwacht wel dat dit ip-adres ongewijzigd blijft. Als je een dynamisch ip-adres van je internetprovider hebt (wat meestal altijd het geval is), kun je toch de koppeling behouden door je aan te melden met je OpenDNS-account en de naam van je OpenDNS-netwerk via een gratis DDNS-client zoals OpenDNS Updater (let op: de client wordt direct gedownload).
Op het tabblad Settings van je OpenDNS-dashboard klik je op je ip-adres en selecteer je Custom. Nu kun je zelf kiezen welke van de bijna zestig filtercategorieën je wilt activeren, zodat de bijbehorende websites automatisch worden geblokkeerd. Onderaan kun je ook handmatig websites toevoegen aan de zwarte of witte lijst. Bevestig je aanpassingen met Apply. In het linkermenu kun je tevens Stats and Logs activeren en via Customization de meldingen personaliseren die gebruikers te zien krijgen wanneer ze geblokkeerde sites proberen te bezoeken.
Windows
NxFilter downloaden
Het gebruik van een (gratis) DNS-server in de cloud heeft enkele voordelen: je hebt er zelf bijna geen omkijken naar en het vereist geen extra machines of systeembronnen. Er is helaas wel een nadeel: de beheermogelijkheden zijn beperkt.
Met de gratis applicatie NxFilter krijg je meer controle over het beheer. Het programma heeft minimale systeemeisen en kan zelfs probleemloos worden gebruikt in een domeinnetwerk met honderden gebruikers, zoals we zelf hebben ervaren.
Op de website vind je instructies voor installatie op Windows en Linux, evenals voor Docker en pfSense. We zullen hier de installatie en configuratie op Windows bespreken.
We gaan ervan uit dat je over een (eventueel wat oudere) pc met Windows beschikt, die dan als DNS-proxy zal fungeren, waarna die dus wel ingeschakeld moet blijven. Klik op de NxFilter-pagina op Download om het nieuwste exe-bestand op te halen (in ons geval nxfilter-4.6.6.4.exe) door met de rechtermuisknop op de link te klikken en Link opslaan als te kiezen.
In de volgende drie paragrafen vertellen we je hoe je NxFilter installeert en lichten we de basisconfiguratie op het gebied van beleidsregels en gebruikersbeheer toe, maar weet dat er nog veel meer mogelijk is.
NxFilter installeren
Start vervolgens het gedownloade bestand. De installatie is vereist slechts enkele muisklikken, waarbij de bestanden standaard in de map C:\nxfilter worden geplaatst. Op het einde van het proces wordt onder meer aan je gevraagd om het batchbestand instsvc.bat uit te voeren (in C:\nxfilter\bin, bij voorkeur als administrator). Dit zorgt ervoor dat de vereiste firewallregels worden toegepast (zo moeten udp-poort 53 en tcp-poorten 80 en 443 geopend zijn) en dat de NxFilter-service automatisch wordt gestart. Wil je de voortgang in de gaten houden, open dan Windows PowerShell en voer het volgende commando uit:
gc c:\nxfilter\log\nxfilter.log -tail 10 -wait
Om te controleren of de NxFilter-service correct werkt, druk je op Windows-toets+R en voer je services.msc uit.
Als alles goed is, kun je je browser openen en naar https://localhost/admin gaan. Log in met admin (Name) en admin (Password) om toegang te krijgen tot het NxFilter-dashboard. Indien nodig, klik je op Geavanceerd / Doorgaan om toestemming te geven.
Controleer vervolgens bij System / Setup of het adres bij Block Redirection IP is ingesteld op het interne ip-adres van je NxFilter-machine. Je leest hier hoe je dit adres vindt. Zorg ervoor dat je dit adres ook instelt als DNS-server op de gewenste clients of op je hele netwerk via je router. De router zal automatisch de DNS-server doorgeven aan de clients, op voorwaarde dat de DHCP-dienst op automatisch (en niet handmatig) staat ingesteld.
Controleer tevens bij Classifier / Jahaslist hoeveel domeinen standaard geblokkeerd zullen worden. Dit moeten er minstens 4,6 miljoen zijn. Je kunt deze lijst na dertig dagen gratis blijven gebruiken voor maximaal twintig gebruikers.
Beleidsregels NxFilter
De NxFilter-service is actief en je hebt het ip-adres van je NxFilter-machine ingesteld als DNS-server op je client(s) of netwerk. Ga nu vanaf die client(s) naar willekeurige websites. Ga vervolgens naar het Logging / DNS Request-gedeelte van je NxFilter-dashboard. Hier worden de bezochte url’s weergegeven, inclusief het tijdstip en het ip-adres van de client. Deze lijst wordt ongeveer elke minuut automatisch bijgewerkt. Goed om te weten: je past de naam en het wachtwoord van de beheerder aan via System / Admin. Het is wel zo veilig om gelijk te doen.
Natuurlijk wil je zelf bepalen welke filters en categorieën actief moeten zijn. Ga naar het tabblad Policy, selecteer Policy en druk bij Default op Edit. Zorg ervoor dat het vakje Enable Filter is aangevinkt. Controleer ook de waarde van Screen time (standaard staat deze op 120 minuten).
Ga vervolgens naar het tabblad Blocked categories en vink alle categorieën aan die je wilt blokkeren. Er zijn er 56, waaronder Gambling, Phishing/Malware, Drugs, Porn, Proxy/Anonymizer en Violence. Bevestig je keuze met Submit.
Ga ook naar het tabblad Screen time categories. Websites uit de geselecteerde categorieën kunnen per dag maximaal gedurende het aantal minuten worden bekeken dat bij Screen time is ingesteld. Deze beperking is vooral nuttig wanneer je die wilt toepassen op specifieke gebruikers.
Gebruikers NxFilter
Om per gebruiker of gebruikersgroep andere regels toe te passen, moet je in NxFilter een authenticatiemethode instellen. Ga naar System / Setup en vink Enable User Authentication aan. Bevestig met Submit. Ga vervolgens naar User / User en klik op Create om een nieuwe gebruiker toe te voegen. Vul de naam van de gebruiker in en bevestig met Submit. Klik daarna op Edit naast de toegevoegde gebruiker. Als de gebruiker normaal gesproken vanaf een eigen apparaat werkt met een statisch ip-adres, open hier dan het tabblad ADD IP. Voer het ip-adres in bij Start IP en, als het om een ip-bereik gaat, ook bij End IP. Je kunt deze stappen herhalen voor meerdere ip-adressen.
Als de gebruiker vanaf willekeurige apparaten werkt of als deze apparaten geen statisch ip-adres hebben, moet je een wachtwoord instellen in het Edit-venster van de gebruiker. Als iemand zich aanmeldt vanaf een apparaat waarvan het ip-adres niet bekend is bij NxFilter, zal er een inlogvenster verschijnen waarin de gebruikersnaam en het wachtwoord moeten worden ingevoerd. De geldigheidsduur van een inlogsessie kun je instellen bij System / Setup onder Login Session TTL (standaard is dit 20 minuten).
In het Edit-venster van een geselecteerde gebruiker koppel je de gewenste filtersets bij Work-time Policy en bij Free-time Policy. Voor die laatste bepaal je bij Policy / Free time zelf welke dagen of tijdstippen NxFilter als ‘vrije tijd’ moet beschouwen, eventueel met aangepaste filterregels.
Docker
NxFilter biedt gedetailleerde monitoring en filtering van het webverkeer van clients, maar ben je voornamelijk geïnteresseerd in het blokkeren van vervelende advertenties, dan is de gratis tool Pi-hole een uitstekende keuze. Oorspronkelijk was Pi-hole alleen beschikbaar voor Raspberry Pi, maar inmiddels kun je het ook op Linux en via Docker op Windows installeren. Voor het installeren van Pi-hole via Docker op Windows, kun je Docker Desktop voor Windows downloaden.
Zorg ervoor dat je Windows 10 21H1 of Windows 11 21H2 of nieuwer hebt, een 64bit-processor met SLAT en minstens 4 GB geheugen. Daarnaast moet hardware-virtualisatie ingeschakeld zijn in de UEFI/BIOS. We gaan ervan uit dat je WSL2 (Windows Subsystem voor Linux) gebruikt als backend voor Docker. Deze werkt iets sneller en is ook nodig voor Windows Home.
Om WSL2 te activeren, open je de Opdrachtprompt als administrator en voer je het commando wsl --install uit. Herstart Windows en voer vervolgens het gedownloade Docker-bestand uit. De installatie vereist slechts enkele muisklikken, maar kan even duren. Eventueel laat je het vinkje staan bij Install required Windows components for WSL 2. Nadat de installatie is voltooid, herstart je Windows en voer je Docker Desktop uit als administrator.
In Docker Desktop klik je op het tandwielpictogram en open je het venster General. Plaats een vinkje bij Use the WSL 2 based engine en bevestig met Apply & restart.
Pi-hole installeren
Zodra Docker klaar is, moet je de ‘container-installatie’ van Pi-hole toevoegen. Een container is geen volwaardige virtuele machine, maar eerder een geïsoleerde entiteit binnen je besturingssysteem. Voer Opdrachtprompt uit als administrator en voer het volgende commando uit:
docker pull pihole/pihole
Daarna voer je op de Opdrachtprompt het volgende commando uit:
docker run -d --name pihole -e ServerIP=<intern-ip-adres> -e WEBPASSWORD=<wachtwoord> -e TZ=Europe/Amsterdam -e DNS1=127.17.0.1 -e DNS2=1.1.1.1 -e DNS3=1.0.0.1 -p 80:80 -p 53:53/tcp -p 53:53/udp -p 443:443 --restart=unless-stopped pihole/pihole:latest
Vervang <intern-ip-adres> door het interne ip-adres van je machine en <wachtwoord> door het gewenste wachtwoord voor het beheer van je Pi-hole-installatie. Laat DNS1 staan op 127.17.0.1 (localhost). Voor DNS2 en DNS3 hebben we in dit voorbeeld voor de DNS-servers van Cloudflare gekozen, maar je kunt ook andere DNS-providers kiezen.
Wil je Pi-hole nog verder finetunen, bekijk dan de extra parameters via deze GitHub-pagina. Houd het voornamelijk bij de Recommended Variables en Optional variables, of eventueel de Advanced variables.
Houd er rekening mee dat de machine nu fungeert als een soort DNS-proxy voor andere apparaten in je netwerk en dus zorg je er het best voor dat je deze machine een statisch ip-adres geeft.
Start nu Docker Desktop op als administrator. Je zou de pihole-container moeten zien in het Containers-gedeelte. Je kunt deze starten en stoppen via de bijbehorende knop bij Actions.
Instellingen Pi-hole
Je verifieert snel of Pi-hole actief is door met de browser van die machine naar http://127.17.0.1/admin te gaan. Nadat je bent ingelogd met het eerder ingestelde wachtwoord, kom je in je dashboard terecht. Hier krijg je een overzicht van alle (DNS-)aanvragen van de aangesloten clients, inclusief een lijst met de top 10 toegestane en geblokkeerde domeinen.
De specifieke domeinen die worden geblokkeerd, kun je regelen met filterlijsten. Ga hiervoor naar het gedeelte Adlists en voer het adres van de gewenste lijsten in bij Address. Er zijn verschillende lijsten beschikbaar, bijvoorbeeld deze en op https://firebog.net. Populaire lijsten zijn die van OSID en Steven Black. Bevestig met Add en zorg ervoor dat de knop Enabled is ingeschakeld voor de toegevoegde lijsten. Het is raadzaam om vervolgens Tools / Update Gravity te openen en op Update te klikken.
Om specifieke domeinen te blokkeren of altijd toe te staan, ga je naar het gedeelte Domains. Voer het domein in en klik op Add to Blacklist of Add to Whitelist. Vink het vakje Add domain as wildcard aan als je ook de bijbehorende subdomeinen aan de lijst wilt toevoegen.
Het is tevens mogelijk om clients te groeperen (via Groups en Clients) en vervolgens de toegevoegde adlists toe te wijzen aan een specifieke groep met Group assignment. Zo kun je verschillende lijsten activeren op basis van de clients die Pi-hole gebruiken. Verken ook de andere opties van Pi-hole en experimenteer gerust.
NAS
AdGuard Home
Wanneer je een DNS-filter zoals NxFilter of Pi-hole op Windows installeert, is het in principe nodig dat dat systeem altijd is ingeschakeld, wat extra stroomverbruik betekent. Heb je een geschikte NAS (die toch aanstaat), dan is het wellicht handiger en energiezuiniger om je DNS-filter daarop te installeren.
Het installeren van een DNS-filter op een NAS is mogelijk voor Pi-hole en met enige moeite ook voor NxFilter. Maar we willen graag een derde optie aanbevelen: AdGuard Home. Dit pakket kan goed worden vergeleken met Pi-hole, maar het gaat iets efficiënter om met systeembronnen, biedt standaard ondersteuning voor DNS-over-HTTPS en heeft ook enkele opties voor ouderlijk toezicht.
Voor het installeren van AdGuard Home maken we gebruik van een kant-en-klare Docker-container.
Het is belangrijk dat je NAS deze functionaliteit ondersteunt. We hebben dit getest op een populair model, Synology DS220+ met DSM 7.x. De procedure op andere NAS-apparaten is vergelijkbaar.
Container-installatie
Meld je aan bij de webinterface van de NAS en installeer indien nodig de app Container Manager (DSM 7.2 of hoger) of Docker. Start daarna de app File Station en open de map Docker. Maak een nieuwe map genaamd adguard aan. Binnen deze map maak je twee submappen: config en data. Gebruik kleine letters voor de namen van deze drie mappen.
Ga nu naar het Configuratiescherm en selecteer Taakplanner. Klik op Maken, kies vervolgens Geplande taak en selecteer Door de gebruiker gedefinieerd script. Vul Installatie AdGuard in bij Taak en selecteer root als Gebruiker. Verwijder het vinkje bij Ingeschakeld. Op het tabblad Planning selecteer je Uitvoeren op de volgende datum en kies je Niet herhalen. Plaats desgewenst een vinkje bij Uitvoerdetails verzenden via e-mail en voer je e-mailadres in.
Vul het volgende script in bij Opdracht uitvoeren:
Bevestig twee keer met OK en voer desgevraagd je DSM-wachtwoord in. Selecteer de taak Installatie AdGuard en klik op Uitvoeren en vervolgens op Ja.
Configuratie
Open na afloop je browser en typ http://<nas-ip-adres>:3000 in. Je komt terecht in de configuratiewizard van AdGuard Home. Klik op Beginnen. In het volgende venster wijzig je het veld Poort achter Luister interface (Alle interfaces) naar (bijvoorbeeld) 9080, zodat de poort geen conflict veroorzaakt met een eventuele webserver die standaard op poort 80 luistert.
Als alles goed gaat, verschijnt er een reeks adressen waarop de webinterface van AdGuard Home beschikbaar is. Laat het veld Luister interface van de DNS-server ingesteld op Poort 53. Als er een foutmelding verschijnt dat er mogelijk al een andere DNS-server actief is op je NAS (zoals Pi-hole?), moet je die eerst stopzetten of verwijderen. Zo nodig verwijder je ook de app DHCP Server uit het Synology Package Center.
Als die mogelijke foutmelding is opgelost, druk dan op Volgende in de wizard en vul een Gebruikersnaam en Wachtwoord (2x) in voor de beheerinterface. Bevestig met Volgende. Je ontvangt nu instructies om het DNS-adres aan te passen en naar je NAS (AdGuard Home) te laten verwijzen voor diverse platformen. Rond af met Volgende en klik op Open Dashboard. Meld je aan met de zojuist aangemaakte gebruikersnaam en wachtwoord.
Filters
Je ontvangt nu overzichtelijke statistieken van de DNS-aanvragen van de verbonden clients. Zo nodig klik je op Ververs statistieken. Het kan zijn dat niet alle gewenste aanvragen geblokkeerd worden, maar je kunt extra lijsten toevoegen via het tabblad Filters / DNS Blokkeerlijsten. Klik op Blokkeerlijst toevoegen / Uit de lijst selecteren en vink de gewenste lijsten aan. Je kunt ook op Aangepaste lijst toevoegen klikken en de url en een beschrijving van een geschikte lijst invullen. Met behulp van Regex (reguliere expressies) is het ook mogelijk om domeinen te blokkeren die specifieke woorden in hun domeinnaam bevatten, bijvoorbeeld ‘porn’. Dit kun je doen via Filters / Aangepaste filterregels. We hebben helaas niet voldoende ruimte om hier verder op in te gaan.
Weet wel dat je via Instellingen ook een module voor ouderlijk toezicht kunt inschakelen. Plaats een vinkje bij Gebruik AdGuard Ouderlijk toezicht web service. Daarnaast kun je ook verschillende bekende webdiensten blokkeren (zoals Facebook, Discord, Netflix en ongeveer zestig andere diensten) via Filters / Geblokkeerde services. Je kunt ook bepaalde domeinen altijd toestaan via Filters / DNS-toelatingslijsten.