Learning Center
Ubuntu-systeem

Een BIND DNS-server opzetten

17 feb 2026
Hostman Team
Hostman Team

Een BIND DNS-server opzetten
Link kopiëren

DNS (Domain Name System) is een systeem waarin alle domeinnamen van servers in een specifieke hiërarchie zijn georganiseerd. Waarom hebben we dit nodig? Stel je voor dat je verbinding moet maken met een apparaat met het IP-adres 91.206.179.207. Je kunt dit adres in de opdrachtregel invoeren om de benodigde informatie te krijgen, maar veel van zulke numerieke combinaties onthouden is erg lastig. Daarom zijn er speciale servers gemaakt die domeinnamen omzetten naar IP-adressen. Wanneer je bijvoorbeeld hostman.com in de zoekbalk van je browser invoert, worden de aanvraaggegevens naar een DNS-server gestuurd. Die zoekt in zijn database naar overeenkomsten, stuurt het juiste IP-adres terug naar je apparaat en pas daarna kan de browser de resource rechtstreeks benaderen.

Je eigen DNS configureren maakt een flexibelere en nauwkeurigere systeemconfiguratie mogelijk en voorkomt afhankelijkheid van derden. In dit artikel bekijken we hoe je DNS opzet met de BIND-nameserver op Ubuntu.

Begrippen
Link kopiëren

Zone: Een deel van de DNS-hiërarchie dat op een DNS-server wordt gehost. Het bepaalt de grenzen waarbinnen een specifieke server of groep servers verantwoordelijk is.

Rootservers: DNS-servers met informatie over top-level domains (.ru, .com, enz.).

Domein: Een benoemd deel van de DNS-hiërarchie, een specifieke node die andere nodes kan bevatten. DNS-adressen worden van rechts naar links gelezen en beginnen met een punt, waarbij domeinen ook door punten gescheiden zijn. Bijvoorbeeld: het domein poddomen.domen.ru moet worden gelezen als .ru.domen.poddomen. Meestal weerspiegelt de domeinnaam de DNS-hiërarchie, maar de laatste punt wordt weggelaten.

FQDN (Fully Qualified Domain Name): Een volledige domeinnaam inclusief alle bovenliggende domeinen.

Resource record: Een opslageenheid van informatie, in feite een record dat een naam koppelt aan service-informatie. Het bestaat uit:

  • Naam (NAME): De naam of het IP-adres dat eigenaar is van de zone

  • Time to Live (TTL): Hoelang een record in de DNS-cache blijft voordat het wordt verwijderd

  • Class (CLASS): Netwerktype, meestal IN (Internet)

  • Type (TYPE): Het doel van het record

  • Data (DATA): Aanvullende details

Veelvoorkomende resource records
Link kopiëren

A-record: Koppelt een hostnaam aan een IPv4-adres. Elke netwerkinterface kan maar één A-record hebben.

website.com.              520    IN     A      91.206.179.207

AAAA-record: Hetzelfde als een A-record, maar voor IPv6.

CNAME: Canonical name record, een alias voor een echte naam (doorverwijzing).

MX: Specificeert mailhosts voor het domein. Het NAME-veld bevat het bestemmingsdomein, het DATA-veld de prioriteit en host voor het ontvangen van mail.

website.com.             17790   IN      MX      10 mx.website.com.

website.com.             17790   IN      MX      20 mx2.website.com.

NS: Verwijst naar de DNS-server die het domein bedient.

PTR: Koppelt een IP-adres aan een domeinnaam (reverse lookup).

SOA: Beschrijft de belangrijkste zone-instellingen.

SRV: Bevat adressen van servers die interne domeindiensten leveren, zoals Jabber.

Vereisten
Link kopiëren

Om de instructies in dit artikel te volgen, heb je minstens twee Ubuntu-servers nodig in hetzelfde datacenter. Je kunt deze servers bij Hostman bestellen.

We hebben twee Ubuntu 20.04-servers nodig: een primaire en een secundaire DNS-server, respectievelijk ns1 en ns2. Daarnaast zijn er extra servers die onze geconfigureerde DNS-servers gebruiken.

Je moet op elke server superuserrechten hebben.

BIND installeren op DNS-servers
Link kopiëren

We gebruiken bind9 als DNS-server. Installeer het bind9-pakket uit de Linux-repository:

sudo apt update && sudo apt upgrade -y

sudo apt install bind9

Daarnaast is het aan te raden netwerktools te installeren:

sudo apt install dnsutils

Start daarna de bind9-service:

sudo service bind9 start

Het hoofdconfiguratiebestand van de server is /etc/bind/named.conf. Het beschrijft algemene instellingen en wordt meestal opgesplitst in meerdere bestanden.

named.conf.options
Link kopiëren

Dit bestand bevat de algemene serverparameters:

options {

        dnssec-validation auto;

        auth-nxdomain no;

        directory "/var/cache/bind";

        recursion no; # recursieve queries naar de nameserver uitschakelen

        listen-on {

                     172.16.0.0/16; 

                     127.0.0.0/8;    

        };

        forwarders { 

            172.16.0.1;

            8.8.8.8;  

        };

};

Controleer of alles correct is ingevoerd met named-checkconf:

sudo named-checkconf

Als alles klopt, kan de bind-server starten.

Primaire DNS-server
Link kopiëren

De primaire DNS-server bewaart de hoofdkopie van het zonebestand. Alle zones komen in de map /etc/bind/master-zones. Maak die aan:

sudo mkdir /etc/bind/master-zones

Maak een bestand aan voor de zone:

sudo touch /etc/bind/master-zones/test.example.com.local.zone

Voeg SOA-, NS- en A-records toe:

$ttl 3600 

$ORIGIN test.example.com. 

test.example.com.               IN              SOA  (      

ns.test.example.com.    

abuse.test.example.com.  

                                2022041201 

                                10800 

                                1200 

                                604800 

                                3600   ) 

@                               IN              NS              ns.test.example.com. 

@                               IN              NS              ns2.test.example.com.

 

@                               IN              A                172.16.101.3 

ns                              IN               A                172.16.0.5 

ns2                             IN              A                172.16.0.6

Controleer met named-checkzone:

sudo named-checkzone test.example.com. /etc/bind/master-zones/test.example.com.local.zone

named.conf.local
Link kopiëren

Dit is een extra bestand dat in de hoofdconfiguratie wordt ingeladen. Hier definiëren we lokale zones:

zone "test.example.com." {

                type master;

                file "/etc/bind/master-zones/test.example.com.local.zone";

};

Controleer de configuratie en herstart bind9 (de -z vlag controleert zonebestanden):

sudo named-checkconf

sudo named-checkconf -z

sudo service bind9 restart

sudo service bind9 status

Views instellen
Link kopiëren

Views maken het mogelijk om naamresolutie flexibel te beheren voor verschillende subnets. Zet dit in /etc/bind/named.conf:

include "/etc/bind/named.conf.options";

acl "local" { 172.16.0.0/16; };

view "local" {

                include "/etc/bind/named.conf.local";

                match-clients { local; };

};

Herstart daarna bind9:

sudo service bind9 restart

Na de herstart kun je vanaf een andere computer in het lokale netwerk de SOA-record opvragen van server 172.16.0.5:

dig @172.16.0.5 -t SOA test.example.com

De primaire DNS-server is nu klaar. De volgende secties behandelen de secundaire server, mailserver-instellingen en reverse zones.

Secundaire server
Link kopiëren

De eerste stappen zijn hetzelfde: bind9 en dnsutils installeren en starten.

Maak vervolgens de map /etc/bind/slave voor zonebestanden en geef de juiste permissies:

sudo mkdir /etc/bind/slave

sudo chmod g+w /etc/bind/slave

Voeg de zone toe in /etc/bind/named.conf.local:

zone "test.example.com." {

        type slave;

        file "/etc/bind/slave/test.example.com.local.zone";

        masters { 172.16.0.5; };

};

Views in named.conf:

include "/etc/bind/named.conf.options";

acl "local" { 172.16.0.0/16; };

view "local" {

        match-clients { local; };

        include "/etc/bind/named.conf.local";

};

Controleer en herstart:

sudo named-checkconf

sudo named-checkconf -z

sudo service bind9 restart

Zone transfer uitvoeren:

sudo rndc retransfer test.example.com

rndc retransfer forceert een zone transfer zonder serial-check. Belangrijk: verhoog de serial number altijd wanneer je het zonebestand wijzigt (bij voorkeur datum + increment).

Beperk daarna zone transfers op de primaire server met allow-transfer in de zoneconfig (named.conf):

zone "test.example.com." {

    type master;

    allow-transfer { 172.168.0.6; };

    file "/etc/bind/master-zones/test.example.com.local.zone";

};

Herstart:

sudo service bind9 restart

Vanaf hier voer je verdere wijzigingen uit op de primaire server.

Een MX-record toevoegen
Link kopiëren

We gebruiken in dit voorbeeld mx als hostnaam. De FQDN wordt mx.test.example.com.

  1. Voeg MX-records toe aan /etc/bind/master-zones/test.example.com.local.zone:

@   IN  MX  10 mx.test.example.com.

@   IN  MX  20 mx2.test.example.com.

  1. Werk de serial number in het SOA-record bij:

$TTL 3600

@   IN  SOA ns.test.example.com. admin.test.example.com. (

        2024071101  ; Serial number

        10800       ; Refresh

        1200        ; Retry

        604800      ; Expire

        3600        ; Minimum TTL

)

  1. Controleer de zonefile:

sudo named-checkzone test.example.com. /etc/bind/master-zones/test.example.com.local.zone

  1. Herlaad BIND:

sudo service bind9 reload

Reverse DNS instellen
Link kopiëren

Reverse DNS zet IP-adressen om naar domeinnamen.

Voorbeeld: 192.168.1.10 wordt 10.1.168.192.in-addr.arpa.

Maak een reverse zonefile:

sudo nano /etc/bind/master-zones/16.172.in-addr.arpa.zone

Voeg data toe:

$TTL    3600 

16.172.in-addr.arpa.            IN      SOA  ( 

ns.test.example.com. 

admin.test.example.com. 

                                2022041202 

                                10800 

                                1200 

                                604800 

                                3600  )

                                IN      NS            ns.test.example.com. 

                                IN      NS           ns2.test.example.com. 

 

3.101.16.172.in-addr.arpa.      IN      PTR              test.example.com. 

5.0.16.172.in-addr.arpa.        IN      PTR           ns.test.example.com. 

6.0.16.172.in-addr.arpa.        IN      PTR          ns2.test.example.com. 

2.101.16.172.in-addr.arpa.      IN      PTR         mail.test.example.com.

Controleer:

sudo named-checkzone 16.172.in-addr.arpa /etc/bind/master-zones/16.172.in-addr.arpa.zone

Voeg in named.conf.local toe:

zone "16.172.in-addr.arpa." {

                type master;

                file "/etc/bind/master-zones/16.172.in-addr.arpa.zone";

                allow-transfer { 172.16.0.6; };

        };

Herstart:

sudo named-checkconf

sudo named-checkconf -z

sudo service bind9 restart

Test met dig:

dig @172.16.0.5 -x 172.16.0.5

Op de secundaire server voeg je in named.conf.local toe:

zone "16.172.in-addr.arpa." { 

    type slave; 

    file "/etc/bind/slave/16.172.in-addr.arpa.zone"; 

    masters { 172.16.0.5; }; 

};

Externe domeinzone
Link kopiëren

Om queries van buitenaf te verwerken, voeg je het externe IP toe aan listen-on in named.conf.options:

listen-on {

    aaa.bbb.ccc.ddd/32; # ons externe IP

    172.16.0.0;

    127.0.0.0/8

}

Maak de zonefile aan (serial number aanpassen!):

sudo nano /etc/bind/master-zones/test.example.com.zone

Inhoud:

$TTL 3600

$ORIGIN test.example.com.

test.example.com. IN SOA  (     

    ns.test.example.com.

    admin.test.example.com.

                                2022041205

                                10800

                                1200

                                604800

                                3600   )

@ IN NS ns.test.example.com.

@ IN NS ns2.test.example.com.

@ IN A aaa.bbb.ccc.ddd

ns IN A aaa.bbb.ccc.ddd

ns2  IN A eee.fff.ggg.hhh

Maak een apart bestand voor externe view zones:

sudo nano /etc/bind/named.conf.external

zone "test.example.com." { 

    type master; 

    file "/etc/bind/master-zones/test.example.com.zone";

    allow-transfer { 172.16.0.6; };

};

Voeg in named.conf toe:

acl "external-view" { aaa.bbb.ccc.ddd; };

view "external-view" {

    recursion no;

    match-clients { external-view; };

    include "/etc/bind/named.conf.external";

};

Controleer en herstart:

sudo named-checkconf -z

sudo named-checkzone test.example.com. /etc/bind/master-zones/test.example.com.zone

sudo service bind9 restart

sudo service bind9 status

Op de secundaire server zet je in named.conf.options het externe adres bij listen-on, maak je een named.conf.external aan met slave-zone en voer je transfer uit:

sudo rndc retransfer test.example.com IN external-view

Debugging
Link kopiëren

Bij DNS-setup is logging erg belangrijk. BIND9 kan uitgebreide logging-configuraties aan.

Maak log.conf:

sudo nano /etc/bind/log.conf

Inhoud:

logging {

    channel bind.log {

        file "/var/lib/bind/bind.log" versions 10 size 20m;

        severity debug;

        print-category yes;

        print-severity yes;

        print-time yes;

    };

    category queries { bind.log; };

    category default { bind.log; };

    category config { bind.log; };

};

Include in hoofdconfig:

include "/etc/bind/log.conf";

Herstart:

sudo service bind9 restart

Conclusie
Link kopiëren

In deze gids hebben we DNS geconfigureerd op een Ubuntu-server met het bind9-pakket. Na het volgen van de stappen kunnen de twee DNS-servers worden gebruikt voor naamresolutie in het netwerk. Om de custom DNS-servers te gebruiken, configureer je je andere servers om 172.16.0.5 en 172.16.0.6 als DNS-servers te gebruiken.

Deze setup kan dienen als basis voor verdere uitbreidingen, zoals het opzetten van een mailserver.