FreeBSD handboek
Terug | Hoofdstuk 29. Netwerkdiensten | Volgende

# 29.6. Domeinnaamsysteem (DNS)

Geschreven door Chern Lee, Tom Rhodes, en Daniel Gerzo.

## 29.6.1. Overzicht

FreeBSD gebruikt standaard een versie van BIND (Berkeley Internet Name Domain), wat de meest gebruikte implementatie van het DNS-protocol is. DNS is het protocol waarmee namen aan IP-adressen gebonden worden en vice versa. Zo wordt bijvoorbeeld op een zoekopdracht voor `www.FreeBSD.org` geantwoord met het IP-adres van de webserver van het FreeBSD Project en op een zoekopdracht voor `ftp.FreeBSD.org` wordt geantwoord met het IP-adres van de bijbehorende FTP-machine. Het tegenovergestelde kan ook gebeuren. Een zoekopdracht voor een IP-adres kan de bijbehorende hostnaam opleveren. Het is niet nodig om een naamserver te draaien om op een systeem zoekopdrachten met DNS uit te voeren.

FreeBSD wordt momenteel standaard geleverd met de BIND9 DNS-serversoftware. Onze installatie biedt verbeterde beveilingsmogelijkheden, een nieuwe indeling van het bestandssysteem en geautomatiseerde configuratie van chroot(8).

DNS wordt op Internet onderhouden door een enigszins complex systeem van autoritaire root, Top Level Domain (TLD), en andere kleinschaligere naamservers die individuele domeininformatie hosten en cachen.

Op dit moment wordt BIND beheerd door het Internet Systems Consortium https://www.isc.org/.

## 29.6.2. Terminologie

Om dit document te begrijpen moeten een aantal termen gerelateerd aan DNS begrepen worden.

Term | Definitie
--- | ---
Voorwaartse DNS | Het afbeelden van hostnamen op IP-adressen.
Herkomst (origin) | Verwijst naar het domein dat door een bepaald zonebestand wordt gedekt.
named, BIND | Vaak gebruikte namen voor het naamserverpakket BIND in FreeBSD.
Resolver | Een systeemproces waarmee een machine zoekopdrachten om zoneinformatie aan een naamserver geeft.
Reverse DNS | Het afbeelden van IP-adressen op hostnamen.
Rootzone | Het begin van de Internet zonehiërarchie. Alle zones vallen onder de rootzone, net zoals alle bestanden in een bestandssysteem onder de rootmap vallen.
Zone | Een individueel domein, subdomein of een deel van de DNS die door dezelfde autoriteit wordt beheerd.

Voorbeelden van zones:

- `.` is hoe de rootzone normaliter in de documentatie genoemd wordt.

- `org.` is een Top Level Domain (TLD) onder de rootzone.

- `example.org.` is een zone onder het TLD `org.`.

- `1.168.192.in-addr.arpa` is een zone die naar alle IP-adressen verwijst die onder de IP-adresruimte `192.168.1.*` vallen.

Zoals te zien is staat het specifiekere deel van een hostnaam aan de linkerkant. Zo is bijvoorbeeld `example.org.` specifieker dan `org.` en is `org.` specifieker dan de rootzone. De indeling van ieder deel van een hostnaam lijkt veel op een bestandssysteem: de map `/dev` valt onder de root, enzovoort.

## 29.6.3. Redenen om een naamserver te draaien

Naamservers bestaan in het algemeen in twee smaken: een autoratieve naamserver en een caching naamserver.

Er is een autoratieve naamserver nodig als:

- Het gewenst is om DNS-informatie aan te bieden aan de wereld om met autoriteit op verzoeken te antwoorden.

- Een domein, zoals `example.org`, is geregistreerd en er IP-adressen aan hostnamen die daaronder liggen toegewezen moeten worden.

- Een IP-adresblok omgekeerde DNS-ingangen nodig heeft (IP naar hostnaam).

- Een omgekeerde of tweede naamserver, die een slaaf wordt genoemd, moet antwoorden op verzoeken.

Er is een caching naamserver nodig als:

- Een lokale DNS-server kan cachen en wellicht sneller kan antwoorden dan een naamserver die verder weg staat.

Als er een verzoek wordt gedaan voor `www.FreeBSD.org`, dan doet de resolver meestal een verzoek bij de naamserver van de ISP die de uplink levert en ontvangt daarop een antwoord. Met een lokale, caching DNS-server hoeft het verzoek maar één keer door de caching DNS-server naar de buitenwereld gedaan te worden. Voor ieder volgend verzoek hoeft niet buiten het lokale netwerk gekeken te worden omdat het al lokaal in de cache staat.

