Verder Terug Inhoud

4. Het begin

In dit hoofdstuk bespreken we welke software we nodig hebben en waar we die software kunnen halen. Ook bespreken we hoe we ervoor zorgen dat alles correct wordt geïnstalleerd.

4.1 De benodigde software

Allereerst hebben we natuurlijk een draaiend linux systeem nodig, de linux versie die in deze handleiding wordt gebruikt is de distributie Slackware versie 3.5 met kernel 2.0.36. Op zich zijn er niet heel erg veel verschillen tussen andere distributies. Een van de dingen die wel anders is met bijvoorbeeld een distributie als Red Hat is de plek van de opstart bestanden. Als we het hebben over de directory /etc/rc.d dan moet je daar de directory invullen waar jouw configuratie bestanden staan.

Het volgende wat we nodig hebben is de software voor de DNS server. De software die in deze handleiding daarvoor wordt gebruikt is het pakket Bind. Bind is te verkrijgen bij de publieke ftp-server van ISC. Het adres van deze server is ftp.isc.org, de laatste sources van de software bevinden zich dan in de directory /isc/bind/src.

Er zijn op dit moment twee versies van Bind in omloop, namelijk 4.9 (meest recente 4.9 patchlevel 7) en 8.1 (meest recente 8.1 patchlevel 2). Deze handleiding bespreekt versie 4.9 patchlevel 7. De versie die op dit moment verder wordt ontwikkeld is versie 8. Versie 4 wordt alleen geupdate als er beveiligingslekken in zitten.

4.2 Het uitpakken

Nadat we het benodigde archief hebben opgehaald van de ftp-server dienen we het uit te pakken. Dit doen we door middel van het commando tar aan te roepen. Allereerst maken we een directory aan met de naam : bind-4.9.7, in deze directory zetten we straks de sources neer. Bind maakt bij het uitpakken, in tegenstelling tot veel *nix programmatuur, geen directory aan. We doen dus het volgende :

pinky:~$ mkdir bind-4.9.7
pinky:~$ tar -xvzf bind-4.9.7-REL.tar.gz -C bind-4.9.7

We hebben nu de source van bind uitgepakt in de directory bind-4.9.7, laten we eens kijken wat voor structuur we hebben gecreëerd. We hebben als het goed is nu de volgende directory structuur staan in de directory bind-4.9.7:


       drwxr-xr-x   9 pvzweden users        1024 Jun 24  1997 BSD
       -r--r--r--   1 pvzweden users      116408 May 11  1998 CHANGES
       -r--r--r--   1 pvzweden users        4190 Jun 24  1997 INSTALL
       -r--r--r--   1 pvzweden users       26150 May 11  1998 Makefile
       -r--r--r--   1 pvzweden users       21567 May 21  1996 OPTIONS
       -r--r--r--   1 pvzweden users       11631 Apr  7  1998 README
       -r--r--r--   1 pvzweden users       10156 Jun 19  1995 TODO
       drwxr-xr-x   2 pvzweden users        1024 Dec 15  1994 bin
       drwxr-xr-x   5 pvzweden users        1024 Dec 23  1995 compat
       drwxr-xr-x   3 pvzweden users        1024 Jun  1  1997 conf
       drwxr-xr-x  28 pvzweden users        1024 Dec  2  1996 contrib
       drwxr-xr-x   6 pvzweden users        1024 Jun 24  1997 doc
       drwxr-xr-x   3 pvzweden users        1024 Jun  1  1997 include
       drwxr-xr-x   2 pvzweden users        1024 Apr  7  1998 man
       drwxr-xr-x   2 pvzweden users        1024 May 11  1998 named
       drwxr-xr-x   2 pvzweden users        1024 May 11  1998 res
       drwxr-xr-x   7 pvzweden users        1024 Sep 28  1996 shres
       drwxr-xr-x   3 pvzweden users        1024 Apr  7  1998 tools

INSTALL   -    Dit is een bestand met informatie over het installeren van bind
README    -    Wat tips voor het compileren en installeren van bind en wat
               notities die meekwamen met de release van bind
OPTIONS   -    De opties die aan- en uitgezet kunnen worden
RUNSON    -    Een lijst compilers/platforms waar bind op draait
TODO      -    Wat er nog moet gebeuren, als je tijd en zin hebt om mee te
               ontwikkelen aan bind dan kan je hier in vinden wat nog nodig
               is.
