c’t 12/2026
De gevolgen van artificiële intelligentie voor IT-security
Cover van
Technitium DNS-server

Technitium: je eigen DNS-server installeren voor je netwerk

De opensource DNS-server Technitium is een adresboek voor je netwerk. Hij blokkeert reclame, maakt diensten via een naam bereikbaar en laat zich via de browser configureren.

Lees verder na de advertentie

Je eigen DNS-server voor lokale domeinnamen en reclamefilters

De NAS op 192.168.1.36:5001, de mediaserver op 192.168.1.89:8096: als je meerdere webdiensten in een netwerk draait, zit je opgescheept met een aantal te onthouden IP-adressen en vul je allerlei mappen met bladwijzers. Een adres als nas.lan.internal zou toch mooier en veel makkelijker te onthouden zijn.

Het zou ook prettig zijn als je de stortvloed aan reclame kunt indammen zonder op elk apparaat een adblocker te hoeven installeren. Het liefst filteren de apparaten van de kinderen daarbij behalve reclame ook andere inhoud die niet geschikt is voor minderjarigen.

Een eigen DNS-server kan al die wensen vervullen. Hij vertaalt namen als ct.nl naar IP-adressen en elk apparaat vraagt hem om informatie voordat het een verbinding opbouwt. Als je die antwoorden beheert, kun je aanvragen voor advertentieservers op niets laten uitlopen en eigen diensten in het netwerk een naam geven.

Dat is de reden dat veel gebruikers de rol van DNS-server in het netwerk overdragen van de router naar software als Pi-hole. Als zuiver reclamefilter is dat snel ingericht en doet het wat het moet doen. Bij het toekennen van eigen namen loopt Pi-hole echter al snel tegen grenzen aan. Afzonderlijke records, zoals nas.lan.internal dat naar 192.168.1.36 verwijst, werken probleemloos.

Een jokerteken (wildcard) dat alle aanvragen voor *.lan.internal naar een reverse-proxy doorstuurt, vergt al meer handwerk in de configuratie van dnsmasq. De kern van Pi-hole, pihole-FTL, is gebaseerd op dnsmasq en stuurt voornamelijk aanvragen door, met daarnaast een lokale namenlijst.

Technitium is een volwaardige DNS-server met een geïntegreerd reclamefilter. Hij beheert complete naamruimten, zogeheten zones, met alle recordtypen (A-records, MX-records en meer), neemt versleutelde aanvragen aan, ondersteunt gebruikers met verschillende rechten en kan met andere instanties een cluster vormen, zodat een storing niet het hele netwerk platlegt.

Net als Pi-hole bedien je hem eenvoudig via een webinterface. In dit artikel leggen we uit hoe je de DNS-server installeert en beschrijven we de belangrijkste functies.

Technitium is opensource software (GPLv3) en draaide tijdens onze test als Docker-container in een virtuele machine met Ubuntu Server 26.04 LTS. Je kunt het echter ook onder een andere Linux-distributie, Windows en macOS installeren.

Technitium installeren

Ken in je router een vast IP-adres toe aan het systeem waarop Technitium moet gaan draaien. De DNS-server heeft de poorten 5380 en 53 nodig om bereikbaar te zijn. Die moeten op dat systeem dus vrij zijn.

Lees dit artikel verder

Lees over tech-trends en achtergronden, nieuwe apparatuur, software en toepassingen voor professioneel gebruik. Met c’t heb je altijd de juiste tech-informatie. Word abonnee en lees onbeperkt alle artikelen.
Bekijk abonnementen Al abonnee? Log in

Bij Ubuntu Server 26.04 LTS is poort 53 standaard in gebruik door de stubresolver van systemd. Je schakelt die uit met de volgende commando’s:

sudo mkdir -p /etc/systemd/resolved.conf.d
printf '[Resolve]\nDNSStubListener=no\n' | sudo tee /etc/systemd/resolved.conf.d/no-stub.conf
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved

Installeer vervolgens Docker. Dat gaat het eenvoudigst met het zogeheten convenience-script:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Voeg een gebruiker met het commando sudo usermod -aG docker $USER toe aan de groep docker om Docker-commando’s zonder voorafgaand sudo uit te voeren. De wijziging wordt actief wanneer je je de volgende keer aanmeldt.

Maak vervolgens met een teksteditor het bestand docker-compose.yaml aan. Dat moet de volgende inhoud krijgen:

services:
  dns-server:
    image: technitium/dns-server:latest
    container_name: dns-server
    hostname: dns-server
    ports:
      - "5380:5380/tcp"
#      - "53443:53443/tcp"
      - "53:53/udp"
      - "53:53/tcp"
    environment:
      - DNS_SERVER_DOMAIN=dns1.lan.internal
    volumes:
      - config:/etc/dns
    sysctls:
      - net.ipv4.ip_local_port_range=1024 65535
    restart: unless-stopped

volumes:
  config:

Via poort 5380 bereik je later de webinterface van Technitium in de browser. Poort 53 is de gebruikelijke poort voor DNS.

De regel voor poort 53443, voor versleutelde toegang (HTTPS) tot de webinterface, is als commentaar uitgeschakeld. Je hebt die poort nodig als je een Technitium-cluster wilt opzetten. De waarde voor de sleutel DNS_SERVER_DOMAIN= kun je in principe vrij kiezen. Wij hebben gekozen voor dns1.lan.internal, omdat lan.internal een voorbeeldzone is die later in dit artikel nog van belang is.

Start de Technitium-container met de opdracht docker compose up -d. Zodra de container draait, kun je de webinterface in de browser openen via http://192.168.1.10:5380. Vervang het IP-adres uit het voorbeeld door het IP-adres van het systeem waarop Technitium draait.

Rondleiding door de webinterface

Wanneer je de DNS-server voor het eerst in de browser bezoekt, vraagt hij je een veilig wachtwoord in te stellen. Daarna verschijnt het dashboard, met een overzicht van het aantal aanvragen in perioden als Last Hour of Last Year en een ranglijst van de Top Clients.

In het menu Zones maak of importeer je zones waarvoor je vervolgens DNS-records aanmaakt. Zo stuur je de aanvragen van alle clients die Technitium als DNS-server gebruiken. Dat leggen we nader uit in de paragraaf ‘Eigen namen in het thuisnetwerk’.

In het menu Cache zie je welke gegevens in het tijdelijke geheugen van Technitium terechtkomen. Dat zijn al bekende domeinen die het bij volgende aanvragen niet opnieuw op internet hoeft op te zoeken, waardoor het antwoord sneller volgt.

Onder Allowed en Blocked beheer je je uitzonderingen op de blokkeerlijsten. Dat kan bijvoorbeeld nuttig zijn als een website verkeerd wordt weergegeven.

In het menu Apps vind je een appstore waarmee je uitbreidingen voor Technitium kunt installeren. Een aanrader is de app Advanced Blocking. Daarmee kun je blokkeerlijsten aan specifieke clients toewijzen en bijvoorbeeld de tablets van kinderen strenger laten filteren dan werk-pc’s.

Handig bij het opsporen van fouten is DNS Client. Door daar een domein in te voeren, controleer je wat Technitium of willekeurige andere DNS-servers antwoorden. Met DHCP maak je van Technitium behalve een DNS-server ook een DHCP-server, die IP-adressen in het netwerk uitdeelt. Dat is echter eerder iets voor gevorderde gebruikers die meerdere VLAN’s beheren. Onder Settings vind je de eigenlijke configuratie van Technitium.

Reclame blokkeren

Om de DNS-filters in te schakelen, ga je naar het menu Settings en vervolgens naar het tabblad Blocking. De bovenste optie heet Enable Blocking.

Voer zelf URL’s voor toestaan- en blokkeerlijsten in of activeer via het drop-downmenu Quick Add kant-en-klare blokkeerlijsten uit de community. Daar zitten lijsten tussen die naast reclame ook malware, gokken, pornografie, nepnieuws en sociale media wegfilteren. Je kunt ook meerdere lijsten combineren. Met een klik op Save Settings linksonder in het venster pas je de instellingen toe.

Met de app Advanced Blocking uit de appstore wijs je IP-adressen of netwerken toe aan groepen en stel je voor die groepen eigen blokkeerlijsten in. Het instellen is niet helemaal eenvoudig, want je moet de groepen definiëren in het configuratiebestand dnsApp.config in JSON-formaat. Je kunt dat bestand bij de instellingen van de app met de webeditor bewerken. We hebben op GitHub een sjabloon beschikbaar gesteld (zie de link) dat twee groepen definieert: kinderen en allen. Je kunt het eenvoudig aanpassen door in het volgende fragment het voorbeeld-IP-adres 192.168.1.210 te wijzigen:

"networkGroupMap": {
  "192.168.1.210": "kinderen",
  "0.0.0.0/0": "allen",
  "[::]/0": "allen"
}

Als je je netwerk in segmenten hebt verdeeld, kun je ook een heel netwerk en geschikte lijsten invoeren om bijvoorbeeld te voorkomen dat IoT-apparaten zoals een robotstofzuiger naar huis bellen.

Eigen namen in het thuisnetwerk

Met Technitium kun je een domein toewijzen aan diensten die in het thuisnetwerk draaien. In plaats van een IP-adres typ je dan de naam op de adresbalk van de browser in.

De DNS-server beheert namen in een zone. Dat is een verzameling namen met dezelfde extensie. Je kunt in principe zelf bepalen hoe je een zone inricht, maar als je zeker wilt weten dat het privédomein niet met een openbaar domein conflicteert, gebruik je de uitgang .internal. Die heeft ICANN (Internet Corporation for Assigned Names and Numbers) in 2024 gereserveerd voor privénetwerken.

Ga naar het menu Zones en klik op Add Zone. Kies Primary Zone en voer bijvoorbeeld lan.internal in. Om een NAS via nas.lan.internal bereikbaar te maken, klik je op Add Record, voer je de naam nas in, kies je het type A (Address, een IPv4-adres) en voer je het IP-adres van de NAS in.

In combinatie met een reverse-proxy zoals Caddy of Traefik vervalt ook het poortnummer. Daarvoor verwijst het DNS-record, bijvoorbeeld als wildcard *.lan.internal, naar de proxy, die de aanvraag vervolgens doorstuurt naar de juiste dienst. Als je een openbaar geregistreerd domein hebt, kan de proxy ook TLS-certificaten van Let’s Encrypt krijgen.

DNS-server bekendmaken

Er zijn verschillende manieren om ervoor te zorgen dat de clients in het thuisnetwerk Technitium als DNS-server gebruiken. Je kunt Technitium bij de netwerkinstellingen van de clients als DNS-server invullen of hem via DHCP in het netwerk bekendmaken.

Bij de webinterface van een Fritzbox doe je dat in het menu Thuisnetwerk / Netwerk op het tabblad Netwerkinstellingen bij Geavanceerde netwerkinstellingen wijzigen en vul je op het tabblad IPv4 het IP-adres van Technitium in bij Lokale DNS-server. Als IPv6 actief is in het netwerk, meldt de Fritzbox zich via IPv6 als DNS-server en zouden clients Technitium kunnen omzeilen. Controleer dat bij de IPv6-instellingen van de Fritzbox en vul daar zo nodig het IPv6-adres van Technitium in.

Elke client die een IP-adres van de router krijgt, gebruikt Technitium dan als DNS-server. Let op: als je Technitium-instantie uitvalt, werkt de naamomzetting niet meer. Plan updates daarom zorgvuldig. Zorg er bovendien voor dat poort 53 niet vanaf internet bereikbaar is. Aanvallers zouden je DNS-server kunnen misbruiken voor aanvallen op andere servers.

Je kunt een eventuele uitval ondervangen door meerdere Technitium-instanties in een cluster onder te brengen, zodat ze hun configuratie synchroniseren. Een tweede Technitium-instantie draait dan bijvoorbeeld op een ander apparaat. Dat valt buiten het bestek van dit artikel, maar het configureren daarvan staat beschreven in het Technitium-blog (zie de link). Een Fritzbox kan via DHCP maar één DNS-server doorgeven, dus de tweede moet je dan handmatig toevoegen.

Conclusie

Met Technitium draai je een volwaardige DNS-server die meer kan dan alleen reclame filteren. Besef wel dat daar ook een verantwoordelijkheid bij komt kijken. Als Technitium uitvalt, kan geen enkel apparaat in het netwerk nog een website openen. Daar staat een DNS-server tegenover die meegroeit met de eisen die je aan je netwerk stelt.

Niklas Dierking en Noud van Kruysbergen

Voorbeelden voor filterlijsten

dnsApp.config.txt (in ZIP-archief)

Technitium-blog

Inspiratie in je mailbox

Blijf bij op IT-gebied en verbreed je expertise. Ontvang elke week artikelen over de laatste tech-ontwikkelingen, toepassingen, nieuwe hard- en software én ontvang tips en aanbiedingen.

Loginmenu afsluiten