## 29.6.4. Hoe het werkt

De daemon BIND heet in FreeBSD named.

Bestand | Beschrijving
--- | ---
named(8) | De daemon BIND.
rndc(8) | Naamserverbeheerprogramma.
`/etc/namedb` | Map waar zoneinformatie van BIND staat.
`/etc/namedb/named.conf` | Instellingenbestand van de daemon.

Afhankelijk van hoe en gegeven zone op de server is geconfigureerd, staan de bestanden gerelateerd aan die zone in de submappen `master`, `slave`, of `dynamic` van de map `/etc/namedb`. Deze bestanden bevatten de DNS-informatie die door de naamserver als antwoord op zoekopdrachten gegeven zal worden.

## 29.6.5. BIND starten

Omdat BIND standaard wordt geïnstalleerd, is het instellen relatief eenvoudig.

De standaardconfiguratie van named is die van een eenvoudige resolverende naamserver, draaiende in een chroot(8)-omgeving, en beperkt tot het luisteren op het lokale IPv4-teruglusadres (127.0.0.1). Gebruik het volgende commando om de server eenmaal met deze configuratie te starten:

    # /etc/rc.d/named onestart

Om er zeker van te zijn dat de daemon named elke keer bij het opstarten gestart wordt, moet de volgende regel in `/etc/rc.conf` gezet worden:

    named_enable="YES"

Het is duidelijk dat er vele instelopties voor `/etc/namedb/named.conf` zijn die buiten het bereik van dit document vallen. Als u echter geïnteresseerd bent in de opstartopties voor named op FreeBSD, bekijk dan de `named_`*``-vlaggen in `/etc/defaults/rc.conf` en raadpleeg de handleidingpagina rc.conf(5). De sectie Paragraaf 11.7 is ook nuttig om te lezen.

## 29.6.6. Instellingenbestanden

Instellingenbestanden voor named bevinden zich momenteel in `/etc/namedb` en moeten gewijzigd worden voor gebruik, tenzij er alleen een eenvoudige resolver nodig is. Hier vindt de meeste configuratie plaats.

