aboutsummaryrefslogtreecommitdiff
path: root/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml
diff options
context:
space:
mode:
Diffstat (limited to 'nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml')
-rw-r--r--nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml6179
1 files changed, 6179 insertions, 0 deletions
diff --git a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml
new file mode 100644
index 0000000000..8fc23de52a
--- /dev/null
+++ b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml
@@ -0,0 +1,6179 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<!--
+ The FreeBSD Dutch Documentation Project
+
+ $FreeBSD$
+
+ %SOURCE% en_US.ISO8859-1/books/handbook/network-servers/chapter.sgml
+ %SRCID% 39544
+-->
+
+<chapter id="network-servers">
+ <chapterinfo>
+ <authorgroup>
+ <author>
+ <firstname>Murray</firstname>
+ <surname>Stokely</surname>
+ <contrib>Gereorganiseerd door </contrib>
+ </author>
+ </authorgroup>
+ <!-- 23 July 2004 -->
+ <authorgroup>
+ <author>
+ <firstname>Siebrand</firstname>
+ <surname>Mazeland</surname>
+ <contrib>Vertaald door </contrib>
+ </author>
+ <author>
+ <firstname>René</firstname>
+ <surname>Ladan</surname>
+ </author>
+ </authorgroup>
+ </chapterinfo>
+
+ <title>Netwerkdiensten</title>
+
+ <sect1 id="network-servers-synopsis">
+ <title>Overzicht</title>
+
+ <para>Dit hoofdstuk behandelt een aantal veelgebruikte
+ netwerkdiensten op &unix; systemen. Er wordt ingegaan op de
+ installatie, het instellen, testen en beheren van verschillende
+ typen netwerkdiensten. Overal in dit hoofdstuk staan
+ voorbeeldbestanden met instellingen waar de lezer zijn voordeel
+ mee kan doen.</para>
+
+ <para>Na het lezen van dit hoofdstuk weet de lezer:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Hoe om te gaan met de <application>inetd</application>
+ daemon;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe een netwerkbestandssysteem opgezet kan worden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe een netwerkinformatiedienst (NIS) opgezet kan worden
+ voor het delen van gebruikersaccounts;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe automatische netwerkinstellingen gemaakt kunnen
+ worden met DHCP;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe een domeinnaam server opgezet kan worden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe een <application>Apache</application> HTTP Server
+ opgezet kan worden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe een File Transfer Protocol (FTP) Server opgezet kan
+ worden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe een bestand-- en printserver voor &windows;
+ cliënten opgezet kan worden met
+ <application>Samba</application>;</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe datum en tijd gesynchroniseerd kunnen worden en hoe
+ een tijdserver opgezet kan worden met het NTP-protocol.</para>
+ </listitem>
+
+ <listitem>
+ <para>Hoe het standaard log-daemon <command>syslogd</command> in
+ te stellen om logs van hosts op afstand te accepteren.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Veronderstelde voorkennis:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Basisbegrip van de scripts in
+ <filename>/etc/rc</filename>;</para>
+ </listitem>
+
+ <listitem>
+ <para>Bekend zijn met basis netwerkterminologie;</para>
+ </listitem>
+
+ <listitem>
+ <para>Kennis van de installatie van software van derde partijen
+ (<xref linkend="ports"/>).</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="network-inetd">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Chern</firstname>
+ <surname>Lee</surname>
+ <contrib>Bijgedragen door </contrib>
+ </author>
+ </authorgroup>
+
+ <authorgroup>
+ <author>
+ <contrib>Bijgewerkt door </contrib>
+ <othername>The &os; Documentation Project</othername>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>De <application>inetd</application>
+ <quote>Super-Server</quote></title>
+
+ <sect2 id="network-inetd-overview">
+ <title>Overzicht</title>
+
+ <para>&man.inetd.8; wordt soms de
+ <quote>Internet Super-Server</quote> genoemd, omdat het
+ verbindingen voor meerdere diensten beheert. Als door
+ <application>inetd</application> een verbinding wordt ontvangen,
+ bepaalt die voor welk programma de verbinding bedoeld is,
+ splitst het dat proces af en delegeert de socket (het programma
+ wordt gestart met de socket van de dienst als zijn
+ standaardinvoer, -uitvoer en -foutbeschrijvingen). Het draaien
+ van <application>inetd</application> voor servers die niet veel
+ gebruikt worden kan de algehele werklast verminderen in
+ vergelijking met het draaien van elke daemon individueel in
+ stand-alone modus.</para>
+
+ <para><application>inetd</application> wordt primair gebruikt om
+ andere daemons aan te roepen, maar het handelt een aantal
+ triviale protocollen direct af, zoals
+ <application>chargen</application>,
+ <application>auth</application> en
+ <application>daytime</application>.</para>
+
+ <para>In deze paragraaf worden de basisinstellingen van
+ <application>inetd</application> behandeld met de opties vanaf
+ de commandoregel en met het instellingenbestand
+ <filename>/etc/inetd.conf</filename>.</para>
+ </sect2>
+
+ <sect2 id="network-inetd-settings">
+ <title>Instellingen</title>
+
+ <para><application>inetd</application> wordt gestart door het
+ &man.rc.8;-systeem. De
+ optie <literal>inetd_enable</literal> staat standaard op
+ <literal>NO</literal>, maar kan tijdens de installatie door
+ <application>sysinstall</application> worden aangezet. Door het
+ plaatsen van</para>
+
+ <programlisting>inetd_enable="YES"</programlisting>
+
+ <para>of</para>
+
+ <programlisting>inetd_enable="NO"</programlisting>
+
+ <para>in <filename>/etc/rc.conf</filename> wordt
+ <application>inetd</application> bij het opstarten van een
+ systeem wel of niet ingeschakeld. Het commando:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/inetd rcvar</userinput></screen>
+
+ <para>kan gedraaid worden om de huidige effectieve instellingen
+ weer te geven.</para>
+
+ <para>Dan kunnen er ook nog een aantal commandoregelopties aan
+ <application>inetd</application> meegegeven worden met de optie
+ <literal>inetd_flags</literal>.</para>
+ </sect2>
+
+ <sect2 id="network-inetd-cmdline">
+ <title>Commandoregelopties</title>
+
+ <para>Zoals de meeste serverdaemons heeft
+ <application>inetd</application> een aantal opties die
+ doorgegeven kunnen worden om het gedrag aan te passen. Zie de
+ handleidingpagina &man.inetd.8; voor een volledige lijst van de
+ opties.</para>
+
+ <para>Opties kunnen door middel van de optie
+ <literal>inetd_flags</literal> in
+ <filename>/etc/rc.conf</filename> aan
+ <application>inetd</application> worden doorgegeven. Standaard
+ staat <literal>inetd_flags</literal> ingesteld op
+ <literal>-wW -C 60</literal>, dat TCP-wrapping aanzet voor de
+ diensten van <application>inetd</application>, en voorkomt dat
+ elk enkelvoudig IP-adres enige dienst meer dan 60 keer per
+ minuut opvraagt.</para>
+
+ <para>Ook al worden er hieronder rate-limiting opties besproken,
+ beginnende gebruikers kunnen blij zijn met het feit dat deze
+ parameters gewoonlijk niet hoeven te worden aangepast. Deze
+ opties kunnen interessant zijn wanneer er een buitensporige
+ hoeveelheid verbindingen worden opgezet. Een volledige lijst
+ van opties staat in de hulppagina &man.inetd.8;.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>-c maximum</term>
+
+ <listitem>
+ <para>Geeft het maximale aantal gelijktijdige verzoeken voor
+ iedere dienst aan. De standaard is ongelimiteerd. Kan
+ per dienst ter zijde geschoven worden met de parameter
+ <option>max-child</option>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>-C rate</term>
+
+ <listitem>
+ <para>Geeft het maximale aantal keren aan dat een dienst
+ vanaf een bepaald IP-adres per minuut aangeroepen kan
+ worden. Kan per dienst ter zijde geschoven worden met de
+ parameter
+ <option>max-connections-per-ip-per-minute</option>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>-R rate</term>
+
+ <listitem>
+ <para>Geeft het maximale aantal keren aan dat een dienst
+ per minuut aangeroepen kan worden. De standaard is 256.
+ De instelling <literal>0</literal> geeft aan dat er geen
+ limiet is.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>-s maximum</term>
+
+ <listitem>
+ <para>Specificeert het maximaal aantal keer per minuut dat
+ een dienst aangeroepen kan worden vanuit een enkelvoudig
+ IP-adres; de standaard is onbeperkt. Kan worden
+ overstemd op een per-dienst-basis met de parameter
+ <option>max-child-per-ip</option>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect2>
+
+ <sect2 id="network-inetd-conf">
+ <title><filename>inetd.conf</filename></title>
+
+ <para>De instellingen van <application>inetd</application>
+ worden beheerd in <filename>/etc/inetd.conf</filename>.</para>
+
+ <para>Als er een wijziging wordt aangebracht in
+ <filename>/etc/inetd.conf</filename>, dan kan
+ <application>inetd</application> gedwongen worden om de
+ instellingen opnieuw in te lezen door dit commando te draaien:</para>
+
+ <example id="network-inetd-reread">
+ <title>Het instellingenbestand van <application>inetd</application>
+ herladen</title>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/inetd reload</userinput></screen>
+ </example>
+
+ <para>Iedere regel in het bestand met instellingen heeft
+ betrekking op een individuele daemon. Commentaar wordt vooraf
+ gegaan door een <literal>#</literal>. De opmaak van elke regel
+ van <filename>/etc/inetd.conf</filename> is als volgt:</para>
+
+ <programlisting>service-name
+socket-type
+protocol
+{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
+user[:group][/login-class]
+server-program
+server-program-arguments</programlisting>
+
+ <para>Een voorbeeldregel voor de daemon &man.ftpd.8; met IPv4 kan
+ eruit zien als:</para>
+
+ <programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
+
+ <variablelist>
+ <varlistentry>
+ <term>service-name</term>
+
+ <listitem>
+ <para>Dit is de dienstnaam van een daemon. Die moet
+ overeenkomen met een dienst uit
+ <filename>/etc/services</filename>. Hiermee kan de
+ poort waarop <application>inetd</application> moet
+ luisteren aangegeven worden. Als er een nieuwe dienst
+ wordt gemaakt, moet die eerst in
+ <filename>/etc/services</filename> gezet worden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>socket-type</term>
+
+ <listitem>
+ <para>Dit is <literal>stream</literal>,
+ <literal>dgram</literal>, <literal>raw</literal> of
+ <literal>seqpacket</literal>. <literal>stream</literal>
+ moet gebruikt worden voor verbindingsgebaseerde
+ TCP-daemons, terwijl <literal>dgram</literal> wordt
+ gebruikt voor daemons die gebruik maken van het
+ transportprotocol <acronym>UDP</acronym>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>protocol</term>
+
+ <listitem>
+ <para>Een van de volgende:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Protocol</entry>
+
+ <entry>Toelichting</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>tcp, tcp4</entry>
+
+ <entry>TCP IPv4</entry>
+ </row>
+
+ <row>
+ <entry>udp, udp4</entry>
+
+ <entry>UDP IPv4</entry>
+ </row>
+
+ <row>
+ <entry>tcp6</entry>
+
+ <entry>TCP IPv6</entry>
+ </row>
+
+ <row>
+ <entry>udp6</entry>
+
+ <entry>UDP IPv6</entry>
+ </row>
+
+ <row>
+ <entry>tcp46</entry>
+
+ <entry>Zowel TCP IPv4 als v6</entry>
+ </row>
+
+ <row>
+ <entry>udp46</entry>
+
+ <entry>Zowel UDP IPv4 als v6</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]</term>
+
+ <listitem>
+ <para><option>wait|nowait</option> geeft aan of de daemon
+ die door <application>inetd</application> wordt
+ aangesproken zijn eigen sockets kan afhandelen of niet.
+ <option>dgram</option> sockettypen moeten de optie
+ <option>wait</option> gebruiken, terwijl streamsocket
+ daemons, die meestal multi-threaded zijn, de optie
+ <option>nowait</option> horen te gebruiken.
+ <option>wait</option> geeft meestal meerdere sockets aan
+ een daemon, terwijl <option>nowait</option> een kinddaemon
+ draait voor iedere nieuwe socket.</para>
+
+ <para>Het maximum aantal kinddaemons dat
+ <application>inetd</application> mag voortbrengen kan
+ ingesteld worden met de optie <option>max-child</option>.
+ Als een limiet van tien instanties van een bepaalde
+ daemon gewenst is, dan zou er <literal>/10</literal>
+ achter <option>nowait</option> gezet worden. Door
+ <literal>/0</literal> wordt een onbeperkt aantal kinderen
+ toegestaan.</para>
+
+ <para>Naast <option>max-child</option> zijn er nog twee
+ andere opties waarmee het maximale aantal verbindingen van
+ een bepaalde plaats naar een daemon ingesteld kan worden.
+ <option>max-connections-per-ip-per-minute</option> beperkt
+ het aantal verbindingen per minuut voor enig IP-adres, een
+ waarde van tien betekent hier dat er van ieder IP-adres
+ maximaal tien verbindingen naar een bepaalde dienst tot
+ stand gebracht kunnen worden.
+ <option>max-child-per-ip</option> beperkt het aantal
+ kindprocessen dat namens enig IP-adres op enig moment
+ gestart kan worden. Deze opties kunnen zijn nuttig om
+ bedoeld en onbedoeld buitensporig bronnengebruik van en
+ Denial of Service (DoS) aanvallen op een machine te
+ voorkomen.</para>
+
+ <para>In dit veld is één van
+ <option>wait</option> of <option>nowait</option>
+ verplicht. <option>max-child</option>,
+ <option>max-connections-per-ip-per-minute</option> en
+ <option>max-child-per-ip</option> zijn optioneel.</para>
+
+ <para>Een stream-type multi-threaded daemon zonder
+ één van de limieten
+ <option>max-child</option>,
+ <option>max-connections-per-ip-per-minute</option> of
+ <option>max-child-per-ip</option> is eenvoudigweg:
+ <literal>nowait</literal>.</para>
+
+ <para>Dezelfde daemon met een maximale limiet van tien
+ daemons zou zijn: <literal>nowait/10</literal>.</para>
+
+ <para>Dezelfde instellingen met een limiet van twintig
+ verbindingen per IP-adres per minuut en een totaal maximum
+ van tien kinddaemons zou zijn:
+ <literal>nowait/10/20</literal>.</para>
+
+ <para>Deze opties worden allemaal gebruikt door de
+ standaardinstellingen van de daemon &man.fingerd.8;:</para>
+
+ <programlisting>finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s</programlisting>
+
+ <para>Als afsluiting, een voorbeeld in dit veld met een
+ maximum van 100 kinderen in totaal, met een maximum van 5
+ voor enig IP-adres zou zijn:
+ <literal>nowait/100/0/5</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>user</term>
+
+ <listitem>
+ <para>Dit is de gebruikersnaam waar een daemon onder
+ draait. Daemons draaien meestal als de gebruiker
+ <username>root</username>. Om veiligheidsredenen draaien
+ sommige daemons onder de gebruiker
+ <username>daemon</username> of de gebruiker met de minste
+ rechten: <username>nobody</username>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>server-program</term>
+
+ <listitem>
+ <para>Het volledige pad van de daemon die uitgevoerd moet
+ worden als er een verbinding wordt ontvangen. Als de
+ daemon een dienst is die door
+ <application>inetd</application> intern wordt geleverd,
+ dan moet de optie <option>internal</option> gebruikt
+ worden.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>server-program-arguments</term>
+
+ <listitem>
+ <para>Deze optie werkt samen met de optie
+ <option>server-program</option> en hierin worden de
+ argumenten ingesteld, beginnend met
+ <literal>argv[0]</literal>, die bij het starten aan de
+ daemon worden meegegeven. Als
+ <command>mijndaemon -d</command> de commandoregel is,
+ dan zou <literal>mijndaemon -d</literal> de waarde van
+ <option>server-program-arguments</option> zijn. Hier
+ geldt ook dat als de daemon een interne dienst is, hier
+ de optie <option>internal</option> moet worden.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect2>
+
+ <sect2 id="network-inetd-security">
+ <title>Beveiliging</title>
+
+ <para>Afhankelijk van keuzes gemaakt tijdens de installatie,
+ kunnen veel van de diensten van <application>inetd</application>
+ standaard ingeschakeld zijn. Het is verstandig te overwegen om
+ een daemon dat niet noodzakelijk is uit te schakelen. Plaats
+ een <literal>#</literal> voor de daemon in
+ <filename>/etc/inetd.conf</filename> en <link
+ linkend="network-inetd-reread">herlaad vervolgens de
+ instellingen van inetd</link>. Sommige daemons, zoals
+ <application>fingerd</application>, zijn wellicht helemaal niet
+ gewenst omdat ze informatie geven die nuttig kan zijn voor een
+ aanvaller.</para>
+
+ <para>Sommige daemons zijn zich niet echt bewust van beveiliging
+ en hebben lange of niet bestaande timeouts voor
+ verbindingspogingen. Hierdoor kan een aanvaller langzaam veel
+ verbindingen maken met een daemon en zo beschikbare bronnen
+ verzadigen. Het is verstandig voor die daemons de limietopties
+ <option>max-connections-per-ip-per-minute</option>,
+ <option>max-child</option> of <option>max-child-per-ip</option>
+ te gebruiken als ze naar uw smaak teveel verbindingen hebben.</para>
+
+ <para>TCP-wrapping staat standaard aan. Er staat meer informatie
+ over het zetten van TCP-restricties op de verschillende daemons
+ die door <application>inetd</application> worden aangesproken
+ in &man.hosts.access.5;.</para>
+ </sect2>
+
+ <sect2 id="network-inetd-misc">
+ <title>Allerlei</title>
+
+ <para><application>daytime</application>,
+ <application>time</application>,
+ <application>echo</application>,
+ <application>discard</application>,
+ <application>chargen</application> en
+ <application>auth</application> zijn allemaal interne diensten
+ van <application>inetd</application>.</para>
+
+ <para>De dienst <application>auth</application> biedt
+ identiteitsnetwerkdiensten en is tot op een bepaald niveau
+ instelbaar, terwijl de anderen eenvoudigweg aan of uit staan.</para>
+
+ <para>Meer diepgaande informatie staat in &man.inetd.8;.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network-nfs">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Gereorganiseerd en verbeterd door </contrib>
+ </author>
+ </authorgroup>
+
+ <authorgroup>
+ <author>
+ <firstname>Bill</firstname>
+ <surname>Swingle</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>Netwerkbestandssysteem (NFS)</title>
+
+ <indexterm><primary>NFS</primary></indexterm>
+
+ <para>Het Netwerkbestandssysteem (Network File System) is een van
+ de vele bestandssystemen die &os; ondersteunt. Het staat ook wel
+ bekend als <acronym role="Network File System">NFS</acronym>.
+ Met <acronym role="Network File System">NFS</acronym> is het
+ mogelijk om mappen en bestanden met anderen in een netwerk te
+ delen. Door het gebruik van <acronym
+ role="Network File System">NFS</acronym> kunnen gebruikers en
+ programma's bij bestanden op andere systemen op bijna dezelfde
+ manier als bij hun eigen lokale bestanden.</para>
+
+ <para>De grootste voordelen van <acronym>NFS</acronym> zijn:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Lokale werkstations gebruiken minder schijfruimte omdat
+ veel gebruikte data op één machine opgeslagen
+ kan worden en nog steeds toegankelijk is voor gebruikers via
+ het netwerk;</para>
+ </listitem>
+
+ <listitem>
+ <para>Gebruikers hoeven niet op iedere machine een thuismap te
+ hebben. Thuismappen kunnen op de <acronym>NFS</acronym>
+ server staan en op het hele netwerk beschikbaar zijn;</para>
+ </listitem>
+
+ <listitem>
+ <para>Opslagapparaten als floppydisks, CD-ROM drives en
+ &iomegazip; drives kunnen door andere machines op een netwerk
+ gebruikt worden. Hierdoor kan het aantal drives met
+ verwijderbare media in een netwerk verkleind worden.</para>
+ </listitem>
+ </itemizedlist>
+
+ <sect2>
+ <title>Hoe <acronym>NFS</acronym> werkt</title>
+
+ <para><acronym>NFS</acronym> bestaat uit tenminste twee
+ hoofdonderdelen: een server en een of meer cliënten. De
+ cliënt benadert de gegevens die op een servermachine zijn
+ opgeslagen via een netwerk. Om dit mogelijk te maken moeten er
+ een aantal processen ingesteld en gestart worden.</para>
+
+ <para>Op de server moeten de volgende daemons draaien:</para>
+ <indexterm>
+ <primary>NFS</primary>
+
+ <secondary>server</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>bestandsserver</primary>
+
+ <secondary>UNIX cliënten</secondary>
+ </indexterm>
+
+ <indexterm><primary><application>rpcbind</application></primary></indexterm>
+
+ <indexterm><primary><application>mountd</application></primary></indexterm>
+
+ <indexterm><primary><application>nfsd</application></primary></indexterm>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <colspec colwidth="1*"/>
+
+ <colspec colwidth="3*"/>
+
+ <thead>
+ <row>
+ <entry>Daemon</entry>
+
+ <entry>Beschrijving</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><application>nfsd</application></entry>
+
+ <entry>De <acronym>NFS</acronym>-daemon die verzoeken van
+ de <acronym>NFS</acronym> cliënten afhandelt.</entry>
+ </row>
+
+ <row>
+ <entry><application>mountd</application></entry>
+
+ <entry>De <acronym>NFS</acronym> koppeldaemon die
+ doorgestuurde verzoeken van &man.nfsd.8;
+ uitvoert.</entry>
+ </row>
+
+ <row>
+ <entry><application>rpcbind</application></entry>
+
+ <entry>Deze daemon geeft voor
+ <acronym>NFS</acronym>-cliënten aan welke poort de
+ <acronym>NFS</acronym>-server gebruikt.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Op de cliënt kan ook een daemon draaien:
+ <application>nfsiod</application>. De daemon
+ <application>nfsiod</application> handelt verzoeken van de
+ <acronym>NFS</acronym>-server af. Dit is optioneel en kan de
+ prestaties verbeteren, maar het is niet noodzakelijk voor een
+ normale en correcte werking. Meer informatie staat in
+ &man.nfsiod.8;.</para>
+ </sect2>
+
+ <sect2 id="network-configuring-nfs">
+ <title><acronym>NFS</acronym> instellen</title>
+
+ <indexterm>
+ <primary>NFS</primary>
+
+ <secondary>instellen</secondary>
+ </indexterm>
+
+ <para><acronym>NFS</acronym> instellen gaat redelijk rechtlijnig.
+ Alle processen die moeten draaien kunnen meestarten bij het
+ opstarten door een paar wijzigingen in
+ <filename>/etc/rc.conf</filename>.</para>
+
+ <para>Op de <acronym>NFS</acronym> server dienen de volgende
+ opties in <filename>/etc/rc.conf</filename> te staan:</para>
+
+ <programlisting>rpcbind_enable="YES"
+nfs_server_enable="YES"
+mountd_flags="-r"</programlisting>
+
+ <para><application>mountd</application> start automatisch als de
+ <acronym>NFS</acronym> server is ingeschakeld.</para>
+
+ <para>Op de cliënt dient de volgende optie in
+ <filename>/etc/rc.conf</filename> te staan:</para>
+
+ <programlisting>nfs_client_enable="YES"</programlisting>
+
+ <para>In het bestand <filename>/etc/exports</filename> staat
+ beschreven welke bestandssystemen <acronym>NFS</acronym> moet
+ exporteren (soms heet dat ook wel delen of
+ <quote>sharen</quote>). Iedere regel in
+ <filename>/etc/exports</filename> slaat op een bestandssysteem
+ dat wordt geëxporteerd en welke machines toegang hebben
+ tot dat bestandssysteem. Samen met machines die toegang hebben,
+ kunnen ook toegangsopties worden aangegeven. Er zijn veel
+ opties beschikbaar, maar hier worden er maar een paar
+ beschreven. Alle opties staan beschreven in
+ &man.exports.5;.</para>
+
+ <para>Nu volgen een aantal voorbeelden voor
+ <filename>/etc/exports</filename>:</para>
+
+ <indexterm>
+ <primary>NFS</primary>
+
+ <secondary>exportvoorbeelden</secondary>
+ </indexterm>
+
+ <para>Het volgende voorbeeld geeft een beeld van hoe een
+ bestandssysteem te exporteren, hoewel de instellingen
+ afhankelijk zijn van de omgeving en het netwerk. Om
+ bijvoorbeeld de map <filename>/cdrom</filename> te exporteren
+ naar drie machines die dezelfde domeinnaam hebben als de server
+ (vandaar dat de machinenamen geef domeinachtervoegsel hebben)
+ of in <filename>/etc/hosts</filename> staan. De vlag
+ <option>-ro</option> exporteert het bestandssysteem als
+ alleen&ndash;lezen. Door die vlag kan een ander systeem niet
+ schrijven naar het geëxporteerde bestandssysteem.</para>
+
+ <programlisting>/cdrom -ro host1 host2 host3</programlisting>
+
+ <para>Het volgende voorbeeld exporteert
+ <filename>/home</filename> naar drie hosts op basis van
+ IP-adres. Dit heeft zin als er een privaat netwerk bestaat,
+ zonder dat er een <acronym>DNS</acronym> server is ingesteld.
+ Optioneel kan <filename>/etc/hosts</filename> gebruikt worden
+ om interne hostnamen in te stellen. Er is meer informatie te
+ vinden in &man.hosts.5;. Met de vlag <option>-alldirs</option>
+ mogen submappen ook koppelpunten zijn. De submap wordt dan niet
+ feitelijk aangekoppeld, maar de cliënt koppelt dan alleen
+ de submappen aan die verplicht of nodig zijn.</para>
+
+ <programlisting>/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4</programlisting>
+
+ <para>Het volgende voorbeeld exporteert <filename>/a</filename>
+ zo dat twee cliënten uit verschillende domeinen bij het
+ bestandssysteem mogen. Met de vlag
+ <option>&ndash;maproot=root</option> mag de gebruiker op het
+ andere systeem gegevens naar het geëxporteerde
+ bestandssysteem schrijven als <username>root</username>. Als
+ de vlag <option>-maproot=root</option> niet wordt gebruikt, dan
+ kan een gebruiker geen bestanden wijzigen op het
+ geëxporteerde bestandssysteem, zelfs niet als een gebruiker
+ daar <username>root</username> is.</para>
+
+ <programlisting>/a -maproot=root host.example.com box.example.org</programlisting>
+
+ <para>Om een cliënt toegang te geven tot een
+ geëxporteerd bestandssysteem, moet die cliënt daar
+ rechten voor hebben. De cliënt moet daarvoor genoemd
+ worden in <filename>/etc/exports</filename>.</para>
+
+ <para>In <filename>/etc/exports</filename> staat iedere regel voor
+ de exportinformatie van één bestandssysteem naar
+ één host. Per bestandssysteem mag een host maar
+ één keer genoemd worden en mag maar
+ één standaard hebben. Stel bijvoorbeeld dat
+ <filename>/usr</filename> een enkel bestandssysteem is. Dan is
+ de volgende <filename>/etc/exports</filename> niet geldig:</para>
+
+ <programlisting>># Werkt niet als /usr 1 bestandssysteem is
+/usr/src client
+/usr/ports client</programlisting>
+
+ <para>Eén bestandssysteem, <filename>/usr</filename>,
+ heeft twee regels waarin exports naar dezelfde host worden
+ aangegeven, <hostid>client</hostid>. In deze situatie is de
+ juiste instelling:</para>
+
+ <programlisting>/usr/src /usr/ports client</programlisting>
+
+ <para>De eigenschappen van een bestandssysteem dat naar een
+ bepaalde host wordt geëxporteerd moeten allemaal op
+ één regel staan. Regels waarop geen cliënt
+ wordt aangegeven worden behandeld als een enkele host. Dit
+ beperkt hoe bestandssysteem geëxporteerd kunnen worden,
+ maar dat blijkt meestal geen probleem te zijn.</para>
+
+ <para>Het volgende voorbeeld is een geldige exportlijst waar
+ <filename>/usr</filename> en <filename>/exports</filename>
+ lokale bestandssystemen zijn:</para>
+
+ <programlisting># Exporteer src en ports naar client01 en client02,
+# maar alleen client01 heeft er rootprivileges
+/usr/src /usr/ports -maproot=root client01
+/usr/src /usr/ports client02
+# De cliëntmachines hebben rootrechten en kunnen overal aankoppelen
+# op /exports. Iedereen in de wereld kan /exports/obj als alleen-lezen aankoppelen.
+/exports -alldirs -maproot=root client01 client02
+/exports/obj -ro</programlisting>
+
+ <para>De daemon <application>mountd</application> moet gedwongen
+ worden om het bestand <filename>/etc/exports</filename> te
+ controleren steeds wanneer het is aangepast, zodat de
+ veranderingen effectief kunnen worden. Dit kan worden bereikt
+ door òfwel een HUP-signaal naar de draaiende daemon te
+ sturen:</para>
+
+ <screen>&prompt.root; <userinput>kill -HUP `cat /var/run/mountd.pid`</userinput></screen>
+
+ <para>of door het &man.rc.8; script <command>mountd</command> met
+ de juiste parameter aan te roepen:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/mountd onereload</userinput></screen>
+
+ <para>Raadpleeg <xref linkend="configtuning-rcd"/> voor meer
+ informatie over het gebruik van rc-scripts.</para>
+
+ <para>Het is ook mogelijk een machine te herstarten, zodat &os;
+ alles netjes in kan stellen, maar dat is niet nodig. Het
+ uitvoeren van de volgende commando's als
+ <username>root</username> hoort hetzelfde resultaat te
+ hebben.</para>
+
+ <para>Op de <acronym>NFS</acronym> server:</para>
+
+ <screen>&prompt.root; <userinput>rpcbind</userinput>
+&prompt.root; <userinput>nfsd -u -t -n 4</userinput>
+&prompt.root; <userinput>mountd -r</userinput></screen>
+
+ <para>Op de <acronym>NFS</acronym> cliënt:</para>
+
+ <screen>&prompt.root; <userinput>nfsiod -n 4</userinput></screen>
+
+ <para>Nu is alles klaar om feitelijk het netwerkbestandssysteem
+ aan te koppelen. In de volgende voorbeelden is de naam van de
+ server <hostid>server</hostid> en de naam van de cliënt is
+ <hostid>client</hostid>. Om een netwerkbestandssysteem slechts
+ tijdelijk aan te koppelen of om alleen te testen, kan een
+ commando als het onderstaande als <username>root</username> op
+ de cliënt uitgevoerd worden:</para>
+
+ <indexterm>
+ <primary>NFS</primary>
+
+ <secondary>aankoppelen</secondary>
+ </indexterm>
+
+ <screen>&prompt.root; <userinput>mount server:/home /mnt</userinput></screen>
+
+ <para>Hiermee wordt de map <filename>/home</filename> op de server
+ aangekoppeld op <filename>/mnt</filename> op de cliënt.
+ Als alles juist is ingesteld, zijn nu in
+ <filename>/mnt</filename> op de cliënt de bestanden van de
+ server zichtbaar.</para>
+
+ <para>Om een netwerkbestandssysteem iedere keer als een computer
+ opstart aan te koppelen, kan het bestandssysteem worden
+ toegevoegd aan het bestand <filename>/etc/fstab</filename>:</para>
+
+ <programlisting>server:/home /mnt nfs rw 0 0</programlisting>
+
+ <para>Alle beschikbare opties staan in &man.fstab.5;.</para>
+ </sect2>
+
+ <sect2>
+ <title>Op slot zetten</title>
+
+ <para>Voor sommige applicaties (b.v.
+ <application>mutt</application>) is het nodig dat bestanden op
+ slot staan om correct te werken. In het geval van
+ <acronym>NFS</acronym>, kan <application>rpc.lockd</application>
+ worden gebruikt voor het op slot zetten van bestanden. Voeg het
+ volgende toe aan het bestand <filename>/etc/rc.conf</filename>
+ op zowel de cliënt als de server om het aan te zetten (het
+ wordt aangenomen dat de <acronym>NFS</acronym>-cliënt en
+ -server reeds zijn geconfigureerd):</para>
+
+ <programlisting>rpc_lockd_enable="YES"
+rpc_statd_enable="YES"</programlisting>
+
+ <para>Start de applicatie met:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/lockd start</userinput>
+&prompt.root; <userinput>/etc/rc.d/statd start</userinput></screen>
+
+ <para>Als echt op slot zetten tussen de
+ <acronym>NFS</acronym>-cliënten en de
+ <acronym>NFS</acronym>-server niet nodig is, is het mogelijk om
+ de <acronym>NFS</acronym>-cliënt bestanden lokaal op slot
+ te laten zetten door <option>-L</option> aan &man.mount.nfs.8;
+ door te geven. In de handleidingpagina &man.mount.nfs.8; staan
+ verdere details.</para>
+ </sect2>
+
+ <sect2>
+ <title>Mogelijkheden voor gebruik</title>
+
+ <para><acronym>NFS</acronym> is voor veel doeleinden in te zetten.
+ Een aantal voorbeelden:</para>
+
+ <indexterm>
+ <primary>NFS</primary>
+
+ <secondary>gebruik</secondary>
+ </indexterm>
+
+ <itemizedlist>
+ <listitem>
+ <para>Een aantal machines een CD-ROM of andere media laten
+ delen. Dat is goedkoper en vaak ook handiger, bijvoorbeeld
+ bij het installeren van software op meerdere
+ machines;</para>
+ </listitem>
+
+ <listitem>
+ <para>Op grote netwerken kan het praktisch zijn om een
+ centrale <acronym>NFS</acronym> server in te richten,
+ waarop alle thuismappen staan. Die thuismappen kunnen dan
+ geëxporteerd worden, zodat gebruikers altijd
+ dezelfde thuismap hebben, op welk werkstation ze ook
+ aanmelden;</para>
+ </listitem>
+
+ <listitem>
+ <para>Meerdere machines kunnen een gezamenlijke map
+ <filename>/usr/ports/distfiles</filename> hebben. Dan is
+ het mogelijk om een port op meerdere machines te
+ installeren, zonder op iedere machine de broncode te hoeven
+ downloaden.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="network-amd">
+ <sect2info>
+ <authorgroup>
+ <author>
+ <firstname>Wylie</firstname>
+ <surname>Stilwell</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+
+ <authorgroup>
+ <author>
+ <firstname>Chern</firstname>
+ <surname>Lee</surname>
+ <contrib>Herschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect2info>
+
+ <title>Automatisch aankoppelen met
+ <application>amd</application></title>
+
+ <indexterm><primary>amd</primary></indexterm>
+
+ <indexterm><primary>automatic mounter daemon</primary></indexterm>
+
+ <para>&man.amd.8; (de automatic mounter daemon) koppelt
+ automatisch netwerkbestandssystemen aan als er aan een bestand
+ of map binnen dat bestandssysteem wordt gerefereerd.
+ <application>amd</application> ontkoppelt ook bestandssystemen
+ die een bepaalde tijd niet gebruikt worden. Het gebruikt van
+ <application>amd</application> is een aantrekkelijk en eenvoudig
+ alternatief ten opzichte van permanente koppelingen, die meestal
+ in <filename>/etc/fstab</filename> staan.</para>
+
+ <para><application>amd</application> werkt door zichzelf als
+ NFS-server te koppelen aan de mappen <filename>/host</filename>
+ en <filename>/net</filename>. Als binnen die mappen een bestand
+ wordt geraadpleegd, dan zoekt <application>amd</application> de
+ bijbehorende netwerkkoppeling op en koppelt die automatisch aan.
+ <filename>/net</filename> wordt gebruikt om een
+ geëxporteerd bestandssysteem van een IP-adres aan te
+ koppelen, terwijl <filename>/host</filename> wordt gebruikt om
+ een geëxporteerd bestandssysteem van een hostnaam aan te
+ koppelen.</para>
+
+ <para>Het raadplegen van een bestand in
+ <filename>/host/foobar/usr</filename> geeft
+ <application>amd</application> aan dat die moet proberen de
+ <filename>/usr</filename> export op de host
+ <hostid>foobar</hostid> aan te koppelen.</para>
+
+ <example>
+ <title>Een export aankoppelen met
+ <application>amd</application></title>
+
+ <para>De beschikbare koppelingen van een netwerkhost zijn te
+ bekijken met <command>showmount</command>. Om bijvoorbeeld
+ de koppelingen van de host <hostid>foobar</hostid> te
+ bekijken:</para>
+
+ <screen>&prompt.user; <userinput>showmount -e foobar</userinput>
+Exports list on foobar:
+/usr 10.10.10.0
+/a 10.10.10.0
+&prompt.user; <userinput>cd /host/foobar/usr</userinput></screen>
+ </example>
+
+ <para>Zoals in het bovenstaande voorbeeld te zien is, toont
+ <command>showmount</command> <filename>/usr</filename> als een
+ export. Als er naar de map
+ <filename>/host/foobar/usr</filename> wordt gegaan, probeert
+ <application>amd</application> de hostnaam
+ <hostid>foobar</hostid> te resolven en de gewenste export
+ automatisch aan te koppelen.</para>
+
+ <para><application>amd</application> kan gestart worden door de
+ opstartscript door de volgende regel in
+ <filename>/etc/rc.conf</filename> te plaatsen:</para>
+
+ <programlisting>amd_enable="YES"</programlisting>
+
+ <para>Er kunnen ook nog opties meegegeven worden aan
+ <application>amd</application> met de optie
+ <varname>amd_flags</varname>. Standaard staat
+ <varname>amd_flags</varname> ingesteld op:</para>
+
+ <programlisting>amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"</programlisting>
+
+ <para>In het bestand <filename>/etc/amd.map</filename> staan
+ de standaardinstellingen waarmee exports aangekoppeld worden.
+ In het bestand <filename>/etc/amd.conf</filename> staan een
+ aantal van de meer gevorderde instellingen van
+ <application>amd</application>.</para>
+
+ <para>In &man.amd.8; en &man.amd.conf.5; staat meer
+ informatie.</para>
+ </sect2>
+
+ <sect2 id="network-nfs-integration">
+ <sect2info>
+ <authorgroup>
+ <author>
+ <firstname>John</firstname>
+ <surname>Lind</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect2info>
+
+ <title>Problemen bij samenwerking met andere systemen</title>
+
+ <para>Bepaalde Ethernet adapters voor ISA PC systemen kennen
+ limieten die tot serieuze netwerkproblemen kunnen leiden, in
+ het bijzonder met NFS. Dit probleem is niet specifiek voor
+ &os;, maar het kan op &os; wel voor komen.</para>
+
+ <para>Het probleem ontstaat bijna altijd als (&os;) PC-systemen
+ netwerken met hoog presterende werkstations, zoals van Silicon
+ Graphics, Inc. en Sun Microsystems, Inc. De NFS-koppeling werkt
+ prima en wellicht lukken een aantal acties ook, maar dan ineens
+ lijkt de server niet meer te reageren voor de cliënt,
+ hoewel verzoeken van en naar andere systemen gewoon verwerkt
+ worden. Dit gebeurt op een cliëntsysteem, of de
+ cliënt nu het &os; systeem is of het werkstation. Op veel
+ systemen is er geen manier om de cliënt netjes af te
+ sluiten als dit probleem is ontstaan. Vaak is de enige
+ mogelijkheid een reset van de cliënt, omdat het probleem
+ met NFS niet opgelost kan worden.</para>
+
+ <para>Hoewel de enige <quote>correcte</quote> oplossing de
+ aanschaf van een snellere en betere Ethernet adapter voor het
+ &os; systeem is, is er zo om het probleem heen te werken dat het
+ werkbaar is. Als &os; de <emphasis>server</emphasis> is, kan de
+ optie <option>-w=1024</option> gebruikt worden bij het
+ aankoppelen door de cliënt. Als het &os; systeem de
+ <emphasis>cliënt</emphasis> is, dan dient het
+ NFS-bestandssysteem aangekoppeld te worden met de optie
+ <option>&nbsp;r=1024</option>. Deze opties kunnen het vierde
+ veld zijn in een regel in <filename>fstab</filename> voor
+ automatische aankoppelingen en bij handmatige aankoppelingen met
+ &man.mount.8; kan de parameter <option>-o</option> gebruikt
+ worden.</para>
+
+ <para>Soms wordt een ander probleem voor dit probleem versleten,
+ als servers en cliënten zich op verschillende netwerken
+ bevinden. Als dat het geval is, dan dient
+ <emphasis>vastgesteld</emphasis> te worden dat routers de
+ <acronym>UDP</acronym> informatie op de juiste wijze routeren,
+ omdat er anders nooit NFS-verkeer gerouteerd kan worden.</para>
+
+ <para>In de volgende voorbeelden is <hostid>fastws</hostid> de
+ host(interface)naam van een hoog presterend werkstation en
+ <hostid>freebox</hostid> is de host(interface)naam van een &os;
+ systeem met een Ethernet adapter die mindere prestaties levert.
+ <filename>/sharedfs</filename> wordt het geëxporteerde
+ NFS-bestandssysteem (zie &man.exports.5;) en
+ <filename>/project</filename> wordt het koppelpunt voor het
+ geëxporteerde bestandssysteem op de cliënt.</para>
+
+ <note>
+ <para>In sommige gevallen kunnen applicaties beter draaien als
+ extra opties als <option>hard</option> of
+ <option>soft</option> en <option>bg</option> gebruikt
+ worden.</para>
+ </note>
+
+ <para>Voorbeelden voor het &os; systeem (<hostid>freebox</hostid>)
+ als de cliënt in <filename>/etc/fstab</filename> op
+ <hostid>freebox</hostid>:</para>
+
+ <programlisting>fastws:/sharedfs /project nfs rw,-r=1024 0 0</programlisting>
+
+ <para>Als een handmatig aankoppelcommando op
+ <hostid>freebox</hostid>:</para>
+
+ <screen>&prompt.root; <userinput>mount -t nfs -o -r=1024 fastws:/sharedfs /project</userinput></screen>
+
+ <para>Voorbeelden voor het &os; systeem als de server in
+ <filename>/etc/fstab</filename> op
+ <hostid>fastws</hostid>:</para>
+
+ <programlisting>freebox:/sharedfs /project nfs rw,-w=1024 0 0</programlisting>
+
+ <para>Als een handmatig aankoppelcommando op
+ <hostid>fastws</hostid>:</para>
+
+ <screen>&prompt.root; <userinput>mount -t nfs -o -w=1024 freebox:/sharedfs /project</userinput></screen>
+
+ <para>Bijna iedere 16&ndash;bit Ethernet adapter werkt zonder de
+ hierboven beschreven restricties op de lees- en
+ schrijfgrootte.</para>
+
+ <para>Voor wie het wil weten wordt nu beschreven wat er gebeurt
+ als de fout ontstaan, wat ook duidelijk maakt waarom het niet
+ hersteld kan worden. NFS werkt meestal met een
+ <quote>block</quote>grootte van 8&nbsp;K (hoewel het mogelijk
+ is dat er kleinere fragmenten worden verwerkt). Omdat de
+ maximale grootte van een Ethernet pakket rond de 1500&nbsp;bytes
+ ligt, wordt een <quote>block</quote> opgesplitst in meerdere
+ Ethernetpakketten, hoewel het hoger in de code nog steeds
+ één eenheid is, en wordt ontvangen, samengevoegd en
+ <emphasis>bevestigd</emphasis> als een eenheid. De hoog
+ presterende werkstations kunnen de pakketten waaruit een
+ NFS-eenheid bestaat bijzonder snel naar buiten pompen. Op de
+ kaarten met minder capaciteit worden de eerdere pakketten door
+ de latere pakketten van dezelfde eenheid ingehaald voordat ze
+ bij die host zijn aangekomen en daarom kan de eenheid niet
+ worden samengesteld en bevestigd. Als gevolg daarvan ontstaat
+ er op het werkstation een timeout en probeert die de eenheid
+ opnieuw te sturen, maar dan weer de hele eenheid van 8&nbsp;K,
+ waardoor het proces wordt herhaald, ad infinitum.</para>
+
+ <para>Door de grootte van de eenheid kleiner te houden dan de
+ grootte van een Ethernet pakket, is het zeker dat elk
+ Ethernetpakket dat compleet is aangekomen bevestigd kan worden,
+ zodat de deadlock niet ontstaat.</para>
+
+ <para>Toch kan een PC systeem nog wel overrompeld worden als hoog
+ presterende werkstations er op inhakken, maar met de betere
+ netwerkkaarten valt het dan in ieder geval niet om door de NFS
+ <quote>eenheden</quote>. Als het systeem toch wordt
+ overrompeld, dan worden de betrokken eenheden opnieuw verstuurd
+ en dan is de kans groot dat ze worden ontvangen, samengevoegd en
+ bevestigd.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network-nis">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Bill</firstname>
+ <surname>Swingle</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+
+ <authorgroup>
+ <author>
+ <firstname>Eric</firstname>
+ <surname>Ogren</surname>
+ <contrib>Verbeterd door </contrib>
+ </author>
+
+ <author>
+ <firstname>Udo</firstname>
+ <surname>Erdelhoff</surname>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>Netwerkinformatiesysteem (NIS/YP)</title>
+
+ <sect2>
+ <title>Wat is het?</title>
+
+ <indexterm><primary>NIS</primary></indexterm>
+
+ <indexterm><primary>Solaris</primary></indexterm>
+
+ <indexterm><primary>HP-UX</primary></indexterm>
+
+ <indexterm><primary>AIX</primary></indexterm>
+
+ <indexterm><primary>Linux</primary></indexterm>
+
+ <indexterm><primary>NetBSD</primary></indexterm>
+
+ <indexterm><primary>OpenBSD</primary></indexterm>
+
+ <para><acronym role="Network Information System">NIS</acronym>,
+ dat staat voor Netwerkinformatiediensten (Network Information
+ Services), is ontwikkeld door Sun Microsystems om het beheer van
+ &unix; (origineel &sunos;) systemen te centraliseren.
+ Tegenwoordig is het eigenlijk een industriestandaard geworden.
+ Alle grote &unix; achtige systemen (&solaris;, HP-UX, &aix;,
+ &linux;, NetBSD, OpenBSD, &os;, enzovoort) ondersteunen <acronym
+ role="Network Information System">NIS</acronym>.</para>
+
+ <indexterm><primary>yellow pages</primary><see>NIS</see></indexterm>
+
+ <para><acronym role="Network Information System">NIS</acronym>
+ stond vroeger bekend als Yellow Pages, maar vanwege problemen
+ met het handelsmerk heeft Sun de naam veranderd. De oude term,
+ en yp, wordt nog steeds vaak gebruikt.</para>
+
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>domeinen</secondary>
+ </indexterm>
+
+ <para>Het is een op RPC-gebaseerd cliënt/serversysteem
+ waarmee een groep machines binnen een NIS-domein een
+ gezamenlijke verzameling met instellingenbestanden kan delen.
+ Hierdoor kan een beheerder NIS-systemen opzetten met een
+ minimaal aantal instellingen en vanaf een centrale lokatie
+ instellingen toevoegen, verwijderen en wijzigen.</para>
+
+ <indexterm><primary>Windows NT</primary></indexterm>
+
+ <para>Het is te vergelijken met het &windowsnt; domeinsysteem en
+ hoewel de interne implementatie van de twee helemaal niet
+ overeenkomt, is de basisfunctionaliteit vergelijkbaar.</para>
+ </sect2>
+
+ <sect2>
+ <title>Termen en processen om te onthouden</title>
+
+ <para>Er zijn een aantal termen en belangrijke
+ gebruikersprocessen die een rol spelen bij het implementeren
+ van NIS op &os;, zowel bij het maken van een NIS-server als bij
+ het maken van een systeem dan NIS-cliënt is:</para>
+
+ <indexterm><primary><application>rpcbind</application></primary></indexterm>
+
+ <indexterm><primary><application>portmap</application></primary></indexterm>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <colspec colwidth="1*"/>
+ <colspec colwidth="3*"/>
+
+ <thead>
+ <row>
+ <entry>Term</entry>
+
+ <entry>Beschrijving</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>NIS-domeinnaam</entry>
+
+ <entry>Een NIS-masterserver en al zijn cliënten
+ (inclusief zijn slave master) hebben een NIS-domeinnaam.
+ Vergelijkbaar met een &windowsnt; domeinnaam, maar de
+ NIS-domeinnaam heeft niets te maken met
+ <acronym>DNS</acronym>.</entry>
+ </row>
+
+ <row>
+ <entry><application>rpcbind</application></entry>
+
+ <entry>Moet draaien om <acronym>RPC</acronym> (Remote
+ Procedure Call in te schakelen, een netwerkprotocol dat
+ door NIS gebruikt wordt). Als
+ <application>rpcbind</application> niet draait, dan kan
+ er geen NIS-server draaien en kan een machine ook geen
+ NIS-cliënt zijn.</entry>
+ </row>
+
+ <row>
+ <entry><application>ypbind</application></entry>
+
+ <entry><quote>Verbindt</quote> een NIS-cliënt aan
+ zijn NIS-server. Dat gebeurt door met de NIS-domeinnaam
+ van het systeem en door het gebruik van
+ <acronym>RPC</acronym> te verbinden met de server.
+ <application>ypbind</application> is de kern van
+ cliënt-server communicatie in een NIS-omgeving.
+ Als <application>ypbind</application> op een machine
+ stopt, dan kan die niet meer bij de NIS-server komen.</entry>
+ </row>
+
+ <row>
+ <entry><application>ypserv</application></entry>
+
+ <entry>Hoort alleen te draaien op NIS-servers. Dit is
+ het NIS-serverproces zelf. Als &man.ypserv.8; stopt,
+ dan kan de server niet langer reageren op NIS-verzoeken
+ (hopelijk is er dan een slaveserver om het over te
+ nemen). Er zijn een aantal implementaties van NIS, maar
+ niet die op &os;, die geen verbinding met een andere
+ server proberen te maken als de server waarmee ze
+ verbonden waren niet meer reageert. In dat geval is
+ vaak het enige dat werkt het serverproces herstarten (of
+ zelfs de hele server) of het
+ <application>ypbind</application>-proces op de
+ cliënt.</entry>
+ </row>
+
+ <row>
+ <entry><application>rpc.yppasswdd</application></entry>
+
+ <entry>Nog een proces dat alleen op NIS-masterservers
+ hoort te draaien. Dit is een daemon waarbij
+ NIS-cliënten hun NIS-wachtwoorden kunnen wijzigen.
+ Als deze daemon niet draait, moeten gebruikers zich
+ aanmelden op de NIS-masterserver en daar hun wachtwoord
+ wijzigen.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <!-- XXX Missing: rpc.ypxfrd (not important, though) May only run
+ on the master -->
+ </sect2>
+
+ <sect2>
+ <title>Hoe werkt het?</title>
+
+ <para>Er zijn drie typen hosts in een NIS-omgeving: master
+ servers, slaveservers en cliënten. Servers zijn het
+ centrale depot voor instellingen voor een host. Masterservers
+ bevatten de geautoriseerd kopie van die informatie, terwijl
+ slaveservers die informatie spiegelen voor redundantie.
+ Cliënten verlaten zich op de servers om hun die informatie
+ ter beschikking te stellen.</para>
+
+ <para>Op deze manier kan informatie uit veel bestanden gedeeld
+ worden. De bestanden <filename>master.passwd</filename>,
+ <filename>group</filename> en <filename>hosts</filename>
+ worden meestal via NIS gedeeld. Als een proces op een
+ cliënt informatie nodig heeft die normaliter in een van die
+ lokale bestanden staat, dan vraagt die het in plaats daarvan aan
+ de NIS-servers waarmee hij verbonden is.</para>
+
+ <sect3>
+ <title>Soorten machines</title>
+
+ <itemizedlist>
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>masterserver</secondary>
+ </indexterm>
+
+ <listitem>
+ <para>Een <emphasis>NIS-masterserver</emphasis>. Deze
+ server onderhoudt, analoog aan een &windowsnt; primaire
+ domeincontroller, de bestanden die door alle
+ NIS-cliënten gebruikt worden. De bestanden
+ <filename>passwd</filename>, <filename>group</filename> en
+ andere bestanden die door de NIS-cliënten gebruikt
+ worden staan op de masterserver.</para>
+
+ <note>
+ <para>Het is mogelijk om één machine master
+ server te laten zijn voor meerdere NIS-domeinen. Dat
+ wordt in deze inleiding echter niet beschreven, omdat
+ die uitgaat van een relatief kleine omgeving.</para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>slaveserver</secondary>
+ </indexterm>
+
+ <para><emphasis>NIS-slaveservers</emphasis>. Deze zijn
+ te vergelijken met &windowsnt; backup domain controllers.
+ NIS-slaveservers beheren een kopie van de bestanden met
+ gegevens op de NIS-master. NIS-slaveservers bieden
+ redundantie, die nodig is in belangrijke omgevingen. Ze
+ helpen ook om de belasting te verdelen met de master
+ server: NIS-cliënten maken altijd een verbinding met
+ de NIS-server die het eerst reageert en dat geldt ook voor
+ antwoorden van slaveservers.</para>
+ </listitem>
+
+ <listitem>
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>cliënt</secondary>
+ </indexterm>
+
+ <para><emphasis>NIS-cliënten</emphasis>.
+ NIS-cliënten authenticeren, net als de meeste
+ &windowsnt; werkstations, tegen de NIS-server (of de
+ &windowsnt; domain controller in het geval van &windowsnt;
+ werkstations) bij het aanmelden.</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>NIS/YP gebruiken</title>
+
+ <para>Dit onderdeel behandelt het opzetten van een
+ NIS-voorbeeldomgeving.</para>
+
+ <sect3>
+ <title>Plannen</title>
+
+ <para>Er wordt uitgegaan van een beheerder van een klein
+ universiteitslab. Dat lab, dat bestaat uit &os; machines,
+ kent op dit moment geen centraal beheer. Iedere machine heeft
+ zijn eigen <filename>/etc/passwd</filename> en
+ <filename>/etc/master.passwd</filename>. Die bestanden worden
+ alleen met elkaar in lijn gehouden door handmatige
+ handelingen. Als er op dit moment een gebruiker aan het lab
+ wordt toegevoegd, moet <command>adduser</command> op alle 15
+ machines gedraaid worden. Dat moet natuurlijk veranderen en
+ daarom is besloten het lab in te richten met NIS, waarbij twee
+ machines als server worden gebruikt.</para>
+
+ <para>Het lab ziet er ongeveer als volgt uit:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Machinenaam</entry>
+
+ <entry>IP-adres</entry>
+
+ <entry>Rol Machine</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><hostid>ellington</hostid></entry>
+
+ <entry><hostid role="ipaddr">10.0.0.2</hostid></entry>
+
+ <entry>NIS-master</entry>
+ </row>
+
+ <row>
+ <entry><hostid>coltrane</hostid></entry>
+
+ <entry><hostid role="ipaddr">10.0.0.3</hostid></entry>
+
+ <entry>NIS-slave</entry>
+ </row>
+
+ <row>
+ <entry><hostid>basie</hostid></entry>
+
+ <entry><hostid role="ipaddr">10.0.0.4</hostid></entry>
+
+ <entry>Wetenschappelijk werkstation</entry>
+ </row>
+
+ <row>
+ <entry><hostid>bird</hostid></entry>
+
+ <entry><hostid role="ipaddr">10.0.0.5</hostid></entry>
+
+ <entry>Cliënt machine</entry>
+ </row>
+
+ <row>
+ <entry><hostid>cli[1-11]</hostid></entry>
+
+ <entry><hostid
+ role="ipaddr">10.0.0.[6-17]</hostid></entry>
+
+ <entry>Andere cliënt machines</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Bij het voor de eerste keer instellen van een NIS-schema
+ is het verstandig eerst na te denken over hoe dat opgezet moet
+ worden. Hoe groot een netwerk ook is, er moeten een aantal
+ beslissingen gemaakt worden.</para>
+
+ <sect4>
+ <title>Een NIS-domeinnaam kiezen</title>
+
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>domeinnaam</secondary>
+ </indexterm>
+
+ <para>Dit is wellicht niet de bekende
+ <quote>domeinnaam</quote>. Daarom wordt het ook de
+ <quote>NIS-domeinnaam</quote> genoemd. Bij de broadcast
+ van een cliënt om informatie wordt ook de naam van het
+ NIS-domein waar hij onderdeel van uitmaakt meegezonden. Zo
+ kunnen meerdere servers op een netwerk bepalen of er
+ antwoord gegeven dient te worden op een verzoek. De
+ NIS-domeinnaam kan voorgesteld worden als de naam van een
+ groep hosts die op een of andere manier aan elkaar
+ gerelateerd zijn.</para>
+
+ <para>Sommige organisaties kiezen hun Internet-domeinnaam als
+ NIS-domeinnaam. Dat wordt niet aangeraden omdat het voor
+ verwarring kan zorgen bij het debuggen van netwerkproblemen.
+ De NIS-domeinnaam moet uniek zijn binnen een netwerk en het
+ is handig als die de groep machines beschrijft waarvoor hij
+ geldt. Zo kan bijvoorbeeld de financiële afdeling van
+ Acme Inc. als NIS-domeinnaam <quote>acme-fin</quote> hebben.
+ In dit voorbeeld wordt de naam
+ <literal>test-domain</literal> gekozen.</para>
+
+ <indexterm><primary>SunOS</primary></indexterm>
+
+ <para>Sommige besturingssystemen gebruiken echter (met name
+ &sunos;) hun NIS-domeinnaam als hun Internet-domeinnaam.
+ Als er machines zijn op een netwerk die deze restrictie
+ kennen, dan <emphasis>moet</emphasis> de Internet-domeinnaam
+ als de naam voor het NIS-domeinnaam gekozen worden.</para>
+ </sect4>
+
+ <sect4>
+ <title>Systeemeisen</title>
+
+ <para>Bij het kiezen van een machine die als NIS-server wordt
+ gebruikt zijn er een aantal aandachtspunten. Een van de
+ onhandige dingen aan NIS is de afhankelijkheid van de
+ cliënten van de server. Als een cliënt de server
+ voor zijn NIS-domein niet kan bereiken, dan wordt die
+ machine vaak onbruikbaar. Door het gebrek aan gebruiker- en
+ groepsinformatie bevriezen de meeste systemen. Daarom moet
+ er een machine gekozen worden die niet vaak herstart hoeft
+ te worden of wordt gebruikt voor ontwikkeling. De
+ NIS-server is in het meest ideale geval een alleenstaande
+ server die als enige doel heeft NIS-server te zijn. Als een
+ netwerk niet zwaar wordt gebruikt, kan de NIS-server op een
+ machine die ook andere diensten aanbiedt gezet worden, maar
+ het blijft belangrijk om ervan bewust te zijn dat als de
+ NIS-server niet beschikbaar is, dat nadelige invloed heeft
+ op <emphasis>alle</emphasis> NIS-cliënten.</para>
+ </sect4>
+ </sect3>
+
+ <sect3>
+ <title>NIS-servers</title>
+
+ <para>De hoofdversies van alle NIS-informatie staan opgeslagen
+ op één machine die de NIS-masterserver heet. De
+ databases waarin de informatie wordt opgeslagen heten
+ NIS-afbeeldingen. In &os; worden die afbeeldingen opgeslagen
+ in <filename>/var/yp/[domeinnaam]</filename> waar
+ <filename>[domeinnaam]</filename> de naam is van het
+ NIS-domein dat wordt bediend. Een enkele NIS-server kan
+ tegelijkertijd meerdere NIS-domeinen ondersteunen en het is
+ dus mogelijk dat er meerdere van zulke mappen zijn, een voor
+ ieder ondersteund domein. Ieder domein heeft zijn eigen
+ onafhankelijke verzameling afbeeldingen.</para>
+
+ <para>In NIS-master- en -slaveservers worden alle NIS-verzoeken
+ door de daemon <command>ypserv</command> afgehandeld.
+ <command>ypserv</command> is verantwoordelijk voor het
+ ontvangen van inkomende verzoeken van NIS-cliënten, het
+ vertalen van de gevraagde domeinnaam en mapnaam naar een pad
+ naar het corresponderende databasebestand en het terugsturen
+ van de database naar de cliënten.</para>
+
+ <sect4>
+ <title>Een NIS-masterserver opzetten</title>
+
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>server opzetten</secondary>
+ </indexterm>
+
+ <para>Het opzetten van een master NIS-server kan erg
+ eenvoudig zijn, afhankelijk van de behoeften. &os; heeft
+ ondersteuning voor NIS als basisfunctie. Alleen de volgende
+ regels hoeven aan <filename>/etc/rc.conf</filename>
+ toegevoegd te worden en &os; doet de rest:</para>
+
+ <procedure>
+ <step>
+ <para><programlisting>nisdomainname="test-domain"</programlisting>
+
+ Deze regel stelt de NIS-domeinnaam in op
+ <literal>test-domain</literal> bij het instellen van het
+ netwerk (bij het opstarten).</para>
+ </step>
+
+ <step>
+ <para><programlisting>nis_server_enable="YES"</programlisting>
+
+ Dit geeft &os; aan de NIS-serverprocessen te starten
+ als het netwerk de volgende keer wordt opgestart.</para>
+ </step>
+
+ <step>
+ <para><programlisting>nis_yppasswdd_enable="YES"</programlisting>
+
+ Dit schakelt de daemon <command>rpc.yppasswdd</command>
+ in die, zoals al eerder aangegeven, cliënten
+ toestaat om hun NIS-wachtwoord vanaf een
+ cliënt-machine te wijzigen.</para>
+ </step>
+ </procedure>
+
+ <note>
+ <para>Afhankelijk van de inrichting van NIS, kunnen er nog
+ meer instellingen nodig zijn. In het onderdeel <link
+ linkend="network-nis-server-is-client">NIS-servers die
+ ook NIS-cliënten zijn</link> staan meer details.</para>
+ </note>
+
+ <para>Draai na het instellen van bovenstaande regels het commando
+ <command>/etc/netstart</command> als supergebruiker. Het zal alles
+ voor u instellen, gebruikmakende van de waarden die u in
+ <filename>/etc/rc.conf</filename> heeft ingesteld. Start als
+ laatste stap, voor het initialiseren van de NIS-afbeeldingen, de
+ daemon <application>ypserv</application> handmatig:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/ypserv start</userinput></screen>
+ </sect4>
+
+ <sect4>
+ <title>NIS-afbeeldingen initialiseren</title>
+
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>afbeeldingen</secondary>
+ </indexterm>
+
+ <para>Die <emphasis>NIS-afbeeldingen</emphasis> zijn
+ databasebestanden die in de map <filename>/var/yp</filename>
+ staan. Ze worden gemaakt uit de bestanden met instellingen
+ uit de map <filename>/etc</filename> van de NIS-master, met
+ één uitzondering:
+ <filename>/etc/master.passwd</filename>. Daar is een goede
+ reden voor, want het is niet wenselijk om de wachtwoorden
+ voor <username>root</username> en andere administratieve
+ accounts naar alle servers in het NIS-domein te sturen.
+ Daar moet voor het initialiseren van de NIS-afbeeldingen het
+ volgende uitgevoerd worden:</para>
+
+ <screen>&prompt.root; <userinput>cp /etc/master.passwd /var/yp/master.passwd</userinput>
+&prompt.root; <userinput>cd /var/yp</userinput>
+&prompt.root; <userinput>vi master.passwd</userinput></screen>
+
+ <para>Dan horen alle systeemaccounts verwijderd te worden
+ (<username>bin</username>, <username>tty</username>,
+ <username>kmem</username>, <username>games</username>,
+ enzovoort) en alle overige accounts waarvoor het niet
+ wenselijk is dat ze op de NIS-cliënten terecht komen
+ (bijvoorbeeld <username>root</username> en alle andere UID 0
+ (supergebruiker) accounts).</para>
+
+ <note>
+ <para><filename>/var/yp/master.passwd</filename> hoort niet
+ te lezen te zijn voor een groep of voor de wereld (dus
+ modus 600)! Voor het aanpassen van de rechten kan
+ <command>chmod</command> gebruikt worden.</para>
+ </note>
+
+ <indexterm><primary>Tru64 UNIX</primary></indexterm>
+
+ <para>Als dat is gedaan, kunnen de NIS-afbeeldingen
+ geïnitialiseerd worden. Bij &os; zit een script
+ <command>ypinit</command> waarmee dit kan (in de hulppagina
+ staat meer informatie). Dit script is beschikbaar op de
+ meeste &unix; besturingssystemen, maar niet op allemaal.
+ Op Digital UNIX/Compaq Tru64 UNIX heet het
+ <command>ypsetup</command>. Omdat er afbeeldingen voor een
+ NIS-master worden gemaakt, wordt de optie
+ <option>&ndash;m</option> meegegeven aan
+ <command>ypinit</command>. Aangenomen dat de voorgaande
+ stappen zijn uitgevoerd, kunnen de NIS-afbeeldingen gemaakt
+ worden op de volgende manier:</para>
+
+ <screen>ellington&prompt.root; <userinput>ypinit -m test-domain</userinput>
+Server Type: MASTER Domain: test-domain
+Creating an YP server will require that you answer a few questions.
+Questions will all be asked at the beginning of the procedure.
+Do you want this procedure to quit on non-fatal errors? [y/n: n] <userinput>n</userinput>
+Ok, please remember to go back and redo manually whatever fails.
+If you don't, something might not work.
+At this point, we have to construct a list of this domains YP servers.
+rod.darktech.org is already known as master server.
+Please continue to add any slave servers, one per line. When you are
+done with the list, type a &lt;control D&gt;.
+master server : ellington
+next host to add: <userinput>coltrane</userinput>
+next host to add: <userinput>^D</userinput>
+The current list of NIS servers looks like this:
+ellington
+coltrane
+Is this correct? [y/n: y] <userinput>y</userinput>
+
+[..uitvoer van het maken van de afbeeldingen..]
+
+NIS Map update completed.
+ellington has been setup as an YP master server without any errors.</screen>
+
+ <para><command>ypinit</command> hoort
+ <filename>/var/yp/Makefile</filename> gemaakt te hebben uit
+ <filename>/var/yp/Makefile.dist</filename>. Als dit bestand is
+ gemaakt, neemt dat bestand aan dat er in een omgeving met
+ een enkele NIS-server wordt gewerkt met alleen
+ &os;-machines. Omdat <literal>test-domain</literal> ook een
+ slaveserver bevat, dient
+ <filename>/var/yp/Makefile</filename> gewijzigd te
+ worden:</para>
+
+ <screen>ellington&prompt.root; <userinput>vi /var/yp/Makefile</userinput></screen>
+
+ <para>Als de onderstaande regel niet al uitgecommentarieerd
+ is, dient dat alsnog te gebeuren:</para>
+
+ <programlisting>NOPUSH = "True"</programlisting>
+ </sect4>
+
+ <sect4>
+ <title>Een NIS-slaveserver opzetten</title>
+
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>slaveserver</secondary>
+ </indexterm>
+
+ <para>Het opzetten van een NIS-slaveserver is nog makkelijker
+ dan het opzetten van de master. Dit kan door aan te melden
+ op de slaveserver en net als voor de masterserver
+ <filename>/etc/rc.conf</filename> te wijzigen. Het enige
+ verschil is dat nu de optie <option>&ndash;s</option>
+ gebruikt wordt voor het draaien van
+ <command>ypinit</command>. Met de optie
+ <option>&ndash;s</option> moet ook de naam van de NIS-master
+ meegegeven worden. Het commando ziet er dus als volgt uit:</para>
+
+ <screen>coltrane&prompt.root; <userinput>ypinit -s ellington test-domain</userinput>
+
+Server Type: SLAVE Domain: test-domain Master: ellington
+
+Creating an YP server will require that you answer a few questions.
+Questions will all be asked at the beginning of the procedure.
+
+Do you want this procedure to quit on non-fatal errors? [y/n: n] <userinput>n</userinput>
+
+Ok, please remember to go back and redo manually whatever fails.
+If you don't, something might not work.
+There will be no further questions. The remainder of the procedure
+should take a few minutes, to copy the databases from ellington.
+Transferring netgroup...
+ypxfr: Exiting: Map successfully transferred
+Transferring netgroup.byuser...
+ypxfr: Exiting: Map successfully transferred
+Transferring netgroup.byhost...
+ypxfr: Exiting: Map successfully transferred
+Transferring master.passwd.byuid...
+ypxfr: Exiting: Map successfully transferred
+Transferring passwd.byuid...
+ypxfr: Exiting: Map successfully transferred
+Transferring passwd.byname...
+ypxfr: Exiting: Map successfully transferred
+Transferring group.bygid...
+ypxfr: Exiting: Map successfully transferred
+Transferring group.byname...
+ypxfr: Exiting: Map successfully transferred
+Transferring services.byname...
+ypxfr: Exiting: Map successfully transferred
+Transferring rpc.bynumber...
+ypxfr: Exiting: Map successfully transferred
+Transferring rpc.byname...
+ypxfr: Exiting: Map successfully transferred
+Transferring protocols.byname...
+ypxfr: Exiting: Map successfully transferred
+Transferring master.passwd.byname...
+ypxfr: Exiting: Map successfully transferred
+Transferring networks.byname...
+ypxfr: Exiting: Map successfully transferred
+Transferring networks.byaddr...
+ypxfr: Exiting: Map successfully transferred
+Transferring netid.byname...
+ypxfr: Exiting: Map successfully transferred
+Transferring hosts.byaddr...
+ypxfr: Exiting: Map successfully transferred
+Transferring protocols.bynumber...
+ypxfr: Exiting: Map successfully transferred
+Transferring ypservers...
+ypxfr: Exiting: Map successfully transferred
+Transferring hosts.byname...
+ypxfr: Exiting: Map successfully transferred
+
+coltrane has been setup as an YP slave server without any errors.
+Don't forget to update map ypservers on ellington.</screen>
+
+ <para>Nu hoort er een map
+ <filename>/var/yp/test-domain</filename> te zijn waarin
+ kopieë van de NIS-masterserver afbeeldingen staan. Die
+ moeten bijgewerkt blijven. De volgende regel in
+ <filename>/etc/crontab</filename> op de slaveservers regelt
+ dat:</para>
+
+ <programlisting>20 * * * * root /usr/libexec/ypxfr passwd.byname
+21 * * * * root /usr/libexec/ypxfr passwd.byuid</programlisting>
+
+ <para>Met de bovenstaande twee regels wordt de slave gedwongen zijn
+ afbeeldingen met de afbeeldingen op de masterserver te
+ synchroniseren. Dit is niet verplicht omdat de masterserver
+ automatisch probeert veranderingen aan de NIS-afbeeldingen door te
+ geven aan zijn slaves. Echter, vanwege het belang van correcte
+ wachtwoordinformatie op andere cliënten die van de slaveserver
+ afhankelijk zijn, is het aanbevolen om specifiek de
+ wachtwoordafbeeldingen vaak tot bijwerken te dwingen. Dit is des
+ te belangrijker op drukke netwerken, omdat daar het bijwerken van
+ afbeeldingen niet altijd compleet afgehandeld hoeft te
+ worden.</para>
+
+ <para>Nu kan ook op de slaveserver het commando
+ <command>/etc/netstart</command> uitgevoerd worden, dat op
+ zijn beurt de NIS-server start.</para>
+ </sect4>
+ </sect3>
+
+ <sect3>
+ <title>NIS-cliënten</title>
+
+ <para>Een NIS-cliënt maakt wat heet een verbinding
+ (binding) met een NIS-server met de daemon
+ <command>ypbind</command>. <command>ypbind</command>
+ controleert het standaarddomein van het systeem (zoals
+ ingesteld met <command>domainname</command>) en begint met het
+ broadcasten van RPC-verzoeken op het lokale netwerk. Die
+ verzoeken bevatten de naam van het domein waarvoor
+ <command>ypbind</command> een binding probeert te maken. Als
+ een server die is ingesteld om het gevraagde domein te
+ bedienen een broadcast ontvangt, dan antwoordt die aan
+ <command>ypbind</command> dat dan het IP-adres van de server
+ opslaat. Als er meerdere servers beschikbaar zijn, een master
+ en bijvoorbeeld meerdere slaves, dan gebruikt
+ <command>ypbind</command> het adres van de eerste server die
+ antwoord geeft. Vanaf dat moment stuurt de cliënt alle
+ NIS-verzoeken naar die server. <command>ypbind</command>
+ <quote>pingt</quote> de server zo nu en dan om te controleren
+ of die nog draait. Als er na een bepaalde tijd geen antwoord
+ komt op een ping, dan markeert <command>ypbind</command> het
+ domein als niet verbonden en begint het broadcasten opnieuw,
+ in de hoop dat er een andere server wordt gelocaliseerd.</para>
+
+ <sect4>
+ <title>Een NIS-cliënt opzetten</title>
+
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>cliënt instellen</secondary>
+ </indexterm>
+
+ <para>Het opzetten van een &os; machine als NIS-cliënt is
+ redelijk doorzichtig:</para>
+
+ <procedure>
+ <step>
+ <para>Wijzig <filename>/etc/rc.conf</filename> en voeg de
+ volgende regels toe om de NIS-domeinnaam in te stellen
+ en <command>ypbind</command> mee te laten starten bij
+ het starten van het netwerk:</para>
+
+ <programlisting>nisdomainname="test-domain"
+nis_client_enable="YES"</programlisting>
+ </step>
+
+ <step>
+ <para>Om alle mogelijke regels voor accounts uit de
+ NIS-server te halen, dienen alle gebruikersaccounts uit
+ <filename>/etc/master.passwd</filename> verwijderd te
+ worden en dient met <command>vipw</command> de volgende
+ regel aan het einde van het bestand geplaatst te
+ worden:</para>
+
+ <programlisting>+:::::::::</programlisting>
+
+ <note>
+ <para>Door deze regel wordt alle geldige accounts
+ in de wachtwoordafbeelding van de NIS-server toegang
+ gegeven. Er zijn veel manieren om de NIS-cliënt
+ in te stellen door deze regel te veranderen. In het
+ onderdeel <link
+ linkend="network-netgroups">netgroepen</link>
+ hieronder staat meer informatie. Zeer gedetailleerde
+ informatie staat in het boek <literal>NFS en NIS
+ beheren</literal> van O'Reilly.</para>
+ </note>
+
+ <note>
+ <para>Er moet tenminste één lokale account
+ behouden blijven (dus niet geïmporteerd via NIS)
+ in <filename>/etc/master.passwd</filename> en die
+ hoort ook lid te zijn van de groep
+ <groupname>wheel</groupname>. Als er iets mis is met
+ NIS, dan kan die account gebruikt worden om via het
+ netwerk aan te melden, <username>root</username> te
+ worden en het systeem te repareren.</para>
+ </note>
+ </step>
+
+ <step>
+ <para>Om alle groepen van de NIS-server te importeren, kan
+ de volgende regel aan <filename>/etc/group</filename>
+ toegevoegd worden:</para>
+
+ <programlisting>+:*::</programlisting>
+ </step>
+ </procedure>
+
+ <para>Voer, om de NIS-cliënt onmiddelijk te starten, de volgende
+ commando's als supergebruiker uit:</para>
+
+ <screen>&prompt.root; <userinput>/etc/netstart</userinput>
+&prompt.root; <userinput>/etc/rc.d/ypbind start</userinput></screen>
+
+ <para>Na het afronden van deze stappen zou met <command>ypcat
+ passwd</command> de passwd map van de NIS-server te zien
+ moeten zijn.</para>
+ </sect4>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>NIS-beveiliging</title>
+
+ <para>In het algemeen kan iedere netwerkgebruiker een RPC-verzoek
+ doen uitgaan naar &man.ypserv.8; en de inhoud van de
+ NIS-afbeeldingen ontvangen, mits die gebruiker de domeinnaam
+ kent. Omdat soort ongeautoriseerde transacties te voorkomen,
+ ondersteunt &man.ypserv.8; de optie <quote>securenets</quote>,
+ die gebruikt kan worden om de toegang te beperken tot een
+ opgegeven aantal hosts. Bij het opstarten probeert
+ &man.ypserv.8; de securenets informatie te laden uit het bestand
+ <filename>/var/yp/securenets</filename>.</para>
+
+ <note>
+ <para>Dit pad kan verschillen, afhankelijk van het pad dat
+ opgegeven is met de optie <option>&ndash;p</option>. Dit
+ bestand bevat regels die bestaan uit een netwerkspecificatie
+ en een netwerkmasker, gescheiden door witruimte. Regels die
+ beginnen met <literal>#</literal> worden als commentaar
+ gezien. Een voorbeeld van een securenetsbestand zou er zo uit
+ kunnen zien:</para>
+ </note>
+
+ <programlisting># allow connections from local host -- mandatory
+127.0.0.1 255.255.255.255
+# allow connections from any host
+# on the 192.168.128.0 network
+192.168.128.0 255.255.255.0
+# allow connections from any host
+# between 10.0.0.0 to 10.0.15.255
+# this includes the machines in the testlab
+10.0.0.0 255.255.240.0</programlisting>
+
+ <para>Als &man.ypserv.8; een verzoek ontvangt van een adres dat
+ overeenkomt met een van de bovenstaande regels, dan wordt dat
+ verzoek normaal verwerkt. Als er geen enkele regel op het
+ verzoek van toepassing is, dan wordt het verzoek genegeerd en
+ wordt er een waarschuwing gelogd. Als het bestand
+ <filename>/var/yp/securenets</filename> niet bestaat, dan
+ accepteert <command>ypserv</command> verbindingen van iedere
+ host.</para>
+
+ <para>Het programma <command>ypserv</command> ondersteunt ook het
+ pakket <application>TCP Wrapper</application> van Wietse Venema.
+ Daardoor kan een beheerder de instellingenbestanden van
+ <application>TCP Wrapper</application> gebruiken voor
+ toegangsbeperking in plaats van
+ <filename>/var/yp/securenets</filename>.</para>
+
+ <note>
+ <para>Hoewel beide methoden van toegangscontrole enige vorm van
+ beveiliging bieden, zijn ze net als de geprivilegieerde
+ poorttest kwetsbaar voor <quote>IP spoofing</quote> aanvallen.
+ Al het NIS-gerelateerde verkeer hoort door een firewall
+ tegengehouden te worden.</para>
+
+ <para>Servers die gebruik maken van
+ <filename>/var/yp/securenets</filename> kunnen wellicht
+ legitieme verzoeken van NIS-cliënten weigeren als die
+ gebruik maken van erg oude TCP/IP-implementaties. Sommige van
+ die implementaties zetten alle host bits op nul als ze een
+ broadcast doen en/of kijken niet naar het subnetmasker als ze
+ het broadcastadres berekenen. Hoewel sommige van die
+ problemen opgelost kunnen worden door de instellingen op de
+ cliënt aan te passen, zorgen andere problemen voor het
+ noodgedwongen niet langer kunnen gebruiker van NIS voor die
+ cliënt of het niet langer gebruiken van
+ <filename>/var/yp/securenets</filename>.</para>
+
+ <para>Het gebruik van <filename>/var/yp/securenets</filename>
+ op een server met zo'n oude implementatie van TCP/IP is echt
+ een slecht idee en zal leiden tot verlies van
+ NIS-functionaliteit voor grote delen van een netwerk.</para>
+
+ <indexterm><primary>tcpwrapper</primary></indexterm>
+
+ <para>Het gebruik van het pakket <application>TCP
+ Wrapper</application> leidt tot langere wachttijden op de
+ NIS-server. De extra vertraging kan net lang genoeg zijn om
+ een timeout te veroorzaken in cliëntprogramma's, in het
+ bijzonder als het netwerk druk is of de NIS-server traag is.
+ Als een of meer cliënten last hebben van dat symptoom,
+ dan is het verstandig om de cliëntsysteem in kwestie
+ NIS-slaveserver te maken en naar zichzelf te laten wijzen.</para>
+ </note>
+ </sect2>
+
+ <sect2>
+ <title>Aanmelden voor bepaalde gebruikers blokkeren</title>
+
+ <para>In het lab staat de machine <hostid>basie</hostid>, die
+ alleen faculteitswerkstation hoort te zijn. Het is niet
+ gewenst die machine uit het NIS-domein te halen, maar het
+ <filename>passwd</filename> bestand op de master NIS-server
+ bevat nu eenmaal accounts voor zowel de faculteit als de
+ studenten. Hoe kan dat opgelost worden?</para>
+
+ <para>Er is een manier om het aanmelden van specifieke gebruikers
+ op een machine te weigeren, zelfs als ze in de NIS-database
+ staan. Daarvoor hoeft er alleen maar
+ <literal>&ndash;<replaceable>username</replaceable></literal>
+ aan het einde van <filename>/etc/master.passwd</filename> op de
+ cliënt machine toegevoegd te worden, waar
+ <replaceable>username</replaceable> de gebruikersnaam van de
+ gebruiker die niet mag aanmelden is. Dit gebeurt bij voorkeur
+ met <command>vipw</command>, omdat <command>vipw</command>
+ de wijzigingen aan <filename>/etc/master.passwd</filename>
+ controleert en ook de wachtwoord database opnieuw bouwt na het
+ wijzigen. Om bijvoorbeeld de gebruiker
+ <username>bill</username> aan te kunnen laten aanmelden op
+ <hostid>basie</hostid>:</para>
+
+ <screen>basie&prompt.root; <userinput>vipw</userinput>
+<userinput>[add -bill to the end, exit]</userinput>
+vipw: rebuilding the database...
+vipw: done
+
+basie&prompt.root; <userinput>cat /etc/master.passwd</userinput>
+
+root:[password]:0:0::0:0:The super-user:/root:/bin/csh
+toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
+daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
+operator:*:2:5::0:0:System &amp;:/:/sbin/nologin
+bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
+tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
+kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
+games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
+news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
+man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
+bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
+uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
+xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
+pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
+nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
++:::::::::
+-bill
+
+basie&prompt.root;</screen>
+ </sect2>
+
+ <sect2 id="network-netgroups">
+ <sect2info>
+ <authorgroup>
+ <author>
+ <firstname>Udo</firstname>
+ <surname>Erdelhoff</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect2info>
+
+ <title>Netgroups gebruiken</title>
+
+ <indexterm><primary>netgroepen</primary></indexterm>
+
+ <para>De methode uit het vorige onderdeel werkt prima als er maar
+ voor een beperkt aantal gebruikers en/of machines speciale
+ regels nodig zijn. Op grotere netwerken
+ <emphasis>gebeurt</emphasis> het gewoon dat er wordt vergeten
+ om een aantal gebruikers de aanmeldrechten op gevoelige machines
+ te ontnemen of dat zelfs iedere individuele machine aangepast
+ moet worden, waardoor het voordeel van NIS teniet wordt gedaan:
+ <emphasis>centraal</emphasis> beheren.</para>
+
+ <para>De ontwikkelaars van NIS hebben dit probleem opgelost met
+ <emphasis>netgroepen</emphasis>. Het doel en de semantiek
+ kunnen vergeleken worden met de normale groepen die gebruikt
+ worden op &unix; bestandssystemen. De belangrijkste verschillen
+ zijn de afwezigheid van een numeriek ID en de mogelijkheid om
+ een netgroep aan te maken die zowel gebruikers als andere
+ netgroepen bevat.</para>
+
+ <para>Netgroepen zijn ontwikkeld om gebruikt te worden voor grote,
+ complexe netwerken met honderden gebruikers en machines. Aan
+ de ene kant is dat iets Goeds. Aan de andere kant is het wel
+ complex en bijna onmogelijk om netgroepen met een paar
+ eenvoudige voorbeelden uit te leggen. Dat probleem wordt in de
+ rest van dit onderdeel duidelijk gemaakt.</para>
+
+ <para>Stel dat de succesvolle implementatie van NIS in het lab de
+ interesse heeft gewekt van een centrale beheerclub. De volgende
+ taak is het uitbreiden van het NIS-domein met een aantal andere
+ machines op de campus. De onderstaande twee tabellen bevatten
+ de namen van de nieuwe gebruikers en de nieuwe machines met een
+ korte beschijving.</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Gebruikersna(a)m(en)</entry>
+
+ <entry>Beschrijving</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><username>alpha</username>,
+ <username>beta</username></entry>
+
+ <entry>Gewone medewerkers van de IT-afdeling</entry>
+ </row>
+
+ <row>
+ <entry><username>charlie</username>,
+ <username>delta</username></entry>
+
+ <entry>Junior medewerkers van de IT-afdeling</entry>
+ </row>
+
+ <row>
+ <entry><username>echo</username>,
+ <username>foxtrott</username>,
+ <username>golf</username>, ...</entry>
+
+ <entry>Gewone medewerkers</entry>
+ </row>
+
+ <row>
+ <entry><username>able</username>,
+ <username>baker</username>, ...</entry>
+
+ <entry>Stagiairs</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Machinena(a)m(en)</entry>
+
+ <entry>Beschrijving</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <!-- Names taken from "Good Omens" by Neil Gaiman and
+ Terry Pratchett. Many thanks for a brilliant
+ book. -->
+
+ <entry><hostid>war</hostid>, <hostid>death</hostid>,
+ <hostid>famine</hostid>,
+ <hostid>pollution</hostid></entry>
+
+ <entry>De belangrijkste servers. Alleen senior
+ medewerkers van de IT-afdeling mogen hierop
+ aanmelden.</entry>
+ </row>
+
+ <row>
+ <!-- gluttony was omitted because it was too fat -->
+
+ <entry><hostid>pride</hostid>, <hostid>greed</hostid>,
+ <hostid>envy</hostid>, <hostid>wrath</hostid>,
+ <hostid>lust</hostid>, <hostid>sloth</hostid></entry>
+
+ <entry>Minder belangrijke servers. Alle leden van
+ de IT-afdeling mogen aanmelden op deze machines.</entry>
+ </row>
+
+ <row>
+ <entry><hostid>one</hostid>, <hostid>two</hostid>,
+ <hostid>three</hostid>, <hostid>four</hostid>,
+ ...</entry>
+
+ <entry>Gewone werkstations. Alleen
+ <emphasis>echte</emphasis> medewerkers mogen zich op
+ deze machines aanmelden.</entry>
+ </row>
+
+ <row>
+ <entry><hostid>trashcan</hostid></entry>
+
+ <entry>Een erg oude machine zonder kritische data. Zelfs
+ de stagiair mag deze doos gebruiken.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Als deze restricties ingevoerd worden door iedere gebruiker
+ afzonderlijk te blokkeren, dan wordt er een
+ <literal>-<replaceable>user</replaceable></literal> regel per
+ systeem toegevoegd aan de <filename>passwd</filename> voor
+ iedere gebruiker die niet mag aanmelden op dat systeem. Als er
+ maar één regel wordt vergeten, kan dat een
+ probleem opleveren. Wellicht lukt het nog dit juist in te
+ stellen bij de bouw van een machine, maar het wordt
+ <emphasis>echt</emphasis> vergeten de regels toe te voegen voor
+ nieuwe gebruikers in de productiefase. Murphy was tenslotte een
+ optimist.</para>
+
+ <para>Het gebruik van netgroepen biedt in deze situatie een aantal
+ voordelen. Niet iedere gebruiker hoeft separaat afgehandeld te
+ worden. Een gebruik kan aan een of meer groepen worden
+ toegevoegd en aanmelden kan voor alle leden van zo'n groep
+ worden toegestaan of geweigerd. Als er een nieuwe machine wordt
+ toegevoegd, dan hoeven alleen de aanmeldrestricties voor de
+ netgroepen te worden ingesteld. Als er een nieuwe gebruiker
+ wordt toegevoegd, dan hoeft die alleen maar aan de juiste
+ netgroepen te worden toegevoegd. Die veranderingen zijn niet
+ van elkaar afhankelijk: geen <quote>voor iedere combinatie van
+ gebruiker en machine moet het volgende ...</quote>. Als de
+ NIS-opzet zorgvuldig is gepland, dan hoeft er maar
+ één instellingenbestand gewijzigd te worden om
+ toegang tot machines te geven of te ontnemen.</para>
+
+ <para>De eerst stap is het initialiseren van de NIS-afbeelding
+ netgroup. &man.ypinit.8; van &os; maakt deze map niet
+ standaard, maar als die is gemaakt, ondersteunt de
+ NIS-implementatie hem wel. Een lege map wordt als volgt
+ gemaakt:</para>
+
+ <screen>ellington&prompt.root; <userinput>vi /var/yp/netgroup</userinput></screen>
+
+ <para>Nu kan hij gevuld worden. In het gebruikte voorbeeld zijn
+ tenminste vier netgroepen: IT-medewerkers, IT-junioren, gewone
+ medewerkers en stagiars.</para>
+
+ <programlisting>IT_MW (,alpha,test-domain) (,beta,test-domain)
+IT_APP (,charlie,test-domain) (,delta,test-domain)
+USERS (,echo,test-domain) (,foxtrott,test-domain) \
+ (,golf,test-domain)
+STAGS (,able,test-domain) (,baker,test-domain)</programlisting>
+
+ <para><literal>IT_MW</literal>, <literal>IT_APP</literal>
+ enzovoort, zijn de namen van de netgroepen. Iedere groep tussen
+ haakjes bevat een of meer gebruikersnamen voor die groep. De
+ drie velden binnen een groep zijn:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>De na(a)m(en) van de host(s) waar de volgende onderdelen
+ geldig zijn. Als er geen hostnaam wordt opgegeven dan is de
+ regel geldig voor alle hosts. Als er wel een hostnaam wordt
+ opgegeven, dan wordt een donker, spookachtig en verwarrend
+ domein betreden.</para>
+ </listitem>
+
+ <listitem>
+ <para>De naam van de account die bij deze netgroep hoort.</para>
+ </listitem>
+
+ <listitem>
+ <para>Het NIS-domein voor de account. Er kunnen accounts uit
+ andere NIS-domeinen geïmporteerd worden in een netgroep
+ als een beheerder zo ongelukkig is meerdere NIS-domeinen te
+ hebben.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Al deze velden kunnen jokerkarakters bevatten. Details
+ daarover staan in &man.netgroup.5;.</para>
+
+ <note>
+ <indexterm><primary>netgroepen</primary></indexterm>
+
+ <para>De naam van een netgroep mag niet langer zijn dan acht
+ karakters, zeker niet als er andere besturingssystemen binnen
+ een NIS-domein worden gebruikt. De namen zijn
+ hoofdlettergevoelig: alleen hoofdletters gebruiken voor de
+ namen van netgroepen is een makkelijke manier om onderscheid
+ te kunnen maken tussen gebruikers-, machine- en
+ netgroepnamen.</para>
+
+ <para>Sommige NIS-cliënten (andere dan die op &os; draaien)
+ kunnen niet omgaan met netgroepen met veel leden. Sommige
+ oudere versies van &sunos; gaan bijvoorbeeld lastig doen als
+ een netgroep meer dan 15 <emphasis>leden</emphasis> heeft.
+ Dit kan omzeild worden door meerdere subnetgroepen te maken
+ met 15 gebruikers of minder en een echte netgroep die de
+ subnetgroepen bevat:</para>
+
+ <programlisting>BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]
+BIGGRP2 (,joe16,domain) (,joe17,domain) [...]
+BIGGRP3 (,joe31,domain) (,joe32,domain)
+BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3</programlisting>
+
+ <para>Dit proces kan herhaald worden als er meer dan 225
+ gebruikers in een netgroep moeten.</para>
+ </note>
+
+ <para>Het activeren en distribueren van de nieuwe NIS-map is
+ eenvoudig:</para>
+
+ <screen>ellington&prompt.root; <userinput>cd /var/yp</userinput>
+ellington&prompt.root; <userinput>make</userinput></screen>
+
+ <para>Hiermee worden drie nieuwe NIS-afbeeldingen gemaakt:
+ <filename>netgroup</filename>,
+ <filename>netgroup.byhost</filename> en
+ <filename>netgroup.byuser</filename>. Met &man.ypcat.1; kan
+ bekeken worden op de nieuwe NIS-afbeeldingen beschikbaar zijn:</para>
+
+ <screen>ellington&prompt.user; <userinput>ypcat -k netgroup</userinput>
+ellington&prompt.user; <userinput>ypcat -k netgroup.byhost</userinput>
+ellington&prompt.user; <userinput>ypcat -k netgroup.byuser</userinput></screen>
+
+ <para>De uitvoer van het eerste commando hoort te lijken op de
+ inhoud van <filename>/var/yp/netgroup</filename>. Het tweede
+ commando geeft geen uitvoer als er geen host-specifieke
+ netgroepen zijn ingesteld. Het derde commando kan gebruikt
+ worden om een lijst van netgroepen voor een gebruiker op te
+ vragen.</para>
+
+ <para>Het instellen van de cliënt is redelijk eenvoudig. Om
+ de server <hostid>war</hostid> in te stellen hoeft alleen met
+ &man.vipw.8; de volgende regel in de regel daarna vervangen te
+ worden:</para>
+
+ <programlisting>+:::::::::</programlisting>
+
+ <para>Vervang de bovenstaande regel in de onderstaande.</para>
+
+ <programlisting>+@IT_MW:::::::::</programlisting>
+
+ <para>Nu worden alleen de gebruikers die in de netgroep
+ <literal>IT_MW</literal> geïmporteerd in de
+ wachtwoorddatabase van de host <hostid>war</hostid>, zodat
+ alleen die gebruikers zich kunnen aanmelden.</para>
+
+ <para>Helaas zijn deze beperkingen ook van toepassing op de
+ functie <literal>~</literal> van de shell en alle routines
+ waarmee tussen gebruikersnamen en numerieke gebruikers ID's
+ wordt gewisseld. Met andere woorden: <command>cd
+ ~<replaceable>user</replaceable></command> werkt niet,
+ <command>ls &ndash;l</command> toont het numerieke ID in plaats
+ van de gebruikersnaam en <command>find . &ndash;user joe
+ &ndash;print</command> faalt met de foutmelding <errorname>No
+ such user</errorname>. Om dit te repareren moeten alle
+ gebruikers geïmporteerd worden, <emphasis>zonder ze het
+ recht te geven aan te melden op een server</emphasis>.</para>
+
+ <para>Dit kan gedaan worden door nog een regel aan
+ <filename>/etc/master.passwd</filename> toe te voegen:</para>
+
+ <programlisting>+:::::::::/sbin/nologin</programlisting>
+
+ <para>Dit betekent <quote>importeer alle gebruikers, maar vervang
+ de shell door <filename>/sbin/nologin</filename></quote>. Ieder
+ veld in een <literal>passwd</literal> regel kan door een
+ standaardwaarde vervangen worden in
+ <filename>/etc/master.passwd</filename>.</para>
+
+ <!-- Been there, done that, got the scars to prove it - ue -->
+ <warning>
+ <para>De regel <literal>+:::::::::/sbin/nologin</literal> moet
+ na <literal>+@IT_MW:::::::::</literal> komen. Anders krijgen
+ alle gebruikers die uit NIS-komen
+ <filename>/sbin/nologin</filename> als aanmeldshell.</para>
+ </warning>
+
+ <para>Na deze wijziging hoeft er nog maar één
+ NIS-afbeelding gewijzigd te worden als er een nieuwe medewerker
+ komt bij de IT-afdeling. Dezelfde aanpak kan gebruikt worden
+ voor de minder belangrijke servers door de oude regel
+ <literal>+:::::::::</literal> in de lokale versie van
+ <filename>/etc/master.passwd</filename> door iets als het
+ volgende te vervangen:</para>
+
+ <programlisting>+@IT_MW:::::::::
++@IT_APP:::::::::
++:::::::::/sbin/nologin</programlisting>
+
+ <para>Voor normale werkstations zijn het de volgende regels:</para>
+
+ <programlisting>+@IT_MW:::::::::
++@USERS:::::::::
++:::::::::/sbin/nologin</programlisting>
+
+ <para>En dat zou allemaal leuk en aardig zijn als er niet na een
+ paar weken een beleidsverandering komt: de IT-afdeling gaat
+ stagiairs aannemen. De IT-stagiairs mogen de normale
+ werkstations en de minder belangrijke servers gebruiken en de
+ juniorbeheerders mogen gaan aanmelden op de hoofdservers. Dat
+ kan door een nieuwe groep <literal>IT_STAG</literal> te maken en
+ de nieuwe IT-stagiairs toe te voegen aan die netgroep en dan de
+ instellingen op iedere machine te gaan veranderen. Maar zoals
+ het spreekwoord zegt: <quote>Fouten in een centrale planning
+ leiden tot complete chaos.</quote></para>
+
+ <para>Deze situaties kunnen voorkomen worden door gebruik te maken
+ van de mogelijkheid in NIS om netgroepen in netgroepen op te
+ nemen. Het is mogelijk om rolgebaseerde netgroepen te maken.
+ Er kan bijvoorbeeld een netgroep <literal>BIGSRV</literal>
+ gemaakt worden om het aanmelden op de belangrijke servers te
+ beperken en er kan een andere netgroep
+ <literal>SMALLSRV</literal> voor de minder belangrijke servers
+ zijn en een derde netgroep met de naam
+ <literal>USERBOX</literal> voor de normale werkstations. Al die
+ netgroepen kunnen de netgroepen bevatten die op die machines
+ mogen aanmelden. De nieuwe regels in de NIS-afbeelding netgroup
+ zien er dan zo uit:</para>
+
+ <programlisting>BIGSRV IT_MW IT_APP
+SMALLSRV IT_MW IT_APP ITSTAG
+USERBOX IT_MW ITSTAG USERS</programlisting>
+
+ <para>Deze methode voor het instellen van aanmeldbeperkingen werkt
+ redelijk goed als er groepen van machines gemaakt kunnen worden
+ met identieke beperkingen. Helaas blijkt dat eerder
+ uitzondering dan regel. Meestal moet het mogelijk zijn om per
+ machine in te stellen wie zich wel en wie zich niet mogen
+ aanmelden.</para>
+
+ <para>Daarom is het ook mogelijk om via machinespecifieke
+ netgroepen de hierboven aangegeven beleidswijziging op te
+ vangen. In dat scenario bevat
+ <filename>/etc/master.passwd</filename> op iedere machine twee
+ regels die met <quote>+</quote> beginnen. De eerste voegt de
+ netgroep toe met de accounts die op de machine mogen aanmelden
+ en de tweede voegt alle andere accounts toe met
+ <filename>/sbin/nologin</filename> als shell. Het is verstandig
+ om als naam van de netgroep de machinenaam in
+ <quote>HOOFDLETTERS</quote> te gebruiken. De regels zien er
+ ongeveer als volgt uit:</para>
+
+ <programlisting>+@<replaceable>MACHINENAAM</replaceable>:::::::::
++:::::::::/sbin/nologin</programlisting>
+
+ <para>Als dit voor alle machines is gedaan, dan hoeven de lokale
+ versies van <filename>/etc/master.passwd</filename> nooit meer
+ veranderd te worden. Alle toekomstige wijzigingen kunnen dan
+ gemaakt worden door de NIS-afbeelding te wijzigen. Hieronder
+ staat een voorbeeld van een mogelijke netgroep map voor het
+ beschreven scenario met een aantal toevoegingen:</para>
+
+ <programlisting># Definieer eerst de gebruikersgroepen
+IT_MW (,alpha,test-domain) (,beta,test-domain)
+IT_APP (,charlie,test-domain) (,delta,test-domain)
+DEPT1 (,echo,test-domain) (,foxtrott,test-domain)
+DEPT2 (,golf,test-domain) (,hotel,test-domain)
+DEPT3 (,india,test-domain) (,juliet,test-domain)
+ITSTAG (,kilo,test-domain) (,lima,test-domain)
+D_STAGS (,able,test-domain) (,baker,test-domain)
+#
+# En nu een aantal groepen op basis van rollen
+USERS DEPT1 DEPT2 DEPT3
+BIGSRV IT_MW IT_APP
+SMALLSRV IT_MW IT_APP ITSTAG
+USERBOX IT_MW ITSTAG USERS
+#
+# Een een groep voor speciale taken.
+# Geef echo en golf toegang tot de anti-virus machine.
+SECURITY IT_MW (,echo,test-domain) (,golf,test-domain)
+#
+# Machinegebaseerde netgroepen
+# Hoofdservers
+WAR BIGSRV
+FAMINE BIGSRV
+# Gebruiker india heeft toegang tot deze server nodig.
+POLLUTION BIGSRV (,india,test-domain)
+#
+# Deze is erg belangrijk en heeft strengere toegangseisen nodig.
+DEATH IT_MW
+#
+# De anti-virus machine als hierboven genoemd.
+ONE SECURITY
+#
+# Een machine die maar door 1 gebruiker gebruikt mag worden.
+TWO (,hotel,test-domain)
+# [...hierna volgen de andere groepen]</programlisting>
+
+ <para>Als er een soort database wordt gebruikt om de
+ gebruikersaccounts te beheren, dan is het in ieder geval nodig
+ dat ook het eerste deel van de afbeelding met de
+ databaserapportagehulpmiddelen gemaakt kan worden. Dan krijgen
+ nieuwe gebruikers automatisch toegang tot de machines.</para>
+
+ <para>Nog een laatste waarschuwing: het is niet altijd aan te
+ raden gebruik te maken van machinegebaseerde netgroepen. Als er
+ tientallen of zelfs honderden gelijke machines voor bijvoorbeeld
+ studentenruimtes worden uitgerold, dan is het verstandiger
+ rolgebaseerde netgroepen te gebruiken in plaats van
+ machinegebaseerde netgroepen om de grootte van de NIS-afbeelding
+ binnen de perken te houden.</para>
+ </sect2>
+
+ <sect2>
+ <title>Belangrijk om te onthouden</title>
+
+ <para>In een NIS-omgeving werken een aantal dingen wel
+ anders.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Als er een gebruiker toegevoegd moet worden, dan moet
+ die <emphasis>alleen</emphasis> toegevoegd worden aan de
+ master NIS-server en <emphasis>mag niet vergeten worden dat
+ de NIS-afbeeldingen herbouwd moeten worden</emphasis>. Als
+ dit wordt vergeten, dan kan de nieuwe gebruiker nergens
+ anders aanmelden dan op de NIS-master. Als bijvoorbeeld een
+ nieuwe gebruiker <username>jsmith</username> toegevoegd moet
+ worden:</para>
+
+ <screen>&prompt.root; <userinput>pw useradd jsmith</userinput>
+&prompt.root; <userinput>cd /var/yp</userinput>
+&prompt.root; <userinput>make test-domain</userinput></screen>
+
+ <para>Er kan ook <command>adduser jsmith</command> in plaats
+ van <command>pw useradd jsmith</command> gebruikt
+ worden.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>De beheeraccounts moeten buiten de
+ NIS-afbeeldingen gehouden worden</emphasis>. Het is niet
+ handig als de beheeraccounts en wachtwoorden naar machines
+ waarop gebruikers zich aanmelden die geen toegang tot die
+ informatie horen te hebben zouden gaan.</para>
+ </listitem>
+
+ <listitem>
+ <para><emphasis>De NIS-master en slave moeten veilig blijven
+ en zo min mogelijk niet beschikbaar zijn</emphasis>. Als de
+ machine wordt gehackt of als hij wordt uitgeschakeld, dan
+ kunnen er in theorie nogal wat mensen niet meer aanmelden.</para>
+
+ <para>Dit is de belangrijkste zwakte van elk gecentraliseerd
+ beheersysteem. Als de NIS-servers niet goed beschermd
+ worden, dan worden veel gebruikers boos!</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>NIS v1-compatibiliteit</title>
+
+ <para><application>ypserv</application> voor &os; biedt wat
+ ondersteuning voor NIS v1 cliënten. De NIS-implementatie
+ van &os; gebruikt alleen het NIS v2 protocol, maar andere
+ implementaties bevatten ondersteuning voor het v1 protocol voor
+ achterwaartse compatibiliteit met oudere systemen. De
+ <application>ypbind</application>-daemons die bij deze systemen
+ zitten proberen een binding op te zetten met een NIS v1 server,
+ hoewel dat niet per se ooit nodig is (en ze gaan misschien nog
+ wel door met broadcasten nadat ze een antwoord van een v2
+ server hebben ontvangen). Het is belangrijk om te melden dat
+ hoewel ondersteuning voor gewone cliëntoproepen aanwezig
+ is, deze versie van <application>ypserv</application> geen
+ overdrachtsverzoeken voor v1-afbeeldingen af kan handelen.
+ Daarom kan <application>ypserv</application> niet gebruikt
+ worden als master of slave in combinatie met oudere NIS-servers
+ die alleen het v1 protocol ondersteunen. Gelukkig worden er in
+ deze tijd niet meer zoveel van deze servers gebruikt.</para>
+ </sect2>
+
+ <sect2 id="network-nis-server-is-client">
+ <title>NIS-servers die ook NIS-cliënten zijn</title>
+
+ <para>Het is belangrijk voorzichtig om te gaan met het draaien van
+ <application>ypserv</application> in een multi-server domein
+ waar de server machines ook NIS-cliënten zijn. Het is in
+ het algemeen verstandiger om de servers te dwingen met zichzelf
+ te binden dan ze toe te staan een bindverzoek te broadcasten en
+ het risico te lopen dat ze een binding met elkaar maken. Er
+ kunnen vreemde fouten optreden als een van de servers plat gaat
+ als er andere servers van die server afhankelijk zijn. Na
+ verloop van tijd treedt op de cliënten wel een timeout op
+ en verbinden ze met een andere server, maar de daarmee gepaard
+ gaande vertraging kan aanzienlijk zijn en de foutmodus is nog
+ steeds van toepassing, omdat de servers dan toch weer opnieuw
+ een verbinding met elkaar kunnen vinden.</para>
+
+ <para>Het is mogelijk een host aan een specifieke server te binden
+ door aan <command>ypbind</command> de vlag
+ <option>&ndash;S</option> mee te geven. Om dit niet iedere keer
+ handmatig na een herstart te hoeven uitvoeren, kan de volgende
+ regel worden opgenomen in <filename>/etc/rc.conf</filename> van
+ de NIS-server:</para>
+
+ <programlisting>nis_client_enable="YES" # start ook het cliënt gedeelte
+nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</replaceable>"</programlisting>
+
+ <para>In &man.ypbind.8; staat meer informatie.</para>
+ </sect2>
+
+ <sect2>
+ <title>Wachtwoordformaten</title>
+
+ <indexterm>
+ <primary>NIS</primary>
+
+ <secondary>wachtwoordformaten</secondary>
+ </indexterm>
+
+ <para>Een van de meest voorkomende problemen bij het implementeren
+ van NIS is de compatibiliteit van het wachtwoordformaat. Als
+ een NIS-server wachtwoorden gebruikt die met DES gecodeerd zijn,
+ dan kunnen alleen cliënten die ook DES gebruiken
+ ondersteund worden. Als er bijvoorbeeld &solaris;
+ NIS-cliënten in een netwerk zijn, dan moet er vrijwel zeker
+ gebruik gemaakt worden van met DES gecodeerde wachtwoorden.</para>
+
+ <para>Van welk formaat cliënten en servers gebruik maken is
+ te zien in <filename>/etc/login.conf</filename>. Als een host
+ gebruik maakt van met DES gecodeerde wachtwoorden, dan staat er
+ in de klasse <literal>default</literal> een regel als de
+ volgende:</para>
+
+ <programlisting>default:\
+ :passwd_format=des:\
+ :copyright=/etc/COPYRIGHT:\
+ [Overige regels weggelaten]</programlisting>
+
+ <para>Andere mogelijke waarden voor
+ <literal>passwd_format</literal> zijn
+ <literal>blf</literal> en <literal>md5</literal>
+ (respectievelijk voor Blowfish en MD5 gecodeerde
+ wachtwoorden).</para>
+
+ <para>Als er wijzigingen gemaakt zijn aan
+ <filename>/etc/login.conf</filename> dan moet de
+ login capability database herbouwd worden door het volgende
+ commando als <username>root</username> uit te voeren:</para>
+
+ <screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen>
+
+ <note>
+ <para>Het formaat van de wachtwoorden die al in
+ <filename>/etc/master.passwd</filename> staan worden niet
+ bijgewerkt totdat een gebruiker zijn wachtwoord voor de eerste
+ keer wijzigt <emphasis>nadat</emphasis> de login capability
+ database is herbouwd.</para>
+ </note>
+
+ <para>Om te zorgen dat de wachtwoorden in het gekozen formaat zijn
+ gecodeerd, moet daarna gecontroleerd worden of de waarde
+ <literal>crypt_default</literal> in
+ <filename>/etc/auth.conf</filename> de voorkeur geeft aan het
+ gekozen formaat. Om dat te realiseren dient het gekozen formaat
+ vooraan gezet te worden in de lijst. Als er bijvoorbeeld
+ gebruik gemaakt wordt van DES gecodeerde wachtwoorden, dan hoort
+ de regel er als volgt uit te zien:</para>
+
+ <programlisting>crypt_default = des blf md5</programlisting>
+
+ <para>Als de bovenstaande stappen op alle &os; gebaseerde
+ NIS-servers en cliënten zijn uitgevoerd, dan is het zeker
+ dat ze het allemaal eens zijn over welk wachtwoordformaat er op
+ het netwerk wordt gebruikt. Als er problemen zijn bij de
+ authenticatie op een NIS-cliënt, dan is dit een prima
+ startpunt voor het uitzoeken waar de problemen vandaan komen.
+ Nogmaals: als er een NIS-server in een heterogene omgeving wordt
+ geplaatst, dan is het waarschijnlijk dat er gebruik gemaakt moet
+ worden van DES op alle systemen, omdat dat de laagst
+ overeenkomende standaard is.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network-dhcp">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Greg</firstname>
+ <surname>Sutter</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>Automatisch netwerk instellen (DHCP)</title>
+
+ <sect2>
+ <title>Wat is DHCP?</title>
+
+ <indexterm>
+ <primary>Dynamic Host Configuration Protocol</primary>
+
+ <see>DHCP</see>
+ </indexterm>
+
+ <indexterm><primary>Internet Systems Consortium
+ (ISC)</primary></indexterm>
+
+ <para>DHCP, het Dynamic Host Configuration Protocol, schrijft voor
+ hoe een systeem verbinding kan maken met een netwerk en hoe het
+ de benodigde informatie kan krijgen om met dat netwerk te
+ communiceren. &os; gebruikt de OpenBSD <command>dhclient</command>
+ welke uit OpenBSD&nbsp;3.7 komt.
+ Alle informatie over <command>dhclient</command> kan
+ zowel voor de ISC als de OpenBSD DHCP-cliënt gebruikt
+ worden. De DHCP-server zit bij de ISC-distributie.</para>
+ </sect2>
+
+ <sect2>
+ <title>Wat behandeld wordt</title>
+
+ <para>In dit onderdeel worden de cliëntcomponenten van de
+ ISC en OpenBSD DHCP-cliënt en de servercomponenten van het
+ ISC DHCP-systeem beschreven. Het programma voor de cliënt,
+ <command>dhclient</command>, zit standaard in &os; en de server
+ is beschikbaar via de port <filename
+ role="package">net/isc-dhcp42-server</filename>. Naast de
+ onderstaande informatie, zijn de hulppagina's van
+ &man.dhclient.8;, &man.dhcp-options.5; en &man.dhclient.conf.5;
+ bruikbare bronnen.</para>
+ </sect2>
+
+ <sect2>
+ <title>Hoe het werkt</title>
+
+ <indexterm><primary>UDP</primary></indexterm>
+
+ <para>Als <command>dhclient</command>, de DHCP-cliënt, wordt
+ uitgevoerd op een cliëntmachine, dan begint die met het
+ broadcasten van verzoeken om instellingeninformatie. Standaard
+ worden deze verzoeken op UDP poort 68 gedaan. De server
+ antwoordt op UDP 67 en geeft de cliënt een IP-adres en
+ andere relevante netwerkinformatie, zoals een netmasker,
+ router en DNS-servers. Al die informatie komt in de vorm van
+ een DHCP <quote>lease</quote> en is voor een bepaalde tijd
+ geldig (die is ingesteld door de beheerder van de DHCP-server).
+ Op die manier kunnen IP-adressen voor cliënten die niet
+ langer met het netwerk verbonden zijn (stale) automatisch weer
+ ingenomen worden.</para>
+
+ <para>DHCP-cliënten kunnen veel informatie van de server
+ krijgen. Er staat een uitputtende lijst in
+ &man.dhcp-options.5;.</para>
+ </sect2>
+
+ <sect2>
+ <title>&os; integratie</title>
+
+ <para>&os; integreert de OpenBSD DHCP-cliënt
+ <command>dhclient</command> volledig.
+ Er is ondersteuning voor de
+ DHCP-cliënt in zowel het installatieprogramma als in het
+ basissysteem, waardoor het niet noodzakelijk is om kennis te
+ hebben van het maken van netwerkinstellingen voor het netwerk
+ waar een DHCP-server draait.</para>
+
+ <indexterm><primary><application>sysinstall</application></primary></indexterm>
+
+ <para>DHCP wordt ondersteund door
+ <application>sysinstall</application>. Bij het instellen van
+ een netwerkinterface binnen
+ <application>sysinstall</application> is de tweede vraag:
+ <quote>Wil je proberen de interface met DHCP in te
+ stellen?</quote> Als het antwoord bevestigend luidt, dan wordt
+ <command>dhclient</command> uitgevoerd en als dat succesvol
+ verloopt, dan worden de netwerkinstellingen automatisch
+ ingevuld.</para>
+
+ <para>Voor het gebruiken van DHCP bij het opstarten van het
+ systeem zijn twee instellingen nodig:</para>
+
+ <indexterm>
+ <primary>DHCP</primary>
+
+ <secondary>vereisten</secondary>
+ </indexterm>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het apparaat <devicename>bpf</devicename> moet in de
+ kernel gecompileerd zijn. Dit kan door
+ <literal>device bpf</literal> aan het bestand met
+ kernelinstellingen toe te voegen en de kernel te herbouwen.
+ Meer informatie over het bouwen van een kernel staat in
+ <xref linkend="kernelconfig"/>.</para>
+
+ <para>Het apparaat <devicename>bpf</devicename> is al
+ onderdeel van de <filename>GENERIC</filename> kernel die bij
+ &os; zit, dus als er geen sprake is van een aangepaste
+ kernel, dan hoeft er geen nieuwe gemaakt te worden om DHCP
+ aan te praat te krijgen.</para>
+
+ <note>
+ <para>Voor de lezer die bijzonder begaan is met beveiliging,
+ is het belangrijk aan te geven dat
+ <devicename>bpf</devicename> ook het apparaat is waardoor
+ pakketsnuffelaars hun werk kunnen doen (hoewel ze nog
+ steeds als <username>root</username> moeten draaien).
+ <devicename>bpf</devicename> <emphasis>is</emphasis>
+ noodzakelijk voor DHCP, maar als beveiliging bijzonder
+ belangrijk is, dan hoort <devicename>bpf</devicename>
+ waarschijnlijk niet in een kernel te zitten omdat de
+ verwachting dat er in de toekomst ooit DHCP gebruikt gaat
+ worden.</para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para>Standaard draait de DHCP-synchronisatie op &os; in de
+ achtergrond, of <firstterm>asynchroon</firstterm>. Andere
+ opstartscripten gaan verder terwijl DHCP wordt voltooid, wat het
+ opstarten van het systeem versnelt.</para>
+
+ <para>DHCP in de achtergrond werkt goed als de DHCP-server snel op
+ verzoeken reageert en het DHCP-configuratieproces snel gaat. Op
+ sommige systemen kan het lang duren voordat DHCP klaar is. Als
+ netwerkdiensten proberen te draaien voordat DHCP voltooid is, zullen
+ ze falen. Door DHCP in <firstterm>synchrone</firstterm> modus te
+ draaien wordt dit probleem voorkomen en wordt het opstarten
+ gepauzeerd totdat de DHCP-configuratie voltooid is.</para>
+
+ <para>Gebruik om in de achtergrond verbinding te maken met een
+ DHCP-server terwijl andere opstartscripts verder gaan (asynchrone
+ modus) de waarde <quote><literal>DHCP</literal></quote> in
+ <filename>/etc/rc.conf</filename>:</para>
+
+ <programlisting>ifconfig_<replaceable>fxp0</replaceable>="DHCP"</programlisting>
+
+ <para>Gebruik om het opstarten te pauzeren totdat DHCP voltooid is de
+ synchrone modus met waarde
+ <quote><literal>SYNDHCP</literal></quote>:</para>
+
+ <programlisting>ifconfig_<replaceable>fxp0</replaceable>="SYNDHCP"</programlisting>
+
+ <note>
+ <para>Vervang <replaceable>fxp0</replaceable> zoals getoond in deze
+ voorbeelden met de naam van de interface dat dynamisch
+ geconfigureerd moet worden, zoals getoond in <xref
+ linkend="config-network-setup"/>.</para>
+ </note>
+
+ <para>Als er een andere lokatie voor
+ <command>dhclient</command> wordt gebruikt of als er extra
+ parameters aan <command>dhclient</command> meegegeven moeten
+ worden, dan dient ook iets als het volgende toegevoegd te
+ worden:</para>
+
+ <programlisting>dhclient_program="/sbin/dhclient"
+dhclient_flags=""</programlisting>
+ </listitem>
+ </itemizedlist>
+
+ <indexterm>
+ <primary>DHCP</primary>
+
+ <secondary>server</secondary>
+ </indexterm>
+
+ <para>De DHCP-server, <application>dhcpd</application>, zit bij de
+ port <filename role="package">net/isc-dhcp42-server</filename>
+ in de Portscollectie. Deze port bevat de ISC DHCP-server en
+ documentatie.</para>
+ </sect2>
+
+ <sect2>
+ <title>Bestanden</title>
+
+ <indexterm>
+ <primary>DHCP</primary>
+
+ <secondary>instellingenbestanden</secondary>
+ </indexterm>
+
+ <itemizedlist>
+ <listitem>
+ <para><filename>/etc/dhclient.conf</filename></para>
+
+ <para>Voor <command>dhclient</command> is een
+ instellingenbestand <filename>/etc/dhclient.conf</filename>
+ nodig. Dat bestand bevat meestal alleen maar commentaar,
+ omdat de standaardinstellingen redelijk zinvol zijn. Dit
+ bestand wordt beschreven in &man.dhclient.conf.5;.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>/sbin/dhclient</filename></para>
+
+ <para><command>dhclient</command> is statisch gelinkt en staat
+ in <filename>/sbin</filename>. Er staat meer informatie
+ over <command>dhclient</command> in &man.dhclient.8;.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>/sbin/dhclient-script</filename></para>
+
+ <para><command>dhclient-script</command> is het
+ &os;-specifieke DHCP-cliënt instellingenscript. Het
+ wordt beschreven in &man.dhclient-script.8;, maar het is
+ niet nodig het te wijzigen om goed te werken.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>/var/db/dhclient.leases.<replaceable>interface</replaceable></filename></para>
+
+ <para>De DHCP-cliënt houdt in dit bestand een database
+ bij van geldige leases, die naar een logboekbestand worden
+ geschreven. In &man.dhclient.leases.5; staat een iets
+ uitgebreidere beschrijving.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Verder lezen</title>
+
+ <para>Het DHCP-protocol staat volledig beschreven in <ulink
+ url="http://www.freesoft.org/CIE/RFC/2131/">RFC 2131</ulink>.
+ Er is nog een bron van informatie ingesteld op <ulink
+ url="http://www.dhcp.org/"></ulink>.</para>
+ </sect2>
+
+ <sect2 id="network-dhcp-server">
+ <title>Een DHCP-server installeren en instellen</title>
+
+ <sect3>
+ <title>Wat behandeld wordt</title>
+
+ <para>In dit onderdeel wordt beschreven hoe een &os; systeem zo
+ ingesteld kan worden dat het opereert als DHCP-server door
+ gebruik te maken van de ISC (Internet Systems Consortium)
+ implementatie van de DHCP-server.</para>
+
+ <para>De server wordt niet geleverd als deel van &os; en om deze
+ dienst aan te bieden dient de port <filename
+ role="package">net/isc-dhcp42-server</filename>
+ geïnstalleerd te worden. In <xref linkend="ports"/> staat
+ meer informatie over de Portscollectie.</para>
+ </sect3>
+
+ <sect3>
+ <title>DHCP-serverinstallatie</title>
+
+ <indexterm>
+ <primary>DHCP</primary>
+
+ <secondary>installatie</secondary>
+ </indexterm>
+
+ <para>Om een &os; systeem in te stellen als DHCP-server moet het
+ apparaat &man.bpf.4; in de kernel zijn opgenomen. Om dit te
+ doen dient <literal>device bpf</literal> aan het bestand met
+ kernelinstellingen toegevoegd te worden en dient de kernel
+ herbouwd te worden. Meer informatie over het bouwen van
+ kernels staat in <xref linkend="kernelconfig"/>.</para>
+
+ <para>Het apparaat <devicename>bpf</devicename> is al onderdeel
+ van de <filename>GENERIC</filename> kernel die bij &os;, dus
+ het is meestal niet nodig om een aangepaste kernel te bouwen
+ om DHCP aan de praat te krijgen.</para>
+
+ <note>
+ <para>Het is belangrijk te vermelden dat
+ <devicename>bpf</devicename> ook het apparaat is waardoor
+ pakketsnuffelaars kunnen werken (hoewel de programma's die
+ er gebruik van maken wel bijzondere toegang nodig hebben).
+ <devicename>bpf</devicename> <emphasis>is</emphasis>
+ verplicht voor DHCP, maar als beveiliging van belang is, dan
+ is het waarschijnlijk niet verstandig om
+ <devicename>bpf</devicename> in een kernel op te nemen
+ alleen omdat er in de toekomst misschien ooit DHCP gebruikt
+ gaat worden.</para>
+ </note>
+
+ <para>Hierna dient het standaardbestand
+ <filename>dhcpd.conf</filename> dat door de port <filename
+ role="package">net/isc-dhcp42-server</filename> is
+ geïnstalleerd gewijzigd te worden. Standaard is dit
+ <filename>/usr/local/etc/dhcpd.conf.sample</filename> en dit
+ bestand dient gekopieerd te worden naar
+ <filename>/usr/local/etc/dhcpd.conf</filename> voordat de
+ wijzigingen worden gemaakt.</para>
+ </sect3>
+
+ <sect3>
+ <title>De DHCP-server instellen</title>
+
+ <indexterm>
+ <primary>DHCP</primary>
+
+ <secondary>dhcpd.conf</secondary>
+ </indexterm>
+
+ <para><filename>dhcpd.conf</filename> is opgebouwd uit
+ declaraties over subnetten en hosts en is wellicht het meest
+ eenvoudig te beschrijven met een voorbeeld:</para>
+
+ <programlisting>option domain-name "example.com";<co id="domain-name"/>
+option domain-name-servers 192.168.4.100;<co id="domain-name-servers"/>
+option subnet-mask 255.255.255.0;<co id="subnet-mask"/>
+
+default-lease-time 3600;<co id="default-lease-time"/>
+max-lease-time 86400;<co id="max-lease-time"/>
+ddns-update-style none;<co id="ddns-update-style"/>
+
+subnet 192.168.4.0 netmask 255.255.255.0 {
+ range 192.168.4.129 192.168.4.254;<co id="range"/>
+ option routers 192.168.4.1;<co id="routers"/>
+}
+
+host mailhost {
+ hardware ethernet 02:03:04:05:06:07;<co id="hardware"/>
+ fixed-address mailhost.example.com;<co id="fixed-address"/>
+}</programlisting>
+
+ <calloutlist>
+ <callout arearefs="domain-name">
+ <para>Deze optie geeft het domein aan dat door cliënten
+ als standaard zoekdomein wordt gebruikt. In
+ &man.resolv.conf.5; staat meer over wat dat
+ betekent.</para>
+ </callout>
+
+ <callout arearefs="domain-name-servers">
+ <para>Deze optie beschrijft een door komma's gescheiden
+ lijst met DNS-servers die de cliënt moet
+ gebruiken.</para>
+ </callout>
+
+ <callout arearefs="subnet-mask">
+ <para>Het netmasker dat aan de cliënten wordt
+ voorgeschreven.</para>
+ </callout>
+
+ <callout arearefs="default-lease-time">
+ <para>Een cliënt kan om een bepaalde duur vragen die
+ een lease geldig is. Anders geeft de server aan wanneer
+ de lease vervalt (in seconden).</para>
+ </callout>
+
+ <callout arearefs="max-lease-time">
+ <para>Dit is de maximale duur voor een lease die de server
+ toestaat. Als een cliënt vraagt om een langere
+ lease, dan wordt die wel verstrekt, maar is de maar geldig
+ gedurende <literal>max-lease-time</literal> seconden.</para>
+ </callout>
+
+ <callout arearefs="ddns-update-style">
+ <para>Deze optie geeft aan of de DHCP-server moet proberen
+ de DNS-server bij te werken als een lease is geaccepteerd
+ of wordt vrijgegeven. In de ISC implementatie is deze
+ optie <emphasis>verplicht</emphasis>.</para>
+ </callout>
+
+ <callout arearefs="range">
+ <para>Dit geeft aan welke IP-adressen in de groep met
+ adressen zitten die zijn gereserveerd om uitgegeven te
+ worden aan cliënten. Alle IP-adressen tussen de
+ aangegeven adressen en die adressen zelf worden aan
+ cliënten uitgegeven.</para>
+ </callout>
+
+ <callout arearefs="routers">
+ <para>Geeft de default gateway aan die aan de cliënten
+ wordt voorgeschreven.</para>
+ </callout>
+
+ <callout arearefs="hardware">
+ <para>Het hardware MAC-adres van een host, zodat de
+ DHCP-server een host kan herkennen als die een verzoek
+ doet.</para>
+ </callout>
+
+ <callout arearefs="fixed-address">
+ <para>Geeft een host aan die altijd hetzelfde IP-adres moet
+ krijgen. Hier kan een hostnaam gebruikt worden, omdat de
+ DHCP-server de hostnaam zelf opzoekt voordat de
+ lease-informatie terug wordt gegeven.</para>
+ </callout>
+ </calloutlist>
+
+ <para>Wanneer u klaar bent met het schrijven van uw
+ <filename>dhcpd.conf</filename>, dient u de DHCP-server in
+ <filename>/etc/rc.conf</filename> aan te zetten, door het
+ volgende toe te voegen:</para>
+
+ <programlisting>dhcpd_enable="YES"
+dhcpd_ifaces="dc0"</programlisting>
+
+ <para>Vervang de interfacenaam <literal>dc0</literal> door de
+ interface (of interfaces, gescheiden door witruimtes) waarop
+ uw DHCP-server moet luisteren naar DHCP-verzoeken van
+ cliënten.</para>
+
+ <para>Daarna kunt u doorgaan met het starten van de server door
+ het volgende commando te geven:</para>
+
+ <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/isc-dhcpd start</userinput></screen>
+
+ <para>Als er later wijzigingen in de instellingen gemaakt moeten
+ worden, dan is het belangrijk te onthouden dat het sturen van
+ een <literal>SIGHUP</literal> signaal naar
+ <application>dhcpd</application> <emphasis>niet</emphasis>
+ resulteert in het opnieuw laden van de instellingen, zoals
+ voor de meeste daemons geldt. Voor deze daemon dient een
+ signaal <literal>SIGTERM</literal> gestuurd te worden om het
+ proces te stoppen. Daarna dient de daemon met het hiervoor
+ beschreven commando weer gestart worden.</para>
+ </sect3>
+
+ <sect3>
+ <title>Bestanden</title>
+
+ <indexterm>
+ <primary>DHCP</primary>
+
+ <secondary>instellingenbestanden</secondary>
+ </indexterm>
+
+ <itemizedlist>
+ <listitem>
+ <para><filename>/usr/local/sbin/dhcpd</filename></para>
+
+ <para><application>dhcpd</application> is statisch gelinkt
+ en staat in <filename>/usr/local/sbin</filename>. In de
+ hulppagina voor &man.dhcpd.8; die meekomt met de port
+ staat meer informatie over
+ <application>dhcpd</application>.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>/usr/local/etc/dhcpd.conf</filename></para>
+
+ <para><application>dhcpd</application> heeft een
+ instellingenbestand,
+ <filename>/usr/local/etc/dhcpd.conf</filename>, nodig
+ voordat de daemon diensten aan cliënten kan leveren.
+ Het bestand moet alle informatie bevatten die aan
+ cliënten gegeven moet worden en de informatie die
+ nodig is voor het draaien van de dienst. Dit
+ instellingenbestand staat beschreven in de hulppagina voor
+ &man.dhcpd.conf.5; die meekomt met de port.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>/var/db/dhcpd.leases</filename></para>
+
+ <para>De DHCP-server houdt in dit bestand een database bij
+ met leases die zijn uitgegeven en die naar een logboek
+ worden geschreven. In de hulppagina &man.dhcpd.leases.5;
+ die bij de port zit wordt dit uitvoeriger beschreven.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>/usr/local/sbin/dhcrelay</filename></para>
+
+ <para><application>dhcrelay</application> wordt in
+ uitgebreidere omgevingen gebruikt waar de ene DHCP-server
+ een verzoek van een cliënt naar een andere
+ DHCP-server op een ander netwerk doorstuurt. Als deze
+ functionaliteit nodig is, kan die beschikbaar komen door
+ de port <filename
+ role="package">net/isc-dhcp42-relay</filename> te
+ installeren. De hulppagina voor &man.dhcrelay.8; die bij
+ de port zit bevat meer details.</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network-dns">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Chern</firstname>
+ <surname>Lee</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ </author>
+
+ <author>
+ <firstname>Daniel</firstname>
+ <surname>Gerzo</surname>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>Domeinnaamsysteem (<acronym>DNS</acronym>)</title>
+
+ <sect2>
+ <title>Overzicht</title>
+
+ <indexterm><primary>BIND</primary></indexterm>
+
+ <para>&os; gebruikt standaard een versie van BIND (Berkeley
+ Internet Name Domain), wat de meest gebruikte implementatie van
+ het <acronym>DNS</acronym>-protocol is. <acronym>DNS</acronym>
+ is het protocol waarmee namen aan <acronym>IP</acronym>-adressen
+ gebonden worden en vice versa. Zo wordt bijvoorbeeld op een
+ zoekopdracht voor <hostid
+ role="fqdn">www.FreeBSD.org</hostid> geantwoord met het
+ <acronym>IP</acronym>-adres van de webserver van het &os;
+ Project en op een zoekopdracht voor <hostid
+ role="fqdn">ftp.FreeBSD.org</hostid> wordt geantwoord met het
+ <acronym>IP</acronym>-adres van de bijbehorende
+ <acronym>FTP</acronym>-machine. Het tegenovergestelde kan ook
+ gebeuren. Een zoekopdracht voor een <acronym>IP</acronym>-adres
+ kan de bijbehorende hostnaam opleveren. Het is niet nodig om
+ een naamserver te draaien om op een systeem zoekopdrachten met
+ <acronym>DNS</acronym> uit te voeren.</para>
+
+ <para>&os; wordt momenteel standaard geleverd met de
+ <acronym>BIND</acronym>9 <acronym>DNS</acronym>-serversoftware.
+ Onze installatie biedt verbeterde beveilingsmogelijkheden, een
+ nieuwe indeling van het bestandssysteem en geautomatiseerde
+ configuratie van &man.chroot.8;.</para>
+
+ <indexterm><primary>DNS</primary></indexterm>
+
+ <para><acronym>DNS</acronym> wordt op Internet onderhouden door
+ een enigszins complex systeem van autoritaire root, Top Level
+ Domain (<acronym>TLD</acronym>), en andere kleinschaligere
+ naamservers die individuele domeininformatie hosten en cachen.</para>
+
+ <para>Op dit moment wordt BIND beheerd door het Internet Systems
+ Consortium <ulink url="https://www.isc.org/"></ulink>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Terminologie</title>
+
+ <para>Om dit document te begrijpen moeten een aantal termen
+ gerelateerd aan <acronym>DNS</acronym> begrepen worden.</para>
+
+ <indexterm><primary>resolver</primary></indexterm>
+
+ <indexterm><primary>reverse DNS</primary></indexterm>
+
+ <indexterm><primary>root zone</primary></indexterm>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <colspec colwidth="1*"/>
+
+ <colspec colwidth="3*"/>
+
+ <thead>
+ <row>
+ <entry>Term</entry>
+
+ <entry>Definitie</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>Voorwaartse <acronym>DNS</acronym></entry>
+
+ <entry>Het afbeelden van hostnamen op IP-adressen.</entry>
+ </row>
+
+ <row>
+ <entry>Herkomst (origin)</entry>
+
+ <entry>Verwijst naar het domein dat door een bepaald
+ zonebestand wordt gedekt.</entry>
+ </row>
+
+ <row>
+ <entry><application>named</application>, BIND</entry>
+
+ <entry>Vaak gebruikte namen voor het naamserverpakket BIND
+ in &os;.</entry>
+ </row>
+
+ <row>
+ <entry>Resolver</entry>
+
+ <entry>Een systeemproces waarmee een machine
+ zoekopdrachten om zoneinformatie aan een naamserver
+ geeft.</entry>
+ </row>
+
+ <row>
+ <entry>Reverse <acronym>DNS</acronym></entry>
+
+ <entry>Het afbeelden van <acronym>IP</acronym>-adressen op
+ hostnamen.</entry>
+ </row>
+
+ <row>
+ <entry>Rootzone</entry>
+
+ <entry>Het begin van de Internet zonehiërarchie.
+ Alle zones vallen onder de rootzone, net zoals alle
+ bestanden in een bestandssysteem onder de rootmap
+ vallen.</entry>
+ </row>
+
+ <row>
+ <entry>Zone</entry>
+
+ <entry>Een individueel domein, subdomein of een deel van
+ de <acronym>DNS</acronym> die door dezelfde autoriteit
+ wordt beheerd.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <indexterm>
+ <primary>zones</primary>
+
+ <secondary>voorbeelden</secondary>
+ </indexterm>
+
+ <para>Voorbeelden van zones:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><hostid>.</hostid> is hoe de rootzone normaliter in de
+ documentatie genoemd wordt.</para>
+ </listitem>
+
+ <listitem>
+ <para><hostid>org.</hostid> is een Top Level Domain
+ (<acronym>TLD</acronym>) onder de rootzone.</para>
+ </listitem>
+
+ <listitem>
+ <para><hostid role="domainname">example.org.</hostid> is een
+ zone onder het <acronym>TLD</acronym>
+ <hostid>org.</hostid>.</para>
+ </listitem>
+
+ <listitem>
+ <para><hostid>1.168.192.in-addr.arpa</hostid> is een zone die
+ naar alle <acronym>IP</acronym>-adressen verwijst die onder
+ de <acronym>IP</acronym>-adresruimte <hostid
+ role="ipaddr">192.168.1.*</hostid> vallen.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Zoals te zien is staat het specifiekere deel van een
+ hostnaam aan de linkerkant. Zo is bijvoorbeeld <hostid
+ role="domainname">example.org.</hostid> specifieker dan
+ <hostid>org.</hostid> en is <hostid>org.</hostid>
+ specifieker dan de rootzone. De indeling van ieder deel van een
+ hostnaam lijkt veel op een bestandssysteem: de map
+ <filename>/dev</filename> valt onder de root, enzovoort.</para>
+ </sect2>
+
+ <sect2>
+ <title>Redenen om een naamserver te draaien</title>
+
+ <para>Naamservers bestaan in het algemeen in twee smaken: autoratieve
+ naamservers en caching (ook bekend als resolving) naamservers.</para>
+
+ <para>Er is een autoratieve naamserver nodig als:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het gewenst is om <acronym>DNS</acronym>-informatie aan
+ te bieden aan de wereld om met autoriteit op verzoeken te
+ antwoorden.</para>
+ </listitem>
+
+ <listitem>
+ <para>Een domein, zoals <hostid
+ role="domainname">example.org</hostid>, is geregistreerd
+ en er <acronym>IP</acronym>-adressen aan hostnamen die
+ daaronder liggen toegewezen moeten worden.</para>
+ </listitem>
+
+ <listitem>
+ <para>Een <acronym>IP</acronym>-adresblok omgekeerde
+ <acronym>DNS</acronym>-ingangen nodig heeft
+ (<acronym>IP</acronym> naar hostnaam).</para>
+ </listitem>
+
+ <listitem>
+ <para>Een omgekeerde of tweede naamserver, die een slaaf wordt
+ genoemd, moet antwoorden op verzoeken.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Er is een caching naamserver nodig als:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Een lokale <acronym>DNS</acronym>-server kan cachen en
+ wellicht sneller kan antwoorden dan een naamserver die
+ verder weg staat.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Als er een verzoek wordt gedaan voor <hostid
+ role="fqdn">www.FreeBSD.org</hostid>, dan doet de resolver
+ meestal een verzoek bij de naamserver van de
+ <acronym>ISP</acronym> die de uplink levert en ontvangt daarop
+ een antwoord. Met een lokale, caching
+ <acronym>DNS</acronym>-server hoeft het verzoek maar
+ één keer door de caching
+ <acronym>DNS</acronym>-server naar de buitenwereld gedaan te
+ worden. Voor aanvullende verzoeken hoeft niet buiten het lokale
+ netwerk te gaan omdat het al lokaal in de cache staat.</para>
+ </sect2>
+
+ <sect2>
+ <title>Hoe het werkt</title>
+
+ <para>De daemon BIND heet in &os;
+ <application>named</application>.</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Bestand</entry>
+
+ <entry>Beschrijving</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>&man.named.8;</entry>
+
+ <entry>De daemon BIND.</entry>
+ </row>
+
+ <row>
+ <entry>&man.rndc.8;</entry>
+
+ <entry>Naamserverbeheerprogramma.</entry>
+ </row>
+
+ <row>
+ <entry><filename class="directory">/etc/namedb</filename></entry>
+
+ <entry>Map waar zoneinformatie van BIND staat.</entry>
+ </row>
+
+ <row>
+ <entry><filename>/etc/namedb/named.conf</filename></entry>
+
+ <entry>Instellingenbestand van de daemon.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Afhankelijk van hoe en gegeven zone op de server is
+ geconfigureerd, staan de bestanden gerelateerd aan die zone in
+ de submappen <filename class="directory">master</filename>,
+ <filename class="directory">slave</filename>, of <filename
+ class="directory">dynamic</filename> van de map <filename
+ class="directory">/etc/namedb</filename>. Deze bestanden
+ bevatten de <acronym>DNS</acronym>-informatie die door de
+ naamserver als antwoord op zoekopdrachten gegeven zal worden.</para>
+ </sect2>
+
+ <sect2>
+ <title>BIND starten</title>
+
+ <indexterm>
+ <primary>BIND</primary>
+
+ <secondary>starten</secondary>
+ </indexterm>
+
+ <para>Omdat BIND standaard wordt geïnstalleerd, is het
+ instellen relatief eenvoudig.</para>
+
+ <para>De standaardconfiguratie van
+ <application>named</application> is die van een eenvoudige
+ resolverende naamserver, draaiende in een &man.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:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/named onestart</userinput></screen>
+
+ <para>Om er zeker van te zijn dat de daemon
+ <application>named</application> elke keer bij het opstarten
+ gestart wordt, moet de volgende regel in
+ <filename>/etc/rc.conf</filename> gezet worden:</para>
+
+ <programlisting>named_enable="YES"</programlisting>
+
+ <para>Het is duidelijk dat er vele instelopties voor
+ <filename>/etc/namedb/named.conf</filename> zijn die buiten het
+ bereik van dit document vallen. Als u echter
+ geïnteresseerd bent in de opstartopties voor
+ <application>named</application> op &os;, bekijk dan de
+ <literal>named_<replaceable>*</replaceable></literal>-vlaggen in
+ <filename>/etc/defaults/rc.conf</filename> en raadpleeg de
+ handleidingpagina &man.rc.conf.5;. De sectie <xref
+ linkend="configtuning-rcd"/> is ook nuttig om te lezen.</para>
+ </sect2>
+
+ <sect2>
+ <title>Instellingenbestanden</title>
+
+ <indexterm>
+ <primary>BIND</primary>
+
+ <secondary>instellingenbestanden</secondary>
+ </indexterm>
+
+ <para>Instellingenbestanden voor <application>named</application>
+ bevinden zich momenteel in <filename
+ class="directory">/etc/namedb</filename> en moeten gewijzigd
+ worden voor gebruik, tenzij er alleen een eenvoudige resolver
+ nodig is. Hier vindt de meeste configuratie plaats.</para>
+
+ <sect3>
+ <title><filename>/etc/namedb/named.conf</filename></title>
+
+ <programlisting>// &dollar;FreeBSD&dollar;
+//
+// 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 {
+ // Alle namen van bestanden en paden zijn relatief aan de chroot-map,
+ // indien aanwezig, en moeten volledig gekwalificeerd zijn.
+ directory "/etc/namedb/working";
+ 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 in /etc/rc.conf named_auto_forward=yes in. U kunt ook
+// named_auto_forward_only aanzetten (het effect hiervan is hierboven
+// beschreven).
+// include "/etc/namedb/auto_forward.conf";</programlisting>
+
+ <para>Zoals al in het commentaar staat kan van een cache in de
+ uplink geprofiteerd worden als <literal>forwarders</literal>
+ 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.</para>
+
+ <warning>
+ <para><hostid role="ipaddr">127.0.0.1</hostid> werkt hier
+ <emphasis>niet</emphasis>. Verander dit
+ <acronym>IP</acronym>-adres in een naamserver in de
+ uplink.</para>
+ </warning>
+
+ <programlisting>/*
+ 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 een beperkende firewall te
+ omzeilen 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 "/etc/namedb/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.
+
+ Zoals gedocumenteerd op http://dns.icann.org/services/axfr/ zijn deze
+ zones: "." (de root), ARPA, IN-ADDR.ARPA, IP6.ARPA en ROOT-SERVERS.NET
+ beschikbaar voor AXFR van deze servers op IPv4 en IPv6:
+ xfr.lax.dns.icann.org, xfr.cjr.dns.icann.org
+*/
+
+zone "." {
+ type slave;
+ file "/etc/namedb/slave/root.slave";
+ masters {
+ 192.5.5.241; // F.ROOT-SERVERS.NET.
+ };
+ notify no;
+};
+
+zone "arpa" {
+ type slave;
+ file "/etc/namedb/slave/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
+*/
+// RFCs 1912 en 5735 (en BCP32 voor localhost)
+zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; };
+zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
+zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+
+// RFC 1912-stijl zone voor IPv6 localhost adres
+zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
+
+// "Dit" netwerk (RFCs 1912 en 5735)
+zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+
+// Netwerken voor privaat gebruik (RFC 1918 en 5735)
+zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "18.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "19.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "20.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "21.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "22.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "23.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "24.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "25.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "26.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "27.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "28.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "29.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "30.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+
+// Lokale link/APIPA (RFCs 3927 en 5735)
+zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+
+// IETF protocol-toewijzingen (RFCs 5735 en 5736)
+zone "0.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+
+// TEST-NET-[1-3] voor documentatie (RFCs 5735 en 5737)
+zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+
+// IPv6-bereik voor documentatie (RFC 3849)
+zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+
+// Domeinnamen voor documentatie en testen (BCP 32)
+zone "test" { type master; file "/etc/namedb/master/empty.db"; };
+zone "example" { type master; file "/etc/namedb/master/empty.db"; };
+zone "invalid" { type master; file "/etc/namedb/master/empty.db"; };
+zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
+zone "example.net" { type master; file "/etc/namedb/master/empty.db"; };
+zone "example.org" { type master; file "/etc/namedb/master/empty.db"; };
+
+// Router benchmarken (RFC 2544 en 5735)
+zone "18.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "19.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+
+// Gereserveerd door IANA - oude ruimte van klasse E (RFC 5735)
+zone "240.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "241.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "242.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "243.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "244.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "245.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "246.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "247.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "248.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "249.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "250.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "251.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "252.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "253.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "254.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+
+// Niet-toegewezen IPv6-adressen (RFC 4291)
+zone "1.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "3.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "4.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "5.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "6.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "7.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "8.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "9.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "a.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "b.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "c.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "d.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "e.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "0.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "1.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "2.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "3.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "4.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "5.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "6.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "7.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "8.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "9.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "a.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "b.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "0.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "1.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "2.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "3.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "4.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "5.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+
+// IPv6 ULA (RFC 4193)
+zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+
+// IPv6 lokale link (RFC 4291)
+zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+
+// IPv6 verouderde site-lokale adressen (RFC 3879)
+zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+zone "f.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }
+
+// IP6.INT is verouderd (RFC 4159)
+zone "ip6.int" { type master; file "/etc/namedb/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 "/etc/namedb/dynamic/example.org";
+};
+*/
+
+/* Voorbeeld van een omgekeerde slaafzone
+zone "1.168.192.in-addr.arpa" {
+ type slave;
+ file "/etc/namedb/slave/1.168.192.in-addr.arpa";
+ masters {
+ 192.168.1.1;
+ };
+};
+*/</programlisting>
+
+ <para>In <filename>named.conf</filename> zijn dit voorbeelden
+ van slaafregels voor een voorwaartse en een omgekeerde
+ zone.</para>
+
+ <para>Voor iedere nieuwe zone die wordt aangeboden dient een
+ nieuwe instelling voor de zone aan
+ <filename>named.conf</filename> toegevoegd te worden.</para>
+
+ <para>De eenvoudigste instelling voor de zone <hostid
+ role="domainname">example.org</hostid> kan er als volgt
+ uitzien:</para>
+
+ <programlisting>zone "example.org" {
+ type master;
+ file "master/example.org";
+};</programlisting>
+
+ <para>De zone is een master, zoals aangegeven door het statement
+ <option>type</option>, waarvan de zoneinformatie in
+ <filename>/etc/namedb/example.org</filename> staat, zoals het
+ statement <option>file</option> aangeeft.</para>
+
+ <programlisting>zone "example.org" {
+ type slave;
+ file "slave/example.org";
+};</programlisting>
+
+ <para>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.</para>
+ </sect3>
+
+ <sect3>
+ <title>Zonebestanden</title>
+
+ <indexterm>
+ <primary>BIND</primary>
+
+ <secondary>zonebestanden</secondary>
+ </indexterm>
+
+ <para>Een voorbeeldbestand voor een masterzone voor <hostid
+ role="domainname">example.org</hostid> (bestaande binnen
+ <filename>/etc/namedb/master/example.org</filename>) ziet er
+ als volgt uit:</para>
+
+ <programlisting>&dollar;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.</programlisting>
+
+
+ <para>Iedere hostnaam die eindigt op een <quote>.</quote> is
+ een exacte hostnaam, terwijl alles zonder een
+ <quote>.</quote> op het einde relatief is aan de oorsprong.
+ Zo wordt <literal>ns1</literal> bijvoorbeeld vertaald naar
+ <literal>ns1.<replaceable>example.org.</replaceable></literal>.</para>
+
+ <para>De regels in een zonebestand volgen de volgende opmaak:</para>
+
+ <programlisting>recordnaam IN recordtype waarde</programlisting>
+
+ <indexterm>
+ <primary>DNS</primary>
+
+ <secondary>records</secondary>
+ </indexterm>
+
+ <para>De meest gebruikte DNS-records:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>SOA</term>
+
+ <listitem>
+ <para>begin van autoriteit (start of
+ authority)</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>NS</term>
+
+ <listitem>
+ <para>een bevoegde (autoratieve) name
+ server</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>A</term>
+
+ <listitem>
+ <para>een hostadres</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>CNAME</term>
+
+ <listitem>
+ <para>de canonieke naam voor een alias</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>MX</term>
+
+ <listitem>
+ <para>mail exchanger</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>PTR</term>
+
+ <listitem>
+ <para>een domeinnaam pointer (gebruikt in
+ omgekeerde DNS)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <programlisting>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</programlisting>
+
+ <variablelist>
+ <varlistentry>
+ <term><hostid
+ role="domainname">example.org.</hostid></term>
+
+ <listitem>
+ <para>de domeinnaam, ook de oorsprong voor dit
+ zonebestand.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><hostid role="fqdn">ns1.example.org.</hostid></term>
+
+ <listitem>
+ <para>de primaire/bevoegde naamserver voor deze
+ zone.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>admin.example.org.</literal></term>
+
+ <listitem>
+ <para>de persoon die verantwoordelijk is voor
+ deze zone, emailadres met <quote>@</quote> vervangen.
+ <email>admin@example.org</email> wordt
+ <literal>admin.example.org</literal>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>2006051501</literal></term>
+
+ <listitem>
+ <para>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 <literal>yyyymmddrr</literal> voor het
+ serienummer. <literal>2006051501</literal> betekent
+ dan dat het voor het laatst is aangepast op
+ 15&ndash;05&ndash;2006, de laatste
+ <literal>01</literal> betekent dat het zonebestand die
+ dag voor het eerst is aangepast. Het serienummer is
+ belangrijk omdat het slaafnaamservers aangeeft dat een
+ zone is bijgewerkt.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <programlisting> IN NS ns1.example.org.</programlisting>
+
+ <para>Hierboven staat een NS-regel. Voor iedere naamserver die
+ bevoegde antwoorden moet geven voor de zone hoort er zo'n
+ regel te zijn.</para>
+
+ <programlisting>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</programlisting>
+
+ <para>Een A-record geeft een machinenaam aan. Hierboven is te
+ zien dat <hostid role="fqdn">ns1.example.org</hostid> zou
+ resolven naar <hostid role="ipaddr">192.168.1.2</hostid>.</para>
+
+ <programlisting> IN A 192.168.1.1</programlisting>
+
+ <para>Deze regel kent IP-adres <hostid
+ role="ipaddr">192.168.1.1</hostid> toe aan de huidige
+ oorsprong, in dit geval <hostid
+ role="domainname">example.org</hostid>.</para>
+
+ <programlisting>www IN CNAME @</programlisting>
+
+ <para>Een canoniek naamrecord wordt meestal gebruikt voor het
+ geven van aliassen aan een machine. In het voorbeeld is
+ <hostid>www</hostid> een alias naar de <quote>master</quote>
+ machine waarvan de naam gelijk is aan de domeinnaam <hostid
+ role="domainname">example.org</hostid> (<hostid
+ role="ipaddr">192.168.1.1</hostid>). CNAME's kunnen
+ nooit samen met een ander soort record voor dezelfde hostnaam
+ gebruikt worden.</para>
+
+ <indexterm><primary>MX record</primary></indexterm>
+
+ <programlisting> IN MX 10 mail.example.org.</programlisting>
+
+ <para>MX records geven aan welke mailservers verantwoordelijk
+ zijn voor het afhandelen van inkomende mail voor de zone.
+ <hostid role="fqdn">mail.example.org</hostid> is de hostnaam
+ van een mailserver en 10 is de prioriteit voor die mailserver.</para>
+
+ <para>Het is mogelijk meerdere mailservers in te stellen met
+ prioriteiten 10, 20, enzovoorts. Een mailserver die probeert
+ mail af te leveren voor <hostid
+ role="domainname">example.org</hostid> 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.</para>
+
+ <para>Voor in-addr.arpa zonebestanden (omgekeerd DNS) wordt
+ dezelfde opmaak gebruikt, maar dan met PTR-regels in plaats
+ van A of CNAME.</para>
+
+ <programlisting>$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.</programlisting>
+
+ <para>Dit bestand geeft de juiste IP-adressen voor hostnamen
+ in het voorbeelddomein hierboven.</para>
+
+ <para>Het is het vernoemen waard dat alle namen aan de rechterkant
+ van een PTR-record volledig gekwalificeerd dienen te zijn
+ (i.e., met een <quote>.</quote> eindigen).</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Caching naamserver</title>
+
+ <indexterm>
+ <primary>BIND</primary>
+
+ <secondary>caching naamserver</secondary>
+ </indexterm>
+
+ <para>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.</para>
+ </sect2>
+
+ <sect2>
+ <title><acronym
+ role="Domain Name Security Extensions">DNSSEC</acronym></title>
+
+ <indexterm>
+ <primary>BIND</primary>
+
+ <secondary>DNS veiligheidsuitbreidingen</secondary>
+ </indexterm>
+
+ <para>Domain Name Security System Extensions, ofwel <acronym
+ role="Domain Name Security Extensions">DNSSEC</acronym>, is een
+ verzameling van specificaties om resolvende naamservers te beschermen
+ tegen valse <acronym>DNS</acronym>-gegevens, zoals vervalste
+ <acronym>DNS</acronym>-records. Door digitale handtekeningen te
+ gebruiken kan een resolver de integriteit van een record controleren.
+ Merk op dat <acronym
+ role="Domain Name Security Extensions">DNSSEC</acronym>
+ alleen integriteit biedt via het digitaal ondertekenen van het Resource
+ Record (<acronym role="Resource Record">RR</acronym>s). Het biedt noch
+ betrouwbaarheid noch bescherming tegen onjuiste aannames van
+ eindgebruikers. Dit betekent dat het mensen niet kan beschermen tegen
+ het bezoeken van <hostid role="domainname">voorbeeld.net</hostid> in
+ plaats van <hostid role="domainname">voorbeeld.com</hostid>. Het enige
+ wat <acronym>DNSSEC</acronym> doet is authenticeren dat de gegevens
+ niet tijdens het transport zijn gecompromitteerd. De beveiliging van
+ <acronym>DNSSEC</acronym> is een belangrijke stap in het beveiligen van
+ het internet in het algemeen. De relevante <acronym>RFC</acronym>s zijn
+ een goed beginpunt voor meer gedetailleerde gegevens over hoe
+ <acronym>DNSSEC</acronym> werkt. Raadpleeg de lijst in
+ <xref linkend="dns-read"/>.</para>
+
+ <para>De volgende secties laten zien hoe <acronym>DNSSEC</acronym> voor
+ een autoratieve <acronym>DNS</acronym>-server en een recursieve (of
+ caching) <acronym>DNS</acronym>-server die <acronym>BIND</acronym> 9
+ draait kan worden bewerkstelligd. Hoewel alle versies van
+ <acronym>BIND</acronym> 9 <acronym>DNSSEC</acronym> ondersteunen, is
+ tenminste versie 9.6.2 nodig om gebruik te kunnen maken van de
+ ondertekende rootzones tijdens het valideren van
+ <acronym>DNS</acronym>-verzoeken. Dit komt doordat
+ eerdere versies de benodigde algoritmes om validatie met de sleutel
+ voor de rootzone te uit te voeren niet hebben. Het wordt sterk
+ aangeraden om de nieuwste versie van <acronym>BIND</acronym> 9.7 te
+ gebruiken om gebruik te kunnen maken van automatische sleutel-updates
+ voor de rootsleutel en van andere mogelijkheden om zones ondertekend en
+ sleutel up-to-date te houden. Wanneer configuraties tussen 9.6.2 en 9.7
+ en later verschillen, zullen deze worden toegelicht.</para>
+
+ <sect3>
+ <title>Configuratie van een recursieve
+ <acronym>DNS</acronym>-server</title>
+
+ <para>Het aanzetten van <acronym>DNSSEC</acronym>-validatie van
+ verzoeken die door een recursieve <acronym>DNS</acronym>-server worden
+ uitgevoerd heeft enkele aanpassingen aan
+ <filename>named.conf</filename> nodig. Voordat deze wijzigingen
+ worden gemaakt dient de rootzone-sleutel, of vertrouwensanker, te
+ worden opgehaald. Momenteel is de rootzone-sleutel niet beschikbaar
+ in een bestandsformaat dat <acronym>BIND</acronym> begrijpt, dus moet
+ het handmatig in het juiste formaat omgezet worden. De sleutel zelf
+ kan verkregen worden door de rootzone ervoor met
+ <application>dig</application> te ondervragen. Door</para>
+
+ <screen>&prompt.user; <userinput>dig +multi +noall +answer DNSKEY . &gt; root.dnskey</userinput></screen>
+
+ <para>te draaien, wordt de sleutel in <filename>root.dnskey</filename>
+ opgeslagen. De inhoud dient er ongeveer als volgt uit te zien:</para>
+
+ <programlisting>. 93910 IN DNSKEY 257 3 8 (
+ AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQ
+ bSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh
+ /RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWA
+ JQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXp
+ oY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3
+ LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGO
+ Yl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGc
+ LmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0=
+ ) ; key id = 19036
+. 93910 IN DNSKEY 256 3 8 (
+ AwEAAcaGQEA+OJmOzfzVfoYN249JId7gx+OZMbxy69Hf
+ UyuGBbRN0+HuTOpBxxBCkNOL+EJB9qJxt+0FEY6ZUVjE
+ g58sRr4ZQ6Iu6b1xTBKgc193zUARk4mmQ/PPGxn7Cn5V
+ EGJ/1h6dNaiXuRHwR+7oWh7DnzkIJChcTqlFrXDW3tjt
+ ) ; key id = 34525</programlisting>
+
+ <para>Schrik niet als de verkregen sleutels anders zijn dan in dit
+ voorbeeld. Ze kunnen zijn veranderd nadat deze instructies voor het
+ laatst waren bijgewerkt. De uitvoer bevat in feite twee sleutels. De
+ eerste sleutel, met de waarde 257 na het DNSKEY-recordtype, is degene
+ die nodig is. Deze waarde geeft aan dat dit een Secure Entry Point (
+ <acronym role="Secure Entry Point">SEP</acronym>) is, beter bekend als
+ een Key Signing Key (<acronym role="Key Signing Key">KSK</acronym>).
+ De tweede sleutel, met de waarde 256, is een deelsleutel, beter bekend
+ als een Zone Signing Key (<acronym
+ role="Zone Signing Key">ZSK</acronym>). Meer over de verschillende
+ soorten sleutels komt aan bod in <xref
+ linkend="dns-dnssec-auth"/>.</para>
+
+ <para>Nu moet de sleutel gecontroleerd en geformatteerd worden zodat
+ <acronym>BIND</acronym> deze kan gebruiken. Maak om de sleutel te
+ controleren een <acronym role="Delegation Signer">DS</acronym> -
+ <acronym role="Resource Record">RR</acronym>-paar aan. Maak een
+ bestand aan dat deze <acronym role="Resource Record">RR</acronym>s
+ bevat aan met</para>
+
+ <screen>&prompt.user; <userinput>dnssec-dsfromkey -f root-dnskey . &gt; root.ds</userinput></screen>
+
+ <para>Deze records gebruiken respectievelijk SHA-1 en SHA-256, en dienen
+ er als het volgende voorbeeld uit te zien, waarbij het langere record
+ SHA-256 gebruikt.</para>
+
+ <programlisting>. IN DS 19036 8 1 B256BD09DC8DD59F0E0F0D8541B8328DD986DF6E
+. IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5</programlisting>
+
+ <para>Het SHA-256 <acronym>RR</acronym> kan nu worden vergeleken met de
+ digest in <ulink
+ url="https://data.iana.org/root-anchors/root-anchors.xml">https://data.iana.org/root-anchors/root-anchors.xml</ulink>.
+ Om er absoluut zeker van te zijn dat er niet geknoeid is met de
+ sleutel kunnen de gegevens in het <acronym>XML</acronym>-bestand
+ worden gecontroleerd met de <acronym>PGP</acronym>-handtekening in
+ <ulink
+ url="https://data.iana.org/root-anchors/root-anchors.asc">https//data.iana.org/root-anchors/root-anchors.asc</ulink>.</para>
+
+ <para>Vervolgens dient de sleutel juist geformateerd te worden. Dit
+ verschilt een beetje tussen versie 9.6.2 en versie 9.7 en later van
+ <acronym>BIND</acronym>. In versie 9.7 is ondersteuning toegevoegd om
+ automatisch veranderingen aan de sleutel te volgen en deze bij te
+ werken indien nodig. Dit wordt gedaan met
+ <literal>managed-keys</literal> zoals in het volgende voorbeeld te
+ zien is. Als de oudere versie gebruikt wordt, wordt de sleutel
+ toegevoegd met een commando <literal>trusted-keys</literal> en dient
+ deze handmatig bijgewerkt te worden. Voor <acronym>BIND</acronym>
+ 9.6.2 ziet het formaat er uit als:</para>
+
+ <programlisting>trusted-keys {
+ "." 257 3 8
+ "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
+ FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
+ bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD
+ X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz
+ W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS
+ Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq
+ QxA+Uk1ihz0=";
+};</programlisting>
+
+ <para>Voor versie 9.7 ziet het formaat er echter zo uit:</para>
+
+ <programlisting>managed-keys {
+ "." initial-key 257 3 8
+ "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
+ FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
+ bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD
+ X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz
+ W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS
+ Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq
+ QxA+Uk1ihz0=";
+};</programlisting>
+
+ <para>De rootsleutel kan nu aan <filename>named.conf</filename> worden
+ toegevoegd, ofwel direct of door een bestand dat de sleutel bevat te
+ includen. Stel na deze stappen <acronym>BIND</acronym> in zodat het
+ <acronym>DNSSEC</acronym>-validatie uitvoert op verzoeken door
+ <filename>named.conf</filename> te bewerken en het volgende aan de
+ directief <literal>options</literal> toe te voegen:</para>
+
+ <programlisting>dnssec-enable yes;
+dnssec-validation yes;</programlisting>
+
+ <para>Om te controleren dat het ook echt werkt, kan
+ <application>dig</application> gebruikt worden om een verzoek op een
+ ondertekende zone uit te voeren met de zojuist geconfigureerde
+ resolver. Een succesvol antwoord zal de vlag <literal>AD</literal>
+ bevatten om aan te geven dat de gegevens zijn geautenticeerd. Een
+ verzoek als</para>
+
+ <screen>&prompt.user; <userinput>dig @<replaceable>resolver</replaceable> +dnssec se ds </userinput></screen>
+
+ <para>zou het <acronym>DS</acronym> <acronym>RR</acronym> paar voor de
+ <literal>.se</literal>-zone moeten teruggeven. In de sectie
+ <literal>flags:</literal> moet de vlag <literal>AD</literal> te zien
+ zijn, als in:</para>
+
+ <programlisting>...
+;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
+...</programlisting>
+
+ <para>De resolver is nu in staat om <acronym>DNS</acronym>-verzoeken te
+ autenticeren.</para>
+ </sect3>
+
+ <sect3 id="dns-dnssec-auth">
+ <title>Configuratie van een autoratieve
+ <acronym>DNS</acronym>-server</title>
+
+ <para>Om een autoratieve naamserver een met <acronym>DNSSEC</acronym>
+ ondertekende zone te laten serveren is wat meer werk nodig. Een zone
+ wordt ondertekend met cryptografische sleutels die aangemaakt moeten
+ worden. Het is mogelijk om hier slechts één sleutel
+ voor te gebruiken. De methode die de voorkeur verdient is echter om
+ een sterke, goed beschermde Key Signing Key (<acronym
+ role="Key Signing Key">KSK</acronym>) die niet vaak wordt geroteerd
+ en een Zone Signing Key (<acronym
+ role="Zone Signing Key">ZSK</acronym>) die vaker wordt geroteerd te
+ hebben. Informatie over aanbevolen procedures staat in <ulink
+ url="http://tools.ietf.org/rfc/rfc4641.txt"><acronym>RFC</acronym>
+ 4641: <acronym>DNSSEC</acronym> Operational Practices</ulink>.
+ Procedures betreffende de rootzone staan in <ulink
+ url="http://www.root-dnssec.org/wp-content/uploads/2010/06/icann-dps-00.txt"><acronym>DNSSEC</acronym>
+ Practice Statement for the Root Zone <acronym>KSK</acronym>
+ operator</ulink> en <ulink
+ url="http://www.root-dnssec.org/wp-content/uploads/2010/06/vrsn-dps-00.txt"><acronym>DNSSEC</acronym>
+ Practice Statement for the Root Zone <acronym>ZSK</acronym>
+ operator</ulink>. De <acronym role="Key Signing Key">KSK</acronym>
+ wordt gebruikt om een autoriteitsketen voor de te valideren gegevens
+ op te bouwen en wordt daarom ook een Secure Entry Point (<acronym
+ role="Secure Entry Point">SEP</acronym>)-sleutel genoemd. Een
+ bericht-digest van deze sleutel, dat Delegation Signer (<acronym
+ role="Delegation Signer">DS</acronym>)-record genoemd wordt, moet
+ gepubliceerd zijn in de ouderzone om een vertrouwensketen op te
+ bouwen. Hoe dit bereikt wordt hangt af van de eigenaar van de
+ ouderzone. De <acronym role="Zone Signing Key">ZSK</acronym> wordt
+ gebruikt om de zone te ondertekenen, en hoeft alleen daar gepubliceerd
+ te worden.</para>
+
+ <para>Om <acronym>DNSSEC</acronym> aan te zetten voor de zone <hostid
+ role="domainname">voorbeeld.com</hostid> zoals beschreven in de
+ voorgaande voorbeelden, dient als eerste
+ <application>dnssec-keygen</application> gebruikt te worden om het
+ sleutelpaar met de <acronym>KSK</acronym> en <acronym>ZSK</acronym>
+ te genereren. Dit sleutelpaar kan verschillende cryptografische
+ algoritmes gebruiken. Het wordt aanbevolen om RSA/SHA-256 voor de
+ sleutels te gebruiken, een sleutellengte van 2048 bits zou voldoende
+ moeten zijn. Om de <acronym>KSK</acronym> voor <hostid
+ role="domainname">voorbeeld.com</hostid> te genereren:</para>
+
+ <screen>&prompt.user; <userinput>dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE voorbeeld.com</userinput></screen>
+
+ <para>en om de <acronym>ZSK</acronym> te genereren:</para>
+
+ <screen>&prompt.user; <userinput>dnssec-keygen -a RSASHA256 -b 2048 -n ZONE voorbeeld.com</userinput></screen>
+
+ <para><application>dnssec-keygen</application> maakt twee bestanden, de
+ publieke en private sleutels in bestanden met namen als
+ <filename>Kvoorbeeld.com.+005+nnnnn.key</filename> (publiek) en
+ <filename>Kvoorbeeld.com.+005+nnnnn.private</filename> (privaat). Het
+ gedeelte <literal>nnnnn</literal> van de bestandsnaam is een
+ sleutel-ID van vijf cijfers. Houd bij welke sleutel-ID bij welke
+ sleutel hoort. Dit is in het bijzonder van belang wanneer er meerdere
+ sleutels per zone zijn. Het is ook mogelijk om de sleutels te
+ hernoemen. Voor elk <acronym>KSK</acronym>-bestand:</para>
+
+ <screen>&prompt.user; <userinput>mv Kvoorbeeld.com.+005+nnnnn.key Kvoorbeeld.com.+005+nnnn.KSK.key</userinput>
+&prompt.user; <userinput>mv Kvoorbeeld.com.+005+nnnnn.private Kvoorbeeld.com.+005+nnnnn.KSK.private</userinput></screen>
+
+ <para>Voor <acronym>ZSK</acronym>-bestanden dient <literal>KSK</literal>
+ waar nodig door <literal>ZSK</literal> vervangen te worden. De
+ bestanden kunnen nu worden opgenomen in het zonebestand, door de
+ opdracht <literal>$include</literal> te gebruiken. Het zou er
+ ongeveer als volgt uit moeten zien:</para>
+
+ <programlisting>$include Kvoorbeeld.com.+005+nnnnn.KSK.key ; KSK
+$include Kvoorbeeld.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
+
+ <para>Onderteken tenslotte de zone en vertel <acronym>BIND</acronym> om
+ het ondertekende zonebestand te gebruiken. Voor het ondertekenen van
+ een zone wordt <application>dnssec-signzone</application> gebruikt.
+ Het commando om de zone <hostid
+ role="domainname">voorbeeld.com</hostid>, dat zich in
+ <filename>voorbeeld.com.db</filename> bevindt, zou er ongeveer zo
+ uit moeten zien:</para>
+
+ <screen>&prompt.user; <userinput>dnssec-signzone -o voorbeeld.com -k Kvoorbeeld.com.+005+nnnnn.KSK voorbeeld.com.db Kvoorbeeld.com.+005+nnnnn.ZSK.key</userinput></screen>
+
+ <para>De sleutel die aan het argument <option>-k</option> wordt
+ meegegeven is de <acronym>KSK</acronym> en het andere sleutelbestand
+ is de <acronym>ZSK</acronym> dat bij het ondertekenen gebruikt moet
+ worden. Het is mogelijk om meer dan één
+ <acronym>KSK</acronym> en <acronym>ZSK</acronym> op te geven, wat tot
+ gevolg heeft dat de zone met alle meegegeven sleutels wordt
+ ondertekend. Dit kan nodig zijn om zonegegevens aan te leveren die
+ met meerdere algoritmes zijn ondertekend. De uitvoer van
+ <application>dnssec-signzone</application> is een zonebestand met
+ daarin alle <acronym>RR</acronym>s ondertekend. Deze uitvoer komt in
+ een bestand met de extensie <literal>.signed</literal> terecht, zoals
+ <filename>voorbeeld.com.db.signed</filename>. De <acronym
+ role="Delegation Signer">DS</acronym>-records worden ook naar een
+ apart bestand <filename>dsset-voorbeeld.com</filename> geschreven. Om
+ deze ondertekende zone te gebruiken hoeft alleen de zone-directief in
+ <filename>named.conf</filename> veranderd te worden om
+ <filename>voorbeeld.com.db.signed</filename>. Standaard zijn de
+ ondertekeningen slechts 30 dagen geldig, wat betekent dat de zone over
+ ongeveer 15 dagen hertekend moet worden om er zeker van te zijn dat
+ resolvers geen records met oude ondertekeningen cachen. Het is
+ mogelijk om hiervoor een script en een crontaak te maken. Bekijk de
+ relevante handleidingen voor details.</para>
+
+ <para>Zorg ervoor dat de private sleutels veilig blijven, zoals met alle
+ cryptografische sleutels. Bij het veranderen van een sleutel kan het
+ beste de nieuwe sleutel in de zone opgenomen worden, en nog met de
+ oude sleutel te ondertekenen, en om daarna over te stappen op de
+ nieuwe sleutel. Nadat deze handelingen zijn voltooid kan de oude
+ sleutel uit de zone worden verwijderd. Wanneer dit niet wordt gedaan
+ kunnen de <acronym>DNS</acronym>-gegevens tijdelijk onbeschikbaar zijn
+ totdat de nieuwe sleutel door de
+ <acronym>DNS</acronym>-hiërarchie is gepropageerd. Meer
+ informatie over sleutelwisselingen en andere
+ praktijken rondom <acronym>DNSSEC</acronym> staan in <ulink
+ url="http://www.ietf.org/rfc/rfc4641.txt"><acronym>RFC</acronym>
+ 4641: <acronym>DNSSEC</acronym> Operational
+ practices</ulink>.</para>
+ </sect3>
+
+ <sect3>
+ <title>Automatisering met <acronym>BIND</acronym> 9.7 of nieuwer</title>
+
+ <para>In versie 9.7 van <acronym>BIND</acronym> is een nieuwe
+ mogelijkheid genaamd <emphasis>Smart Signing</emphasis>
+ geïntroduceerd. Deze mogelijkheid heeft als doel om het
+ sleutelbeheer en ondertekenproces eenvoudiger te maken door delen van
+ deze taken te automatiseren. Door de sleutels in een
+ <emphasis>sleutelreservoir</emphasis> te stoppen en de nieuwe optie
+ <literal>auto-dnssec</literal> te gebruiken, is het mogelijk om een
+ dynamische zone aan te maken welke opnieuw getekend wordt indien dat
+ nodig is. Gebruik om deze zone bij te werken
+ <application>nsupdate</application> met de nieuwe <option>-l</option>.
+ <application>rndc</application> kan nu ook zones ondertekenen met
+ sleutels uit het sleutelreservoir door de optie <option>sign</option>
+ te gebruiken. Voeg, om <acronym>BIND</acronym> dit automatische
+ ondertekenen en bijwerken van zones te laten gebruiken voor <hostid
+ role="domainname">voorbeeld.com</hostid>, het volgende aan
+ <filename>named.conf</filename> toe:</para>
+
+ <programlisting>zone voorbeeld.com {
+ type master;
+ key-directory "/etc/named/keys";
+ update-policy local;
+ auto-dnssec maintain;
+ file "/etc/named/dynamic/voorbeeld.com.zone";
+};</programlisting>
+
+ <para>Nadat deze veranderingen gemaakt zijn, dienen de sleutels voor de
+ zone aangemaakt te worden zoals uitgelegd in <xref
+ linkend="dns-dnssec-auth"/>, deze sleutels in het sleutelreservoir
+ gestopt te worden dat als argument aan de
+ <literal>key-directory</literal> in het zoneconfiguratie is
+ meegegeven, waarna de zone automatisch zal worden ondertekend. Zones
+ die op deze manier zijn geconfigureerd dienen met
+ <application>nsupdate</application> te worden gedaan, dat voor het
+ opnieuw ondertekenen van de zone met de nieuw toegevoegde gegevens zal
+ zorgen. Zie voor meer details <xref linkend="dns-read"/> en de
+ <acronym>BIND</acronym>-documentatie.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Beveiliging</title>
+
+ <para>Hoewel BIND de meest gebruikte implementatie van DNS is, is
+ er altijd nog het beveiligingsvraagstuk. Soms worden er
+ mogelijke en te misbruiken beveiligingsgaten gevonden.</para>
+
+ <para>Hoewel &os; <application>named</application> automatisch in
+ een &man.chroot.8;-omgeving plaatst; zijn er verschillende
+ andere beveiligingsmechanismen actief die zouden kunnen helpen
+ om mogelijke aanvallen op de <acronym>DNS</acronym>-dienst af te
+ wenden.</para>
+
+ <para>Het is altijd verstandig om de <ulink
+ url="http://www.cert.org/">CERT</ulink>
+ beveiligingswaarschuwingen te lezen en een abonnement te nemen
+ op de &a.security-notifications; om bij te blijven met de
+ beveiligingsproblemen wat betreft Internet en &os;.</para>
+
+ <tip>
+ <para>Als er problemen ontstaan, kan het bijwerken van broncode
+ en het opnieuw bouwen van <application>named</application>
+ hulp bieden.</para>
+ </tip>
+ </sect2>
+
+ <sect2 id="dns-read">
+ <title>Verder lezen</title>
+
+ <para>BIND/<application>named</application> hulppagina's:
+ &man.rndc.8; &man.named.8; &man.named.conf.5; &man.nsupdate.8;
+ &man.dnssec-signzone.8; &man.dnssec-keygen.8;</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink
+ url="https://www.isc.org/software/bind/">Officiële
+ ISC BIND pagina</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink
+ url="https://www.isc.org/software/guild/">Officieel ISC BIND
+ Forum</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink
+ url="http://www.oreilly.com/catalog/dns5/">O'Reilly DNS en
+ BIND 5e Editie</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://www.root-dnssec.org/documentation/">Root
+ <acronym>DNSSEC</acronym></ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink
+ url="http://data.iana.org/root-anchors/draft-icann-dnssec-trust-anchor.html">
+ <acronym>DNSSEC</acronym> Trust Anchor Publication for the Root
+ Zone</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://tools.ietf.org/html/rfc1034">RFC1034 -
+ Domain Names - Concepts and Facilitities</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://tools.ietf.org/html/rfc1035">RFC1035 -
+ Domain Names - Implementation and Specification</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://tools.ietf.org/html/rfc4033">RFC4033 -
+ DNS Security Introduction and Requirements</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://tools.ietf.org/html/rfc4034">RFC4034 -
+ Resource Records for the DNS Security Extensions</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://tools.ietf.org/html/rfc4035">RFC4035 -
+ Protocol Modifications for the DNS Security
+ Extensions</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://tools.ietf.org/html/rfc4641">RFC4641 -
+ DNSSEC Operational Practices</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink url="http://tools.ietf.org/html/rfc5011">RFC5011 -
+ Automated Updates of DNS Security (<acronym>DNSSEC</acronym>
+ Trust Anchors)</ulink></para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network-apache">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Murray</firstname>
+ <surname>Stokely</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>Apache HTTP server</title>
+
+ <indexterm>
+ <primary>webservers</primary>
+
+ <secondary>opzetten</secondary>
+ </indexterm>
+
+ <indexterm><primary>Apache</primary></indexterm>
+
+ <sect2>
+ <title>Overzicht</title>
+
+ <para>&os; wordt gebruikt om een paar van de drukste websites ter
+ wereld te draaien. De meeste webservers op Internet maken
+ gebruik van de <application>Apache HTTP Server</application>.
+ <application>Apache</application> softwarepakketten staan op de
+ &os; installatiemedia. Als <application>Apache</application>
+ niet bij de oorspronkelijke installatie van &os; is
+ meegeïnstalleerd, dan kan dat vanuit de port <filename
+ role="package">www/apache22</filename>.</para>
+
+ <para>Als <application>Apache</application> succesvol is
+ geïnstalleerd, moeten er instellingen gemaakt worden.</para>
+
+ <note>
+ <para>In dit onderdeel wordt versie 2.2.X van de
+ <application>Apache HTTP Server</application> behandeld omdat
+ die het meest gebruikt wordt op &os;.
+ Meer gedetailleerde informatie over
+ <application>Apache&nbsp;2.X</application> dat buiten het bereik van
+ dit document valt is te vinden op <ulink
+ url="http://httpd.apache.org/"></ulink>.</para>
+ </note>
+ </sect2>
+
+ <sect2>
+ <title>Instellen</title>
+
+ <indexterm>
+ <primary>Apache</primary>
+
+ <secondary>configuratiebestand</secondary>
+ </indexterm>
+
+ <para>Het belangrijkste bestand met instellingen voor de
+ <application>Apache HTTP Server</application> op &os; is
+ <filename>/usr/local/etc/apache22/httpd.conf</filename>. Dit
+ bestand is een typisch &unix; tekstgebaseerd
+ instellingenbestand waarin regels met commentaar beginnen met
+ het karakter <literal>#</literal>. Het uitputtend beschrijven
+ van alle mogelijke instellingen valt buiten het bereik van dit
+ boek, dus worden alleen de meest gebruikte directieven
+ beschreven.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>ServerRoot "/usr/local"</literal></term>
+
+ <listitem>
+ <para>Hierin wordt de standaard mappenhiërarchie voor
+ de <application>Apache</application> installatie
+ aangegeven. Binaire bestanden staan in de submappen
+ <filename class="directory">bin</filename> en <filename
+ class="directory">sbin</filename> van de serverroot en
+ bestanden met instellingen staan in <filename
+ class="directory">etc/apache</filename>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>ServerAdmin beheerder@beheer.adres</literal></term>
+
+ <listitem>
+ <para>Het adres waaraan problemen met de server gemaild
+ kunnen worden. Dit adres verschijnt op een aantal door de
+ server gegenereerde pagina's, zoals documenten met
+ foutmeldingen.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>ServerName www.example.com</literal></term>
+
+ <listitem>
+ <para>Met <literal>ServerName</literal> kan een hostnaam
+ ingesteld worden die wordt teruggezonden aan de
+ cliënten als de naam van de server anders is dan diegene
+ is ingesteld (gebruik bijvoorbeeld <hostid>www</hostid> in
+ plaats van de echte hostnaam).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>DocumentRoot
+ "/usr/local/www/apache22/data"</literal></term>
+
+ <listitem>
+ <para><literal>DocumentRoot</literal>: de map waaruit de
+ documenten worden geserveerd. Standaard worden alle
+ verzoeken uit deze map gehaald, maar er kunnen symbolische
+ links en aliassen gebruikt worden om naar andere locaties
+ te wijzen.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Het is altijd een goed idee om reservekopieën te maken
+ van het instellingenbestand voor
+ <application>Apache</application> vóór het maken
+ van wijzigingen. Als de juiste instellingen gemaakt zijn, kan
+ <application>Apache</application> gestart worden.</para>
+ </sect2>
+
+ <sect2>
+ <title><application>Apache</application> draaien</title>
+
+ <indexterm>
+ <primary>Apache</primary>
+
+ <secondary>starten of stoppen</secondary>
+ </indexterm>
+
+ <para>De port <filename role="package">www/apache2</filename> installeert
+ een &man.rc.8;-script dat helpt met het starten, stoppen en herstarten
+ van <application>Apache</application> en is te vinden in de map
+ <filename class="directory">/usr/local/etc/rc.d/</filename>.</para>
+
+ <para>Om <application>Apache</application> met het systeem mee te
+ starten kan de volgende regel aan
+ <filename>/etc/rc.conf</filename> worden toegevoegd:</para>
+
+ <programlisting>apache22_enable="YES"</programlisting>
+
+ <para>Als het nodig is <application>Apache</application> met afwijkende
+ opties op te starten, kan de volgende regel aan
+ <filename>/etc/rc.conf</filename> worden toegevoegd:</para>
+
+ <programlisting>apache22_flags=""</programlisting>
+
+ <para>De configuratie van <application>Apache</application> kan worden
+ getest op fouten voordat het daemon <command>httpd</command> voor de
+ eerste keer wordt gestart, of na het maken van wijzigingen aan de
+ instellingen terwijl <command>httpd</command> draait. Dit kan direct
+ door het &man.rc.8;-script worden gedaan, of door het gereedschap
+ &man.service.8; door één van de volgende commando's op te
+ geven:</para>
+
+ <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/apache22 configtest</userinput></screen>
+
+ <screen>&prompt.root; <userinput>service apache22 configtest</userinput></screen>
+
+ <note>
+ <para>Het is belangrijk om op te merken dat
+ <literal>configtest</literal> geen &man.rc.8;-standaard is, verwacht
+ niet dat het met alle &man.rc.8;-opstartscripts werkt.</para>
+ </note>
+
+ <para>Als <application>Apache</application> geen instellingsfouten meldt,
+ kan <application>Apache</application>&nbsp;<command>httpd</command>
+ gestart worden met dezelfde &man.rc.8;- en
+ &man.service.8;-mechanismen:</para>
+
+ <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/apache22 start</userinput></screen>
+
+ <screen>&prompt.root; <userinput>service apache22 start</userinput></screen>
+
+ <para>De dienst <command>httpd</command> kan getest worden door
+ <literal>http://<hostid
+ role="fqdn"><replaceable>localhost</replaceable></hostid></literal>
+ in een webbrowser te typen, waarbij <replaceable>localhost</replaceable>
+ door de volledig gekwalificeerde domeinnaam wordt vervangen van de
+ machine die <command>httpd</command> draait, als het niet de lokale
+ machine is. De standaard webpagina die afgebeeld wordt is
+ <filename>/usr/local/www/apache22/data/index.html</filename>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Virtuele hosting</title>
+
+ <para><application>Apache</application> ondersteunt twee
+ verschillende manieren van Virtuele Hosting. De eerste methode
+ is Naamgebaseerde Virtuele Hosting. Naamgebaseerde Virtuele
+ Hosting gebruikt de HTTP/1.1 headers van de cliënten om de
+ hostnaam uit te zoeken. Hierdoor kunnen meerdere domeinen
+ hetzelfde IP-adres delen.</para>
+
+ <para>Om <application>Apache</application> gebruik te laten maken
+ van Naamgebaseerde Virtuele Hosting kan een regel als de
+ volgende in <filename>httpd.conf</filename> worden opgenomen:</para>
+
+ <programlisting>NameVirtualHost *</programlisting>
+
+ <para>Als een webserver <hostid
+ role="fqdn">www.domein.tld</hostid> heet en er moet een
+ virtueel domein voor <hostid
+ role="fqdn">www.anderdomein.tld</hostid> gaan draaien, dan
+ kunnen de volgende regels aan <filename>httpd.conf</filename>
+ worden toegevoegd:</para>
+
+ <screen>&lt;VirtualHost *&gt;
+ ServerName www.domein.tld
+ DocumentRoot /www/domein.tld
+&lt;/VirtualHost&gt;
+
+&lt;VirtualHost *&gt;
+ ServerName www.anderdomein.tld
+ DocumentRoot /www/anderdomein.tld
+&lt;/VirtualHost&gt;</screen>
+
+ <para>De adressen en de paden uit dit voorbeeld kunnen in echte
+ implementaties uiteraard gewijzigd worden.</para>
+
+ <para>Meer informatie over het opzetten van virtuele hosts staat
+ in de officiële documentatie voor
+ <application>Apache</application> op <ulink
+ url="http://httpd.apache.org/docs/vhosts/"></ulink></para>
+ </sect2>
+
+ <sect2>
+ <title>Apache modules</title>
+
+ <indexterm>
+ <primary>Apache</primary>
+
+ <secondary>modules</secondary>
+ </indexterm>
+
+ <para>Er zijn veel verschillende
+ <application>Apache</application> modules die functionaliteit
+ toevoegen aan de basisdienst. De &os; Portscollectie biedt
+ op een eenvoudige manier de mogelijkheid om
+ <application>Apache</application> samen met de meeste populaire
+ add-on modules te installeren.</para>
+
+ <sect3>
+ <title><application>mod_ssl</application></title>
+
+ <indexterm>
+ <primary>webserver</primary>
+
+ <secondary>veilig</secondary>
+ </indexterm>
+
+ <indexterm><primary>SSL</primary></indexterm>
+
+ <indexterm><primary>cryptografie</primary></indexterm>
+
+ <para>De module <application>mod_ssl</application> gebruikt de
+ bibliotheek OpenSSL om sterke cryptografie te leveren via de
+ protocollen Secure Sockets Layer (SSL&nbsp;v2/v3) en Transport
+ Layer Security (TLS&nbsp;v1). Deze module levert alles wat
+ nodig is om een getekend certificaat aan te vragen bij een
+ vertrouwde certificaatautoriteit om een veilige webserver
+ onder &os; te kunnen draaien.</para>
+
+ <para>De module <application>mod_ssl</application> wordt standaard
+ gebouwd, maar kan worden aangezet door tijdens het compileren
+ <literal>-DWITH_SSL</literal> op te geven.</para>
+ </sect3>
+
+ <sect3>
+ <title>Taalbindingen</title>
+
+ <para>Er zijn Apache-modules beschikbare voor de meeste grote
+ scriptingtalen. Deze modules maken het typisch mogelijk om
+ <application>Apache</application>-modules geheel in een
+ scriptingtaal te schrijven. Ze worden ook vaak gebruikt als
+ een persistente interpreter die in de server zit en die de
+ rompslomp van het starten van een externe interpreter en de
+ opstartvertraging voor dynamische websites vermijdt, zoals
+ beschreven in de volgende sectie.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Dynamische websites</title>
+
+ <indexterm>
+ <primary>webservers</primary>
+
+ <secondary>dynamisch</secondary>
+ </indexterm>
+
+ <para>In het afgelopen decennium hebben steeds meer bedrijven zich
+ op Internet gericht om hun omzet te verhogen en hun
+ zichtbaarheid te vergroten. Hiermee is ook de behoefte aan
+ interactieve webinhoud toegenomen. Hoewel sommige bedrijven
+ zoals &microsoft; oplossingen hebben geïntroduceerd voor
+ hun eigen (propriëtaire) producten, heeft ook de open
+ source gemeenschap een antwoord op de vraag gegeven. Moderne
+ opties voor dynamische webinhoud zijn onder andere Django, Ruby
+ on Rails, <application>mod_perl2</application>, en
+ <application>mod_php</application>.</para>
+
+ <sect3>
+ <title>Django</title>
+
+ <para>Django is een BSD-gelicenseerd raamwerk ontworpen om
+ ontwikkelaars in staat te stellen om snel hoog presterende,
+ elegante webapplicaties te schrijven. Het biedt een vertaling
+ van objecten naar relaties zodat datatypes ontwikkeld kunnen
+ worden als Python-objecten, en er een rijke dynamische
+ databasetoegang voor die objecten kan worden geboden zonder
+ dat de ontwikkelaar ooit SQL hoeft te schrijven. Het biedt
+ ook een uitbreidbaar sjabloonsysteem zodat de applicatielogica
+ is gescheiden van de HTML-presentatie.</para>
+
+ <para>Django is afhankelijk van
+ <application>mod_python</application>,
+ <application>Apache</application>, en een SQL-database-engine
+ naar keuze. De &os;-port zal al deze vereisten met de juiste
+ vlaggen voor u installeren.</para>
+
+ <example id="network-www-django-install">
+ <title>Django installeren met <application>Apache2</application>,
+ <application>mod_python3</application> en
+ <application>PostgreSQL</application></title>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL</userinput></screen>
+ </example>
+
+ <para>Als Django en deze vereisten eenmaal zijn
+ geïnstalleerd, dient u een Django-projectmap te maken en
+ vervolgens Apache te configureren om de ingebakken
+ Python-interpreter te gebruiken om uw applicatie voor
+ specifieke URL's op uw site aan te roepen.</para>
+
+ <example id="network-www-django-apache-config">
+ <title>Apache-configuratie voor Django/mod_python</title>
+
+ <para>U moet een regel aan het Apache-bestand
+ <filename>httpd.conf</filename> toevoegen om Apache in te
+ stellen om verzoeken voor bepaalde URL's aan uw
+ webapplicatie door te geven:</para>
+
+ <screen>&lt;Location "/"&gt;
+ SetHandler python-program
+ PythonPath "['/map/naar/uw/django-pakketten/'] + sys.path"
+ PythonHandler django.core.handlers.modpython
+ SetEnv DJANGO_SETTINGS_MODULE mijnsite.settings
+ PythonAutoReload On
+ PythonDebug On
+&lt;/Location&gt;</screen>
+ </example>
+ </sect3>
+
+ <sect3>
+ <title>Ruby on Rails</title>
+
+ <indexterm><primary>Ruby on Rails</primary></indexterm>
+
+ <para>Ruby on Rails is een ader opensource webraamwerk dat een
+ volledige ontwikkelstack biedt en geoptimaliseerd is om
+ webontwikkelaars productiever te maken en snel krachtige
+ applicaties te laten ontwikkelen. Het kan eenvoudig vanuit
+ het portssysteem geïnstalleerd worden.</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/www/rubygem-rails; make all install clean</userinput></screen>
+ </sect3>
+
+ <sect3>
+ <title><application>mod_perl2</application></title>
+
+ <indexterm>
+ <primary>mod_perl2</primary>
+
+ <secondary>Perl</secondary>
+ </indexterm>
+
+ <para>Het <application>Apache</application>/Perl
+ integratieproject brengt de volledige kracht van de
+ programmeertaal Perl en de <application>Apache HTTP
+ Server</application> samen. Met de module
+ <application>mod_perl2</application> is het mogelijk om
+ <application>Apache</application>-modules volledig in Perl te
+ schrijven. Daarnaast voorkomt een ingebouwde persistente
+ interpreter in de server de rompslomp van het starten van een
+ externe interpreter en de nadelen van de opstarttijd van
+ Perl.</para>
+
+ <para><application>mod_perl2</application> is beschikbaar in de port
+ <filename role="package">www/mod_perl2</filename>.</para>
+ </sect3>
+
+ <sect3>
+ <sect3info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect3info>
+
+ <title><application>mod_php</application></title>
+
+ <indexterm>
+ <primary>mod_php</primary>
+
+ <secondary>PHP</secondary>
+ </indexterm>
+
+ <para><acronym>PHP</acronym>, ook bekend als <quote>PHP:
+ Hypertext Preprocessor</quote>, is een algemene scripttaal die
+ bijzonder geschikt is voor webontwikkeling. Het is mogelijk
+ de taal in te bedden in <acronym>HTML</acronym> en de syntaxis
+ is afgeleid van C, &java; en Perl met de bedoeling
+ webontwikkelaars in staat te stellen om snel dynamisch
+ samengestelde pagina's te schrijven.</para>
+
+ <para>Om ondersteuning voor <acronym>PHP</acronym>5 toe te
+ voegen aan de <application>Apache</application> webserver kan
+ eerst de port <filename role="package">lang/php5</filename>
+ geïnstalleerd worden.</para>
+
+ <para>Als de port <filename role="package">lang/php5</filename>
+ voor het eerst geïnstalleerd wordt, worden automatisch de
+ beschikbare <literal>OPTIONS</literal> weergegeven. Als er
+ geen menu wordt weergegeven, omdat de port <filename
+ role="package">lang/php5</filename> reeds in het verleden is
+ geïnstalleerd, is het altijd mogelijk om het optiedialoog
+ weer te laten verschijnen door</para>
+
+ <screen>&prompt.root; <userinput>make config</userinput></screen>
+
+ <para>uit te voeren in de map van de port.</para>
+
+ <para>Controleer in het optiedialoog dat de optie
+ <literal>APACHE</literal> <application>mod_php5</application>
+ als een laadbare module voor de webserver
+ <application>Apache</application> bouwt.</para>
+
+ <note>
+ <para>Een heleboel sites draaien nog steeds
+ <acronym>PHP</acronym>4 om verschillende redenen
+ (compatibiliteitszaken of reeds in gebruik genomen
+ webapplicaties). Als <application>mod_php4</application>
+ nodig is in plaats van <application>mod_php5</application>,
+ gebruik dan de port <filename
+ role="package">lang/php4</filename>. De port <filename
+ role="package">lang/php4</filename> ondersteunt een groot
+ deel van de configuratie- en bouwopties van de port
+ <filename role="package">lang/php5</filename>.</para>
+ </note>
+
+ <para>Hiermee worden de modules die nodig zijn voor de
+ ondersteuning van dynamische
+ <acronym>PHP</acronym>-applicaties geïnstalleerd en
+ ingesteld. Controleer dat de volgende secties aan
+ <filename>/usr/local/etc/apache22/httpd.conf</filename> zijn
+ toegevoegd:</para>
+
+ <programlisting>LoadModule php5_module libexec/apache/libphp5.so</programlisting>
+
+ <programlisting>AddModule mod_php5.c
+ &lt;IfModule mod_php5.c&gt;
+ DirectoryIndex index.php index.html
+ &lt;/IfModule&gt;
+ &lt;IfModule mod_php5.c&gt;
+ AddType application/x-httpd-php .php
+ AddType application/x-httpd-php-source .phps
+ &lt;/IfModule&gt;</programlisting>
+
+ <para>Na voltooiing is een eenvoudige aanroep van het commando
+ <command>apachectl</command> voor een nette herstart nodig om
+ de module <acronym>PHP</acronym> te laden:</para>
+
+ <screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
+
+ <para>Voor toekomstig bijwerken van <acronym>PHP</acronym> zal
+ het commando <command>make config</command> niet nodig zijn;
+ de geselecteerde <literal>OPTIONS</literal> worden automatisch
+ bewaard door het &os; Ports raamwerk.</para>
+
+ <para>De ondersteuning voor <acronym>PHP</acronym> in &os; is
+ extreem modulair waardoor de basisinstallatie zeer beperkt is.
+ Het is heel gemakkelijk om ondersteuning toe te voegen door de
+ port <filename role="package">lang/php5-extensions</filename>
+ te gebruiken. Deze port biedt een menugestuurde interface voor
+ de installatie van <acronym>PHP</acronym>-uitbreidingen. Als
+ alternatief kunnen individuele uitbreidingen worden
+ geïnstalleerd door de juiste port te gebruiken.</para>
+
+ <para>Om bijvoorbeeld ondersteuning voor de
+ <application>MySQL</application> databaseserver aan
+ <acronym>PHP</acronym>5 toe te voegen kan gewoonweg de port
+ <filename>databases/php5-mysql</filename>
+ geïnstalleerd worden:</para>
+
+ <para>Na de installatie van een uitbreiding moet de
+ <application>Apache</application>-server herladen worden om de
+ nieuwe veranderingen in de configuratie op te pikken:</para>
+
+ <screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network-ftp">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Murray</firstname>
+ <surname>Stokely</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>File Transfer Protocol (FTP)</title>
+
+ <indexterm><primary>FTP servers</primary></indexterm>
+
+ <sect2>
+ <title>Overzicht</title>
+
+ <para>Het File Transfer Protocol (FTP) biedt gebruikers een
+ eenvoudige manier om bestanden van en naar een <acronym
+ role="File Transfer Protocol">FTP</acronym> server te
+ verplaatsen. &os; bevat <acronym
+ role="File Transfer Protocol">FTP</acronym>
+ server software, <application>ftpd</application>, in het
+ basissysteem. Hierdoor is het opzetten en beheren van een
+ <acronym role="File Transfer Protocol">FTP</acronym> server op
+ &os; erg overzichtelijk.</para>
+ </sect2>
+
+ <sect2>
+ <title>Instellen</title>
+
+ <para>De belangrijkste stap bij het instellen is de beslissing
+ welke accounts toegang krijgen tot de FTP server. Een normaal
+ &os; systeem heeft een aantal systeemaccounts die gebruikt
+ worden voor daemons, maar onbekende gebruikers mag niet
+ toegestaan worden van die accounts gebruikt te maken. In
+ <filename>/etc/ftpusers</filename> staat een lijst met
+ gebruikers die geen FTP toegang hebben. Standaard staan daar de
+ voorgenoemde accounts in, maar het is ook mogelijk om daar
+ gebruikers toe te voegen die geen FTP toegang mogen hebben.</para>
+
+ <para>Het kan ook wenselijk zijn de FTP toegang voor sommige
+ gebruikers te beperken, maar niet onmogelijk te maken. Dit kan
+ met <filename>/etc/ftpchroot</filename>. In dat bestand staan
+ gebruikers en groepen waarop FTP toegangsbeperkingen van
+ toepassing zijn. In &man.ftpchroot.5; staan alle details die
+ hier niet beschreven zijn.</para>
+
+ <indexterm>
+ <primary>FTP</primary>
+
+ <secondary>anoniem</secondary>
+ </indexterm>
+
+ <para>Om anonieme FTP toegang voor een server in te schakelen,
+ dient er een gebruiker <username>ftp</username> op een &os;
+ systeem aangemaakt te worden. Dan kunnen gebruikers op de
+ server aanmelden met de gebruikersnaam <username>ftp</username>
+ of <username>anonymous</username> en met ieder wachtwoord (de
+ geldende conventie schrijft voor dat dit een emailadres
+ van de gebruiker is). De FTP server roep bij een anonieme
+ aanmelding &man.chroot.2; aan, zodat er alleen toegang is tot de
+ thuismap van de gebruiker <username>ftp</username>.</para>
+
+ <para>Er zijn twee tekstbestanden waarin welkomstberichten voor de
+ FTP-cliënten gezet kunnen worden. De inhoud van
+ <filename>/etc/ftpwelcome</filename> wordt getoond voordat
+ gebruikers een aanmeldprompt zien. Na een succesvolle
+ aanmelding wordt de inhoud van
+ <filename>/etc/ftpmotd</filename> getoond. Het genoemde pad is
+ relatief ten opzichte van de aanmeldomgeving, dus voor anonieme
+ gebruikers wordt <filename>~ftp/etc/ftpmotd</filename>
+ getoond.</para>
+
+ <para>Als een FTP server eenmaal correct is ingesteld, moet die
+ ingeschakeld worden in <filename>/etc/inetd.conf</filename>.
+ Daar moet het commentaarkarakter <literal>#</literal> voor de
+ bestaande <application>ftpd</application> regel verwijderd
+ worden:</para>
+
+ <programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
+
+ <para>Zoals is uitgelegd in <xref linkend="network-inetd-reread"/>,
+ moet de configuratie van <application>inetd</application> worden
+ herladen nadat dit instellingenbestand is gewijzigd. Details
+ over het aanzetten van <application>inetd</application> op uw
+ systeem staan in <xref linkend="network-inetd-settings"/>.</para>
+
+ <para>Als alternatief kan <application>ftpd</application> ook
+ gestart worden als een op zichzelf staande dienst. In dat geval
+ volstaat het om de juiste variabele in te stellen in
+ <filename>/etc/rc.conf</filename>:</para>
+
+ <programlisting>ftpd_enable="YES"</programlisting>
+
+ <para>Na het instellen van de bovenstaande variabele zal de op
+ zichzelf staande server gestart worden nadat de computer opnieuw
+ is opgestart, of het kan handmatig worden gestart door het
+ volgende commando als <username>root</username> uit te
+ voeren:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/ftpd start</userinput></screen>
+
+ <para>Nu kan aangemeld worden op de FTP-server met:</para>
+
+ <screen>&prompt.user; <userinput>ftp localhost</userinput></screen>
+ </sect2>
+
+ <sect2>
+ <title>Beheren</title>
+
+ <indexterm><primary>syslog</primary></indexterm>
+
+ <indexterm>
+ <primary>logboekbestanden</primary>
+
+ <secondary>FTP</secondary>
+ </indexterm>
+
+ <para>De <application>ftpd</application> daemon gebruikt
+ &man.syslog.3; om berichten te loggen. Standaard plaatst de
+ systeemlogdaemon berichten over FTP in
+ <filename>/var/log/xferlog</filename>. De lokatie van het FTP
+ logboek kan gewijzigd worden door de volgende regels in
+ <filename>/etc/syslog.conf</filename> te wijzigen:</para>
+
+ <programlisting>ftp.info /var/log/xferlog</programlisting>
+
+ <indexterm>
+ <primary>FTP</primary>
+
+ <secondary>anoniem</secondary>
+ </indexterm>
+
+ <para>Het is verstandig na te denken over de gevaren die op de
+ loer liggen bij het draaien van een anonieme FTP server. Dat
+ geldt in het bijzonder voor het laten uploaden ven bestanden.
+ Het is dan goed mogelijk dat een FTP site een forum wordt om
+ commerciële software zonder licenties uit te wisselen of
+ erger. Als anonieme uploads toch nodig zijn, dan horen de
+ rechten op die bestanden zo te staan dat ze niet door andere
+ anonieme gebruikers gelezen kunnen worden tot er door een
+ beheerder naar gekeken is.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network-samba">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Murray</firstname>
+ <surname>Stokely</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>Bestands- en printdiensten voor &microsoft.windows;
+ cliënten (Samba)</title>
+
+ <indexterm><primary>Samba server</primary></indexterm>
+
+ <indexterm><primary>Microsoft Windows</primary></indexterm>
+
+ <indexterm>
+ <primary>bestandsserver</primary>
+
+ <secondary>Windows-cliënten</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>printserver</primary>
+
+ <secondary>Windows-cliënten</secondary>
+ </indexterm>
+
+ <sect2>
+ <title>Overzicht</title>
+
+ <para><application>Samba</application> is een populair open
+ source softwarepakket dat bestands- en printdiensten voor
+ &microsoft.windows; cliënten biedt. Die cliënten
+ kunnen dan ruimte op een &os; bestandssysteem gebruiken alsof
+ het een lokale schijf is en &os; printers gebruiken alsof het
+ lokale printers zijn.</para>
+
+ <para><application>Samba</application> softwarepakketten horen
+ op de &os; installatiemedia te staan. Als
+ <application>Samba</application> bij de basisinstallatie niet
+ mee is geïnstalleerd, dan kan dat alsnog via de <filename
+ role="package">net/samba34</filename> port of met het
+ pakket.</para>
+
+<!-- mention LDAP, Active Directory, WinBIND, ACL, Quotas, PAM, .. -->
+ </sect2>
+
+ <sect2>
+ <title>Instellen</title>
+
+ <para>Een standaardbestand met instellingen voor
+ <application>Samba</application> wordt geïnstalleerd als
+ <filename>/usr/local/share/examples/samba34/smb.conf.default</filename>.
+ Dit bestand dient gekopieerd te worden naar
+ <filename>/usr/local/etc/smb.conf</filename> en voordat
+ <application>Samba</application> gebruikt kan worden, moeten er
+ aanpassingen aan worden gemaakt.</para>
+
+ <para><filename>smb.conf</filename> bevat de instellingen voor
+ <application>Samba</application>, zoals die voor de printers en
+ de <quote>gedeelde bestandssystemen</quote> die gedeeld worden
+ met &windows; cliënten. Het pakket
+ <application>Samba</application> bevat een webgebaseerde
+ beheermodule die <application>swat</application> heet, waarmee
+ <filename>smb.conf</filename> op een eenvoudige manier ingesteld
+ kan worden.</para>
+
+ <sect3>
+ <title>De Samba webbeheermodule gebruiken (SWAT)</title>
+
+ <para>De Samba Webbeheermodule (SWAT) draait als een daemon
+ vanuit <application>inetd</application>. Daarom dient voor de
+ volgende regel uit <filename>/etc/inetd.conf</filename> het
+ commentaarkarakter verwijderd te worden voordat
+ <application>swat</application> gebruikt kan worden om
+ <application>Samba</application> in te stellen:</para>
+
+ <programlisting>swat stream tcp nowait/400 root /usr/local/sbin/swat swat</programlisting>
+
+ <para>Zoals is uitgelegd in <xref
+ linkend="network-inetd-reread"/>, moet de configuratie van
+ <application>inetd</application> worden herladen nadat dit
+ instellingenbestand is gewijzigd.</para>
+
+ <para>Als <application>swat</application> is ingeschakeld in
+ <filename>inetd.conf</filename>, kan de module gebruikt worden
+ door met een browser een verbinding te maken met <ulink
+ url="http://localhost:901"></ulink>. Er dient aangemeld te
+ worden met het <username>root</username> account van het
+ systeem.</para>
+
+<!-- XXX screenshots go here, loader is creating them -->
+
+ <para>Na succesvol aanmelden op de hoofdpagina voor de
+ <application>Samba</application> instellingen, is het mogelijk
+ de systeemdocumentatie te bekijken of te starten door op het
+ tabblad <guimenu>Globals</guimenu> te klikken. Het onderdeel
+ <guimenu>Globals</guimenu> correspondeert met de sectie
+ <literal>[global]</literal> in
+ <filename>/usr/local/etc/smb.conf</filename>.</para>
+ </sect3>
+
+ <sect3>
+ <title>Systeembrede instellingen</title>
+
+ <para>Of <application>Samba</application> nu wordt ingesteld
+ door <filename>/usr/local/etc/smb.conf</filename> direct te
+ bewerken of met <application>swat</application>, de eerste
+ instellingen die gemaakt moeten worden zijn de volgende:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>workgroup</literal></term>
+
+ <listitem>
+ <para>NT Domeinnaam of Werkgroepnaam voor de computers die
+ verbinding gaan maken met de server.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>netbiosnaam</literal></term>
+
+ <listitem>
+ <indexterm><primary>NetBIOS</primary></indexterm>
+
+ <para>Hiermee wordt de NetBIOS naam waaronder de
+ <application>Samba</application> server bekend zal zijn
+ ingesteld. Standaard is de naam het eerste gedeelte van
+ de DNS-naam van een host.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>server string</literal></term>
+
+ <listitem>
+ <para>Hiermee wordt de string ingesteld die te zien is als
+ het commando <command>net view</command> en een aantal
+ andere commando's die gebruik maken van de
+ beschrijvende tekst voor de server gebruikt worden.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect3>
+
+ <sect3>
+ <title>Beveiligingsinstellingen</title>
+
+ <para>Twee van de belangrijkste instellingen in
+ <filename>/usr/local/etc/smb.conf</filename> zijn het gekozen
+ beveiligingsmodel en het wachtwoord voor
+ cliëntgebruikers. Deze worden met de volgende
+ instellingen gemaakt:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>security</literal></term>
+
+ <listitem>
+ <para>De twee meest gebruikte mogelijkheden hier zijn
+ <literal>security = share</literal> en
+ <literal>security = user</literal>. Als de
+ cliënten gebruikersnamen hebben die overeenkomen
+ met hun gebruikersnaam op de &os; machine, dan is het
+ verstandig om te kiezen voor beveiliging op
+ gebruikersniveau. Dit is het standaard
+ beveiligingsbeleid en kent als voorwaarde dat gebruikers
+ zich eerst moeten aanmelden voordat ze toegang krijgen
+ tot gedeelde bronnen.</para>
+
+ <para>Bij beveiliging op shareniveau hoeft een cliënt
+ niet met een geldige gebruikersnaam en wachtwoord aan te
+ melden op de server voor het mogelijk is om een
+ verbinding te proberen te krijgen met een gedeelde bron.
+ Dit was het standaardbeveiligingsmodel voor oudere
+ versies van <application>Samba</application>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>passdb backend</literal></term>
+
+ <listitem>
+ <indexterm><primary>NIS+</primary></indexterm>
+
+ <indexterm><primary>LDAP</primary></indexterm>
+
+ <indexterm><primary>SQL database</primary></indexterm>
+
+ <para><application>Samba</application> kent aan de
+ achterkant verschillende authenticatiemodellen.
+ Cliënten kunnen authenticeren met LDAP, NIS+, een
+ SQL-database of een aangepast wachtwoordbestand. De
+ standaard authenticatiemethode is
+ <literal>smbpasswd</literal>. Meer wordt hier niet
+ behandeld.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Als aangenomen wordt dat de standaard achterkant
+ <literal>smbpasswd</literal> wordt gebruikt, dan moet
+ <filename>/usr/local/etc/samba/smbpasswd</filename> gemaakt
+ worden om <application>Samba</application> in staat te stellen
+ cliënten te authenticeren. Als het gewenst is om uw
+ &unix; gebruikersaccounts toegang te geven vanaf &windows;
+ cliënten, gebruik dan het volgende commando:</para>
+
+ <screen>&prompt.root; <userinput>smbpasswd -a gebruikersnaam</userinput></screen>
+
+ <note>
+ <para>De aanbevolen backend is nu <literal>tdbsam</literal>,
+ en het volgende command moet gebruikt worden om
+ gebruikersaccounts toe te voegen:</para>
+
+ <screen>&prompt.root; <userinput><command>pdbedit <option>-a</option> <option>-u</option> <replaceable>gebruikersnaam</replaceable></command></userinput></screen>
+ </note>
+
+ <para>In de <ulink
+ url="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection">Official
+ Samba HOWTO</ulink> staat meer informatie over instelopties.
+ Met de hier gegeven basisuitleg moet het mogelijk zijn
+ <application>Samba</application> draaiende te krijgen.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title><application>Samba</application> starten</title>
+
+ <para>De port <filename role="package">net/samba34</filename> voegt
+ een nieuw opstartscript toe, dat gebruikt kan worden om
+ <application>Samba</application> te beheren. Om dit script te
+ activeren, zodat het bijvoorbeeld gebruikt kan worden om
+ <application>Samba</application> te starten, stoppen, of te
+ herstarten, dient de volgende regel aan
+ <filename>/etc/rc.conf</filename> toegevoegd te worden:</para>
+
+ <programlisting>samba_enable="YES"</programlisting>
+
+ <para>Of, voor fijnkorrelig beheer:</para>
+
+ <programlisting>nmbd_enable="YES"</programlisting>
+
+ <programlisting>smbd_enable="YES"</programlisting>
+
+ <note>
+ <para>Dit stelt <application>Samba</application> ook in om
+ automatisch tijdens het opstarten te starten.</para>
+ </note>
+
+ <para>Vervolgens is het mogelijk om
+ <application>Samba</application> op elk moment te starten door
+ dit te typen:</para>
+
+ <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba start</userinput>
+Starting SAMBA: removing stale tdbs :
+Starting nmbd.
+Starting smbd.</screen>
+
+ <para>Refereer aan <xref linkend="configtuning-rcd"/> voor meer
+ informatie over het gebruikt van rc-scripts.</para>
+
+ <para><application>Samba</application> bestaat feitelijk uit drie
+ afzonderlijke daemons. Het script
+ <filename>samba</filename> start de daemons
+ <application>nmbd</application> en
+ <application>smbd</application>. Als de winbind
+ naamresolutiediensten in <filename>smb.conf</filename> zijn
+ ingeschakeld, dan start ook de daemon
+ <application>winbindd</application>.</para>
+
+ <para><application>Samba</application> kan op ieder moment gestopt
+ worden met:</para>
+
+ <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba stop</userinput></screen>
+
+ <para><application>Samba</application> is een complexe
+ softwaresuite met functionaliteit waarmee verregaande integratie
+ met &microsoft.windows; netwerken mogelijk wordt. Informatie
+ die verder gaat dan de basisinstallatie staat op
+ <ulink url="http://www.samba.org"></ulink>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network-ntp">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Hukins</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>Tijd synchroniseren met NTP</title>
+
+ <indexterm><primary>NTP</primary></indexterm>
+
+ <sect2>
+ <title>Overzicht</title>
+
+ <para>Na verloop van tijd gaat de tijd van een computer meestal
+ uit de pas lopen. Het Netwerk Tijd Protocol (NTP) kan ervoor
+ zorgen dat de tijd accuraat blijft.</para>
+
+ <para>Veel diensten op Internet zijn afhankelijk, of hebben veel
+ voordeel, van het betrouwbaar zijn van de tijd. Zo ontvangt een
+ webserver bijvoorbeeld veel verzoeken om een bestand te sturen
+ als dat gewijzigd is sinds een bepaald moment. In een
+ LAN-omgeving is het van groot belang dat computers die bestanden
+ delen van eenzelfde server gesynchroniseerde tijd hebben zodat
+ de tijdstempels consistent blijven. Diensten zoals &man.cron.8;
+ zijn ook afhankelijk van een betrouwbare systeemtijd om
+ commando's op het ingestelde moment uit te voeren.</para>
+
+ <indexterm>
+ <primary>NTP</primary>
+
+ <secondary>ntpd</secondary>
+ </indexterm>
+
+ <para>Bij &os; zit de &man.ntpd.8; <acronym role="Network Time
+ Protocol">NTP</acronym> server die gebruikt kan worden om bij
+ andere <acronym
+ role="Network Time Protocol">NTP</acronym> servers de tijd op
+ te vragen om de eigen klok gelijk te zetten of om de juiste tijd
+ te verstrekken aan andere apparaten.</para>
+ </sect2>
+
+ <sect2>
+ <title>Passende NTP-servers kiezen</title>
+
+ <indexterm>
+ <primary>NTP</primary>
+
+ <secondary>servers kiezen</secondary>
+ </indexterm>
+
+ <para>Om de tijd te synchroniseren moeten er één of
+ meer <acronym role="Network Time Protocol">NTP</acronym>-servers
+ beschikbaar zijn. Een lokale systeembeheerder of een ISP heeft
+ wellicht een NTP-server voor dit doel opgezet. Het is
+ verstandig om documentatie te raadplegen en te bekijken of dat
+ het geval is. Er is een <ulink
+ url="http://support.ntp.org/bin/view/Servers/WebHome">online lijst
+ van publiek toegankelijke NTP-servers</ulink> waarop een
+ NTP-server gezocht kan worden die in geografische zin dichtbij
+ een te synchroniseren computer ligt. Het is belangrijk te
+ voldoen aan het beleid voor de betreffende server en toestemming
+ te vragen als dat in de voorwaarden staat.</para>
+
+ <para>Het is verstandig meerdere, niet van elkaar afhankelijke,
+ NTP-servers te kiezen voor het geval een van de servers niet
+ langer betrouwbaar is of niet bereikbaar is. &man.ntpd.8;
+ gebruikt de antwoorden die van andere servers ontvangen worden
+ op intelligente wijze: betrouwbare servers krijgen voorrang
+ boven onbetrouwbare servers.</para>
+ </sect2>
+
+ <sect2>
+ <title>Machine instellen</title>
+
+ <indexterm>
+ <primary>NTP</primary>
+
+ <secondary>instellen</secondary>
+ </indexterm>
+
+ <sect3>
+ <title>Basisinstellingen</title>
+
+ <indexterm><primary>ntpdate</primary></indexterm>
+
+ <para>Als het alleen de bedoeling is de tijd te synchroniseren
+ bij het opstarten van een machine, dan kan &man.ntpdate.8;
+ gebruikt worden. Dit kan van toepassing zijn op desktops die
+ regelmatig herstart worden en niet echt regelmatig
+ gesynchroniseerd hoeven te worden. Op sommige machines hoort
+ echter &man.ntpd.8; te draaien.</para>
+
+ <para>Het gebruik van &man.ntpdate.8; bij het opstarten is ook
+ een goed idee voor machines waarop &man.ntpd.8; draait. De
+ &man.ntpd.8; wijzigt de tijd geleidelijk, terwijl
+ &man.ntpdate.8; gewoon de tijd instelt, hoe groot het verschil
+ tussen de bestaande tijd van een machine en de correcte tijd
+ ook is.</para>
+
+ <para>Om &man.ntpdate.8; tijdens het opstarten in te schakelen
+ kan <literal>ntpdate_enable="YES"</literal> aan
+ <filename>/etc/rc.conf</filename> worden toegevoegd. Alle
+ voor de synchronisatie te gebruiken servers moeten dan, samen
+ met eventuele opties voor &man.ntpdate.8;, in
+ <varname>ntpdate_flags</varname> aangegeven worden.</para>
+ </sect3>
+
+ <sect3>
+ <title>Algemene instellingen</title>
+
+ <indexterm>
+ <primary>NTP</primary>
+
+ <secondary>ntp.conf</secondary>
+ </indexterm>
+
+ <para>NTP wordt ingesteld met het bestand
+ <filename>/etc/ntp.conf</filename> in het formaat dat
+ beschreven staat in &man.ntp.conf.5;. Hieronder volgt een
+ eenvoudig voorbeeld:</para>
+
+ <programlisting>server ntplocal.example.com prefer
+server timeserver.example.org
+server ntp2a.example.net
+
+driftfile /var/db/ntp.drift</programlisting>
+
+ <para>De optie <literal>server</literal> geeft aan welke servers
+ er gebruikt moeten worden, met op elke regel een server. Als
+ de server wordt ingesteld met het argument
+ <literal>prefer</literal>, zoals bij <hostid
+ role="fqdn">ntplocal.example.com</hostid>, dan krijgt die
+ server de voorkeur boven de andere. Een antwoord van een
+ voorkeursserver wordt genegeerd als dat significant afwijkt
+ van de antwoorden van de andere servers. In andere gevallen
+ wordt het gebruikt zonder rekening te houden met de andere
+ antwoorden. Het argument <literal>prefer</literal> wordt
+ meestal gebruikt voor NTP-servers waarvan bekend is dat ze erg
+ betrouwbaar zijn, zoals die met speciale
+ tijdbewakingshardware.</para>
+
+ <para>De optie <literal>driftfile</literal> geeft aan welk
+ bestand gebruikt wordt om de offset van de klokfrequentie van
+ het systeem op te slaan. &man.ntpd.8; gebruikt die om
+ automatisch te compenseren voor het natuurlijke afwijken van
+ de tijd, zodat er zelfs bij gebrek aan externe bronnen een
+ redelijke accurate tijdsinstelling mogelijk is.</para>
+
+ <para>De optie <literal>driftfile</literal> geeft aan welk
+ bestand gebruikt wordt om informatie over eerdere antwoorden
+ van NTP-servers die gebruikt worden op te slaan. Dit bestand
+ bevat interne informatie voor NTP. Het hoort niet door andere
+ processen gewijzigd te worden.</para>
+ </sect3>
+
+ <sect3>
+ <title>Toegang tot een server instellen</title>
+
+ <para>Een NTP-server is standaard toegankelijk voor alle hosts
+ op een netwerk. De optie <literal>restrict</literal> in
+ <filename>/etc/ntp.conf</filename> maakt het mogelijk om aan
+ te geven welke machines de dienst mogen benaderen.</para>
+
+ <para>Voor het blokkeren van toegang voor alle andere machines
+ kan de volgende regel aan <filename>/etc/ntp.conf</filename>
+ toegevoegd worden:</para>
+
+ <programlisting>restrict default ignore</programlisting>
+
+ <note>
+ <para>Dit zal ook toegang van uw server naar alle servers die
+ vermeld staan in uw lokale configuratie verhinderen. Als u
+ uw NTP-server moet synchroniseren met een externe
+ NTP-server, dient u deze specifieke server toe te staan.
+ Lees de handleiding voor &man.ntp.conf.5; voor meer
+ informatie.</para>
+ </note>
+
+ <para>Om alleen machines op bijvoorbeeld het lokale netwerk toe
+ te staan hun tijd te synchroniseren met een server, maar ze
+ tegelijkertijd niet toe te staan om de server te draaien of de
+ server als referentie voor synchronisatie te gebruiken, kan de
+ volgende regel toegevoegd worden:</para>
+
+ <programlisting>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap</programlisting>
+
+ <para>Hierboven is <hostid role="ipaddr">192.168.1.0</hostid>
+ een IP-adres op een LAN en <hostid
+ role="netmask">255.255.255.0</hostid> is het bijbehorende
+ netwerkmasker.</para>
+
+ <para><filename>/etc/ntp.conf</filename> mag meerdere regels met
+ <literal>restrict</literal> bevatten. Meer details staan in
+ het onderdeel <literal>Access Control Support</literal> van
+ &man.ntp.conf.5;.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>De NTP-server draaien</title>
+
+ <para>De NTP-server kan bij het opstarten gestart worden door de
+ regel <literal>ntpd_enable="YES"</literal> aan
+ <filename>/etc/rc.conf</filename> toe te voegen. Om extra
+ opties aan &man.ntpd.8; mee te geven kan de parameter
+ <varname>ntpd_flags</varname> in
+ <filename>/etc/rc.conf</filename> gebruikt worden.</para>
+
+ <para>Om de server zonder een herstart van de machine te starten
+ kan <command>ntpd</command> uitgevoerd worden, met toevoeging
+ van de parameters uit <varname>ntpd_flags</varname> in
+ <filename>/etc/rc.conf</filename>. Bijvoorbeeld:</para>
+
+ <screen>&prompt.root; <userinput>ntpd -p /var/run/ntpd.pid</userinput></screen>
+ </sect2>
+
+ <sect2>
+ <title><application>ntpd</application> gebruiken met een tijdelijke
+ Internetverbinding</title>
+
+ <para>&man.ntpd.8; heeft geen permanente verbinding met een
+ netwerk nodig om goed te werken. Maar als er gebruik gemaakt
+ wordt van een inbelverbinding, is het wellicht verstandig om
+ ervoor te zorgen dat uitgaande NTP-verzoeken geen uitgaande
+ verbinding kunnen starten. Als er gebruik gemaakt wordt van
+ gebruikers-PPP, kunnen er <literal>filter</literal> commando's
+ ingesteld worden in <filename>/etc/ppp/ppp.conf</filename>.
+ Bijvoorbeeld:</para>
+
+ <programlisting>set filter dial 0 deny udp src eq 123
+# NTP-verkeer zorgt niet voor uitbellen
+set filter dial 1 permit 0 0
+set filter alive 0 deny udp src eq 123
+# Inkomend NTP-verkeer houdt de verbinding niet open
+set filter alive 1 deny udp dst eq 123
+# Uitgaand NTP-verkeer houdt de verbinding niet open
+set filter alive 2 permit 0/0 0/0</programlisting>
+
+ <para>Meer details staan in de sectie <literal>PACKET
+ FILTERING</literal> in &man.ppp.8; en in de voorbeelden in
+ <filename>/usr/share/examples/ppp/</filename>.</para>
+
+ <note>
+ <para>Sommige Internetproviders blokkeren lage poorten, waardoor
+ NTP niet kan werken omdat er nooit een antwoord ontvangen kan
+ worden door een machine.</para>
+ </note>
+ </sect2>
+
+ <sect2>
+ <title>Meer informatie</title>
+
+ <para>HTML-documentatie voor de NTP-server staat in
+ <filename>/usr/share/doc/ntp/</filename>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="network-syslogd">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Bijgedragen door </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>Hosts op afstand loggen met
+ <command>syslogd</command></title>
+
+ <para>Het omgaan met systeemlogs is een cruciaal aspect van zowel
+ beveiligings- als systeembeheer. Het in de gaten houden van
+ logbestanden van meerdere hosts kan nogal onhandelbaar worden als
+ deze hosts over (middel)grote netwerken zijn verspreid, of wanneer
+ ze deel zijn van verschillende soorten netwerken. In deze
+ gevallen kan het op afstand loggen het gehele proces een stuk
+ aangenamer maken.</para>
+
+ <para>Het centraal loggen naar een specifieke loghost kan wat van de
+ administratieve last van het beheren van logbestanden wegnemen.
+ Het aggregeren, samenvoegen, en roteren van logbestanden kan op
+ één enkele plaats worden ingesteld, door gebruik te
+ maken van de eigen gereedschappen van &os;, zoals &man.syslogd.8;
+ en &man.newsyslog.8;. In de volgende voorbeeldconfiguratie zal
+ host <hostid>A</hostid>, genaamd <hostid
+ role="fqdn">logserv.example.com</hostid>, loginformatie voor het
+ plaatselijke netwerk verzamelen. Host <hostid>B</hostid>, genaamd
+ <hostid role="fqdn">logclient.example.com</hostid>, zal
+ loginformatie aan het serversysteem doorgeven. In echte
+ configuraties hebben beide hosts degelijke voor- en terugwaartse
+ <acronym>DNS</acronym> of regels in
+ <filename>/etc/hosts</filename> nodig. Anders worden de gegevens
+ geweigerd door de server.</para>
+
+ <sect2>
+ <title>Configuratie van de logserver</title>
+
+ <para>Logservers zijn machines die zijn geconfigureerd om
+ loginformatie van hosts op afstand te accepteren. In de meeste
+ gevallen is dit om de configuratie te vergemakkelijken, in
+ andere gevallen kan het gewoon een beheersbeslissing zijn.
+ Ongeacht de reden zijn er enkele eisen voordat er verder wordt
+ gegaan.</para>
+
+ <para>Een juist geconfigureerde logserver voldoet aan de volgende
+ minimale eisen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>De regels van de firewall staan toe dat
+ <acronym>UDP</acronym> wordt doorgegeven op poort 514 van
+ zowel de cliënt als de server;</para>
+ </listitem>
+
+ <listitem>
+ <para>syslogd is ingesteld om berichten op afstand van
+ cliëntmachines te accepteren;</para>
+ </listitem>
+
+ <listitem>
+ <para>De syslogd-server en alle cliëntmachines moeten
+ geldige regels hebben voor zowel voorwaartse als
+ terugwaartse <acronym>DNS</acronym>, of correct zijn
+ geconfigureerd in <filename>/etc/hosts</filename>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Om de logserver te configureren, moet de cliënt vermeld
+ zijn in <filename>/etc/syslog.conf</filename>, en moet de
+ logfaciliteit zijn gespecificeerd:</para>
+
+ <programlisting>+logclient.example.com
+*.* /var/log/logclient.log</programlisting>
+
+ <note>
+ <para>Meer informatie over de verschillende ondersteunde en
+ beschikbare <emphasis>faciliteiten</emphasis> kan gevonden
+ worden in de handleidingpagina &man.syslog.conf.5;.</para>
+ </note>
+
+ <para>Eenmaal toegevoegd worden alle
+ <literal>faciliteits</literal>-berichten gelogd naar het eerder
+ gespecificeerde bestand,
+ <filename>/var/log/logclient.log</filename>.</para>
+
+ <para>De servermachine moet ook het volgende in
+ <filename>/etc/rc.conf</filename> hebben staan:</para>
+
+ <programlisting>syslogd_enable="YES"
+syslogd_flags="-a logclient.example.com -v -v"</programlisting>
+
+ <para>De eerste optie zet de daemon <command>syslogd</command> aan
+ tijdens het opstarten, en de tweede regel staat toe dat gegevens
+ van de cliënt op deze server worden geaccepteerd. Het
+ laatste gedeelte, dat <option>-v -v</option> gebruikt, verhoogt de
+ verbositeit van gelogde berichten. Dit is extreem handig voor
+ het optimaal instellen van faciliteiten aangezien beheerders
+ kunnen zien welk soort berichten onder welke faciliteit worden
+ gelogd.</para>
+
+ <para>Er kunnen meerdere opties <option>-a</option> worden
+ gespecificeerd om logging vanuit meerdere cliënten toe te
+ staan. <acronym>IP</acronym>-adressen en hele netblokken mogen
+ ook worden gespecificeerd, bekijk de hulppagina &man.syslog.3;
+ voor een volledige lijst van mogelijke opties.</para>
+
+ <para>Als laatste dient het logbestand gecreëerd te worden.
+ De gebruikte manier maakt niet uit, maar &man.touch.1; werkt
+ prima in dit soort situaties:</para>
+
+ <screen>&prompt.root; <userinput>touch <filename>/var/log/logclient.log</filename></userinput></screen>
+
+ <para>Nu dient het <command>syslogd</command>-daemon herstart en
+ geverifieerd worden:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
+&prompt.root; <userinput>pgrep syslog</userinput></screen>
+
+ <para>Als er een <acronym>PID</acronym> wordt teruggegeven, dan is
+ de server succesvol herstart, en kan er begonnen worden met de
+ configuratie van de cliënt. Raadpleeg de log
+ <filename>/var/log/messages</filename> voor uitvoer als de
+ server niet is herstart.</para>
+ </sect2>
+
+ <sect2>
+ <title>Configuratie van de logcliënt</title>
+
+ <para>Een logcliënt is een machine die loginformatie naar een
+ logserver verstuurt en daarnaast lokale kopieën
+ bewaart.</para>
+
+ <para>Net als logservers moeten logcliënten ook aan enkele
+ minimumeisen voldoen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>&man.syslogd.8; moet zijn ingesteld om berichten van
+ bepaalde soorten naar een logserver te sturen, die ze moet
+ accepteren;</para>
+ </listitem>
+
+ <listitem>
+ <para>De firewall moet <acronym>UDP</acronym>-pakketten
+ doorlaten op poort 514;</para>
+ </listitem>
+
+ <listitem>
+ <para>Zowel voorwaartse als terugwaartse
+ <acronym>DNS</acronym> moeten geconfigureerd zijn of juiste
+ regels in <filename>/etc/hosts</filename> hebben.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>De configuratie van cliënten is wat soepeler dan die
+ van servers. De cliëntmachine moet de volgende regels in
+ <filename>/etc/rc.conf</filename> hebben:</para>
+
+ <programlisting>syslogd_enable="YES"
+syslogd_flags="-s -v -v"</programlisting>
+
+ <para>Net als eerder zullen deze regels de daemon
+ <command>syslogd</command> tijdens het opstarten aanzetten, en
+ de verbositeit van gelogde berichten verhogen. De optie
+ <option>-s</option> voorkomt dat logs van deze cliënt
+ vanuit andere hosts worden geaccepteerd.</para>
+
+ <para>Faciliteiten beschrijven het systeemgedeelte waarvoor een
+ bericht is gegenereerd. <acronym>ftp</acronym> en
+ <acronym>ipfw</acronym> bijvoorbeeld zijn beide faciliteiten.
+ Wanneer er logberichten worden gegenereerd voor deze twee
+ diensten, zullen ze normaalgesproken deze twee gereedschappen in
+ elk logbericht opnemen. Faciliteiten worden vergezeld van een
+ prioriteit of niveau, welke wordt gebruikt om aan te geven hoe
+ belangrijk een logbericht is. De meest voorkomende zullen
+ <literal>warning</literal> en <literal>info</literal> zijn.
+ Bekijk de handleidingpagina &man.syslog.3; voor een volledige
+ lijst van beschikbare faciliteiten en prioriteiten.</para>
+
+ <para>De logserver moet in <filename>/etc/syslog.conf</filename>
+ van de cliënt zijn gedefinieerd. In dit geval wordt het
+ symbool <literal>@</literal> gebruikt om loggegevens naar een
+ server op afstand te sturen en zou er ongeveer als de volgende
+ regel uit moeten zien:</para>
+
+ <programlisting>*.* @logserv.example.com</programlisting>
+
+ <para>Eenmaal toegevoegd moet <command>syslogd</command> worden
+ herstart zodat de veranderingen effect hebben:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
+
+ <para>Om te testen of logberichten over het netwerk worden
+ verzonden, wordt &man.logger.1; op de cliënt gebruikt om
+ een bericht naar <command>syslogd</command> te sturen:</para>
+
+ <screen>&prompt.root; <userinput>logger "<replaceable>Testbericht van logclient</replaceable>"</userinput></screen>
+
+ <para>Dit bericht dient nu zowel in
+ <filename>/var/log/messages</filename> op de cliënt als
+ <filename>/var/log/logclient.log</filename> op de logserver te
+ staan.</para>
+ </sect2>
+
+ <sect2>
+ <title>Logservers debuggen</title>
+
+ <para>In bepaalde gevallen kan het nodig zijn om te debuggen als
+ berichten niet door de logserver worden ontvangen. Er zijn
+ verschillende redenen waarom dit kan gebeuren; de twee meest
+ voorkomende zijn echter voorvallen met de netwerkverbinding en
+ <acronym>DNS</acronym>. Om deze gevallen te testen, dient te
+ worden nagegaan dat beide hosts elkaar kunnen bereiken door
+ de hostnaam in <filename>/etc/rc.conf</filename> te gebruiken.
+ Als dit juist lijkt te werken, dient de optie
+ <literal>syslogd_flags</literal> in
+ <filename>/etc/rc.conf</filename> te worden veranderd.</para>
+
+ <para>In het volgende voorbeeld is
+ <filename>/var/log/logclient.log</filename> leeg, en noemt
+ <filename>/var/log/messages</filename> geen reden waarom het
+ mislukt. Verander de optie <literal>syslogd_flags</literal>
+ zoals in het volgende voorbeeld en herstart om de debuguitvoer
+ te verhogen:</para>
+
+ <programlisting>syslogd_flags="-d -a logclien.example.com -v -v"</programlisting>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
+
+ <para>Debuggegevens zoals de volgende zullen meteen na de herstart
+ over het scherm vliegen:</para>
+
+ <screen>logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
+syslogd: restarted
+logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
+Logging to FILE /var/log/messages
+syslogd: kernel boot file is /boot/kernel/kernel
+cvthname(192.168.1.10)
+validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
+rejected in rule 0 due to name mismatch.</screen>
+
+ <para>Het is duidelijk dat de berichten worden geweigerd wegens
+ een niet-overeenkomende naam. Na de configuratie grondig te
+ hebben herzien, lijkt het of een typefout in de volgende regel
+ in <filename>/etc/rc.conf</filename> een probleem heeft:</para>
+
+ <programlisting>syslogd_flags="-d -a logclien.example.com -v -v"</programlisting>
+
+ <para>De regel dient <literal>logclient</literal>, niet
+ <literal>logclien</literal> te bevatten. Nadat de juiste
+ wijzigingen zijn gemaakt, wordt er herstart met de verwachte
+ resultaten:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
+logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
+syslogd: restarted
+logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
+syslogd: kernel boot file is /boot/kernel/kernel
+logmsg: pri 166, flags 17, from logserv.example.com,
+msg Dec 10 20:55:02 &lt;syslog.err&gt; logserv.example.com syslogd: exiting on signal 2
+cvthname(192.168.1.10)
+validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
+accepted in rule 0.
+logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2
+Logging to FILE /var/log/logclient.log
+Logging to FILE /var/log/messages</screen>
+
+ <para>Nu worden de berichten juist ontvangen en in het correcte
+ bestand geplaatst.</para>
+ </sect2>
+
+ <sect2>
+ <title>Beveiligingsoverwegingen</title>
+
+ <para>Zoals bij alle netwerkdiensten, dienen beveiligingseisen in
+ acht te worden genomen voordat deze configuratie wordt
+ geïmplementeerd. Soms kunnen logbestanden gevoelige
+ gegevens bevatten over diensten die aanstaan op de lokale host,
+ gebruikersaccounts, en configuratiegegevens. Netwerkgegevens
+ die van de cliënt naar de server worden verzonden worden
+ niet versleuteld noch met een wachtwoord beveiligd. Als
+ versleuteling nodig is, kan <filename
+ role="package">security/stunnel</filename> worden gebruikt,
+ wat gegevens over een versleutelde tunnel verstuurt.</para>
+
+ <para>Aan lokale beveiliging moet ook gedacht worden.
+ Logbestanden worden niet versleuteld tijdens gebruik of na
+ logrotatie. Lokale gebruikers kunnen deze bestanden benaderen
+ om aanvullende inzichten over de systeemconfiguratie op te doen.
+ In deze gevallen is het van kritiek belang om de juiste rechten
+ op deze bestanden in te stellen. Het gereedschap
+ &man.syslogd.8; ondersteunt het instellen van rechten op nieuw
+ aangemaakte en geroteerde logbestanden. Het instellen van
+ logbestanden op modus <literal>600</literal> dient al het
+ ongewenste spieken door lokale gebruikers te verhinderen.</para>
+ </sect2>
+ </sect1>
+</chapter>