BSD/*     -    Hoe Bind geïntegreerd dient te worden in BSD
contrib/* -    Software die door ontwikkelaars toegevoegd is aan de bind
               distributie. Dit zijn vooral handige utility's.
doc/info/*-    Platform-specifieke tips voor het compileren van bind
doc/*     -    RFC'S (Request for comments) en overige informatie


4.3 Voorbereiding voor compileren

Voordat we bind gaan compileren zullen we het pakket aan onze wensen aan moeten passen. Bind komt al ingesteld uit het archief dus we zouden in principe zo kunnen gaan compileren. De opties die op het moment van uitpakken namelijk ingesteld zijn moeten voldoende zijn voor een willekeurige site. Toch lopen we hier even door alle opties heen die aan en/of uitgezet kunnen worden. Deze opties bevinden zich in het bestand options.h dat zich in de directory conf bevindt. Als je bind wilt installeren met de meest gangbare opties kan je doorspringen naar hoofdstuk Het configureren van bind. De beschrijving van deze opties is voor als je wilt weten wat ze doen of als je bind helemaal naar je hand wilt gaan zetten.

DEBUG
Met deze optie, de naam zegt het al kun je debugging aanzetten. Hierdoor kan je wat makkelijker fouten opsporen als er iets mis gaat.

ALLOW_T_UNSPEC
Dit is een optie voor oude "Athena" software die het rr type gebruikt. Je hoeft deze optie naar alle waarschijnlijkheid niet te gebruiken omdat de software bijna niet meer gebruikt wordt. De optie staat in de standaard configuratie ook uit.

ALLOW_UPDATES
Deze optie zorgt ervoor dat dynamische updates mogelijk zijn, je kan dan (als je de juiste client hebt) de database die de nameserver bij houdt "on the fly" updaten. Deze optie bied totaal geen beveiliging omtrent het kijken of je wel mag updaten, iedereen die je name-server kan bereiken mag de namen database updaten. Deze optie wordt dus niet aangeraden.

INVQ
Deze optie is om ervoor te zorgen dat oude versies van nslookup een inverse query kunnen doen. Als je een oude versie van nslookup rond hebt slingeren op je netwerk kan je misschien deze optie aanzetten, maar het wordt aangeraden om liever de optie fake-iquery te gebruiken.

DSTORAGE
Deze optie is er ook weer om ervoor te zorgen dat debugging wat makkelijker gaat. Hij zorgt ervoor dat bij het adresseren van stukken geheugen wordt gekeken of er geen "overruns" plaats vinden. Deze optie heb je niet echt nodig, tenzij je van plan bent om serieus te gaan debuggen. Bij de standaard configuratie staat deze optie ook uit.

DMALLOC
Deze optie zorgt ervoor dat er weer een debug optie wordt aangezet, namelijk om bij te houden hoeveel stukken geheugen gealoceerd worden en wanneer ze worden gebruikt cq vrijgemaakt. Deze optie is normaliter niet nodig tenzij je van plan bent om bind serieus te gaan debuggen.

XFRNETS
Met deze optie kan je ervoor kiezen om in het bestand named.boot een aantal regels op te nemen met daarin de ip-nummers van computers of netwerken die "zone bestanden" mogen kopiëren. Dit is vooral handig als je ervoor wilt zorgen dat niet iedereen zomaar je hele netwerk door kan vlooien. En om de name server niet steeds druk bezig te laten zijn met "zone transfers" die niet mogen te proberen uit te voeren. In de standaard configuratie staat deze optie aan.

PID_FIX
Deze optie zorgt ervoor dat als je bind probeert op te starten en er al een name server draait dat bind dan het bestandje /etc/named.pid of /var/run/named.pid weer terugzet zoals hij het aantrof. In dit bestandje houdt de name server namelijk bij onder welk process-id hij draait. In de standaard configuratie staat deze optie aan.

FWD_LOOP
Deze optie zorgt ervoor dat als de name server in zijn boot-file zieti dat je een van je eigen ip-adressen er neer hebt gezet hij er een opmerking over maakt. Deze optie staat in de standaard configuratie aan.

NO_GLUE
Deze optie zorgt ervoor dat "rotzooi" die meekomt met het zone-bestand van een andere name server tijdens het uitwisselen van zone bestanden wordt uitgekomentaard, zodat het niet in de database terecht komt. Deze optie staat in de standaard configuratie aan.

BOGUSNS
Deze optie zorgt ervoor dat je in het bestand named.boot een regel bogusns kan opnemen. Hier meldt je dan alle adressen van name servers die je wilt negeren. Dit kan een laatste redmiddel zijn als "iemand" zich onterecht loopt te profileren als root-server. Deze optie staat in de standaard configuratie aan.

QRYLOG
Deze optie zorgt ervoor dat een SIGWINCH ervoor zorgt dat de name server alle aanvragen logt. Ook kan je dan de name server opstarten met een -q switch zodat het loggen aangezet wordt. Deze optie staat in de standaard configuratie aan.

LOGFAC
Als je de name server opstart met de -q switch dan produceert hij nogal wat log-data. Deze data wil je waarschijnlijk niet in je syslog hebben waar het normaal gesproken in verdwijnt. Met deze optie kan je ervoor zorgen dat de data met het kenmerk LOC_LOCALn (0 <= n <= 7) Je kan deze optie (LOC_LOCAL) ook defineren. Als je dan in /etc/syslogd.conf ook de settings goed veranderd kan je ervoor zorgen dat alles in een apart bestand terecht komt. Deze optie staat in de standaard configuratie aan.

YPKLUDGE
Als je op je netwerk NIS/YP draait kan het voorkomen dat de versie die je draait de namen die niet op de YP-servers zijn te vinden probeert op te zoeken via DNS. Sommige versies van NIS/YP "zien" niet het verschil tussen een deel van een domain-naam en een domain-naam. Als resultaat proberen ze dus een stukje van de domein-naam op te vragen alszijnde een domeinnaam. Als je DNS-server hier niets mee doet zullen deze requests doorgestuurd worden naar andere DNS-servers op het netwerk wat onnodig verkeer tot gevolg heeft. Deze optie zorgt ervoor dat jouw DNS-server op deze requests reageert en gelijk een foutmelding terugstuurt dat de domein-naam niet te vinden is. Deze optie staat in de standaard configuratie uit.

TRACEROOT
Deze optie zorgt ervoor dat er gecheckt wordt op zogenaamde bogus root nameservers. Dit zijn servers die zich voordoen als root server maar het niet zijn of die helemaal niet bestaan. Deze optie staat in de standaard configuratie aan.

LOCALDOM
Deze optie zorgt ervoor dat de DNS-server twee keer kijkt voor een domein- naam. De eerste keer zal hij zoeken naar de naam zoals de client die wil hebben, de tweede keer echter zal hij een standaard domein-naam achter de naam plakken die de client wil hebben. Deze standaard domein-naam kan je specificeren in named.boot configuratie bestand. Deze optie wordt afgeraden omdat een DNS-server eigenlijk nooit in mag gaan schatten wat de client precies zou willen door er gewoon maar een domein-naam aan vast te plakken. Deze optie staat in de standaard configuratie uit.

SLAVE_FORWARD
Deze optie zorgt ervoor dat als er slave servers zijn gedefinieerd dat deze zich verschrikkelijk "goed" gedragen. En query naar 1 van de slave servers zal dan een timeout hebben van 60/N waar N het aantal forwarders is. Deze optie is experimenteel in deze versie van bind, maar wordt ten sterkste aangeraden om te gebruiken. De optie staat in de standaard configuratie aan.

FORCED_RELOAD
Deze optie zorgt ervoor dat als de server een HUP signaal ontvangt hij zijn secondary zones gaat vergelijken met de primary zones ook al hebben deze nog niet hun refresh timeout bereikt. Deze optie staat in de standaard configuratie aan.

WANT_PIDFILE
Deze optie zorgt ervoor dat een bestand genaamd named.pid wordt gecreëerd in de directory /etc of /var/run. Deze optie wordt aangeraden om aan te laten. Deze optie staat in de standaard configuratie aan.

4.4 Het compileren

We zijn nu op het punt aangeland waar we ervoor gaan zorgen dat alle programma-bestanden voor bind worden gecompileerd. Het enigste dat we nog moeten doen is het aanpassen van de zogenaamde Makefile. Hier stellen we nog een aantal opties in voor het systeem waar we bind op willen gaan draaien. Dit is eigenlijk heel simpel, we hoeven enkel bij een paar regels het # (hekje) weg te halen en dan het commando te geven om bind te gaan "maken". Hieronder staat een stukje uit de Makefile afgebeeld, dit is het stuk wat je voor linux moet hebben. Als je door de Makefile heen bladert zie je vanzelf staan waar het stuk voor linux staat.


       #(Linux - on modern systems, all you need to do is rename or
       #remove compat/include/sys/cdefs.h.  See doc/info/Linux for more
       #information.)
       CC = gcc $(CPPFLAGS)
       CDEBUG = -g
       CPPFLAGS = -DSYSV
       LEX=flex -8 -I
       INSTALL_COMPAT = install-compat
       LIBS = -lfl
       DESTEXEC = /usr/sbin
       DESTMAN = /usr/man
       MANDIR = man
       MANROFF = cat
       DESTHELP = /usr/lib
       CATEXT = $$$$N
       PS = ps -p
       IOT = IOT

Je zult ook nog iets tegen komen over shared libraries, in dit document wordt daar geen aandacht aan besteed, dus dat kan je zo laten staan met hekjes ervoor. Nu we de Makefile hebben aangepast moeten we nog één ding doen voordat we de opdracht geven tot het compileren van bind. We moeten namelijk een bestand in de directory-tree van bind verwijderen of hernoemen. Dit bestand wat staat in de directory compat/include/sys en wat de naam cdefs.h heeft moeten we verwijderen of hernoemen. Als we dat namelijk niet doen zal bind niet willen compileren. Er zullen dan een aantal fouten optreden en het hele compilatie proces zal afbreken. Het is eigenlijk het beste om het bestand te hernoemen, dit doen we door het volgende commando te geven in de directory compat/include/sys:

pinky:~/bind-4.9.7/compat/include/sys$ mv cdefs.h cdefs.h.old

Nadat we dit hebben gedaan kunnen we weer terug gaan naar de root van de bind directory-tree en de opdracht gaan geven om het hele zaakje te laten compileren. We doen dit doormiddel van het commando make. We gaan dus naar de directory toe waar we bind hebben uitgepakt en typen dan :

pinky:~/bind-4.9.7$ make

Hierna zal de computer eventjes bezig zijn met het compileren van bind. Als alles goed gaat is hij er na een tijdje mee klaar en heeft hij geen foutmeldingen gegeven. Je krijgt dan de prompt weer terug.
Noot: Warnings worden niet beschouwd als foutmelding.

Nu komt eigenlijk enkel nog het geven van de opdracht om alles te installeren in de directory's waar het thuishoort. Wat je misschien al gemerkt zal hebben is dat alles tot nu toe als normale user is gedaan. We zullen om de boel in de juiste directory's neer te zetten eerst moeten opwaarderen naar root. Dit gebeurt door het commando su (Set UserID). Allereerst een waarschuwing vooraf, als de installatie van linux al een DNS-server heeft geïnstalleerd en ook al bestanden ervoor neer heeft gezet kan je beter die bestanden even backuppen. Zodra je make install geeft worden die bestanden namelijk zonder pardon vervangen. Wil je eerst kijken wat er vervangen wordt dan kan dat ook, je typt dan het volgende commando :

pinky:~/bind-4.9.7$ make -n install

Die -n zorgt ervoor dat make alleen maar laat zien wat er gaat gebeuren, er wordt dan dus nog niks vervangen. Maar goed laten we maar met de installatie beginnen. We moeten eerst root worden, dus we typen eerst :

pinky:~/bind-4.9.7$ su -

Er zal nu om het root paswoord gevraagd worden, zodat je dat hebt gegeven krijg je de prompt weer terug, alleen ditmaal als root. Je zult nu naar de directory moeten gaan waar je daarstraks, voordat je su deed, stond. Hier geef je dan het commando om bind te installeren :

pinky:/home/pvzweden/bind-4.9.7# make install

Na een tijdje krijg je de prompt weer terug en is bind op het systeem geïstalleerd, het enigste wat ons nu nog rest is het maken van de zone bestanden en dan de DNS-server op te starten.


Verder Terug Inhoud