### 29.6.6.1. `/etc/namedb/named.conf`

    // $FreeBSD$
    //
    // In de handleidingpagina's named.conf(5) en named(8), en in de
    // documentatie in /usr/share/doc/bind9 zijn meer details te vinden.
    //
    // Voor het opzetten van een autoratieve server is een grondig begrip
    // van de werking van DNS noodzakelijk.  Zelfs eenvoudige fouten kunnen // de werking verstoren voor beïnvloede partijen of veel onnodig
    // Internetverkeer veroorzaken.

    options {
           // Relatief aan de chroot-map, indien aanwezig
           directory       "/etc/namedb";
           pid-file        "/var/run/named/pid"
           dump-file       "/var/dump/named_dump.db"
           statistics-file "/var/stats/named.stats"

    // Als named alleen als een lokale resolver gebruikt wordt, is dit een
    // veilige standaardinstelling.  Om named toegang tot het netwerk te
    // verschaffen, dient deze optie gecommentarieerd te worden, het
    // juiste IP-adres opgegeven te worden, of dient deze optie verwijderd
    // te worden.
           listen-on       { 127.0.0.1; };

    // Als u IPv6 aan heeft staan op dit systeem, dient deze optie
    // uitgecommentarieerd te worden om als lokale resolver te dienen.  Om
    // toegang tot het netwerk te verschaffen, dient een IPv6-adres of het
    // sleutelwoord "any" gegeven te worden.
    //     listen-on-v6    { ::1; };

    // Deze zones zijn reeds opgenomen door de lege zones die hieronder
    // staan.  Als u de gerelateerde lege zones hieronder verwijdert,
    // dienen deze regels uitgecommentarieerd te worden.
            disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
            disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
            disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";

    // Als er een DNS-server beschikbaar is bij een upstream provider dan
    // kan het IP-adres op de regel hieronder ingegeven worden en kan die
    // geactiveerd worden.  Hierdoor wordt voordeel gehaald uit de cache,
    // waardoor het algehele DNS-verkeer op het Internet vermindert.
    /*
           forwarders {
                   127.0.0.1;
           };

    */

    // Als de 'forwarders'-clausule niet leeg is, is de standaard om "forward
    // first" te gebruiken, welke terug zal vallen op het versturen van een
    // verzoek naar uw lokale server als de naamservers in 'forwarders' het
    // antwoord niet weten.  Als alternatief kunt u uw naamserver dwingen om
    // nooit zelf verzoeken in te dienen door de volgende regel aan te
    // zetten:
    //     forward only;

    // Als u forwarding automatisch wilt configureren gebaseerd op de regels
    // in /etc/resolv.conf, verwijder dan het commentaar van de volgende
    // regel en stel named_auto_forward=yes in in /etc/rc.conf.  U kunt ook
    // named_auto_forward_only aanzetten (het effect hiervan is hierboven
    // beschreven).
    //      include "/etc/namedb/auto_forward.conf";

Zoals al in het commentaar staat kan van een cache in de uplink geprofiteerd worden als `forwarders` ingeschakeld worden. Onder normale omstandigheden maakt een naamserver recursief verzoeken tot het Internet op zoek naar zekere naamservers tot er een antwoord komt waar het naar op zoek is. Door de bovenstaande optie in te schakelen wordt eerst de uplink naamserver (of de opgegeven naamserver) gevraagd, waardoor er gebruik gemaakt kan worden van de cache van die server. Als die uplink naamserver een drukke, snelle naamserver is, kan het erg de moeite waard zijn om dit aan te zetten.

> Waarschuwing `127.0.0.1` werkt hier niet. Verander dit IP-adres in een naamserver in de uplink.

    /*
          Moderne versies van BIND gebruiken standaard een random
          UDP-poort voor elk uitgaand verzoek om de kans op cache
          poisoning drastisch te verminderen.  Alle gebruikers wordt met
          klem verzocht om deze mogelijkheid te gebruiken en hun
          firewalls overeenkomstig aan te passen.

          ALS EEN LAATSTE UITVLUCHT om om een beperkende firewall heen
          te werken kunt u proberen om onderstaande optie aan te zetten.
          Het gebruik van deze optie vermindert uw kans om een cache
          poisoning aanval te weerstaan aanzienlijk, en dient indien
          mogelijk te worden vermeden.

          Vervang NNNNN in het voorbeeld door een getal tussen 49160 en
          65530.
        */
        // query-source address * port NNNNN;
    };

    // Als er een lokale naamserver wordt gebruikt, vergeet dan niet om
    // eerst 127.0.0.1 in /etc/resolv.conf te zetten zodat die gevraagd
    // wordt.  Controleer ook dat het in /etc/rc.conf is aangezet.

    // Het traditionele root-hint-mechanisme.  Gebruik dit OF de
    // onderstaande slaafzones.
    zone "." { type hint; file "named.root"; };

    /*  Het slaaf maken van de volgende zones vanaf de root-naamservers
        heeft een aantal aanzienlijke voordelen:
        1. Snellere lokale resolutie voor uw gebruikers
        2. Geen vals verkeer dat vanaf uw netwerk naar de roots wordt verzonden
        3. Betere weerstand tegen elke mogelijk falen van de rootserver/DDoS

        Wel is het zo dat deze methode meer toezicht vraagt dan het
        hintbestand om er zeker van te zijn dat een onverwachte
        faalmodus uw server niet heeft lamgelegd.  Naamservers die
        veel clienten serveren zullen meer voordeel uit deze aanpak
        halen dan individuele hosts.  Met zorg gebruiken.

        Verwijder het commentaar uit de onderstaande regels en
        commentarieer de bovenstaande hintzone om dit mechanisme te
        gebruiken.
    */

    zone "." {
        type slave;
        file "slave/root.slave";
        masters {
            192.5.5.241;    // F.ROOT-SERVERS.NET.
        };
        notify no;
    };

    zone "arpa" {
        type slave;
        file "slave/arpa.slave";
        masters {
            192.5.5.241;    // F.ROOT-SERVERS.NET.
        };
        notify no;
    };

    zone "in-addr.arpa" {
        type slave;
        file "slave/in-addr.arpa.slave";
        masters {
            192.5.5.241;    // F.ROOT-SERVERS.NET.
        };
        notify no;
    };

    /*  Het lokaal serveren van de volgende zones voorkomt dat enig
        verzoek voor deze zones uw netwerk verlaat en naar de
        root-naamservers gaat.  Dit heeft twee aanzienlijke voordelen:
        1. Snellere lokale resolutie voor uw gebruikers
        2. Er zal geen vals verkeer vanaf uw netwerk naar de roots worden verzonden
    */
    // RFC 1912
    zone "localhost"    { type master; file "master/localhost-forward.db"; };
    zone "127.in-addr.arpa" { type master; file "master/localhost-reverse.db"; };
    zone "255.in-addr.arpa" { type master; file "master/empty.db"; };

    // RFC 1912-stijl zone voor IPv6 localhost adres
    zone "0.ip6.arpa"   { type master; file "master/localhost-reverse.db"; };

    // "Dit" netwerk (RFCs 1912 en 3330)
    zone "0.in-addr.arpa"   { type master; file "master/empty.db"; };

    // Netwerken voor privaat gebruik (RFC 1918)
    zone "10.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "16.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "17.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "18.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "19.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "20.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "21.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "22.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "23.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "24.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "25.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "26.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "27.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "28.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "29.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "30.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "31.172.in-addr.arpa"  { type master; file "master/empty.db"; };
    zone "168.192.in-addr.arpa" { type master; file "master/empty.db"; };

    // Lokale link/APIPA (RFCs 3330 en 3927)
    zone "254.169.in-addr.arpa" { type master; file "master/empty.db"; };

    // TEST-NET voor documentatie (RFC 3330)
    zone "2.0.192.in-addr.arpa" { type master; file "master/empty.db"; };

    // Router benchmarken (RFC 3330)
    zone "18.198.in-addr.arpa"  { type master; file "master/empty.db"; }
    zone "19.198.in-addr.arpa"  { type master; file "master/empty.db"; }

    // Gereserveerd door IANA - oude ruimte van klasse E
    zone "240.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "241.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "242.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "243.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "244.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "245.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "246.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "247.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "248.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "249.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "250.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "251.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "252.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "253.in-addr.arpa" { type master; file "master/empty.db"; }
    zone "254.in-addr.arpa" { type master; file "master/empty.db"; }

    // Niet-toegewezen IPv6-adressen (RFC 4291)
    zone "1.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "2.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "3.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "4.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "5.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "6.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "7.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "8.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "9.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "a.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "b.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "c.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "d.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "e.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "0.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "1.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "2.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "3.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "4.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "5.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "6.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "7.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "8.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "9.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "a.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "b.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "0.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "1.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "2.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "3.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "4.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "5.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "6.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "7.e.f.ip6.arpa"   { type master; file "master/empty.db"; }

    // IPv6 ULA (RFC 4193)
    zone "c.f.ip6.arpa" { type master; file "master/empty.db"; }
    zone "d.f.ip6.arpa" { type master; file "master/empty.db"; }

    // IPv6 lokale link (RFC 4291)
    zone "8.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "9.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "a.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "b.e.f.ip6.arpa"   { type master; file "master/empty.db"; }

    // IPv6 verouderde site-lokale adressen (RFC 3879)
    zone "c.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "d.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "e.e.f.ip6.arpa"   { type master; file "master/empty.db"; }
    zone "f.e.f.ip6.arpa"   { type master; file "master/empty.db"; }

    // IP6.INT is verouderd (RFC 4159)
    zone "ip6.int"  { type master; file "master/empty.db"; }

    // NB: De IP-adressen hieronder zijn bedoeld als voorbeeld en dienen
    //     niet gebruikt te worden!
    //
    // Voorbeeld instellingen voor slaafzones.  Het kan handig zijn om
    // tenminste slaaf te worden voor de zone waar de host onderdeel van
    // uitmaakt.  Bij uw netwerkbeheerder kan het IP-adres van de
    // verantwoordelijke meester-naamserver nagevraagd worden.
    //
    // Vergeet niet om de omgekeerde lookup-zone op te nemen!
    // Dit is genoemd na de eerste bytes van het IP-adres, in omgekeerde
    // volgorde, met daarachter ".IN-ADDR.ARPA", of "IP6.ARPA" voor IPv6.
    //
    // Het is van groot belang om de werking van DNS en BIND te begrijpen
    // voordat er een meester-zone wordt opgezet.  Er zijn nogal wat
    // onverwachte valkuilen.  Het opzetten van een slaafzone is
    // gewoonlijk eenvoudiger.
    //
    // NB: Zet de onderstaande voorbeelden niet blindelings aan. :-)
    // Gebruik in plaats hiervan echte namen en adressen.
    /* Een voorbeeld van een dynamische zone
    key "exampleorgkey" {
           algorithm hmac-md5;
           secret "sf87HJqjkqh8ac87a02lla==";
    };

    zone "example.org" {
           type master;
           allow-update {
                   key "exampleorgkey";
           };
           file "dynamic/example.org";
    };
    */

    /* Voorbeeld van een omgekeerde slaafzone
    zone "1.168.192.in-addr.arpa" {
           type slave;
           file "slave/1.168.192.in-addr.arpa";
           masters {
                   192.168.1.1;
           };
    };
    */

In `named.conf` zijn dit voorbeelden van slaafregels voor een voorwaartse en een omgekeerde zone.

Voor iedere nieuwe zone die wordt aangeboden dient een nieuwe instelling voor de zone aan `named.conf` toegevoegd te worden.

De eenvoudigste instelling voor de zone `example.org` kan er als volgt uitzien:

    zone "example.org" {
        type master;
        file "master/example.org";
    };

De zone is een master, zoals aangegeven door het statement `type`, waarvan de zoneinformatie in `/etc/namedb/example.org` staat, zoals het statement `file` aangeeft.

    zone "example.org" {
        type slave;
        file "slave/example.org";
    };

In het geval van de slaaf wordt de zoneinformatie voor een zone overgedragen van de master naamserver en opgeslagen in het ingestelde bestand. Als de masterserver het niet meer doet of niet bereikbaar is, dan heeft de slaveserver de overgedragen zoneinformatie nog en kan het die aanbieden.

### 29.6.6.2. Zonebestanden

Een voorbeeldbestand voor een masterzone voor `example.org` (bestaande binnen `/etc/namedb/master/example.org`) ziet er als volgt uit:

    $TTL 3600        ; 1 uur standaard TTL
    example.org.     IN      SOA      ns1.example.org. admin.example.org. (
                                     2006051501      ; Serienummer
                                     10800           ; Verversen
                                     3600            ; Opnieuw proberen
                                     604800          ; Verlopen
                                     300             ; Negatieve antwoord-TTL
                             )

    ; DNS Servers
                     IN      NS      ns1.example.org.
                     IN      NS      ns2.example.org.

    ; MX Records
                     IN      MX 10   mx.example.org.
                     IN      MX 20   mail.example.org.

                     IN      A       192.168.1.1

    ; Machinenamen
    localhost        IN      A       127.0.0.1
    ns1              IN      A       192.168.1.2
    ns2              IN      A       192.168.1.3
    mail             IN      A       192.168.1.4
    mx               IN      A       192.168.1.5

    ; Aliases
    www              IN      CNAME   example.org.

Iedere hostnaam die eindigt op een “.” is een exacte hostnaam, terwijl alles zonder een “.” op het einde relatief is aan de oorsprong. Zo wordt `ns1` bijvoorbeeld vertaald naar `ns1.`example.org.``.

De regels in een zonebestand volgen de volgende opmaak:

    recordnaam      IN recordtype   waarde

De meest gebruikte DNS-records:

SOA

  begin van autoriteit (start of authority)

NS

  een bevoegde (autoratieve) name server

A

  een hostadres

CNAME

  de canonieke naam voor een alias

MX

  mail exchanger

PTR

  een domeinnaam pointer (gebruikt in omgekeerde DNS)

    example.org. IN SOA ns1.example.org. admin.example.org. (
                            2006051501      ; Serienummer
                            10800           ; Ververs na 3 uur
                            3600            ; Opnieuw proberen na 1 uur
                            604800          ; Verlopen na 1 week
                            300             ; Negatieve antwoord-TTL

`example.org.`

  de domeinnaam, ook de oorsprong voor dit zonebestand.

`ns1.example.org.`

  de primaire/bevoegde naamserver voor deze zone.

`admin.example.org.`

  de persoon die verantwoordelijk is voor deze zone, emailadres met “@” vervangen. `<admin@example.org>` wordt `admin.example.org`.

`2006051501`

  het serienummer van het bestand. Dit moet iedere keer als het zonebestand wordt aangepast opgehoogd worden. Tegenwoordig geven veel beheerders de voorkeur aan de opmaak `yyyymmddrr` voor het serienummer. `2006051501` betekent dan dat het voor het laatst is aangepast op 15-05-2006, de laatste `01` betekent dat het zonebestand die dag voor het eerst is aangepast. Het serienummer is belangrijk omdat het slaafnaamservers aangeeft dat een zone is bijgewerkt.

           IN NS           ns1.example.org.

Hierboven staat een NS-regel. Voor iedere naamserver die bevoegde antwoorden moet geven voor de zone hoort er zo'n regel te zijn.

    localhost       IN      A       127.0.0.1
    ns1             IN      A       192.168.1.2
    ns2             IN      A       192.168.1.3
    mx              IN      A       192.168.1.4
    mail            IN      A       192.168.1.5

Een A-record geeft een machinenaam aan. Hierboven is te zien dat `ns1.example.org` zou resolven naar `192.168.1.2`.

           IN      A       192.168.1.1

Deze regel kent IP-adres `192.168.1.1` toe aan de huidige oorsprong, in dit geval `example.org`.

    www             IN CNAME        @

Een canoniek naamrecord wordt meestal gebruikt voor het geven van aliassen aan een machine. In het voorbeeld is `www` een alias naar de “master” machine waarvan de naam gelijk is aan de domeinnaam `example.org` (`192.168.1.1`). CNAME's kunnen nooit samen met een ander soort record voor dezelfde hostnaam gebruikt worden.

                   IN MX   10      mail.example.org.

MX records geven aan welke mailservers verantwoordelijk zijn voor het afhandelen van inkomende mail voor de zone. `mail.example.org` is de hostnaam voor de mailserver en 10 is de prioriteit voor die mailserver.

Het is mogelijk meerdere mailservers in te stellen met prioriteiten 10, 20, enzovoorts. Een mailserver die probeert mail af te leveren voor `example.org` probeert dat eerst bij de MX met de hoogste prioriteit (het record met het laagste prioriteitsnummer), daarna de tweede hoogste, enzovoort, totdat de mail afgeleverd kan worden.

Voor in-addr.arpa zonebestanden (omgekeerd DNS) wordt dezelfde opmaak gebruikt, maar dan met PTR-regels in plaats van A of CNAME.

    $TTL 3600

    1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
                            2006051501      ; Serienummer
                            10800           ; Ververs
                            3600            ; Opnieuw proberen
                            604800          ; Verlopen
                            300 )           ; Negatieve antwoord-TTL

            IN      NS      ns1.example.org.
            IN      NS      ns2.example.org.

    1       IN      PTR     example.org.
    2       IN      PTR     ns1.example.org.
    3       IN      PTR     ns2.example.org.
    4       IN      PTR     mx.example.org.
    5       IN      PTR     mail.example.org.

Dit bestand geeft de juiste IP-adressen voor hostnamen in het voorbeelddomein hierboven.

Het is het vernoemen waard dat alle namen aan de rechterkant van een PTR-record volledig gekwalificeerd dienen te zijn (i.e. met een “.” eindigen).

## 29.6.7. Caching naamserver

Een caching naamserver is een naamserver wiens primaire rol het oplossen van recursieve verzoeken is. Het dient simpelweg zelf verzoeken in en onthoudt de antwoorden voor later gebruik.

## 29.6.8. Beveiliging

Hoewel BIND de meest gebruikte implementatie van DNS is, is er altijd nog het beveiligingsvraagstuk. Soms worden er mogelijke en te misbruiken beveiligingsgaten gevonden.

Hoewel FreeBSD named automatisch in een chroot(8)-omgeving plaatst; zijn er verschillende andere beveiligingsmechanismen actief die zouden kunnen helpen om mogelijke aanvallen op de DNS-dienst af te wenden.

Het is altijd verstandig om de CERT beveiligingswaarschuwingen te lezen en een abonnement te nemen op de FreeBSD beveiligingswaarschuwingen mailinglijst om bij te blijven met de beveiligingsproblemen wat betreft Internet en FreeBSD.

> Tip: Als er problemen ontstaan, kan het bijwerken van broncode en het opnieuw bouwen van named geen kwaad doen.

## 29.6.9. Verder lezen

BIND/named hulppagina's: rndc(8), named(8), named.conf(5)

- Officiële ISC BIND pagina

- Officieel ISC BIND Forum

- O'Reilly DNS en BIND 5e Editie

- RFC1034 - Domeinnamen - Concepten en Faciliteiten

- RFC1035 - Domeinnamen - Implementatie en Specificatie

Terug | Begin | Volgende
Automatisch netwerk instellen (DHCP) | Omhoog | Apache HTTP server

Deze en andere documenten kunnen worden gedownload van ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Lees voor vragen over FreeBSD de documentatie alvorens contact te zoeken <questions@FreeBSD.org>.
Vragen over deze documentatie kunnen per e-mail naar <doc@FreeBSD.org>.