<!--
     The FreeBSD Documentation Project
     The FreeBSD French Documentation Project

     $FreeBSD$
     Original revision: 1.54
-->

<chapter id="network-servers">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Murray</firstname>
	<surname>Stokely</surname>
	<contrib>R&eacute;organis&eacute; par </contrib>
      </author>
    </authorgroup>
    <!-- 23 Juillet 2004 -->
  </chapterinfo>

  <title>Serveurs r&eacute;seau</title>
  &trans.a.fonvieille;

  <sect1 id="network-servers-synopsis">
    <title>Synopsis</title>

    <para>Ce chapitre abordera certains des services r&eacute;seaux
      les plus fr&eacute;quemment utilis&eacute;s sur les
      syst&egrave;mes &unix;.  Nous verrons comment installer,
      configurer, tester et maintenir plusieurs types
      diff&eacute;rents de services r&eacute;seaux.  De plus, des
      exemples de fichier de configuration ont &eacute;t&eacute;
      inclus tout au long de ce chapitre pour que vous puissiez en
      b&eacute;n&eacute;ficier.</para>

    <para>Apr&egrave;s la lecture de ce chapitre, vous
      conna&icirc;trez:</para>

    <itemizedlist>
      <listitem>
	<para>Comment g&eacute;rer le &ldquo;daemon&rdquo;
	  <application>inetd</application>.</para>
      </listitem>

      <listitem>
	<para>Comment configurer un syst&egrave;me de fichiers
	  r&eacute;seau.</para>
      </listitem>

      <listitem>
	<para>Comment mettre en place un serveur d'information sur le
	  r&eacute;seau pour partager les comptes utilisateurs.</para>
      </listitem>

      <listitem>
	<para>Comment configurer le param&eacute;trage r&eacute;seau
	  automatique en utilisant DHCP.</para>
      </listitem>

      <listitem>
	<para>Comment configurer un serveur de noms de domaine.</para>
      </listitem>

      <listitem>
	<para>Comment configurer le serveur HTTP
	  <application>Apache</application>.</para>
      </listitem>

      <listitem>
	<para>Comment configurer un serveur de transfert de fichier
	  (FTP).</para>
      </listitem>

      <listitem>
	<para>Comment configurer un serveur de fichiers et
	  d'impression pour des clients &windows; en utilisant
	  <application>Samba</application>.</para>
      </listitem>

      <listitem>
	<para>Comment synchroniser l'heure et la date, et mettre en
	  place en serveur de temps, avec le protocole NTP.</para>
      </listitem>
    </itemizedlist>

    <para>Avant de lire ce chapitre, vous devrez:</para>

    <itemizedlist>
      <listitem>
	<para>Comprendre les bases des proc&eacute;dures
	  <filename>/etc/rc</filename>.</para>
      </listitem>

      <listitem>
	<para>Etre familier avec la terminologie r&eacute;seau de
	  base.</para>
      </listitem>

      <listitem>
	<para>Savoir comment installer des applications tierce-partie
	  (<xref linkend="ports">).</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="network-inetd">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Chern</firstname>
	  <surname>Lee</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Le &ldquo;super-serveur&rdquo;
      <application>inetd</application></title>

    <sect2 id="network-inetd-overview">
      <title>G&eacute;n&eacute;ralit&eacute;s</title>

      <para>On fait souvent r&eacute;f&eacute;rence &agrave;
	&man.inetd.8; comme &eacute;tant le &ldquo;super-serveur
	Internet&rdquo; parce qu'il g&eacute;re les connexions pour
	plusieurs services.
	Quand une connexion est re&ccedil;ue par
	<application>inetd</application>, ce dernier d&eacute;termine
	&agrave; quel programme la connexion est
	destin&eacute;e, invoque le processus en question
	et lui d&eacute;l&egrave;gue la &ldquo;socket&rdquo; (le
	programme est invoqu&eacute; avec la &ldquo;socket&rdquo; service
	comme entr&eacute;e standard, sortie et descripteurs d'erreur).
	Ex&eacute;cuter une instance
	d'<application>inetd</application> r&eacute;duit la charge
	syst&egrave;me globale par rapport &agrave; l'ex&eacute;cution
	de chaque &ldquo;daemon&rdquo; individuellement en mode
	autonome.</para>

      <para><application>inetd</application> est utilis&eacute; pour
	invoquer d'autres &ldquo;daemon&rdquo;s, mais plusieurs
	protocoles triviaux sont g&eacute;r&eacute;s directement,
	comme <application>chargen</application>,
	<application>auth</application>, et
	<application>daytime</application>.</para>

      <para>Cette section abordera la configuration de base
	d'<application>inetd</application> &agrave; travers ses
	options en ligne de commande et son fichier de configuration
	<filename>/etc/inetd.conf</filename>.</para>
    </sect2>

    <sect2 id="network-inetd-settings">
      <title>Configuration</title>

      <para><application>inetd</application> est initialis&eacute; par
	l'interm&eacute;diaire du syst&egrave;me
	<filename>/etc/rc.conf</filename>.  L'option
	<literal>inetd_enable</literal> est positionn&eacute;e
	&agrave; la valeur <literal>NO</literal> par d&eacute;faut,
	mais est activ&eacute;e par
	<application>sysinstall</application> avec le profil de
	s&eacute;curit&eacute; mod&eacute;r&eacute;.  Placer
	<programlisting>inetd_enable="YES"</programlisting> ou
	<programlisting>inetd_enable="NO"</programlisting> dans
	<filename>/etc/rc.conf</filename> peut activer ou
	d&eacute;sactiver le d&eacute;marrage
	d'<application>inetd</application> &agrave; la mise en route
	du syst&egrave;me.</para>

      <para>De plus, diff&eacute;rentes options de ligne de commande
	peuvent &ecirc;tre pass&eacute;es &agrave;
	<application>inetd</application> par l'interm&eacute;diaire de
	l'option <literal>inetd_flags</literal>.</para>
    </sect2>

    <sect2 id="network-inetd-cmdline">
      <title>Options en ligne de commande</title>

      <para>Synopsis d'<application>inetd</application>:</para>

      <para><option>     inetd [-d] [-l] [-w] [-W] [-c maximum] [-C taux] [-a adresse | nom de machine]
           [-p fichier] [-R taux] [fichier de configuration]</option></para>

      <variablelist>
	<varlistentry>
	  <term>-d</term>

	  <listitem>
	    <para>Active le d&eacute;bogage.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>-l</term>

	  <listitem>
	    <para>Active le journal des connexions
	      r&eacute;ussies.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>-w</term>

	  <listitem>
	    <para>Active le &ldquo;TCP Wrapping&rdquo; pour les
	      services externes (actif par d&eacute;faut).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>-W</term>

	  <listitem>
	    <para>Active le &ldquo;TCP Wrapping&rdquo; pour les
	      services internes qui font partie
	      d'<application>inetd</application> (actif par
	      d&eacute;faut).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>-c maximum</term>

	  <listitem>
	    <para>Sp&eacute;cifie le nombre maximal par d&eacute;faut
	      d'invocations simultan&eacute;es pour chaque service; il
	      n'y a pas de limite par d&eacute;faut.  Cette option peut
	      &ecirc;tre surcharg&eacute;e pour chaque service &agrave;
	      l'aide du param&egrave;tre
	      <option>nb-max-enfants</option>.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>-C taux</term>

	  <listitem>
	    <para>Pr&eacute;cise le nombre maximal de fois qu'un
	      service peut &ecirc;tre invoqu&eacute; &agrave; partir
	      d'une unique adresse IP et cela sur une minute.  Ce
	      param&egrave;tre peut &ecirc;tre configur&eacute;
	      diff&eacute;remment pour chaque service avec le
	      param&egrave;tre
	      <option>nb-max-connexions-par-ip-par-minute</option>.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>-R taux</term>

	  <listitem>
	    <para>Pr&eacute;cise le nombre maximal de fois qu'un
	      service peut &ecirc;tre invoqu&eacute; par minute; la
	      valeur par d&eacute;faut est 256.  Un taux de 0 autorise
	      un nombre illimit&eacute; d'invocations.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>-a</term>

	  <listitem>
	    <para>Indique l'adresse IP sur laquelle le trafic sera
	      attendu.  Alternativement, un nom de machine peut
	      &ecirc;tre utilis&eacute;, dans ce cas l'adresse IPv4 ou
	      IPv6 correspondant &agrave; la machine sera
	      utilis&eacute;e.  G&eacute;n&eacute;ralement, un nom de
	      machine est pr&eacute;cis&eacute; quand
	      <application>inetd</application> est ex&eacute;cut&eacute;
	      &agrave; l'int&eacute;rieur d'un environnement
	      &man.jail.8;, dans quel cas le nom de machine correspond
	      &agrave; l'environnement &man.jail.8;.</para>

	    <para>Quand un nom de machine est utilis&eacute; et que
	      l'on doit &ecirc;tre &agrave; l'&eacute;coute sur une
	      adresse IPv4 et IPv6, une entr&eacute;e avec le
	      protocole adapt&eacute; pour chaque type d'adresse est
	      n&eacute;cessaire pour chaque service dans
	      <filename>/etc/inetd.conf</filename>.  Par exemple, un
	      service de type TCP n&eacute;cessitera deux
	      entr&eacute;es, une utilisant <literal>tcp4</literal>
	      pour le protocole et une autre utilisant
	      <literal>tcp6</literal>.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>-p</term>

	  <listitem>
	    <para>Sp&eacute;cifie un fichier diff&eacute;rent dans
	      lequel stocker l'indentifiant du processus.</para>
	  </listitem>
	</varlistentry>
      </variablelist>

      <para>Ces options peuvent &ecirc;tre pass&eacute;es &agrave;
	<application>inetd</application> en utilisant l'option
	<literal>inetd_flags</literal> de
	<filename>/etc/rc.conf</filename>.  Par d&eacute;faut,
	<literal>inetd_flags</literal> est positionn&eacute; &agrave;
	<literal>-wW</literal>, ce qui active le &ldquo;TCP
	wrapping&rdquo; pour les services internes et externes
	d'<application>inetd</application>.  Pour un utilisateur de
	base ces param&egrave;tres ne doivent
	g&eacute;n&eacute;ralement pas &ecirc;tre modifi&eacute;s ou
	m&ecirc;me ajout&eacute;s au fichier
	<filename>/etc/rc.conf</filename>.</para>

      <note>
	<para>Un service externe est un &ldquo;daemon&rdquo;
	  ind&eacute;pendant d'<application>inetd</application>, qui est
	  invoqu&eacute; quand une connexion lui &eacute;tant
	  destin&eacute;e est re&ccedil;ue.  D'autre part, un service
	  interne est un service qu'<application>inetd</application>
	  peut offrir directement.</para>
      </note>

    </sect2>

    <sect2 id="network-inetd-conf">
      <title><filename>inetd.conf</filename></title>

      <para>La configuration d'<application>inetd</application> se
	fait par l'interm&eacute;diaire du fichier
	<filename>/etc/inetd.conf</filename>.</para>

      <para>Quand le fichier <filename>/etc/inetd.conf</filename> est
	modifi&eacute;, <application>inetd</application> peut
	&ecirc;tre forc&eacute; de relire son fichier de configuration
	en envoyant un signal &ldquo;HangUP&rdquo; au processus
	<application>inetd</application> comme suit:</para>

      <example id="network-inetd-hangup">
	<title>Envoyer un signal &ldquo;HangUP&rdquo; &agrave;
	  <application>inetd</application></title>

	<screen>&prompt.root; <userinput>kill -HUP `cat /var/run/inetd.pid`</userinput></screen>
      </example>

      <para>Chaque ligne du fichier de configuration ne mentionne
	qu'un seul &ldquo;daemon&rdquo;.  Les commentaires dans le
	fichier sont pr&eacute;c&eacute;d&eacute;s par un
	&ldquo;#&rdquo;.  Le format du fichier
	<filename>/etc/inetd.conf</filename> est le suivant:</para>

      <programlisting>nom-du-service
type-de-socket
protocole
{wait|nowait}[/nb-max-enfants[/nb-connexions-max-par-minute]]
utilisateur[:groupe][/classe-session]
programme-serveur
arguments-du-programme-serveur</programlisting>

      <para>Un exemple d'entr&eacute;e pour le &ldquo;daemon&rdquo;
	<application>ftpd</application> utilisant l'IPv4:</para>

      <programlisting>ftp     stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l</programlisting>

      <variablelist>
	<varlistentry>
	  <term>nom-du-service</term>

	  <listitem>
	    <para>C'est le nom de service du &ldquo;daemon&rdquo; en
	      question.  Il doit correspondre &agrave; un des services
	      list&eacute;s dans le fichier
	      <filename>/etc/services</filename>.  Cela d&eacute;termine
	      quel port <application>inetd</application> doit
	      &eacute;couter.  Si un nouveau service est
	      cr&eacute;&eacute;, il doit &ecirc;tre ajout&eacute; en
	      premier lieu dans
	      <filename>/etc/services</filename>.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>type-de-socket</term>

	  <listitem>
	    <para>Soit <literal>stream</literal>, soit
	      <literal>dgram</literal>, soit <literal>raw</literal>, ou
	      <literal>seqpacket</literal>.  <literal>stream</literal>
	      doit &ecirc;tre utilis&eacute; pour les
	      &ldquo;daemon&rdquo;s TCP, alors que
	      <literal>dgram</literal> est utilis&eacute; pour les
	      &ldquo;daemon&rdquo;s utilisant le protocole UDP.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>protocole</term>

	  <listitem>
	    <para>Un des suivants:</para>

	    <informaltable frame="none" pgwide="1">
	      <tgroup cols="2">
		<thead>
		  <row>
		    <entry>Protocole</entry>
		    <entry>Explication</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>TCP IPv4 et v6</entry>
		  </row>
		  <row>
		    <entry>udp46</entry>
		    <entry>UDP IPv4 et v6</entry>
		  </row>
		</tbody>
	      </tgroup>
	    </informaltable>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>{wait|nowait}[/nb-max-enfants[/nb-max-connexions-par-ip-par-minute]]</term>

	  <listitem>
	    <para><option>wait|nowait</option> indique si le
	      &ldquo;daemon&rdquo; invoqu&eacute; par
	      <application>inetd</application> est capable ou non de
	      g&eacute;rer sa propre &ldquo;socket&rdquo;.  Les
	      &ldquo;socket&rdquo;s de type <option>dgram</option>
	      doivent utiliser l'option <option>wait</option>, alors
	      que les &ldquo;daemons &agrave; socket stream&rdquo;,
	      qui sont g&eacute;n&eacute;ralement
	      multi-thread&eacute;s, devraient utiliser
	      <option>nowait</option>.  L'option <option>wait</option>
	      a g&eacute;n&eacute;ralement pour cons&eacute;quence de
	      fournir plusieurs &ldquo;socket&rdquo;s &agrave; un
	      &ldquo;daemon&rdquo;, tandis que l'option
	      <option>nowait</option> invoquera un
	      &ldquo;daemon&rdquo; enfant pour chaque nouvelle
	      &ldquo;socket&rdquo;.</para>

	    <para>Le nombre maximal de &ldquo;daemon&rdquo;s
	      qu'<application>inetd</application> peut invoquer peut
	      &ecirc;tre fix&eacute; en utilisant l'option
	      <option>nb-max-enfants</option>.  Si une limite de dix
	      instances pour un &ldquo;daemon&rdquo; est
	      n&eacute;cessaire, <literal>/10</literal> devra
	      &ecirc;tre plac&eacute; apr&egrave;s
	      <option>nowait</option>.</para>

	    <para>En plus de <option>nb-max-enfants</option>, une
	      autre option limitant le nombre maximal de connexions
	      &agrave; partir d'un emplacement vers un
	      &ldquo;daemon&rdquo; particulier peut &ecirc;tre
	      activ&eacute;e.  L'option
	      <option>nb-max-connexions-par-ip-par-minute</option> est
	      l'option en question.  Ici, une valeur de dix limiterait
	      &agrave; dix le nombre de tentatives de connexions par
	      minute pour une adresse IP particuli&egrave;re.  C'est
	      utile pour emp&ecirc;cher l'abus intentionnel ou par
	      inadvertance des ressources et les attaques par
	      d&eacute;ni de service (&ldquo;Denial of
	      Service&mdash;DOS&rdquo;).</para>

	    <para>Dans ce champ, <option>wait</option> ou
	      <option>nowait</option> est obligatoire.
	      <option>nb-max-enfants</option> et
	      <option>nb-max-connexions-par-ip-par-minute</option>
	      sont optionnelles.</para>

	    <para>Un &ldquo;daemon&rdquo; utilisant un flux de type
	      multi-thread&eacute; sans limites
	      <option>nb-max-enfants</option> ou
	      <option>nb-max-connexions-par-ip-par-minute</option>
	      sera tout simplement affect&eacute; de l'option
	      <literal>nowait</literal>.</para>

	    <para>Le m&ecirc;me &ldquo;daemon&rdquo; avec une limite
	      maximale de dix &ldquo;daemon&rdquo; serait:
	      <literal>nowait/10</literal>.</para>

	    <para>De plus, la m&ecirc;me configuration avec une limite
	      de vingt connexions par adresse IP par minute et une
	      limite maximale de dix &ldquo;daemon&rdquo;s enfant
	      serait: <literal>nowait/10/20</literal>.</para>

	    <para>Ces options sont utilis&eacute;es comme valeurs par
	      d&eacute;faut par le &ldquo;daemon&rdquo;
	      <application>fingerd</application>, comme le montre ce
	      qui suit:</para>

	    <programlisting>finger stream  tcp     nowait/3/10 nobody /usr/libexec/fingerd fingerd -s</programlisting>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>utilisateur</term>

	  <listitem>
	    <para>C'est l'utilisateur sous lequel le
	      &ldquo;daemon&rdquo; en question est
	      ex&eacute;cut&eacute;.  En g&eacute;n&eacute;ral les
	      &ldquo;daemon&rdquo;s tournent sous l'utilisateur
	      <username>root</username>.  Pour des questions de
	      s&eacute;curit&eacute;, il est courant de rencontrer des
	      serveurs tournant sous l'utilisateur
	      <username>daemon</username>, ou sous l'utilisateur avec
	      le moins de privil&egrave;ges:
	      <username>nobody</username>.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>programme-serveur</term>

	  <listitem>
	    <para>Le chemin complet du &ldquo;daemon&rdquo; qui doit
	      &ecirc;tre ex&eacute;cut&eacute; quand une requ&ecirc;te
	      est re&ccedil;ue.  Si le &ldquo;daemon&rdquo; est un
	      service fourni en interne par
	      <application>inetd</application>, alors l'option
	      <option>internal</option> devrait &ecirc;tre
	      utilis&eacute;e.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>arguments-programme-serveur</term>

	  <listitem>
	    <para>Cette option va de pair avec
	      <option>programme-serveur</option> en pr&eacute;cisant
	      les arguments, en commen&ccedil;ant avec
	      <literal>argv[0]</literal>, pass&eacute;s au
	      &ldquo;daemon&rdquo; lors de son invocation.  Si
	      <command>mydaemon -d</command> est la ligne de commande,
	      <literal>mydaemon -d</literal> sera la valeur de
	      l'option <option>arguments-programme-serveur</option>.
	      Ici &eacute;galement, si le &ldquo;daemon&rdquo; est un
	      service interne, utilisez
	      <option>internal</option>.</para>
	  </listitem>
	</varlistentry>
      </variablelist>
    </sect2>

    <sect2 id="network-inetd-security">
      <title>S&eacute;curit&eacute;</title>

      <para>En fonction du profil de s&eacute;curit&eacute; choisi
	&agrave; l'installation, plusieurs &ldquo;daemon&rdquo;s
	peuvent &ecirc;tre activ&eacute;s par d&eacute;faut.  S'il n'y
	a pas de raison particuli&egrave;re &agrave; l'utilisation
	d'un &ldquo;daemon&rdquo;, d&eacute;sactivez-le!  Ajoutez un
	caract&egrave;re &ldquo;#&rdquo; devant le
	&ldquo;daemon&rdquo; en question dans le fichier
	<filename>/etc/inetd.conf</filename>, et envoyez ensuite un
	<link linkend="network-inetd-hangup">signal hangup &agrave;
	inetd</link>.  Certains &ldquo;daemon&rdquo;s comme
	<application>fingerd</application>, devraient &ecirc;tre
	&eacute;vit&eacute;s parce qu'ils donnent trop d'informations
	aux personnes malveillantes.</para>

      <para>Certains &ldquo;daemon&rdquo;s n'ont aucune conscience des
	probl&egrave;mes de s&eacute;curit&eacute;, ou n'ont pas de
	d&eacute;lai limite d'expiration pour les tentatives de
	connexions.  Cela permet &agrave; une personne malveillante
	d'envoyer r&eacute;guli&egrave;rement et de mani&egrave;re
	espac&eacute;e des demandes de connexions &agrave; un
	&ldquo;daemon&rdquo; particulier, avec pour cons&eacute;quence
	de saturer les ressources disponibles.  Cela peut &ecirc;tre
	une bonne id&eacute;e de placer des limitations
	<option>nb-max-connexions-par-ip-par-minute</option> et
	<option>nb-max-enfants</option> sur certains
	&ldquo;daemon&rdquo;s.</para>

      <para>Par d&eacute;faut, le &ldquo;TCP wrapping&rdquo; est
	activ&eacute;.  Consultez la page de manuel
	&man.hosts.access.5; pour plus d'information sur le placement
	de restrictions TCP pour divers &ldquo;daemon&rdquo;s
	invoqu&eacute;s par <application>inetd</application>.</para>
    </sect2>

    <sect2 id="network-inetd-misc">
      <title>Divers</title>

      <para><application>daytime</application>,
	<application>time</application>,
	<application>echo</application>,
	<application>discard</application>,
	<application>chargen</application>, et
	<application>auth</application> sont des services fournis en
	interne par <application>inetd</application>.</para>

      <para>Le  service <application>auth</application> fournit les
	services r&eacute;seau d'identification
	(<application>ident</application>,
	<application>identd</application>), et est configurable
	&agrave; un certain degr&eacute;.</para>

      <para>Consultez la page de manuel de &man.inetd.8; pour plus
	d'informations.</para>
    </sect2>
  </sect1>

  <sect1 id="network-nfs">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>R&eacute;organis&eacute; et augment&eacute; par </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Bill</firstname>
	  <surname>Swingle</surname>
	  <contrib>Ecrit par </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Syst&egrave;me de fichiers r&eacute;seau (NFS)</title>

    <indexterm><primary>NFS</primary></indexterm>
    <para>Parmi les diff&eacute;rents syst&egrave;mes de fichiers que
      &os; supporte se trouve le syst&egrave;me de fichiers
      r&eacute;seau, connu sous le nom de <acronym>NFS</acronym>.
      <acronym>NFS</acronym> permet &agrave; un syst&egrave;me de
      partager des r&eacute;pertoires et des fichiers avec d'autres
      syst&egrave;mes par l'interm&eacute;diaire d'un r&eacute;seau.  En
      utilisant <acronym>NFS</acronym>, les utilisateurs et les
      programmes peuvent acc&eacute;der aux fichiers sur des
      syst&egrave;mes distants comme s'ils &eacute;taient des fichiers
      locaux.</para>

    <para>Certains des avantages les plus remarquables offerts par
      <acronym>NFS</acronym> sont:</para>

    <itemizedlist>
      <listitem>
	<para>Les stations de travail utilisent moins d'espace disque
	  en local parce que les donn&eacute;es utilis&eacute;es en
	  commun peuvent &ecirc;tre stock&eacute;es sur une seule
	  machine tout en restant accessibles aux autres machines sur le
	  r&eacute;seau.</para>
      </listitem>

      <listitem>
	<para>Les utilisateurs n'ont pas besoin d'avoir un
	  r&eacute;pertoire personnel sur chaque machine du
	  r&eacute;seau.  Les r&eacute;pertoires personnels pourront se
	  trouver sur le serveur <acronym>NFS</acronym> et seront
	  disponibles par l'interm&eacute;diaire du
	  r&eacute;seau.</para>
      </listitem>

      <listitem>
	<para>Les p&eacute;riph&eacute;riques de stockage comme les
	  lecteurs de disquettes, de CDROM, de disquettes &iomegazip; peuvent
	  &ecirc;tre utilis&eacute;s par d'autres machines sur le
	  r&eacute;seau.  Cela pourra r&eacute;duire le nombre de
	  lecteurs de medias amovibles sur le r&eacute;seau.</para>
      </listitem>
    </itemizedlist>

    <sect2>
      <title>Comment <acronym>NFS</acronym> fonctionne</title>

      <para><acronym>NFS</acronym> consiste en deux
	&eacute;l&eacute;ments principaux: un serveur et un ou
	plusieurs clients.  Le client acc&egrave;de &agrave; distance
	aux donn&eacute;es stock&eacute;es sur la machine serveur.
	Afin que tout cela fonctionne correctement quelques processus
	doivent &ecirc;tre configur&eacute;s et en
	fonctionnement.</para>

      <note><para>Sous &os;&nbsp;4.X, l'utilitaire
	<application>portmap</application> est utilis&eacute;
	&agrave; la place de <application>rpcbind</application>.  Aussi
	sous &os;&nbsp;4.X l'utilisateur doit remplacer chaque
	instance de <application>rpcbind</application> avec
	<application>portmap</application> dans les exemples qui
	suivent.</para></note>

      <para>Sur le serveur, les &ldquo;daemons&rdquo; suivants
	doivent tourner:</para>
      <indexterm>
	<primary>NFS</primary>
	<secondary>serveur</secondary>
      </indexterm>
      <indexterm>
	<primary><application>rpcbind</application></primary>
      </indexterm>
      <indexterm>
	<primary><application>portmap</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>Description</entry>
	    </row>
	  </thead>
	  <tbody>
	    <row>
	      <entry><application>nfsd</application></entry>
	      <entry>Le &ldquo;daemon&rdquo; <acronym>NFS</acronym>
		qui r&eacute;pond aux requ&ecirc;tes des clients
		<acronym>NFS</acronym>.</entry>
	    </row>
	    <row>
	      <entry><application>mountd</application></entry>
	      <entry>Le &ldquo;daemon&rdquo; de montage
		<acronym>NFS</acronym> qui traite les requ&ecirc;tes que
		lui passe &man.nfsd.8;.</entry>
	    </row>
	    <row>
	      <entry><application>rpcbind</application></entry>
	      <entry>Ce <quote>daemon</quote> permet aux
		clients <acronym>NFS</acronym> de trouver le port que
		le serveur <acronym>NFS</acronym> utilise.</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

      <para>Le client peut &eacute;galement faire tourner un
	&ldquo;daemon&rdquo; connu sous le nom de
	<application>nfsiod</application>.  Le &ldquo;daemon&rdquo;
	<application>nfsiod</application> traite les requ&ecirc;tes en
	provenance du serveur <acronym>NFS</acronym>.  Ceci est
	optionnel, et am&eacute;liore les performances, mais n'est pas
	indispensable pour une utilisation normale et correcte.
	Consultez la page de manuel &man.nfsiod.8; pour plus
	d'informations.</para>
    </sect2>

    <sect2 id="network-configuring-nfs">
      <title>Configurer <acronym>NFS</acronym></title>
      <indexterm>
	<primary>NFS</primary>
	<secondary>configuration</secondary>
      </indexterm>

      <para>La configuration de <acronym>NFS</acronym> est une
	op&eacute;ration relativement directe.  Les processus qui
	doivent tourner peuvent tous &ecirc;tre lanc&eacute;s au
	d&eacute;marrage en modifiant l&eacute;g&egrave;rement votre
	fichier <filename>/etc/rc.conf</filename>.</para>

      <para>Sur le serveur <acronym>NFS</acronym>, assurez-vous que
	les options suivantes sont configur&eacute;es dans le fichier
	<filename>/etc/rc.conf</filename>:</para>

      <programlisting>rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"</programlisting>

      <para><application>mountd</application> est automatiquement
	ex&eacute;cut&eacute; d&egrave;s que le serveur
	<acronym>NFS</acronym> est activ&eacute;.</para>

      <para>Sur le client, assurez-vous que cette option est
	pr&eacute;sente dans le fichier
	<filename>/etc/rc.conf</filename>:</para>

      <programlisting>nfs_client_enable="YES"</programlisting>

      <para>Le fichier <filename>/etc/exports</filename> indique quels
	syst&egrave;mes de fichiers <acronym>NFS</acronym> devraient
	&ecirc;tre export&eacute;s (parfois on utilise le terme de
	&ldquo;partag&eacute;s&rdquo;).  Chaque ligne dans
	<filename>/etc/exports</filename> pr&eacute;cise un
	syst&egrave;me de fichiers &agrave; exporter et quelles
	machines auront acc&egrave;s &agrave; ce syst&egrave;me de
	fichiers.  En plus des machines qui auront acc&egrave;s, des
	options d'acc&egrave;s peuvent &eacute;galement &ecirc;tre
	pr&eacute;sentes.  Ces options sont nombreuses mais seules
	quelques unes seront abord&eacute;es ici.  Vous pouvez
	ais&eacute;ment d&eacute;couvrir d'autres options en lisant la
	page de manuel &man.exports.5;.</para>

      <para>Voici quelques exemples d'entr&eacute;es du fichier
	<filename>/etc/exports</filename>:</para>

      <indexterm>
	<primary>NFS</primary>
	<secondary>exemples d'exportation</secondary>
      </indexterm>

      <para>Les exemples suivants donnent une id&eacute;e de comment
	exporter des syst&egrave;mes de fichiers bien que certains
	param&egrave;tres peuvent &ecirc;tre diff&eacute;rents en
	fonction de votre environnement et votre configuration
	r&eacute;seau.  Par exemple, pour exporter le
	r&eacute;pertoire <filename class="directory">/cdrom</filename>
	pour les trois machines d'exemple qui appartiennent au
	m&ecirc;me domaine que le serveur (d'o&ugrave; l'absence du
	nom de domaine pour chacune d'entre elles) ou qui ont une
	entr&eacute;e dans votre fichier
	<filename>/etc/hosts</filename>.  Le param&egrave;tre
	<option>-ro</option> limite l'acc&egrave;s en lecture seule au
	syst&egrave;me de fichiers export&eacute;.  Avec ce
	param&egrave;tre, le syst&egrave;me distant ne pourra pas
	&eacute;crire sur le syst&egrave;me de fichiers
	export&eacute;.</para>

      <programlisting>/cdrom -ro host1 host2 host3</programlisting>

      <para>La ligne suivante exporte <filename
	class="directory">/home</filename> pour les trois machines en
	utilisant les adresses IP.  C'est une configuration utile si
	vous disposez d'un r&eacute;seau priv&eacute; sans serveur
	<acronym>DNS</acronym> configur&eacute;.  Le fichier
	<filename>/etc/hosts</filename> pourrait &eacute;ventuellement
	&ecirc;tre configur&eacute; pour les noms de machines
	internes, consultez la page de manuel &man.hosts.5; pour plus
	d'information.  Le param&egrave;tre <option>-alldirs</option>
	autorise l'utilisation des sous-r&eacute;pertoires en tant que
	point de montage.  En d'autres termes, il ne montera pas les
	sous-r&eacute;pertoires mais autorisera le client &agrave; ne
	monter que les r&eacute;pertoires qui sont n&eacute;cessaires
	ou d&eacute;sir&eacute;s.</para>

      <programlisting>/home  -alldirs  10.0.0.2 10.0.0.3 10.0.0.4</programlisting>

      <para>La ligne suivante exporte <filename
	class="directory">/a</filename> pour que deux clients d'un
	domaine diff&eacute;rent puissent y acc&eacute;der.  Le
	param&egrave;tre <option>-maproot=root</option> autorise
	l'utilisateur <username>root</username> du syst&egrave;me
	distant &agrave; &eacute;crire des donn&eacute;es sur le
	syst&egrave;me de fichiers export&eacute; en tant que
	<username>root</username>.  Si le param&egrave;tre
	<literal>-maproot=root</literal> n'est pas
	pr&eacute;cis&eacute;, m&ecirc;me si un utilisateur dispose
	d'un acc&egrave;s <username>root</username> sur le
	syst&egrave;me distant, il ne pourra pas modifier de fichiers
	sur le syst&egrave;me de fichiers export&eacute;.</para>

      <programlisting>/a  -maproot=root  host.example.com box.example.org</programlisting>

      <para>Afin de pouvoir acc&eacute;der &agrave; un syst&egrave;me
	de fichiers export&eacute;, le client doit avoir les
	permissions de le faire.  Assurez-vous que le client est
	mentionn&eacute; dans votre fichier
	<filename>/etc/exports</filename>.</para>

      <para>Dans <filename>/etc/exports</filename>, chaque ligne
	repr&eacute;sente l'information d'exportation d'un
	syst&egrave;me de fichiers vers une machine.  Une machine
	distante ne peut &ecirc;tre sp&eacute;cifi&eacute;e qu'une
	fois par syst&egrave;me de fichiers, et ne devrait avoir
	qu'une seule entr&eacute;e par d&eacute;faut.  Par exemple,
	supposons que <filename class="directory">/usr</filename> soit
	un seul syst&egrave;me de fichiers.  Le fichier
	<filename>/etc/exports</filename> suivant serait
	invalide:</para>

      <programlisting># Invalide quand /usr est un syst&egrave;me de fichiers
/usr/src   client
/usr/ports client</programlisting>

      <para>Un syst&egrave;me de fichiers,
	<filename class="directory">/usr</filename>, a deux lignes
	pr&eacute;cisant des exportations vers la m&ecirc;me machine,
	<hostid>client</hostid>.  Le format correct pour une telle
	situation est:</para>

      <programlisting>/usr/src /usr/ports  client</programlisting>

      <para>Les propri&eacute;tes d'un syst&egrave;me de fichiers
	export&eacute; vers une machine donn&eacute;e devraient
	appara&icirc;tre sur une ligne.  Les lignes sans client sont
	trait&eacute;es comme destin&eacute;e &agrave; une seule
	machine.  Cela limite la mani&egrave;re dont vous pouvez
	exporter les syst&egrave;mes de fichiers, mais pour la plupart
	des gens cela n'est pas un probl&egrave;me.</para>

      <para>Ce qui suit est un exemple de liste d'exportation valide,
	o&ugrave; les r&eacute;pertoires <filename
	class="directory">/usr</filename> et <filename
	class="directory">/exports</filename> sont des syst&egrave;mes
	de fichiers locaux:</para>

      <programlisting># Exporte src et ports vers client01 et client02, mais seul
# client01 dispose des privil&egrave;ges root dessus
/usr/src /usr/ports -maproot=root    client01
/usr/src /usr/ports               client02
# Les machines clientes ont les privil&egrave;ges root et peuvent monter tout
# de /exports.  N'importe qui peut monter en lecture seule
# /exports/obj
/exports -alldirs -maproot=root      client01 client02
/exports/obj -ro</programlisting>

      <para>Vous devez relancer <application>mountd</application>
	&agrave; chaque fois que vous modifiez
	<filename>/etc/exports</filename> pour que les changements
	puissent prendre effet.  Cela peut &ecirc;tre effectu&eacute;
	en envoyant le signal HUP au processus
	<application>mountd</application>:</para>

      <screen>&prompt.root; <userinput>kill -HUP `cat /var/run/mountd.pid`</userinput></screen>

      <para>De plus, un red&eacute;marrage permettra &agrave; &os; de
	tout configurer proprement.  Un red&eacute;marrage n'est
	cependant pas n&eacute;c&eacute;ssaire.  Ex&eacute;cuter les
	commandes suivantes en tant que <username>root</username>
	devrait mettre en place ce qui est n&eacute;cessaire.</para>

      <para>Sur le serveur <acronym>NFS</acronym>:</para>

      <screen>&prompt.root; <userinput>rpcbind</userinput>
&prompt.root; <userinput>nfsd -u -t -n 4</userinput>
&prompt.root; <userinput>mountd -r</userinput></screen>

      <para>Sur le client <acronym>NFS</acronym>:</para>

      <screen>&prompt.root; <userinput>nfsiod -n 4</userinput></screen>

      <para>Maintenant il devrait &ecirc;tre possible de monter un
	syst&egrave;me de fichiers distant.  Dans nos exemples le nom
	du serveur sera <hostid>serveur</hostid> et le nom du client
	<hostid>client</hostid>.  Si vous voulez monter temporairement
	un syst&egrave;me de fichiers distant ou vous voulez
	simplement tester la configuration, ex&eacute;cutez juste une
	commande comme celle-ci en tant que <username>root</username>
	sur le client:</para>
      <indexterm>
        <primary>NFS</primary>
        <secondary>montage</secondary>
      </indexterm>

      <screen>&prompt.root; <userinput>mount serveur:/home /mnt</userinput></screen>

      <para>Cela montera le r&eacute;pertoire <filename
	class="directory">/home</filename> situ&eacute; sur le serveur
	au point <filename class="directory">/mnt</filename> sur le
	client.  Si tout est correctement configur&eacute; vous
	devriez &ecirc;tre en mesure d'entrer dans le
	r&eacute;pertoire <filename class="directory">/mnt</filename>
	sur le client et de voir tous les fichiers qui sont sur le
	serveur.</para>

      <para>Si vous d&eacute;sirez monter automatiquement un
	syst&egrave;me de fichiers distant &agrave; chaque
	d&eacute;marrage de l'ordinateur, ajoutez le syst&egrave;me de
	fichiers au fichier <filename>/etc/fstab</filename>.  Voici un
	exemple:</para>

      <programlisting>server:/home	/mnt	nfs	rw	0	0</programlisting>

      <para>La page de manuel &man.fstab.5; liste toutes les options
	disponibles.</para>
    </sect2>

    <sect2>
      <title>Exemples pratiques d'utilisation</title>

      <para>Il existe de nombreuses applications pratiques de
	<acronym>NFS</acronym>.  Les plus communes sont
	pr&eacute;sent&eacute;s ci-dessous:</para>

      <indexterm>
	<primary>NFS</primary>
	<secondary>utilisations</secondary>
      </indexterm>
      <itemizedlist>
	<listitem>
	  <para>Configurer plusieurs machines pour partager un CDROM
	    ou un autre m&eacute;dium.  C'est moins cher et souvent une
	    m&eacute;thode plus pratique pour installer des logiciels
	    sur de multiples machines.</para>
	</listitem>

	<listitem>
	  <para>Sur les r&eacute;seaux importants, il peut &ecirc;tre
	    plus pratique de configurer un serveur
	    <acronym>NFS</acronym> central sur lequel tous les
	    r&eacute;pertoires utilisateurs sont stock&eacute;s.  Ces
	    r&eacute;pertoires utilisateurs peuvent alors &ecirc;tre
	    export&eacute;s vers le r&eacute;seau, les utilisateurs
	    devraient alors toujours avoir le m&ecirc;me
	    r&eacute;pertoire utilisateur ind&eacute;pendamment de la
	    station de travail sur laquelle ils ouvrent une
	    session.</para>
	</listitem>

	<listitem>
	  <para>Plusieurs machines pourront avoir un r&eacute;pertoire
	    <filename class="directory">/usr/ports/distfiles</filename>
	    commun.  De cette mani&egrave;re, quand vous avez besoin
	    d'installer un logiciel port&eacute; sur plusieurs machines,
	    vous pouvez acc&eacute;der rapidement aux sources sans les
	    t&eacute;l&eacute;charger sur chaque machine.</para>
	</listitem>
      </itemizedlist>
    </sect2>

    <sect2 id="network-amd">
      <sect2info>
	<authorgroup>
	  <author>
	    <firstname>Wylie</firstname>
	    <surname>Stilwell</surname>
	    <contrib>Contribution de </contrib>
	  </author>
	</authorgroup>
	<authorgroup>
	  <author>
	    <firstname>Chern</firstname>
	    <surname>Lee</surname>
	    <contrib>R&eacute;&eacute;crit par </contrib>
	  </author>
	</authorgroup>
      </sect2info>
      <title>Montages automatiques avec
	<application>amd</application></title>

      <indexterm><primary>amd</primary></indexterm>
      <indexterm><primary>daemon de montage
	automatique</primary></indexterm>

      <para>&man.amd.8; (&ldquo;automatic mounter
	daemon&rdquo;&mdash;&ldquo;daemon&rdquo; de montage
	automatique) monte automatiquement un syst&egrave;me de
	fichiers distant d&egrave;s que l'on acc&egrave;de &agrave; un
	fichier ou un r&eacute;pertoire contenu par ce syst&egrave;me
	de fichiers.  Les syst&egrave;mes de fichiers qui sont
	inactifs pendant une certaine p&eacute;riode seront
	automatiquement d&eacute;mont&eacute;s par
	<application>amd</application>.  L'utilisation
	d'<application>amd</application> offre une alternative simple
	aux montages permanents qui sont g&eacute;n&eacute;ralement
	list&eacute;s dans <filename>/etc/fstab</filename>.</para>

      <para><application>amd</application> op&egrave;re en s'attachant
	comme un serveur NFS aux r&eacute;pertoires <filename
	class="directory">/host</filename> et <filename
	class="directory">/net</filename>.  Quand on acc&egrave;de
	&agrave; un fichier &agrave; l'int&eacute;rieur de ces
	r&eacute;pertoires, <application>amd</application> recherche
	le montage distant correspondant et le monte automatiquement.
	<filename class="directory">/net</filename> est utilis&eacute;
	pour monter un syst&egrave;me de fichiers export&eacute;
	&agrave; partir d'une adresse IP, alors que <filename
	class="directory">/host</filename> est utilis&eacute; pour
	monter un syst&egrave;me de fichiers export&eacute; &agrave;
	partir d'un nom de machine distant.</para>

      <para>Un acc&egrave;s &agrave; un fichier dans <filename
	class="directory">/host/foobar/usr</filename> demandera
	&agrave; <application>amd</application> de tenter de monter
	l'export <filename class="directory">/usr</filename> sur la
	machine <hostid>foobar</hostid>.</para>

      <example>
	<title>Monter un syst&egrave;mes de fichiers export&eacute;
	  avec <application>amd</application></title>

	<para>Vous pouvez voir les syst&egrave;mes de fichiers
	  export&eacute;s par une machine distante avec la commande
	  <command>showmount</command>.  Par exemple, pour voir les
	  r&eacute;pertoires export&eacute;s par une machine
	  appel&eacute;e <hostid>foobar</hostid>, vous pouvez
	  utiliser:</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>Comme on le voit dans l'exemple,
	<command>showmount</command> liste <filename
	class="directory">/usr</filename> comme une exportation.  Quand
	on change de r&eacute;pertoire pour
	<filename>/host/foobar/usr</filename>,
	<application>amd</application> tente de r&eacute;soudre le nom
	de machine <hostid>foobar</hostid> et de monter
	automatiquement le syst&egrave;me export&eacute;
	d&eacute;sir&eacute;.</para>

      <para><application>amd</application> peut &ecirc;tre
	lanc&eacute; par les proc&eacute;dures de d&eacute;marrage en
	ajoutant les lignes suivantes dans le fichier
	<filename>/etc/rc.conf</filename>:</para>

      <programlisting>amd_enable="YES"</programlisting>

      <para>De plus, des param&egrave;tres peuvent &ecirc;tre
	pass&eacute;s &agrave; <application>amd</application> &agrave;
	l'aide de l'option <literal>amd_flags</literal>.  Par
	d&eacute;faut, l'option <varname>amd_flags</varname> est
	possitionn&eacute;e &agrave;:</para>

      <programlisting>amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"</programlisting>

      <para>Le fichier <filename>/etc/amd.map</filename>
	d&eacute;finit les options par d&eacute;faut avec lesquelles
	les syst&egrave;mes export&eacute;s sont mont&eacute;s.  Le
	fichier <filename>/etc/amd.map</filename> d&eacute;finit
	certaines des fonctionnalit&eacute;s les plus avanc&eacute;es
	de <application>amd</application>.</para>

      <para>Consultez les pages de manuel de &man.amd.8; et
	&man.amd.conf.5; pour plus d'informations.</para>
    </sect2>

    <sect2 id="network-nfs-integration">
      <sect2info>
	<authorgroup>
	  <author>
	    <firstname>John</firstname>
	    <surname>Lind</surname>
	    <contrib>Contribution de </contrib>
	  </author>
	</authorgroup>
      </sect2info>
      <title>Probl&egrave;mes d'int&eacute;gration avec d'autres
	syst&egrave;mes</title>

      <para>Certaines cartes Ethernet ISA pr&eacute;sentent des
	limitations qui peuvent poser de s&eacute;rieux
	probl&egrave;mes sur un r&eacute;seau, en particulier avec
	NFS.  Ce n'est pas une particularit&eacute; de &os;, mais &os;
	en est &eacute;galement affect&eacute;.</para>

      <para>Ce probl&egrave;me se produit pratiquement &agrave; chaque
	fois que des syst&egrave;mes (&os;) PC sont sur le m&ecirc;me
	r&eacute;seau que des stations de travail tr&egrave;s
	performantes, comme celles de Silicon Graphics, Inc. et Sun
	Microsystems, Inc.  Les montages NFS se feront sans
	difficult&eacute;, et certaines op&eacute;rations pourront
	r&eacute;ussir, puis soudain le serveur semblera ne plus
	r&eacute;pondre au client, bien que les requ&ecirc;tes vers ou
	en provenance d'autres syst&egrave;mes continueront &agrave;
	&ecirc;tre trait&eacute;es normalement.  Cela se manisfeste
	sur la machine cliente, que ce soit le syst&egrave;me &os; ou
	la station de travail.  Sur de nombreux syst&egrave;mes, il
	n'est pas possible d'arr&ecirc;ter le client proprement une
	fois que ce probl&egrave;me appara&icirc;t.  La seule solution
	est souvent de r&eacute;initialiser le client parce que le
	probl&egrave;me NFS ne peut &ecirc;tre r&eacute;solu.</para>

      <para>Bien que la solution &ldquo;correcte&rdquo; est
	d'installer une carte Ethernet plus performante et de plus
	grande capacit&eacute; sur le syst&egrave;me &os;, il existe
	une solution simple qui donnera satisfaction.  Si le
	syst&egrave;me &os; est le <emphasis>serveur</emphasis>,
	ajoutez l'option <option>-w=1024</option> lors du montage sur
	le client.  Si le syst&egrave;me &os; est le
	<emphasis>client</emphasis>, alors montez le syst&egrave;me de
	fichiers NFS avec l'option <option>-r=1024</option>.  Ces
	options peuvent &ecirc;tre sp&eacute;cifi&eacute;es dans le
	quatri&egrave;me champ de l'entr&eacute;e
	<filename>fstab</filename> sur le client pour les montages
	automatiques, ou en utilisant le param&egrave;tre
	<option>-o</option> de la commande &man.mount.8; pour les
	montages manuels.</para>

      <para>Il faut noter qu'il existe un probl&egrave;me
	diff&eacute;rent, que l'on confond parfois avec le
	pr&eacute;c&eacute;dent, qui peut se produire lorsque les
	serveurs et les clients NFS sont sur des r&eacute;seaux
	diff&eacute;rents.  Si c'est le cas,
	<emphasis>assurez-vous</emphasis> que vos routeurs
	transmettent bien les informations UDP n&eacute;cessaires, ou
	vous n'irez nulle part, quoi que vous fassiez par
	ailleurs.</para>

      <para>Dans les exemples suivants, <hostid>fastws</hostid> est le
	nom de la station de travail (interface) performante, et
	<hostid>freebox</hostid> celui d'une machine (interface) &os;
	avec une carte Ethernet moins performante.  <filename
	class="directory">/sharedfs</filename> est le syst&egrave;me de
	fichiers NFS qui sera export&eacute; (consulter la page de
	manuel &man.exports.5;), et <filename
	class="directory">/project</filename> sera le point de montage
	sur le client pour le syst&egrave;me de fichiers
	export&eacute;.  Dans tous les cas, des options
	suppl&eacute;mentaires, telles que <option>hard</option>
	<option>soft</option> et <option>bg</option> seront
	peut-&ecirc;tre n&eacute;cessaires pour vos
	applications.</para>

      <para>Exemple d'extrait du fichier
	<filename>/etc/fstab</filename> sur <hostid>freebox</hostid>
	quand le syst&egrave;me &os; (<hostid>freebox</hostid>) est le
	client:</para>

      <programlisting>fastws:/sharedfs /project nfs rw,-r=1024 0 0</programlisting>

      <para>Commande de montage manuelle sur
	<hostid>freebox</hostid>:</para>

      <screen>&prompt.root; <userinput>mount -t nfs -o -r=1024 fastws:/sharedfs /project</userinput></screen>

      <para>Exemple d'extrait du fichier
	<filename>/etc/fstab</filename> sur <hostid>fastws</hostid>
	quand le syst&egrave;me &os; est le serveur:</para>

      <programlisting>freebox:/sharedfs /project nfs rw,-w=1024 0 0</programlisting>

      <para>Commande de montage manuelle sur
	<hostid>fastws</hostid>:</para>

      <screen>&prompt.root; <userinput>mount -t nfs -o -w=1024 freebox:/sharedfs /project</userinput></screen>

      <para>Presque n'importe quelle carte Ethernet 16&nbsp;bits
	permettra d'op&eacute;rer sans l'utilisation des
	param&egrave;tres restrictifs pr&eacute;c&eacute;dents sur les
	tailles des tampons de lecture et d'&eacute;criture.</para>

      <para>Pour ceux que cela int&eacute;resse, voici ce qui se passe
	quand le probl&egrave;me survient, ce qui explique
	&eacute;galement pourquoi ce n'est pas
	r&eacute;cup&eacute;rable.  NFS travaille
	g&eacute;n&eacute;ralement avec une taille de
	&ldquo;bloc&rdquo; de 8&nbsp;k (bien qu'il arrive qu'il les
	fragmente en de plus petits morceaux).  Comme la taille
	maximale d'un paquet Ethernet est de 1500&nbsp;octets, le
	&ldquo;bloc&rdquo; NFS est divis&eacute; en plusieurs paquets
	Ethernet, bien qu'il soit toujours vu comme quelque chose
	d'unitaire par les couches sup&eacute;rieures du code, et doit
	&ecirc;tre r&eacute;ceptionn&eacute;, assembl&eacute;, et
	<emphasis>acquitt&eacute;</emphasis> comme tel.  Les stations
	de travail performantes peuvent traiter les paquets qui
	composent le bloc NFS les uns apr&egrave;s les autres,
	pratiquement aussi rapidement que le standard le permet.  Sur
	les cartes les plus petites, de moindre capacit&eacute;, les
	derniers paquets d'un m&ecirc;me bloc &eacute;crasent les
	paquets pr&eacute;c&eacute;dents avant qu'ils aient p&ucirc;
	&ecirc;tre transmis &agrave; la machine et le bloc ne peut
	&ecirc;tre r&eacute;assembl&eacute; ou acquitt&eacute;.  Avec
	pour cons&eacute;quence, le d&eacute;passement du d&eacute;lai
	d'attente sur la station de travail qui recommence alors la
	transmission, mais en renvoyant l'int&eacute;gralit&eacute;
	des 8&nbsp;K, et ce processus se rep&egrave;te &agrave;
	l'infini.</para>

      <para>En d&eacute;finissant la taille de bloc inf&eacute;rieure
	&agrave; la taille d'un paquet Ethernet, nous nous assurons
	que chaque paquet Ethernet complet sera acquitt&eacute;
	individuellement, &eacute;vitant ainsi la situation de
	blocage.</para>

      <para>Des &eacute;crasements peuvent toujours survenir quand des
	stations de travail performantes surchargent un syst&egrave;me
	PC de donn&eacute;es, mais avec de meilleures cartes, de tels
	&eacute;crasements ne sont pas syst&eacute;matiques pour les
	&ldquo;blocs&rdquo; NFS.  Quand un &eacute;crasement
	appara&icirc;t, les blocs affect&eacute;s sont retransmis, et
	ils y a de fortes chances pour qu'ils soient re&ccedil;us,
	assembl&eacute;s et acquitt&eacute;s.</para>
    </sect2>
  </sect1>

  <sect1 id="network-nis">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Bill</firstname>
	  <surname>Swingle</surname>
	  <contrib>Ecrit par </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Eric</firstname>
	  <surname>Ogren</surname>
	  <contrib>Augment&eacute; par </contrib>
	</author>
	<author>
	  <firstname>Udo</firstname>
	  <surname>Erdelhoff</surname>
	</author>
      </authorgroup>
    </sect1info>
    <title>Services d'information r&eacute;seau (NIS/YP)</title>

    <sect2>
      <title>Qu'est-ce que c'est?</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>NIS, qui signifie &ldquo;Network Information
	Services&rdquo; (services d'information r&eacute;seau), fut
	d&eacute;velopp&eacute; par Sun Microsystems pour centraliser
	l'administration de syst&egrave;mes &unix; (&agrave; l'origine
	&sunos;).  C'est devenu aujourd'hui un standard industriel; tous
	les syst&egrave;mes importants de type &unix; (&solaris;, HP-UX,
	&aix;, Linux, NetBSD, OpenBSD, &os;, etc.) supportent
	NIS.</para>

      <indexterm><primary>yellow pages</primary><see>NIS</see></indexterm>
      <para>NIS &eacute;tait appel&eacute; au d&eacute;part
	&ldquo;Yellow Pages&rdquo; (page jaunes), mais &eacute;tant
	donn&eacute; que c'&eacute;tait marque d&eacute;pos&eacute;e,
	Sun changea le nom.  L'ancienne appelation (et yp) est toujours
	rencontr&eacute;e et utilis&eacute;e.</para>

      <indexterm>
	<primary>NIS</primary>
	<secondary>domaines</secondary>
      </indexterm>
      <para>C'est un syst&egrave;me client/serveur bas&eacute; sur les
	RPCs qui permet &agrave; un groupe de machines d'un domaine NIS
	de partager un ensemble de fichiers de configuration communs.
	Cela permet &agrave; un administrateur syst&egrave;me de mettre
	en place des clients NIS avec un minimum de configuration et
	d'ajouter, modifier ou supprimer les informations de
	configuration &agrave; partir d'un unique emplacement.</para>

      <indexterm><primary>Windows NT</primary></indexterm>
      <para>C'est similaire au syst&egrave;me de domaine &windowsnt;;
	bien que l'impl&eacute;mentation interne des deux n'est pas du
	tout identique, les fonctionnalit&eacute;s de base sont
	comparables.</para>
    </sect2>

    <sect2>
      <title>Termes/processus &agrave; conna&icirc;tre</title>

      <para>Il existe plusieurs termes et processus utilisateurs que
	vous rencontrerez lors de la configuration de NIS sous &os;,
	que vous vouliez mettre en place un serveur NIS ou un client
	NIS:</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>Terme</entry>
	      <entry>Description</entry>
	    </row>
	  </thead>
	  <tbody>
	    <row>
	      <entry>Nom de domaine NIS</entry>
	      <entry>Un serveur ma&icirc;tre NIS et tous ses clients
		(y compris ses serveurs esclaves) ont un domaine NIS.
		Similaire au nom de domaine &windowsnt;, le nom de
		domaine NIS n'a rien &agrave; voir avec le
		syst&egrave;me DNS.</entry>
	    </row>
	    <row>
	      <entry><application>rpcbind</application></entry>
	      <entry>Doit tourner afin d'activer les RPC (Remote
		Procedure Call, appel de proc&eacute;dures distantes, un
		protocole r&eacute;seau utilis&eacute; par NIS).  Si
		<application>rpcbind</application> ne tourne pas, il
		sera impossible de faire fonctionner un serveur NIS, ou
		jouer le r&ocirc;le d'un client NIS (sous
		&os;&nbsp;4.X <application>portmap</application> est
		utilis&eacute; &agrave; la place de
		<application>rpcbind</application>).</entry>
	    </row>
	    <row>
	      <entry><application>ypbind</application></entry>
	      <entry>Fait pointer un client NIS vers son serveur NIS.
		Il r&eacute;cup&eacute;rera le nom de domaine NIS
		aupr&egrave;s du syst&egrave;me, et en utilisant les
		RPC, se connectera au serveur.
		<application>ypbind</application> est le coeur de la
		communication client-serveur dans un environnement NIS;
		si <application>ypbind</application> meurt sur une
		machine cliente, elle ne sera pas en mesure
		d'acc&eacute;der au serveur NIS.</entry>
	    </row>
	    <row>
	      <entry><application>ypserv</application></entry>
	      <entry>Ne devrait tourner que sur les serveurs NIS,
		c'est le processus serveur en lui-m&ecirc;me.  Si
		&man.ypserv.8; meurt, alors le serveur ne pourra plus
		r&eacute;pondre aux requ&ecirc;tes NIS (avec un peu de
		chance, un serveur esclave prendra la rel&egrave;ve).
		Il existe des impl&eacute;mentations de NIS (mais ce
		n'est pas le cas de celle de &os;), qui n'essayent pas
		de se reconnecter &agrave; un autre serveur si le
		serveur utilis&eacute; pr&eacute;c&eacute;dement meurt.
		Souvent, la seule solution dans ce cas est de relancer
		le processus serveur (ou m&ecirc;me red&eacute;marrer le
		serveur) ou le processus
		<application>ypbind</application> sur le client.</entry>
	    </row>
	    <row>
	      <entry><application>rpc.yppasswdd</application></entry>
	      <entry>Un autre processus qui ne devrait tourner que sur
		les serveurs ma&icirc;tre NIS; c'est un
		&ldquo;daemon&rdquo; qui permettra aux clients de
		modifier leur mot de passe NIS.  Si ce
		&ldquo;daemon&rdquo; ne tourne pas, les utilisateurs
		devront ouvrir une session sur le serveur ma&icirc;tre
		NIS et y changer &agrave; cet endroit leur mot de
		passe.</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>
      <!-- XXX Missing: rpc.ypxfrd (not important, though) May only run
      on the master -->
    </sect2>

    <sect2>
      <title>Comment cela fonctionne-t-il?</title>

      <para>Dans un environnement NIS il y a trois types de machines:
	les serveurs ma&icirc;tres, les serveurs esclaves et les
	clients.  Les serveurs centralisent les informations de
	configuration des machines.  Les serveurs ma&icirc;tres
	d&eacute;tiennent l'exemplaire de r&eacute;f&eacute;rence de
	ces informations, tandis que les serveurs esclaves en ont un
	double pour assurer la redondance.  Les clients attendent des
	serveurs qu'ils leur fournissent ces informations.</para>

      <para>Le contenu de nombreux fichiers peut &ecirc;tre
	partag&eacute; de cette mani&egrave;re.  Les fichiers
	<filename>master.passwd</filename>,
	<filename>group</filename>, et <filename>hosts</filename> sont
	fr&eacute;quemment partag&eacute;s par l'interm&eacute;diaire
	de NIS.  A chaque fois qu'un processus d'une machine cliente a
	besoin d'une information qu'il trouverait normalement
	localement dans un de ces fichiers, il &eacute;met une
	requ&ecirc;te au serveur NIS auquel il est rattach&eacute;
	pour obtenir cette information.</para>

      <sect3>
	<title>Type de machine</title>

	<itemizedlist>
	  <indexterm>
	    <primary>NIS</primary>
	    <secondary>serveur ma&icirc;tre</secondary>
	  </indexterm>
	  <listitem>
	    <para>Un <emphasis>serveur NIS ma&icirc;tre</emphasis>.
	      Ce serveur, analogue &agrave; un contr&ocirc;leur de
	      domaine &windowsnt; primaire, g&egrave;re les fichiers
	      utilis&eacute;s par tous les clients NIS.  Les fichiers
	      <filename>passwd</filename>, <filename>group</filename>,
	      et les autres fichiers utilis&eacute;s par les clients NIS
	      r&eacute;sident sur le serveur ma&icirc;tre.</para>

	    <note>
	      <para>Il est possible pour une machine d'&ecirc;tre
		un serveur NIS ma&icirc;tre pour plus qu'un domaine NIS.
		Cependant, ce cas ne sera pas abord&eacute; dans cette
		introduction, qui suppose un environnement NIS
		relativement petit.</para>
	    </note>
	  </listitem>
	  <indexterm>
	    <primary>NIS</primary>
	    <secondary>serveur esclave</secondary>
	  </indexterm>
	  <listitem>
	    <para><emphasis>Serveurs NIS esclaves</emphasis>.
	      Similaire aux contr&ocirc;leurs de domaine &windowsnt; de
	      secours, les serveurs NIS esclaves poss&egrave;dent une
	      copie des fichiers du serveur NIS ma&icirc;tre.  Les
	      serveurs NIS esclaves fournissent la redondance
	      n&eacute;cessaire dans les environnements importants.  Ils
	      aident &eacute;galement &agrave; &agrave; la
	      r&eacute;partition de la charge du serveur ma&icirc;tre:
	      les clients NIS s'attachent toujours au serveur NIS dont
	      ils re&ccedil;oivent la r&eacute;ponse en premier, y
	      compris si c'est la r&eacute;ponse d'un serveur
	      esclave.</para>
	  </listitem>
	  <indexterm>
	    <primary>NIS</primary>
	    <secondary>client</secondary>
	  </indexterm>
	  <listitem>
	    <para><emphasis>Clients NIS</emphasis>.
	      Les clients NIS, comme la plupart des stations de
	      travail &windowsnt;, s'identifient aupr&egrave;s du
	      serveur NIS (ou le contr&ocirc;leur de domaine
	      &windowsnt; dans le cas de stations de travail
	      &windowsnt;) pour l'ouverture de sessions.</para>
	  </listitem>
	</itemizedlist>
      </sect3>
    </sect2>

    <sect2>
      <title>Utiliser NIS/YP</title>

      <para>Cette section traitera de la configuration d'un
	exemple d'environnement NIS.</para>

      <note><para>Dans cette section on suppose que vous utilisez
	&os;&nbsp;3.3 ou une version suivante.  Les instructions
	fournies fonctionneront <emphasis>probabablement</emphasis>
	avec n'importe quelle version de &os; sup&eacute;rieure
	&agrave; 3.0, mais il n'y a aucune garantie que cela soit le
	cas.</para></note>

      <sect3>
	<title>Planification</title>

	<para>Supposons que vous &ecirc;tes l'administrateur d'un
	  petit laboratoire universitaire.  Ce laboratoire dispose de
	  15 machines &os;, et ne poss&egrave;de pas actuellement de
	  point central d'administration; chaque machine a ses propres
	  fichiers <filename>/etc/passwd</filename> et
	  <filename>/etc/master.passwd</filename>.  Ces fichiers sont
	  maintenus &agrave; jour entre eux gr&acirc;ce &agrave; des
	  interventions manuelles; actuellement quand vous ajoutez un
	  utilisateur pour le laboratoire, vous devez ex&eacute;cuter
	  <command>adduser</command> sur les 15 machines.  Cela doit
	  changer, vous avez donc d&eacute;cid&eacute; de convertir le
	  laboratoire &agrave; l'utilisation de NIS en utilisant deux
	  machines comme serveurs.</para>

	<para>La configuration du laboratoire ressemble &agrave;
	  quelque chose comme:</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="3">
	    <thead>
	      <row>
		<entry>Nom de machine</entry>
		<entry>Adresse IP</entry>
		<entry>R&ocirc;le de la machine</entry>
	      </row>
	    </thead>
	    <tbody>
	      <row>
		<entry><hostid>ellington</hostid></entry>
		<entry><hostid role="ipaddr">10.0.0.2</hostid></entry>
		<entry>Ma&icirc;tre NIS</entry>
	      </row>
	      <row>
		<entry><hostid>coltrane</hostid></entry>
		<entry><hostid role="ipaddr">10.0.0.3</hostid></entry>
		<entry>Esclave NIS</entry>
	      </row>
	      <row>
		<entry><hostid>basie</hostid></entry>
		<entry><hostid role="ipaddr">10.0.0.4</hostid></entry>
		<entry>Station de travail</entry>
	      </row>
	      <row>
		<entry><hostid>bird</hostid></entry>
		<entry><hostid role="ipaddr">10.0.0.5</hostid></entry>
		<entry>Machine cliente</entry>
	      </row>
	      <row>
		<entry><hostid>cli[1-11]</hostid></entry>
		<entry><hostid role="ipaddr">10.0.0.[6-17]</hostid></entry>
		<entry>Autres machines clientes</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>

	<para>Si vous mettez en place un syst&egrave;me NIS pour la
	  premi&egrave;re fois, c'est une bonne id&eacute;e de penser
	  &agrave; ce que vous voulez en faire.  Peu importe la taille
	  de votre r&eacute;seau, il y a quelques d&eacute;cisions
	  &agrave; prendre.</para>

	<sect4>
	  <title>Choisir un nom de domaine NIS</title>

	  <indexterm>
	    <primary>NIS</primary>
	    <secondary>nom de domaine</secondary>
	  </indexterm>
	  <para>Ce n'est pas le &ldquo;nom de domaine&rdquo; dont vous
	    avez l'habitude.  Il est plus exactement appel&eacute;
	    &ldquo;nom de domaine NIS&rdquo;.  Quand un client diffuse
	    des requ&ecirc;tes pour obtenir des informations, il y
	    inclut le nom de domaine NIS auquel il appartient.  C'est
	    ainsi que plusieurs serveurs d'un m&ecirc;me r&eacute;seau
	    peuvent savoir lequel d'entre eux doit r&eacute;pondre aux
	    diff&eacute;rentes requ&ecirc;tes.  Pensez au nom de domaine
	    NIS comme le nom d'un groupe de machines qui sont
	    reli&eacute;es entre elles.</para>

	  <para>Certains choississent d'utiliser leur nom de domaine
	    Internet pour nom de domaine NIS.  Ce n'est pas
	    conseill&eacute; parce que c'est une source de confusion
	    quand il faut r&eacute;soudre un probl&egrave;me
	    r&eacute;seau.  Le nom de domaine NIS devrait &ecirc;tre
	    unique sur votre r&eacute;seau et est utile s'il
	    d&eacute;crit le groupe de machines qu'il
	    repr&eacute;sente.  Par exemple, le d&eacute;partement
	    artistique de Acme Inc. pourrait avoir
	    &ldquo;acme-art&rdquo; comme nom de domaine NIS.  Pour
	    notre exemple, nous supposerons que vous avez choisi le
	    nom <emphasis>test-domain</emphasis>.</para>

	  <indexterm><primary>SunOS</primary></indexterm>
	  <para>Cependant, certains syst&egrave;mes d'exploitation
	    (notamment &sunos;) utilisent leur nom de domaine NIS pour
	    nom de domaine Internet.  Si une ou plusieurs machines sur
	    votre r&eacute;seau pr&eacute;sentent cette restriction,
	    vous <emphasis>devez</emphasis> utiliser votre nom de
	    domaine Internet pour nom de domaine NIS.</para>
	</sect4>

	<sect4>
	  <title>Contraintes au niveau du serveur</title>

	  <para>Il y a plusieurs choses &agrave; garder &agrave;
	    l'esprit quand on choisit une machine destin&eacute;e
	    &agrave; &ecirc;tre un serveur NIS.  Un des
	    probl&egrave;mes du NIS est le degr&eacute; de
	    d&eacute;pendance des clients vis &agrave; vis du serveur.
	    Si un client ne peut contacter le serveur de son domaine
	    NIS, la plupart du temps la machine n'est plus utilisable.
	    L'absence d'information sur les utilisateurs et les
	    groupes bloque la plupart des syst&egrave;mes.  Vous devez
	    donc vous assurer de choisir une machine qui ne sera pas
	    red&eacute;marr&eacute;e fr&eacute;quement, ni
	    utilis&eacute;e pour du d&eacute;veloppement.
	    Id&eacute;alement, le serveur NIS devrait &ecirc;tre une
	    machine dont l'unique utilisation serait d'&ecirc;tre un
	    serveur NIS.  Si vous avez un r&eacute;seau qui n'est pas
	    tr&egrave;s charg&eacute;, il peut &ecirc;tre
	    envisag&eacute; de mettre le serveur NIS sur une machine
	    fournissant d'autres services, gardez juste &agrave;
	    l'esprit que si le serveur NIS n'est pas disponible
	    &agrave; un instant donn&eacute;, cela affectera
	    <emphasis>tous</emphasis> vos clients NIS.</para>
	</sect4>
      </sect3>

      <sect3>
	<title>Serveurs NIS</title>

	<para>La copie de r&eacute;f&eacute;rence de toutes les
	  informations NIS est stock&eacute;e sur une seule machine
	  appel&eacute;e serveur NIS ma&icirc;tre.  Les bases de
	  donn&eacute;es utilis&eacute;es pour le stockage de ces
	  informations sont appel&eacute;es tables NIS (&ldquo;NIS
	  maps&rdquo;).  Sous &os; ces tables se trouvent dans
	  <filename>/var/yp/[domainname]</filename> o&ugrave;
	  <filename>[domainname]</filename> est le nom du domaine NIS
	  concern&eacute;.  Un seul serveur NIS peut g&eacute;rer
	  plusieurs domaines &agrave; la fois, il peut donc y avoir
	  plusieurs de ces r&eacute;pertoires, un pour chaque domaine.
	  Chaque domaine aura son propre jeu de tables.</para>

	<para>Les serveurs NIS ma&icirc;tres et esclaves traitent
	  toutes les requ&ecirc;tes NIS &agrave; l'aide du
	  &ldquo;daemon&rdquo; <application>ypserv</application>.
	  <application>ypserv</application> re&ccedil;oit les
	  requ&ecirc;tes des clients NIS, traduit le nom de domaine et
	  le nom de table demand&eacute;s en chemin d'acc&egrave;s
	  &agrave; la base de donn&eacute;es correspondante et
	  transmet l'information de la base de donn&eacute;es au
	  client.</para>

        <sect4>
	  <title>Configurer un serveur NIS ma&icirc;tre</title>
	  <indexterm>
	    <primary>NIS</primary>
	    <secondary>configuration du serveur</secondary>
	  </indexterm>
	  <para>Selon vos besoins, la configuration d'un serveur NIS
	    ma&icirc;tre peut &ecirc;tre relativement simple.  &os;
	    offre par d&eacute;faut un support direct du NIS.  Tout ce
	    dont vous avez besoin est d'ajouter les lignes qui suivent
	    au fichier <filename>/etc/rc.conf</filename>, et &os;
	    s'occupera du reste pour vous.</para>

	  <procedure>
	    <step>
	      <para><programlisting>nisdomainname="test-domain"</programlisting>
		Cette ligne d&eacute;finie le nom de domaine NIS,
		<literal>test-domain</literal>, &agrave; la
		configuration du r&eacute;seau (e.g. au
		d&eacute;marrage).</para>
	    </step>
	    <step>
	      <para><programlisting>nis_server_enable="YES"</programlisting>
		Demandera &agrave; &os; de lancer les processus du
		serveur NIS d&egrave;s que le r&eacute;seau est en
		fonctionnement.</para>
	    </step>
	    <step>
	      <para><programlisting>nis_yppasswdd_enable="YES"</programlisting>
		Ceci activera le &ldquo;daemon&rdquo;
		<application>rpc.yppasswdd</application>, qui, comme
		mentionn&eacute; pr&eacute;cedement, permettra aux
		utilisateurs de modifier leur mot de passe &agrave;
		partir d'une machine cliente.</para>
	    </step>
	  </procedure>

	  <note>
	    <para>Selon votre configuration NIS, vous aurez
	      peut-&ecirc;tre &agrave; ajouter des entr&eacute;es
	      suppl&eacute;mentaires.  Consultez la <link
	      linkend="network-nis-server-is-client">section sur les
	      serveurs NIS qui sont &eacute;galement des clients
	      NIS</link>, plus bas, pour plus de d&eacute;tails.</para>
	  </note>

	  <para>Maintenant, tout ce que vous devez faire est
	    d'ex&eacute;cuter la commande
	    <command>/etc/netstart</command> en tant que
	    super-utilisateur.  Elle configurera tout en utilisant les
	    valeurs que vous avez d&eacute;finies dans
	    <filename>/etc/rc.conf</filename>.</para>
	</sect4>

	<sect4>
	  <title>Initialisation des tables NIS</title>
	  <indexterm>
	    <primary>NIS</primary>
	    <secondary>tables</secondary>
	  </indexterm>
	  <para>Les <emphasis>tables NIS</emphasis> sont des fichiers
	    de base de donn&eacute;es, qui sont conserv&eacute;s dans le
	    r&eacute;pertoire <filename
	    class="directory">/var/yp</filename>.  Elles sont
	    g&eacute;n&eacute;r&eacute;es &agrave; partir des fichiers
	    de configuration du r&eacute;pertoire <filename
	    class="directory">/etc</filename> du serveur NIS
	    ma&icirc;tre, avec une exception: le fichier
	    <filename>/etc/master.passwd</filename>.  Et cela pour une
	    bonne raison, vous ne voulez pas divulguer les mots de passe
	    pour l'utilisateur <username>root</username> et autres
	    comptes d'administration aux autres serveurs du domaine NIS.
	    Par cons&eacute;quent, avant d'initialiser les tables NIS,
	    vous devrez faire:</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>Vous devrez effacer toutes les entr&eacute;es
	    concernant les comptes syst&egrave;me
	    (<username>bin</username>, <username>tty</username>,
	    <username>kmem</username>, <username>games</username>,
	    etc.), tout comme les comptes que vous ne d&eacute;sirez
	    pas propager aux clients NIS (par exemple
	    <username>root</username> et tout autre compte avec un UID
	    0 (super-utilisateur)).</para>

	  <note><para>Assurez-vous que le fichier
	    <filename>/var/yp/master.passwd</filename> n'est pas
	    lisible par son groupe ou le reste du monde (mode 600)!
	    Utilisez la commande <command>chmod</command> si
	    n&eacute;cessaire.</para></note>

	  <indexterm><primary>Tru64 UNIX</primary></indexterm>
	  <para>Cela achev&eacute;, il est temps d'initialiser les
	    tables NIS!  &os; dispose d'une proc&eacute;dure
	    appel&eacute;e <command>ypinit</command> pour le faire
	    &agrave; votre place (consultez sa page de manuel pour plus
	    d'informations).  Notez que cette proc&eacute;dure est
	    disponible sur la plupart des syst&egrave;mes d'exploitation
	    du type &unix;, mais pas tous.  Sur Digital UNIX/Compaq
	    Tru64 UNIX, elle est appel&eacute;e
	    <command>ypsetup</command>.  Comme nous voulons
	    g&eacute;n&eacute;rer les tables pour un ma&icirc;tre NIS,
	    nous passons l'option <option>-m</option> &agrave;
	    <command>ypinit</command>.  Pour g&eacute;n&eacute;rer les
	    tables NIS, en supposant que vous avez effectu&eacute; les
	    &eacute;tapes pr&eacute;c&eacute;dentes, lancez:</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>

[..output from map generation..]

NIS Map update completed.
ellington has been setup as an YP master server without any errors.</screen>

	  <para><command>ypinit</command> devrait avoir
	    cr&eacute;&eacute; <filename>/var/yp/Makefile</filename>
	    &agrave; partir de
	    <filename>/var/yp/Makefile.dist</filename>.  Une fois
	    cr&eacute;&eacute;, ce fichier suppose que vous &ecirc;tre
	    dans un environnement compos&eacute; uniquement de
	    machines &os; et avec un seul serveur.  Comme
	    <literal>test-domain</literal> dispose &eacute;galement
	    d'un serveur esclave, vous devez &eacute;diter
	    <filename>/var/yp/Makefile</filename>:</para>

	  <screen>ellington&prompt.root; <userinput>vi /var/yp/Makefile</userinput></screen>

	  <para>Vous devez commenter la ligne</para>

	  <programlisting>NOPUSH = "True"</programlisting>

	  <para>(si elle n'est pas d&eacute;j&agrave;
	    comment&eacute;e).</para>
	</sect4>

	<sect4>
	  <title>Configurer un serveur NIS esclave</title>
	  <indexterm>
	    <primary>NIS</primary>
	    <secondary>serveur esclave</secondary>
	  </indexterm>
	  <para>Configurer un serveur NIS esclave est encore plus
	    simple que de configurer un serveur ma&icirc;tre.  Ouvrez
	    une session sur le serveur esclave et &eacute;ditez le
	    fichier <filename>/etc/rc.conf</filename> comme
	    pr&eacute;c&eacute;demment.  La seule diff&eacute;rence est
	    que nous devons maintenant utiliser l'option
	    <option>-s</option> avec <command>ypinit</command>.
	    L'option <option>-s</option> a besoin du nom du serveur NIS
	    ma&icirc;tre, donc notre ligne de commande ressemblera
	    &agrave;:</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>Vous devriez avoir un r&eacute;pertoire appel&eacute;
	    <filename>/var/yp/test-domain</filename>.  Des copies des
	    tables du serveur NIS ma&icirc;tre devraient se trouver
	    dans ce r&eacute;pertoire.  Vous devrez vous assurer que
	    ces tables restent &agrave; jour.  Les entr&eacute;es
	    suivantes dans <filename>/etc/crontab</filename> sur vos
	    serveurs esclaves s'en chargeront:</para>

	  <programlisting>20      *       *       *       *       root   /usr/libexec/ypxfr passwd.byname
21      *       *       *       *       root   /usr/libexec/ypxfr passwd.byuid</programlisting>

	  <para>Ces deux lignes obligent le serveur esclave &agrave;
	    synchroniser ses tables avec celles du serveur
	    ma&icirc;tre.  Bien que ces entr&eacute;es ne soient pas
	    indispensables puisque le serveur ma&icirc;tre essaye de
	    s'assurer que toute modification de ses tables NIS soit
	    r&eacute;percut&eacute;e &agrave; ses serveurs esclaves et
	    comme l'information sur les mots de passe est vitale pour
	    les syst&egrave;mes qui d&eacute;pendent du serveur, il
	    est bon de forcer les mises &agrave; jour.  C'est d'autant
	    plus important sur les r&eacute;seaux charg&eacute;s
	    o&ugrave; il n'est pas certain que les mises &agrave; jour
	    soient int&eacute;grales.</para>

	  <para>Maintenant, ex&eacute;cutez la commande
	    <command>/etc/netstart</command> sur le serveur esclave,
	    ce qui lancera le serveur NIS.</para>
	</sect4>
      </sect3>

      <sect3>
	<title>Clients NIS</title>

	<para>Un client NIS &eacute;tablit une connexion avec un
	  serveur NIS donn&eacute; par l'interm&eacute;diaire du
	  &ldquo;daemon&rdquo; <application>ypbind</application>.
	  <application>ypbind</application> consulte le nom de domaine
	  par d&eacute;faut du syst&egrave;me (d&eacute;fini par la
	  commande <command>domainname</command>), et commence
	  &agrave; diffuser des requ&ecirc;tes RPC sur le
	  r&eacute;seau local.  Ces requ&ecirc;tes pr&eacute;cisent le
	  nom de domaine auquel <application>ypbind</application>
	  essaye de se rattacher.  Si un serveur configur&eacute; pour
	  ce domaine re&ccedil;oit une des requ&ecirc;tes
	  diffus&eacute;es, il r&eacute;pond &agrave;
	  <application>ypbind</application>, qui enregistrera
	  l'adresse du serveur.  S'il y a plusieurs serveurs
	  disponibles (un ma&icirc;tre et plusieurs esclaves par
	  example), <application>ypbind</application> utilisera
	  l'adresse du premier &agrave; r&eacute;pondre.  D&egrave;s
	  lors, le syst&egrave;me client dirigera toutes ses
	  requ&ecirc;tes NIS vers ce serveur.
	  <application>ypbind</application> enverra de temps en temps
	  des requ&ecirc;tes &ldquo;ping&rdquo; au serveur pour
	  s'assurer qu'il fonctionne toujours.  S'il ne re&ccedil;oit
	  pas de r&eacute;ponse dans un laps de temps raisonnable,
	  <application>ypbind</application> consid&eacute;rera ne plus
	  &ecirc;tre attach&eacute; au domaine et recommencera
	  &agrave; diffuser des requ&ecirc;tes dans l'espoir de
	  trouver un autre seveur.</para>

	<sect4>
	  <title>Configurer un client NIS</title>
	  <indexterm>
	    <primary>NIS</primary>
	    <secondary>configuration du client</secondary>
	  </indexterm>
	  <para>Configurer une machine &os; en client NIS est assez
	    simple.</para>

	  <procedure>
	    <step>
	      <para>Editez le fichier
		<filename>/etc/rc.conf</filename> et ajoutez les lignes
		suivantes afin de d&eacute;finir le nom de domaine NIS
		et lancez <application>ypbind</application> au
		d&eacute;marrage du r&eacute;seau:</para>

	      <programlisting>nisdomainname="test-domain"
nis_client_enable="YES"</programlisting>
	    </step>

	    <step>
	      <para>Pour importer tous les mots de passe disponibles
		du serveur NIS, effacez tous les comptes utilisateur de
		votre fichier <filename>/etc/master.passwd</filename> et
		utilisez <command>vipw</command> pour ajouter la ligne
		suivante &agrave; la fin du fichier:</para>

	      <programlisting>+:::::::::</programlisting>

	      <note>
		<para>Cette ligne permet &agrave; chaque utilisateur
		  ayant un compte valide dans les tables de mots de
		  passe du serveur d'avoir un compte sur le client.  Il
		  y a plusieurs fa&ccedil;ons de configurer votre client
		  NIS en modifiant cette ligne.  Consultez la section
		  <link linkend="network-netgroups">groupes
		  r&eacute;seau</link> plus bas pour plus
		  d'informations.  Pour en savoir plus, reportez-vous
		  &agrave; l'ouvrage <literal>Managing NFS and
		  NIS</literal> de chez O'Reilly.</para>
	      </note>

	      <note>
		<para>Vous devriez conservez au moins un compte local
		  (i.e. non-import&eacute; via NIS) dans votre fichier
		  <filename>/etc/master.passwd</filename> et ce compte
		  devrait &eacute;galement &ecirc;tre membre du groupe
		  <groupname>wheel</groupname>.  Si quelque chose se
		  passe mal avec NIS, ce compte peut &ecirc;tre
		  utilis&eacute; pour ouvrir une session &agrave;
		  distance, devenir <username>root</username>, et
		  effectuer les corrections n&eacute;cessaires.</para>
	      </note>
	    </step>

	    <step>
	      <para>Pour importer tous les groupes disponibles du
		serveur NIS, ajoutez cette ligne &agrave; votre fichier
		<filename>/etc/group</filename>:</para>

	      <programlisting>+:*::</programlisting>
	    </step>
	  </procedure>

	  <para>Une fois que c'est fait, vous devriez &ecirc;tre en
	    mesure d'ex&eacute;cuter <command>ypcat passwd</command>
	    et voir la table des mots de passe du serveur NIS.</para>
	</sect4>
      </sect3>
    </sect2>

    <sect2>
      <title>S&eacute;curit&eacute; du NIS</title>

      <para>De fa&ccedil;on g&eacute;n&eacute;rale, n'importe quel
	utilisateur distant peut &eacute;mettre une requ&ecirc;te RPC
	&agrave; destination de &man.ypserv.8; et
	r&eacute;cup&eacute;rer le contenu de vos tables NIS, en
	supposant que l'utilisateur distant connaisse votre nom de
	domaine.  Pour &eacute;viter ces transactions non
	autoris&eacute;es, &man.ypserv.8; dispose d'une
	fonctionnalit&eacute; appel&eacute;e &ldquo;securenets&rdquo;
	qui peut &ecirc;tre utilis&eacute;e pour restreindre
	l'acc&egrave;s &agrave; un ensemble donn&eacute; de machines.
	Au d&eacute;marrage, &man.ypserv.8; tentera de charger les
	informations sur les &ldquo;securenets&rdquo; &agrave; partir
	d'un fichier nomm&eacute;
	<filename>/var/yp/securenets</filename>.</para>

      <note>
	<para>Ce chemin d'acc&egrave;s peut varier en fonction du
	  chemin d'acc&egrave;s d&eacute;fini par l'option
	  <option>-p</option>.  Ce fichier contient des entr&eacute;es
	  sous la forme de d&eacute;finitions de r&eacute;seau et d'un
	  masque de sous-r&eacute;seau s&eacute;par&eacute; par une
	  espace.  Les lignes commen&ccedil;ant par un &ldquo;#&rdquo;
	  sont consid&eacute;r&eacute;es comme des commentaires.  Un
	  exemple de fichier <filename>securenets</filename> peut
	  ressembler &agrave; ceci:</para>
      </note>

      <programlisting># autorise les connexions depuis la machine locale -- obligatoire
127.0.0.1     255.255.255.255
# autorise les connexions de n'importe quelle machine
# du r&eacute;seau 192.168.128.0
192.168.128.0 255.255.255.0
# autorise les connexions de n'importe quelle machine
# entre 10.0.0.0 et 10.0.15.255
# y compris les machines du laboratoire de test
10.0.0.0      255.255.240.0</programlisting>

      <para>Si &man.ypserv.8; re&ccedil;oit une requ&ecirc;te d'une
	adresse qui satisfait &agrave; ces r&egrave;gles, il la traite
	normalement.  Si une adresse ne correspond pas aux
	r&egrave;gles, la requ&ecirc;te sera ignor&eacute;e et un
	message d'avertissement sera enregistr&eacute;.  Si le fichier
	<filename>/var/yp/securenets</filename> n'existe pas,
	<command>ypserv</command> autorisera les connexions &agrave;
	partir de n'importe quelle machine.</para>

      <para>Le programme <command>ypserv</command> supporte
	&eacute;galement l'outil <application>tcpwrapper</application>
	de Wietse Venema.  Cela permet &agrave; l'administrateur
	d'utiliser les fichiers de configuration de
	<application>tcpwrapper</application> pour contr&ocirc;ler les
	acc&egrave;s &agrave; la place de
	<filename>/var/yp/securenets</filename>.</para>

      <note>
	<para>Bien que ces deux m&eacute;canismes de contr&ocirc;le
	  d'acc&egrave;s offrent une certaine s&eacute;curit&eacute;, il
	  sont, de m&ecirc;me que le test du port
	  privil&eacute;gi&eacute;, vuln&eacute;rables aux attaques par
	  &ldquo;usurpation&rdquo; d'adresses.  Tout le trafic relatif
	  &agrave; NIS devrait &ecirc;tre bloqu&eacute; par votre
	  coupe-feu.</para>

	<para>Les serveurs utilisant
	  <filename>/var/yp/securenets</filename> pourront
	  &eacute;chouer &agrave; traiter les requ&ecirc;tes de
	  clients NIS l&eacute;gitimes avec des impl&eacute;mentation
	  TCP/IP archa&iuml;ques.  Certaines de ces
	  impl&eacute;mentations positionnent &agrave; z&eacute;ro les
	  bits de la partie machine de l'adresse IP lors de diffusions
	  et/ou sont incapables respecter le masque de
	  sous-r&eacute;seau lors du calcul de l'adresse de diffusion.
	  Alors que certains de ces probl&egrave;mes peuvent
	  &ecirc;tre corrig&eacute;s en modifiant la configuration du
	  client, d'autres probl&egrave;mes peuvent forcer le retrait
	  des syst&egrave;mes clients fautifs ou l'abandon de
	  <filename>/var/yp/securenets</filename>.</para>

	<para>Utiliser <filename>/var/yp/securenets</filename> sur un
	  serveur avec une impl&eacute;mentation TCP/IP archa&iuml;que
	  est une mauvaise id&eacute;e et sera &agrave; l'origine de
	  pertes de la fonctionnalit&eacute; NIS pour une grande
	  partie de votre r&eacute;seau.</para>

	<indexterm><primary>tcpwrapper</primary></indexterm>
	<para>L'utilisation du syst&egrave;me
	  <application>tcpwrapper</application> augmente les temps de
	  latence de votre serveur NIS.  Le d&eacute;lai
	  suppl&eacute;mentaire peut &ecirc;tre suffisament long pour
	  d&eacute;passer le d&eacute;lai d'attente des programmes
	  clients, tout particuli&egrave;rement sur des r&eacute;seaux
	  charg&eacute;s ou avec des serveurs NIS lents.  Si un ou
	  plusieurs de vos syst&egrave;mes clients souffrent de ces
	  sympt&ocirc;mes, vous devrez convertir les syst&egrave;mes
	  clients en question en serveurs esclaves NIS et les forcer
	  &agrave; se rattacher &agrave; eux-m&ecirc;mes.</para>
      </note>
    </sect2>

    <sect2>
      <title>Interdire l'acc&egrave;s &agrave; certains
	utilisateurs</title>

      <para>Dans notre laboratoire, il y a une machine
	<hostid>basie</hostid> qui est suppos&eacute;e &ecirc;tre une
	station de travail de la facult&eacute;.  Nous ne voulons pas
	retirer cette machine du domaine NIS, le fichier
	<filename>passwd</filename> sur le serveur ma&icirc;tre NIS
	contient les comptes pour la facult&eacute; et les
	&eacute;tudiants.  Que pouvons-nous faire?</para>

      <para>Il existe une m&eacute;thode pour interdire &agrave;
	certains utilisateurs d'ouvrir une session sur une machine,
	m&ecirc;me s'ils sont pr&eacute;sents dans la base de
	donn&eacute;es NIS.  Pour cela, tout ce dont vous avez besoin
	de faire est d'ajouter
	<emphasis>-<replaceable>nom_utilisateur</replaceable></emphasis>
	&agrave; la fin du fichier
	<filename>/etc/master.passwd</filename> sur la machine
	cliente, o&ugrave; <replaceable>nom_utilisateur</replaceable>
	est le nom de l'utilisateur auquel vous d&eacute;sirez refuser
	l'acc&egrave;s.  Ceci doit &ecirc;tre fait de
	pr&eacute;f&eacute;rence avec <command>vipw</command>, puisque
	<command>vipw</command> contr&ocirc;lera vos changements au
	fichier <filename>/etc/master.passwd</filename>, et
	reg&eacute;n&eacute;rera automatiquement la base de
	donn&eacute;es &agrave; la fin de l'&eacute;dition.  Par
	exemple, si nous voulions interdire l'ouverture de session
	&agrave; l'utilisateur <username>bill</username> sur la
	machine <hostid>basie</hostid> nous ferions:</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 &:/:/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>Contribution de </contrib>
	  </author>
	</authorgroup>
      </sect2info>

      <title>Utiliser les groupes r&eacute;seau
	(&ldquo;netgroups&rdquo;)</title>
      <indexterm><primary>groupes r&eacute;seau</primary></indexterm>

      <para>La m&eacute;thode pr&eacute;sent&eacute;e dans la section
	pr&eacute;c&eacute;dente fonctionne relativement bien si vous
	avez besoin de r&egrave;gles sp&eacute;cifiques pour un petit
	nombre d'utilisateurs et/ou de machines.  Sur les
	r&eacute;seaux plus important, vous
	<emphasis>oublierez</emphasis> d'interdire l'acc&egrave;s aux
	machines sensibles &agrave; certains utilisateurs, ou vous
	devrez m&ecirc;me modifier chaque machine
	s&eacute;par&eacute;ment, perdant par l&agrave; m&ecirc;me les
	avantages du NIS: l'administration
	<emphasis>centralis&eacute;e</emphasis>.</para>

      <para>La solution des d&eacute;veloppeurs du NIS pour ce
	probl&egrave;me est appel&eacute; <emphasis>groupes
	r&eacute;seau</emphasis> (&ldquo;netgroups&rdquo;).  Leur
	objet et d&eacute;finition peuvent &ecirc;tre compar&eacute;s
	aux groupes utilis&eacute;s par les syst&egrave;mes &unix;.
	La principale diff&eacute;rence &eacute;tant l'absence
	d'identifiants (ID) num&eacute;riques et la capacit&eacute; de
	d&eacute;finir un groupe r&eacute;seau &agrave; l'aide de
	comptes utilisateur et d'autres groupes r&eacute;seau.</para>

      <para>Les groupes r&eacute;seau furent d&eacute;velopp&eacute;s
	pour g&eacute;rer des r&eacute;seaux importants et complexes
	avec des centaines de machines et d'utilisateurs.  C'est une
	bonne option si vous &ecirc;tes forc&eacute;s de faire avec
	une telle situation.  Cependant leur complexit&eacute; rend
	impossible une explication avec des exemples simples.
	L'exemple utilis&eacute; dans le reste de cette section met en
	&eacute;vidence ce probl&egrave;me.</para>

      <para>Supposons que l'introduction avec succ&egrave;s de NIS
	dans votre laboratoire a retenu l'attention de vos
	sup&eacute;rieurs.  Votre mission suivante est
	d'&eacute;tendre la couverture de votre domaine NIS &agrave;
	d'autres machines sur le campus.  Les deux tables contiennent
	les noms des nouveaux utilisateurs et des nouvelles machines
	ainsi qu'une courte description de chacuns.</para>

      <informaltable frame="none" pgwide="1">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>Nom(s) d'utilisateurs</entry>
	      <entry>Description</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry><username>alpha</username>,
		<username>beta</username></entry>
	      <entry>Les employ&eacute;s du d&eacute;partement IT
		(&ldquo;Information Technology&ldquo;)</entry>
	    </row>

	    <row>
	      <entry><username>charlie</username>,
		<username>delta</username></entry>
	      <entry>Les nouveaux apprentis du d&eacute;partement
		IT</entry>
	    </row>

	    <row>
	      <entry><username>echo</username>,
		<username>foxtrott</username>,
		<username>golf</username>, ...</entry>
	      <entry>Les employ&eacute;s ordinaires</entry>
	    </row>

	    <row>
	      <entry><username>able</username>,
		<username>baker</username>, ...</entry>
	      <entry>Les internes actuels</entry>
	</tgroup>
      </informaltable>

      <informaltable frame="none" pgwide="1">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>Nom(s) de machines</entry>
	      <entry>Description</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>Vos serveurs les plus importants.  Seuls les
		employ&eacute;s du d&eacute;partement IT sont
		autoris&eacute;s &agrave; ouvrir des sessions sur ces
		machines.</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>Serveurs moins importants.  Tous les membres du
		laboratoire IT sont autoris&eacute;s &agrave; ouvrir des
		sessions sur ces machines.</entry>
	    </row>

	    <row>
	      <entry><hostid>one</hostid>, <hostid>two</hostid>,
		<hostid>three</hostid>, <hostid>four</hostid>,
		...</entry>
	      <entry>Stations de travail ordinaires.  Seuls les
		employ&eacute;s <emphasis>r&eacute;els</emphasis> sont
		autoris&eacute;s &agrave; utiliser ces machines.</entry>
	    </row>

	    <row>
	      <entry><hostid>trashcan</hostid></entry>
	      <entry>Une tr&egrave;s vielle machine sans
		donn&eacute;es sensibles.  M&ecirc;me les internes
		peuvent utiliser cette machine.</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

      <para>Si vous avez essay&eacute; d'impl&eacute;menter ces
	restrictions en bloquant s&eacute;par&eacute;ment chaque
	utilisateur, vous avez d&ucirc; ajouter une ligne
	<literal>-<replaceable>utilisateur</replaceable></literal>
	&agrave; chaque fichier <filename>passwd</filename> de chaque
	syst&egrave;me pour chaque utilisateur non-autoris&eacute;
	&agrave; ouvrir une session sur le syst&egrave;me.  Si vous
	ometter ne serait-ce qu'une entr&eacute;e, vous aurez des
	probl&egrave;mes.  Il doit &ecirc;tre possible de faire cela
	lors de la configuration initiale, cependant vous
	<emphasis>finirez</emphasis> par oublier d'ajouter les lignes
	pour de nouveaux utilisateurs lors d'op&eacute;rations
	quotidiennes.  Apr&egrave;s tout, Murphy &eacute;tait
	quelqu'un d'optimiste.</para>

      <para>Traiter cette situation avec les groupes r&eacute;seau
	pr&eacute;sente plusieurs avantages.  Chaque utilisateur n'a
	pas besoin d'&ecirc;tre trait&eacute;
	s&eacute;par&eacute;ment; vous assignez un utilisateur
	&agrave; un ou plusieurs groupes r&eacute;seau et autorisez ou
	refusez l'ouverture de session &agrave; tous les membres du
	groupe r&eacute;seau.  Si vous ajoutez une nouvelle machine,
	vous n'aurez &agrave; d&eacute;finir les restrictions
	d'ouverture de session que pour les groupes r&eacute;seau.
	Ces modifications sont ind&eacute;pendantes les unes des
	autres, plus de &ldquo;pour chaque combinaison d'utilisateur
	et de machine faire...&rdquo;  Si votre configuration NIS est
	r&eacute;fl&eacute;chie, vous n'aurez &agrave; modifier qu'une
	configuration centrale pour autoriser ou refuser
	l'acc&egrave;s aux machines.</para>

      <para>La premi&egrave;re &eacute;tape est l'initialisation de la
	table NIS du groupe r&eacute;seau.  La version &os;
	d'&man.ypinit.8; ne cr&eacute;e pas de table par
	d&eacute;faut, mais son impl&eacute;mentation NIS la
	supportera une fois cr&eacute;&eacute;e.  Pour cr&eacute;er
	une table vide, tapez simplement</para>

      <screen>ellington&prompt.root; <userinput>vi /var/yp/netgroup</userinput></screen>

      <para>et commencez &agrave; ajouter du contenu.  Pour notre
	exemple, nous avons besoin de quatre groupes r&eacute;seau:
	les employ&eacute;es du d&eacute;partement IT, les apprentis
	du d&eacute;partement IT, les employ&eacute;s normaux et les
	internes.</para>

      <programlisting>IT_EMP  (,alpha,test-domain)    (,beta,test-domain)
IT_APP  (,charlie,test-domain)  (,delta,test-domain)
USERS   (,echo,test-domain)     (,foxtrott,test-domain) \
        (,golf,test-domain)
INTERNS (,able,test-domain)     (,baker,test-domain)</programlisting>

      <para><literal>IT_EMP</literal>, <literal>IT_APP</literal> etc.
	sont les noms des groupes r&eacute;seau.  Chaque groupement
	entre parenth&egrave;ses ajoute un ou plusieurs comptes
	utilisateurs aux groupes.  Les trois champs dans un groupement
	sont:</para>

      <orderedlist>
	<listitem>
	  <para>Le nom de la/les machine(s) o&ugrave; les
	    &eacute;l&eacute;ments suivants sont valides.  Si vous ne
	    pr&eacute;cisez pas un nom de machine, l'entr&eacute;e est
	    valide sur toutes les machines.  Si vous pr&eacute;cisez un
	    nom de machine, vous p&eacute;n&eacute;trerez dans un
	    royaume obscure, d'horreur et de confusion totale.</para>
	</listitem>

	<listitem>
	  <para>Le nom du compte qui appartient au groupe
	    r&eacute;seau.</para>
	</listitem>

	<listitem>
	  <para>Le domaine NIS pour le compte.  Vous pouvez importer
	    les comptes d'autres domaines NIS dans votre groupe
	    r&eacute;seau si vous &ecirc;tes une de ces personnes
	    malchanceuses avec plus d'un domaine NIS.</para>
	</listitem>
      </orderedlist>

      <para>Chacun de ces champs peut contenir des jokers.  Consultez
	la page de manuel &man.netgroup.5; pour plus de
	d&eacute;tails.</para>

      <note>
	<indexterm><primary>groupes r&eacute;seau</primary></indexterm>
	<para>Les noms de groupes r&eacute;seau plus long que 8
	  caract&egrave;res ne devraient pas &ecirc;tre utilis&eacute;s,
	  tout particuli&egrave;rement si vous avez des machines
	  utilisant d'autres syst&egrave;mes d'exploitation dans votre
	  domaine NIS.  Les noms sont sensibles &agrave; la casse des
	  caract&egrave;res; utiliser des majuscules pour vos noms de
	  groupes r&eacute;seau est une m&eacute;thode simple pour
	  distinguer les utilisateurs, les machines et les noms de
	  groupes r&eacute;seau.</para>

	<para>Certains clients NIS (autres que &os;) ne peuvent
	  g&eacute;rer les groupes r&eacute;seau avec un grand nombre
	  d'entr&eacute;es.  Par exemple, certaines anciennes versions
	  de &sunos; commencent &agrave; causer des probl&egrave;mes
	  si un groupe r&eacute;seau contient plus de 15
	  <emphasis>entr&eacute;es</emphasis>.  Vous pouvez contourner
	  cette limite en cr&eacute;ant plusieurs sous-groupes
	  r&eacute;seau avec 15 utilisateurs ou moins et un
	  v&eacute;ritable groupe r&eacute;seau constitu&eacute; des
	  sous-groupes r&eacute;seau:</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>Vous pouvez r&eacute;p&eacute;ter ce processus si vous
	  avez besoin de plus de 255 utilisateurs dans un seul groupe
	  r&eacute;seau.</para>
      </note>

      <para>Activer et propager votre nouvelle table NIS est
	simple:</para>

      <screen>ellington&prompt.root; <userinput>cd /var/yp</userinput>
ellington&prompt.root; <userinput>make</userinput></screen>

      <para>Ceci g&eacute;n&eacute;rera les trois tables NIS
	<filename>netgroup</filename>,
	<filename>netgroup.byhost</filename> et
	<filename>netgroup.byuser</filename>.  Utilisez &man.ypcat.1;
	pour contr&ocirc;ler si vos nouvelles tables NIs sont
	disponibles:</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>La sortie devrait &ecirc;tre semblable au contenu de
	<filename>/var/yp/netgroup</filename>.  La deuxi&egrave;me
	commande ne produira pas de sortie si vous n'avez pas
	pr&eacute;cis&eacute; les groupes r&eacute;seau
	sp&eacute;cifiques &agrave; une machine.  La troisi&egrave;me
	commande peut &ecirc;tre utilis&eacute;e pour obtenir les
	listes des groupes r&eacute;seau pour un utilisateur.</para>

      <para>La configuration du client est plut&ocirc;t simple.  Pour
	configurer le serveur <hostid>war</hostid>, vous devez lancer
	&man.vipw.8; et remplacer la ligne</para>

      <programlisting>+:::::::::</programlisting>

      <para>par</para>

      <programlisting>+@IT_EMP:::::::::</programlisting>

      <para>Maintenant, seules les donn&eacute;es pour les
	utilisateurs d&eacute;finis dans le groupe r&eacute;seau
	<literal>IT_EMP</literal> sont import&eacute;es dans la base
	de donn&eacute;es de mots de passe de <hostid>war</hostid> et
	seuls ces utilisateurs sont autoris&eacute;s &agrave; ouvrir
	une session.</para>

      <para>Malheureusement, cette limitation s'applique
	&eacute;galement &agrave; la fonction <literal>~</literal> de
	l'interpr&eacute;teur de commandes et toutes les routines de
	conversion entre nom d'utilisateur et identifiant
	num&eacute;rique d'utilisateur.  En d'autres termes,
	<command>cd ~<replaceable>utilisateur</replaceable></command>
	ne fonctionnera pas, et <command>ls -l</command> affichera
	l'ID num&eacute;rique &agrave; la place du nom d'utilisateur
	et <command>find . -user joe -print</command> &eacute;chouera
	avec le message d'erreur <errorname>No such user</errorname>.
	Pour corriger cela, vous devrez importer toutes les
	entr&eacute;es d'utilisateurs <emphasis>sans leur autoriser
	l'ouverture de session sur vos serveurs</emphasis>.</para>

      <para>Cela peut &ecirc;tre fait en ajoutant une autre ligne au
	fichier <filename>/etc/master.passwd</filename>.  Cette ligne
	devrait contenir:</para>

      <para><literal>+:::::::::/sbin/nologin</literal>, signifiant
	&ldquo;Importer toutes les entr&eacute;es mais remplacer
	l'interpr&eacute;teur de commandes avec
	<filename>/sbin/nologin</filename> dans les entr&eacute;es
	import&eacute;es&rdquo;.  Vous pouvez remplacer n'importe quel
	champ dans l'entr&eacute;e <literal>passwd</literal> en
	pla&ccedil;ant une valeur par d&eacute;faut dans votre fichier
	<filename>/etc/master.passwd</filename>.</para>

      <!-- Been there, done that, got the scars to prove it - ue -->
      <warning>
	<para>Assurez-vous que
	  <literal>+:::::::::/sbin/nologin</literal> est plac&eacute;e
	  apr&egrave;s <literal>+@IT_EMP:::::::::</literal>.  Sinon,
	  tous les comptes utilisateur import&eacute;s du NIS auront
	  <filename>/sbin/nologin</filename> comme interpr&eacute;teur
	  de commandes.</para>
      </warning>

      <para>Apr&egrave;s cette modification, vous ne devrez uniquement
	que modifier une des tables NIS si un nouvel employ&eacute;
	rejoint le d&eacute;partement IT.  Vous pourrez utiliser une
	approche similaire pour les serveurs moins importants en
	rempla&ccedil;ant l'ancienne ligne
	<literal>+:::::::::</literal> dans leur version locale de
	<filename>/etc/master.passwd</filename> avec quelque chose de
	semblable &agrave; ceci:</para>

      <programlisting>+@IT_EMP:::::::::
+@IT_APP:::::::::
+:::::::::/sbin/nologin</programlisting>

      <para>Les lignes correspondantes pour les stations de travail
	normales seraient:</para>

      <programlisting>+@IT_EMP:::::::::
+@USERS:::::::::
+:::::::::/sbin/nologin</programlisting>

      <para>Tout &eacute;tait parfait jusqu'au changement de politique
	quelques semaines plus tard:  le d&eacute;partement IT
	commen&ccedil;a &agrave; engager des internes.  Les internes
	du d&eacute;partement IT sont autoris&eacute;s &agrave;
	utiliser les stations de travail normales et les serveurs les
	moins importants; les apprentis du d&eacute;partement IT sont
	autoris&eacute;s &agrave; ouvrir des sessions sur les serveurs
	principaux.  Vous ajoutez alors un nouveau groupe
	r&eacute;seau <literal>IT_INTERN</literal>, ajoutez les
	nouveaux internes IT &agrave; ce groupe r&eacute;seau et
	commencez &agrave; modifier la configuration sur chaque
	machine...  Comme disait l'ancien: &ldquo;Erreurs dans la
	planification centralis&eacute;e m&egrave;nent &agrave; un
	d&eacute;sordre g&eacute;n&eacute;ral&rdquo;.</para>

      <para>La capacit&eacute; de NIS &agrave; cr&eacute;er des
	groupes r&eacute;seau &agrave; partir d'autres groupes
	r&eacute;seau peut &ecirc;tre utilis&eacute;e pour
	&eacute;viter de telles situations.  Une possibilit&eacute;
	est la cr&eacute;ation de groupes r&eacute;seau bas&eacute;s
	sur le r&ocirc;le du groupe.  Par exemple vous pourriez
	cr&eacute;er un groupe r&eacute;seau appel&eacute;
	<literal>BIGSRV</literal> pour d&eacute;finir les restrictions
	d'ouverture de session pour les serveurs importants, un autre
	groupe r&eacute;seau appel&eacute; <literal>SMALLSRV</literal>
	pour les serveurs moins importants et un troisi&egrave;me
	groupe r&eacute;seau nomm&eacute; <literal>USERBOX</literal>
	pour les stations de travail normales.  Chacun de ces groupes
	r&eacute;seau contient les groupes r&eacute;seau
	autoris&eacute;s &agrave; ouvrir des sessions sur ces
	machines.  Les nouvelles entr&eacute;es pour la table NIS de
	groupes r&eacute;seau devrait ressembler &agrave; ceci:</para>

      <programlisting>BIGSRV    IT_EMP  IT_APP
SMALLSRV  IT_EMP  IT_APP  ITINTERN
USERBOX   IT_EMP  ITINTERN USERS</programlisting>

      <para>Cette m&eacute;thode qui consiste &agrave; d&eacute;finir
	des restrictions d'ouverture de session fonctionne
	relativement bien si vous pouvez d&eacute;finir des groupes de
	machines avec des restrictions identiques.  Malheureusement,
	ceci est une exception et pas une
	g&eacute;n&eacute;ralit&eacute;.  La plupart du temps, vous
	aurez besoin de d&eacute;finir des restrictions d'ouverture de
	session par machine.</para>

      <para>La d&eacute;finition de groupes r&eacute;seau
	sp&eacute;cifiques aux machines est une autre
	possibilit&eacute; pour traiter la modification de politique
	soulign&eacute;e pr&eacute;c&eacute;dement.  Dans ce
	sc&eacute;nario, le fichier
	<filename>/etc/master.passwd</filename> de chaque machine
	contient deux lignes d&eacute;butant par &ldquo;+&rdquo;.  La
	premi&egrave;re ajoute un groupe r&eacute;seau avec les
	comptes autoris&eacute;s &agrave; ouvrir une session sur cette
	machine, la seconde ajoute tous les comptes avec
	l'interpr&eacute;teur de commandes
	<filename>/sbin/nologin</filename>.  C'est une bonne
	id&eacute;e d'utiliser des majuscules pour le nom de la
	machine ainsi que celui du groupe r&eacute;seau.  Dans
	d'autres termes, les lignes en question devraient &ecirc;tre
	semblables &agrave;:</para>

      <programlisting>+@<replaceable>NOMMACHINE</replaceable>:::::::::
+:::::::::/sbin/nologin</programlisting>

      <para>Une fois cette t&acirc;che achev&eacute;e pour toutes vos
	machines, vous n'aurez plus jamais &agrave; modifier les
	versions locales du fichier
	<filename>/etc/master.passwd</filename>.  Tous les changements
	futurs peuvent &ecirc;tre g&eacute;r&eacute;s en modifiant la
	table NIS.  Voici un exemple d'une table de groupes
	r&eacute;seau possible pour ce sc&eacute;nario avec quelques
	petits plus:</para>

      <programlisting># D&eacute;finir tout d'abord les groupes d'utilisateurs
IT_EMP    (,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)
ITINTERN  (,kilo,test-domain)     (,lima,test-domain)
D_INTERNS (,able,test-domain)     (,baker,test-domain)
#
# D&eacute;finir, maintenant, des groupes bas&eacute;s sur les r&ocirc;les
USERS     DEPT1   DEPT2     DEPT3
BIGSRV    IT_EMP  IT_APP
SMALLSRV  IT_EMP  IT_APP    ITINTERN
USERBOX   IT_EMP  ITINTERN  USERS
#
# Et un groupe pour les t&acirc;ches sp&eacute;ciales
# Permettre &agrave; echo et golf d'acc&eacute;der &agrave; notre machine anti-virus
SECURITY  IT_EMP  (,echo,test-domain)  (,golf,test-domain)
#
# les groupes r&eacute;seau bas&eacute;s sur un ensemble de machines
# Nos principaux serveurs
WAR       BIGSRV
FAMINE    BIGSRV
# L'utilisateur india a besoin d'un acc&egrave;s &agrave; ce serveur
POLLUTION  BIGSRV  (,india,test-domain)
#
# Celle-ci est tr&egrave;s importante et n&eacute;cessite plus de restrictions d'acc&egrave;s
DEATH     IT_EMP
#
# La machine anti-virus mentionn&eacute;e pr&eacute;c&eacute;demment
ONE       SECURITY
#
# Restreindre l'acc&egrave;s &agrave; une machine &agrave; un seul utilisateur
TWO       (,hotel,test-domain)
# [...d'autres groupes suivent]</programlisting>

      <para>Si vous utilisez une sorte de base de donn&eacute;es pour
	g&eacute;rer vos comptes utilisateur, vous devriez pouvoir
	cr&eacute;er la premi&egrave;re partie de la table avec les
	outils de votre base de donn&eacute;es.  De cette
	fa&ccedil;on, les nouveaux utilisateurs auront automatiquement
	acc&egrave;s aux machines.</para>

      <para>Dernier avertissement: il n'est pas toujours
	conseill&eacute; d'utiliser des groupes r&eacute;seau
	bas&eacute;s sur les machines.  Si vous d&eacute;ployez
	quelques douzaines ou m&ecirc;me centaines de machines
	identiques pour des laboratoires pour &eacute;tudiants, vous
	devriez utiliser des groupes bas&eacute;s sur les types
	d'utilisateurs plut&ocirc;t que sur les machines pour
	conserver la taille de la table NIS dans des limites
	raisonables.</para>
    </sect2>

    <sect2>
      <title>Les choses importantes &agrave; ne pas oublier</title>

      <para>Il y a un certain nombre de choses que vous devrez
	effectuer diff&eacute;rement maintenant que vous &ecirc;tes
	dans un environnement NIS.</para>

      <itemizedlist>
	<listitem>
	  <para>A chaque fois que vous d&eacute;sirez ajouter un
	    utilisateur au laboratoire, vous devez l'ajouter
	    <emphasis>uniquement</emphasis> sur le serveur NIS et
	    <emphasis>vous devez ne pas oublier de reconstruire les
	    tables NIS</emphasis>.  Si vous oubliez de le faire, le
	    nouvel utilisateur ne pourra pas ouvrir de session en dehors
	    du serveur ma&icirc;tre NIS.  Par exemple, si nous devons
	    ajouter au laboratoire un nouvel utilisateur
	    <username>jsmith</username>, nous ferions:</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>Vous pouvez lancer <command>adduser jsmith</command>
	    &agrave; la place de <command>pw useradd
	    jsmith</command>.</para>
	</listitem>
	<listitem>
	  <para><emphasis>Conservez les comptes d'administration en
	    dehors des tables NIS</emphasis>.  Vous ne voulez pas
	    propager les comptes et mots de passe d'administration sur
	    les machines qui auront des utilisateurs qui ne devraient
	    pas avoir acc&egrave;s &agrave; ces comptes.</para>
	</listitem>
	<listitem>
	  <para><emphasis>S&eacute;curisez les serveurs ma&icirc;tre
	    et esclave NIS, et reduisez leur temps
	    d'arr&ecirc;t</emphasis>.  Si quelqu'un tente soit
	    d'attaquer soit de simplement arr&ecirc;ter ces machines, de
	    nombreuses personnes ne pourront plus ouvrir de session dans
	    le laboratoire.</para>

	  <para>C'est la principale faiblesse d'un syst&egrave;me
	    d'administration centralis&eacute;e.  Si vous ne
	    prot&eacute;gez pas vos serveurs NIS, vous aurez &agrave;
	    faire face &agrave; de nombreux utilisateurs
	    m&eacute;contents!</para>
	</listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Compatibilit&eacute; NIS version 1</title>

      <para><application>ypserv</application> sous &os; offre un
	support des clients NIS version 1.  L'impl&eacute;mentation
	NIS de &os; utilise uniquement le protocole NIS version 2,
	cependant d'autres impl&eacute;mentations disposent du support
	pour le protocole version 1 pour des raisons de
	compatibilit&eacute; avec d'anciens syst&egrave;mes.  Les
	&ldquo;daemons&rdquo; <application>ypbind</application>
	fournis avec ces syst&egrave;mes tenteront de s'attacher
	&agrave; un serveur NIS version 1 m&ecirc;me s'ils n'en ont
	pas besoin (et ils pourront continuer &agrave; diffuser des
	requ&ecirc;tes pour en trouver un m&ecirc;me apr&egrave;s
	avoir re&ccedil;u une r&eacute;ponse d'un serveur NIS version
	2).  Notez que bien que les requ&ecirc;tes des clients normaux
	soient support&eacute;es, cette version
	d'<application>ypserv</application> ne supporte pas les
	requ&ecirc;tes de tranfert de tables version 1; par
	cons&eacute;quent il n'est pas possible de l'utiliser comme
	serveur ma&icirc;tre ou esclave avec des serveurs NIS plus
	anciens qui ne supportent que la version 1 du protocole.
	Heureusement, il n'y a, aujourd'hui, presque plus de serveurs
	de ce type actifs.</para>
    </sect2>

    <sect2 id="network-nis-server-is-client">
      <title>Serveurs NIS qui sont aussi des clients NIS</title>

      <para>Il faut faire attention quand on utilise
	<application>ypserv</application> dans un domaine avec
	plusieurs serveurs NIS qui sont &eacute;galement des clients
	NIS.  Il est en g&eacute;n&eacute;ral pr&eacute;f&eacute;rable
	de forcer les serveurs de se rattacher &agrave;
	eux-m&ecirc;mes plut&ocirc;t que de les laisser diffuser des
	requ&ecirc;tes de rattachement et eventuellement se rattacher
	r&eacute;ciproquement les uns aux autres.  Il peut en
	r&eacute;sulter de curieux probl&egrave;mes si l'un des
	serveurs tombe et que d'autres en d&eacute;pendent.  Tous les
	clients finiront par d&eacute;passer leur d&eacute;lai
	d'attente et se tenteront de se rattacher &agrave; d'autres
	serveurs, mais ce d&eacute;lai peut &ecirc;tre
	consid&eacute;rable et le probl&egrave;me persistera puisque
	les serveurs peuvent &agrave; nouveau se rattacher les uns aux
	autres.</para>

      <para>Vous pouvez obliger une machine &agrave; se rattacher
	&agrave; un serveur particulier en ex&eacute;cutant
	<command>ypbind</command> avec l'option <option>-S</option>.
	Si vous ne d&eacute;sirez pas faire cela &agrave; la main
	&agrave; chaque fois que vous red&eacute;marrez votre serveur
	NIS, vous pouvez ajouter les lignes quivantes &agrave; votre
	fichier <filename>/etc/rc.conf</filename>:</para>

      <programlisting>nis_client_enable="YES"	# run client stuff as well
nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</replaceable>"</programlisting>

      <para>Voir la page de manuel de &man.ypbind.8; pour plus
	d'informations.</para>
    </sect2>

    <sect2>
      <title>Formats des mots de passe</title>
      <indexterm>
	<primary>NIS</primary>
	<secondary>formats des mots de passe</secondary>
      </indexterm>
      <para>Un des probl&egrave;mes les plus courants que l'on
	rencontre en mettant en oeuvre NIS est celui de la
	compatibilit&eacute; des formats de mots de passe.  Si votre
	serveur NIS utilise des mots de passe chiffr&eacute;s avec
	l'algorithme DES, il ne supportera que les clients utilisant
	&eacute;galement DES.  Par exemple, si vous avez des client NIS
	&solaris; sur votre r&eacute;seau, alors vous aurez presque
	certainement besoin d'utiliser des mots de passe chiffr&eacute;s
	avec le syst&egrave;me DES.</para>

      <para>Pour d&eacute;terminer quel format vos serveurs et clients
	utilisent, consultez le fichier
	<filename>/etc/login.conf</filename>.  Si la machine est
	configur&eacute;e pour utiliser des mots de passe
	chiffr&eacute;s avec DES, alors la classe
	<literal>default</literal> contiendra une entr&eacute;e comme
	celle-ci:</para>

      <programlisting>default:\
	:passwd_format=des:\
	:copyright=/etc/COPYRIGHT:\
	[Entr&eacute;es suivantes omises]</programlisting>

      <para>D'autres valeurs possibles pour la capacit&eacute;
	<literal>passwd_format</literal> sont <literal>blf</literal>
	et <literal>md5</literal> (respectivement pour les chiffrages
	de mots de passe Blowfish et MD5).</para>

      <para>Si vous avez modifi&eacute; le fichier
	<filename>/etc/login.conf</filename>, vous devrez
	&eacute;galement reg&eacute;n&eacute;rer la base de
	donn&eacute;es des capacit&eacute;s de classes de session, ce
	qui est accompli en ex&eacute;cutant la commande suivante en
	tant que <username>root</username>:</para>

      <screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen>

      <note><para>Le format des mots de passe utilis&eacute;s dans
	<filename>/etc/master.passwd</filename> ne sera pas mis
	&agrave; jour avant qu'un utilisateur ne change son mot de
	passe pour la premi&egrave;re fois
	<emphasis>apr&egrave;s</emphasis> la
	reg&eacute;n&eacute;ration de la base de donn&eacute;es des
	capacit&eacute;s de classes de session.</para></note>

      <para>Ensuite, afin de s'assurer que les mots de passe sont
	chiffr&eacute;s avec le format que vous avez choisi, vous
	devez v&eacute;rifier que l'entr&eacute;e
	<literal>crypt_default</literal> dans le fichier
	<filename>/etc/auth.conf</filename> donne la priorit&eacute;
	au format de mots de passe choisi.  Par exemple, quand les
	mots de passe DES sont utilis&eacute;s, l'entr&eacute;e
	serait:</para>

      <programlisting>crypt_default	=	des blf md5</programlisting>

      <para>En suivant les points pr&eacute;c&eacute;dents sur chaque
	serveur et client NIS sous &os;, vous pouvez &ecirc;tre
	s&ucirc;r qu'ils seront tous d'accord sur le format de mot de
	passe utilis&eacute; dans le r&eacute;seau.  Si vous avez des
	probl&egrave;mes d'authentification sur un client NIS, c'est
	probablement la premi&egrave;re chose &agrave;
	v&eacute;rifier.  Rappelez-vous: si vous d&eacute;sirez mettre
	en place un serveur NIS pour un r&eacute;seau
	h&eacute;t&eacute;rog&egrave;ne, vous devrez probablement
	utiliser DES sur tous les syst&egrave;mes car c'est le
	standard le plus courant.</para>
    </sect2>
  </sect1>

  <sect1 id="network-dhcp">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Greg</firstname>
	  <surname>Sutter</surname>
	  <contrib>Ecrit par </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Configuration r&eacute;seau automatique (DHCP)</title>

    <sect2>
      <title>Qu'est-ce que DHCP?</title>
      <indexterm>
	<primary>Dynamic Host Configuration Protocol</primary>
	<see>DHCP</see>
      </indexterm>
      <indexterm>
	<primary>Internet Software Consortium (ISC)</primary>
      </indexterm>

      <para>DHCP, le protocole d'attribution dynamique des adresses
	(&ldquo;Dynamic Host Configuration Protocol&rdquo;),
	d&eacute;crit les moyens par lesquels un syst&egrave;me peut
	se connecter &agrave; un r&eacute;seau et obtenir les
	informations n&eacute;cessaires pour dialoguer sur ce
	r&eacute;seau.  &os; utilise l'impl&eacute;mentaion DHCP de
	l'ISC (Internet Software Consortium), aussi toutes les
	informations sp&eacute;cifiques &agrave;
	l'impl&eacute;mentation, ici, concernent la version
	distribu&eacute;e par l'ISC.</para>
    </sect2>

    <sect2>
      <title>Ce que traite cette section</title>

      <para>Cette section d&eacute;crit les composants
	c&ocirc;t&eacute; client et c&ocirc;t&eacute; serveur du
	syst&egrave;me DHCP ISC.  Le programme client,
	<command>dhclient</command>, est int&eacute;gr&eacute;
	&agrave; &os;, la partie serveur est disponible &agrave;
	partir du logiciel port&eacute; <filename
	role="package">net/isc-dhcp3-server</filename>.  Les pages de
	manuel &man.dhclient.8;, &man.dhcp-options.5;, et
	&man.dhclient.conf.5;, en plus des r&eacute;f&eacute;rences
	donn&eacute;es plus bas, sont des ressources utiles.</para>
    </sect2>

    <sect2>
      <title>Comment cela fonctionne-t-il?</title>
      <indexterm><primary>UDP</primary></indexterm>

      <para>Quand <command>dhclient</command>, le client DHCP, est
	ex&eacute;cut&eacute; sur la machine cliente, il commence
	&agrave; diffuser des requ&ecirc;tes de demandes d'information
	de configuration.  Par d&eacute;faut, ces requ&ecirc;tes sont
	effectu&eacute;es sur le port UDP 68.  Le serveur
	r&eacute;pond sur le port UDP 67, fournissant au client une
	adresse IP et d'autres informations r&eacute;seau importantes
	comme le masque de sous-r&eacute;seau, les routeurs, et les
	serveurs DNS.  Toutes ces informations viennent sous la forme
	d'un &ldquo;bail&rdquo; DHCP qui est uniquement valide pendant
	un certain temps (configur&eacute; par l'administrateur du
	serveur DHCP).  De cette fa&ccedil;on, les adresses IP
	expir&eacute;es pour les clients qui ne sont plus
	connect&eacute;s peuvent &ecirc;tre automatiquement
	r&eacute;cup&eacute;r&eacute;es.</para>

      <para>Les clients DHCP peuvent obtenir une grande
	quantit&eacute; d'informations &agrave; partir du serveur.
	Une liste eshaustive est donn&eacute;e dans la page de manuel
	&man.dhcp-options.5;.</para>
    </sect2>

    <sect2>
      <title>Int&eacute;gration dans &os;</title>

      <para>Le client DHCP ISC, <command>dhclient</command>,  est
	compl&egrave;tement int&eacute;gr&eacute; &agrave; &os;.  Le
	support du client DHCP est fourni avec l'installeur et le
	syst&egrave;me de base, rendant &eacute;vident le besoin d'une
	connaissance d&eacute;taill&eacute;e des configurations
	r&eacute;seaux pour n'importe quel r&eacute;seau utilisant un
	serveur DHCP.  <command>dhclient</command> fait partie de
	toutes les versions de &os; depuis la version 3.2.</para>
      <indexterm>
	<primary><application>sysinstall</application></primary>
      </indexterm>

      <para>DHCP est support&eacute; par
	<application>sysinstall</application>.  Quand on configure une
	interface r&eacute;seau sous
	<application>sysinstall</application>, la deuxi&egrave;me
	question pos&eacute;e est: &ldquo;Voulez-vous tenter la
	configuration DHCP de l'interface?&rdquo;.
	R&eacute;pondre par l'affirmative &agrave; cette question
	lancera <command>dhclient</command>, et en cas de
	succ&egrave;s, compl&egrave;tera automatiquement les
	informations de configuration r&eacute;seau.</para>

      <para>Vous devez faire deux choses pour que votre syst&egrave;me
	utilise DHCP au d&eacute;marrage:</para>
      <indexterm>
	<primary>DHCP</primary>
	<secondary>pr&eacute;requis</secondary>
      </indexterm>

      <itemizedlist>
	<listitem>
	  <para>Assurez-vous que le p&eacute;riph&eacute;rique
	    <devicename>bpf</devicename> est compil&eacute; dans votre
	    noyau.  Pour cela, vous devez ajouter la ligne
	    <literal>device bpf</literal> (<literal>pseudo-device
	    bpf</literal> sous &os;&nbsp;4.X) &agrave; votre fichier
	    de configuration du noyau, et recompiler le noyau.  Pour
	    plus d'informations sur la compilation de noyaux,
	    consultez le <xref linkend="kernelconfig">.</para>

	  <para>Le p&eacute;riph&eacute;rique
	    <devicename>bpf</devicename> est d&eacute;j&agrave;
	    pr&eacute;sent dans le noyau <filename>GENERIC</filename>
	    qui est fourni avec &os;, vous ne devez donc pas
	    cr&eacute;er de noyau sp&eacute;cifique pour faire
	    fonctionner DHCP.</para>

	  <note>
	    <para>Ceux qui sont particuli&egrave;rement conscients de
	      l'aspect s&eacute;curit&eacute; devraient noter que
	      <devicename>bpf</devicename> est &eacute;galement le
	      p&eacute;riph&eacute;rique qui permet le fonctionnement de
	      &ldquo;renifleurs&rdquo; de paquets (de tels programmes
	      doivent &ecirc;tre lanc&eacute;s sous l'utilisateur
	      <username>root</username>).  <devicename>bpf</devicename>
	      <emphasis>est</emphasis> n&eacute;cessaire pour utiliser
	      DHCP, mais si vous &ecirc;tes tr&egrave;s sensible
	      &agrave; la s&eacute;curit&eacute;, vous ne devriez
	      probablement pas ajouter <devicename>bpf</devicename>
	      &agrave; votre noyau parce que vous projetez d'utiliser
	      DHCP dans le futur.</para>
	  </note>
	</listitem>
	<listitem>
	  <para>Editez votre fichier <filename>/etc/rc.conf</filename>
	    pour y ajouter ce qui suit:</para>

	  <programlisting>ifconfig_fxp0="DHCP"</programlisting>

	  <note>
	    <para>Assurez-vous de bien remplacer
	      <literal>fxp0</literal> par l'interface que vous voulez
	      configurer de fa&ccedil;on dynamique comme d&eacute;crit
	      dans la <xref linkend="config-network-setup">.</para>
	  </note>

	  <para>Si vous utilisez un emplacement diff&eacute;rent pour
	    <command>dhclient</command>, ou si vous d&eacute;sirez
	    passer des arguments suppl&eacute;mentaires &agrave;
	    <command>dhclient</command>, ajoutez ce qui suit (en
	    effectuant des modifications si n&eacute;cessaire):</para>

	  <programlisting>dhcp_program="/sbin/dhclient"
dhcp_flags=""</programlisting>
	</listitem>
      </itemizedlist>

      <indexterm>
	<primary>DHCP</primary>
	<secondary>serveur</secondary>
      </indexterm>
      <para>Le serveur DHCP, <application>dhcpd</application>, fait
	partie du logiciel port&eacute; <filename
	role="package">net/isc-dhcp3-server</filename> disponible dans
	le catalogue des logiciels port&eacute;s.  Ce logiciel
	port&eacute; contient le serveur DHCP ISC et sa
	documentation.</para>
    </sect2>

    <sect2>
      <title>Fichiers</title>
      <indexterm>
	<primary>DHCP</primary>
	<secondary>fichiers de configuration</secondary>
      </indexterm>
      <itemizedlist>
	<listitem><para><filename>/etc/dhclient.conf</filename></para>
	  <para><command>dhclient</command> n&eacute;cessite un
	    fichier de configuration,
	    <filename>/etc/dhclient.conf</filename>.
	    G&eacute;n&eacute;ralement le fichier ne contient que des
	    commentaires, les valeurs par d&eacute;faut &eacute;tant
	    suffisantes.  Ce fichier de configuration est d&eacute;crit
	    par la page de manuel &man.dhclient.conf.5;.</para>
	</listitem>

	<listitem><para><filename>/sbin/dhclient</filename></para>
	  <para><command>dhclient</command> est li&eacute;
	    statiquement et r&eacute;side dans le r&eacute;pertoire
	    <filename class="directory">/sbin</filename>.  La page de
	    manuel &man.dhclient.8; donne beaucoup plus d'informations
	    au sujet de <command>dhclient</command>.</para>
	</listitem>

	<listitem><para><filename>/sbin/dhclient-script</filename></para>
	  <para><command>dhclient-script</command> est la
	    proc&eacute;dure de configuration du client DHCP
	    sp&eacute;cifique &agrave; &os;.  Elle est d&eacute;crite
	    dans la page de manuel &man.dhclient-script.8;, mais ne
	    devrait pas demander de modification de la part de
	    l'utilisateur pour fonctionner correctement.</para>
	</listitem>

	<listitem><para><filename>/var/db/dhclient.leases</filename></para>
	  <para>Le client DHCP conserve une base de donn&eacute;es des
	    baux valides, qui est &eacute;crite comme un fichier
	    journal.  La page de manuel &man.dhclient.leases.5; en donne
	    une description l&eacute;g&egrave;rement plus longue.</para>
	</listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Lecture suppl&eacute;mentaire</title>

      <para>Le protocole DHCP est int&eacute;gralement d&eacute;crit
	dans la <ulink url="http://www.freesoft.org/CIE/RFC/2131/">RFC
	2131</ulink>.  Des informations sont &eacute;galement
	disponibles &agrave; l'adresse <ulink
	url="http://www.dhcp.org/"></ulink>.</para>
    </sect2>

    <sect2 id="network-dhcp-server">
	<title>Installer et configurer un serveur DHCP</title>

	<sect3>
	  <title>Ce que traite cette section</title>

	  <para>Cette section fournit les informations
	    n&eacute;cessaires &agrave; la configuration d'un
	    syst&egrave;me &os; comme serveur DHCP en utilisant
	    l'impl&eacute;mentation ISC (Internet Software Consortium)
	    de l'ensemble DHCP.</para>

	  <para>La partie serveur n'est pas fournie dans le
	    syst&egrave;me de base de &os;, et vous devrez installer
	    le logiciel port&eacute; <filename
	    role="package">net/isc-dhcp3-relay</filename> pour
	    b&eacute;n&eacute;ficier de ce service.  Lisez le <xref
	    linkend="ports"> pour plus d'information sur l'utilisation
	    du catalogue des logiciels port&eacute;s.</para>
	</sect3>

	<sect3>
	  <title>Installation d'un serveur DHCP</title>
	  <indexterm>
	    <primary>DHCP</primary>
	    <secondary>installation</secondary>
	  </indexterm>

	  <para>Afin de configurer votre syst&egrave;me &os; en
	    serveur DHCP, vous devrez vous assurer que le support du
	    p&eacute;riph&eacute;rique &man.bpf.4; est compil&eacute;
	    dans votre noyau.  Pour cela ajouter la ligne
	    <literal>device bpf</literal> (<literal>pseudo-device
	    bpf</literal> sous &os;&nbsp;4.X) dans votre fichier de
	    configuration du noyau.  Pour plus d'information sur la
	    compilation de noyaux, consultez le <xref
	    linkend="kernelconfig">.</para>

	  <para>Le p&eacute;riph&eacute;rique
	    <devicename>bpf</devicename> est d&eacute;j&agrave;
	    pr&eacute;sent dans le noyau <filename>GENERIC</filename>
	    qui est fourni avec &os;, vous ne devez donc pas
	    cr&eacute;er de noyau sp&eacute;cifique pour faire
	    fonctionner DHCP.</para>

	  <note>
	    <para>Ceux qui sont particuli&egrave;rement conscients de
	      l'aspect s&eacute;curit&eacute; devraient noter que
	      <devicename>bpf</devicename> est &eacute;galement le
	      p&eacute;riph&eacute;rique qui permet le fonctionnement de
	      &ldquo;renifleurs&rdquo; de paquets (de tels programmes
	      n&eacute;cessitent &eacute;galement un acc&egrave;s avec
	      privil&egrave;ges).  <devicename>bpf</devicename>
	      <emphasis>est</emphasis> n&eacute;cessaire pour utiliser
	      DHCP, mais si vous &ecirc;tes tr&egrave;s sensible
	      &agrave; la s&eacute;curit&eacute;, vous ne devriez
	      probablement pas ajouter <devicename>bpf</devicename>
	      &agrave; votre noyau parce que vous projetez d'utiliser
	      DHCP dans le futur.</para>
	  </note>

	  <para>Il vous reste ensuite &agrave; &eacute;diter le
	    fichier <filename>dhcpd.conf</filename> d'exemple qui a
	    &eacute;t&eacute; install&eacute; par le logiciel
	    port&eacute; <filename
	    role="package">net/isc-dhcp3-server</filename>.  Par
	    d&eacute;faut, cela sera
	    <filename>/usr/local/etc/dhcpd.conf.sample</filename>, et
	    vous devriez le copier vers
	    <filename>/usr/local/etc/dhcpd.conf</filename> avant de
	    commencer vos modifications.</para>
	</sect3>

	<sect3>
	  <title>Configuration du serveur DHCP</title>
	  <indexterm>
	    <primary>DHCP</primary>
	    <secondary>dhcpd.conf</secondary>
	  </indexterm>

	  <para><filename>dhcpd.conf</filename> est compos&eacute; de
	    d&eacute;clarations concernant les masques de
	    sous-r&eacute;seaux et les machines, il est
	    peut-&ecirc;tre plus facile &agrave; expliquer &agrave;
	    l'aide d'un exemple:</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>Cette option sp&eacute;cifie le domaine qui sera
		donn&eacute; aux clients comme domaine par
		d&eacute;faut.  Consultez la page de manuel de
		&man.resolv.conf.5; pour plus d'information sur sa
		signification.</para>
	    </callout>

	    <callout arearefs="domain-name-servers">
	      <para>Cette option donne une liste,
		s&eacute;par&eacute;e par des virgules, de serveurs DNS
		que le client devrait utiliser.</para>
	    </callout>

	    <callout arearefs="subnet-mask">
	      <para>Le masque de sous-r&eacute;seau qui sera fourni
		aux clients.</para>
	    </callout>

	    <callout arearefs="default-lease-time">
	      <para>Un client peut demander un bail d'une dur&eacute;e
		bien pr&eacute;cise.  Sinon par d&eacute;faut le serveur
		alloue un bail avec cette dur&eacute;e avant expiration
		(en secondes).</para>
	    </callout>

	    <callout arearefs="max-lease-time">
	      <para>C'est la dur&eacute;e maximale d'allocation
		autoris&eacute;e par le serveur.  Si un client demande
		un bail plus long, le bail sera accord&eacute; mais il
		ne sera valide que durant
		<literal>max-lease-time</literal> secondes.</para>
	    </callout>

	    <callout arearefs="ddns-update-style">
	      <para>Cette option indique si le serveur DHCP doit
		tenter de mettre &agrave; jour le DNS quand un bail
		est accept&eacute; ou r&eacute;voqu&eacute;.  Dans
		l'impl&eacute;mentation ISC, cette option est
		<emphasis>obligatoire</emphasis>.</para>
	    </callout>

	    <callout arearefs="range">
	      <para>Ceci indique quelles adresses IP devraient
		&ecirc;tre utilis&eacute;es dans l'ensemble des adresses
		r&eacute;serv&eacute;es aux clients.  Les adresses
		comprises dans l'intervalle sp&eacute;cifi&eacute;e sont
		allou&eacute;es aux clients.</para>
	    </callout>

	    <callout arearefs="routers">
	      <para>D&eacute;finit la passerelle par d&eacute;faut
		fournie aux clients.</para>
	    </callout>

	    <callout arearefs="hardware">
	      <para>L'adresse mat&eacute;rielle MAC d'une machine (de
		mani&egrave;re &agrave; ce que le serveur DHCP puisse
		reconna&icirc;tre une machine quand elle envoie une
		requ&ecirc;te).</para>
	    </callout>

	    <callout arearefs="fixed-address">
	      <para>Indique que la machine devrait se voir attribuer
		toujours la m&ecirc;me adresse IP.  Notez que
		l'utilisation d'un nom de machine ici est correct,
		puisque le serveur DHCP effectuera une
		r&eacute;solution de nom sur le nom de la machine
		avant de renvoyer l'information sur le bail.</para>
	    </callout>
	  </calloutlist>

	  <para>Une fois l'&eacute;criture de votre fichier
	    <filename>dhcpd.conf</filename> termin&eacute;e, vous
	    pouvez lancer le serveur en tapant la commande
	    suivante:</para>

	  <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/isc-dhcpd.sh start</userinput></screen>

	  <para>Si vous devez, dans le futur, effectuer des
	    changements dans la configuration de votre serveur, il est
	    important de savoir que l'envoi d'un signal
	    <literal>SIGHUP</literal> &agrave;
	    <application>dhcpd</application> ne provoque
	    <emphasis>pas</emphasis> le rechargement de la
	    configuration, contrairement &agrave; la plupart des
	    &ldquo;daemons&rdquo;.  Vous devrez envoyer un signal
	    <literal>SIGTERM</literal> pour arr&ecirc;ter le
	    processus, puis le relancer en utilisant la commande
	    ci-dessus.</para>
	</sect3>

	<sect3>
	  <title>Fichiers</title>
	  <indexterm>
	    <primary>DHCP</primary>
	    <secondary>fichier de configuration</secondary>
	  </indexterm>
	  <itemizedlist>
	    <listitem><para><filename>/usr/local/sbin/dhcpd</filename></para>
	      <para><application>dhcpd</application> est li&eacute;
		statiquement et r&eacute;side dans le r&eacute;pertoire
		<filename class="directory">/usr/local/sbin</filename>.
		La page de manuel &man.dhcpd.8; install&eacute;e avec le
		logiciel port&eacute; donne beaucoup plus d'informations
		au sujet de <application>dhcpd</application>.</para>
	    </listitem>

	    <listitem><para><filename>/usr/local/etc/dhcpd.conf</filename></para>
	      <para><application>dhcpd</application> n&eacute;cessite
		un fichier de configuration,
		<filename>/usr/local/etc/dhcpd.conf</filename> avant de
		pouvoir commencer &agrave; offrir ses services aux
		client.  Ce fichier doit contenir toutes les
		informations &agrave; fournir aux clients qui seront
		trait&eacute;s, en plus des informations concernant le
		fonctionnement du serveur.  Ce fichier de configuration
		est d&eacute;crit par la page de manuel
		&man.dhcpd.conf.5; install&eacute;e par le logiciel
		port&eacute;.</para>
	    </listitem>

	    <listitem><para><filename>/var/db/dhcpd.leases</filename></para>

	      <para>Le serveur DHCP conserve une base de
		donn&eacute;es des baux qu'il a d&eacute;livr&eacute;,
		qui est &eacute;crite comme un fichier journal.  La page
		de manuel &man.dhcpd.leases.5; install&eacute;e par le
		logiciel port&eacute; en donne une description
		l&eacute;g&egrave;rement plus longue.</para>
	    </listitem>

	    <listitem><para><filename>/usr/local/sbin/dhcrelay</filename></para>
	      <para><application>dhcrelay</application> est
		utilis&eacute; dans les environements avanc&eacute;s
		o&ugrave; un serveur DHCP fait suivre la requ&ecirc;te
		d'un client vers un autre serveur DHCP sur un
		r&eacute;seau s&eacute;par&eacute;.  Si vous avez besoin
		de cette fonctionnalit&eacute;, installez alors le
		logiciel port&eacute; <filename
		role="package">net/isc-dhcp3-server</filename>.  La page
		de manuel &man.dhcrelay.8; fournie avec le logiciel
		port&eacute; contient plus de d&eacute;tails.</para>
	    </listitem>
	  </itemizedlist>
	</sect3>
      </sect2>
  </sect1>

  <sect1 id="network-dns">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Chern</firstname>
	  <surname>Lee</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Serveurs de noms (DNS)</title>

    <sect2>
      <title>G&eacute;n&eacute;ralit&eacute;s</title>
      <indexterm><primary>BIND</primary></indexterm>

      <para>&os; utilise, par d&eacute;faut, BIND (Berkeley Internet
	Name Domain), qui est l'impl&eacute;mentation la plus courante
	du protocole DNS.  Le DNS est le protocole qui effectue la
	correspondance entre noms et adresses IP, et inversement.  Par
	exemple une requ&ecirc;te pour <hostid
	role="fqdn">www.FreeBSD.org</hostid> aura pour r&eacute;ponse
	l'adresse IP du serveur Web du projet &os;, et une
	requ&ecirc;te pour <hostid
	role="fqdn">ftp.FreeBSD.org</hostid> renverra l'adresse IP de
	la machine FTP correspondante.  De m&ecirc;me, l'oppos&eacute;
	est possible.  Une requ&ecirc;te pour une adresse IP retourne
	son nom de machine.  Il n'est pas n&eacute;cessaire de faire
	tourner un serveur DNS pour effectuer des requ&ecirc;tes DNS
	sur un syst&egrave;me.</para>

      <indexterm><primary>DNS</primary></indexterm>
      <para>Le DNS est coordonn&eacute; sur l'Internet &agrave;
	travers un syst&egrave;me complexe de serveurs de noms racines
	faisant autorit&eacute;, et d'autres serveurs de noms de plus
	petites tailles qui h&eacute;bergent, directement ou font office
	de &ldquo;cache&rdquo;, l'information pour des domaines
	individuels.</para>

      <para>Ce document fait r&eacute;f&eacute;rence &agrave; BIND
	8.x, comme c'est la version stable utils&eacute;e dand &os;.
	BIND 9.x peut &ecirc;tre install&eacute;e &agrave; l'aide du
	logiciel port&eacute; <filename
	role="package">net/bind9</filename>.</para>

      <para>Les RFC1034 et RFC1035 r&eacute;gissent le protocole
	DNS.</para>

      <para>Actuellement, BIND est maintenu par l'Internet Software
	Consortium <ulink url="http://www.isc.org/"></ulink>.</para>
    </sect2>

    <sect2>
      <title>Terminologie</title>

      <para>Pour comprendre ce document, certains termes relatifs
	au DNS doivent &ecirc;tre ma&icirc;tris&eacute;s.</para>

      <indexterm><primary>r&eacute;solveur</primary></indexterm>
      <indexterm><primary>DNS inverse</primary></indexterm>
      <indexterm><primary>zone racine</primary></indexterm>
      <informaltable frame="none">
	<tgroup cols="2">
	  <colspec colwidth="1*">
	  <colspec colwidth="3*">

	  <thead>
	    <row>
	      <entry>Terme</entry>
	      <entry>Definition</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry>&ldquo;Forward&ldquo; DNS</entry>
	      <entry>Correspondance noms de machine vers adresses
		IP.</entry>
	    </row>

	    <row>
	      <entry>Origine</entry>
	      <entry>Fait r&eacute;f&eacute;rence au domaine couvert
		par un fichier de zone particulier.</entry>
	    </row>

	    <row>
	      <entry><application>named</application>, BIND, serveur
		de noms</entry>
	      <entry>Noms courants pour le serveur de noms BIND de
		&os;</entry>
	    </row>

	    <row>
	      <entry>Resolveur</entry>
	      <entry>Un processus syst&egrave;me par
		l'interm&eacute;diaire duquel une machine contacte un
		serveur de noms pour obtenir des informations sur une
		zone.</entry>
	    </row>

	    <row>
	      <entry>DNS inverse</entry>
	      <entry>C'est l'inverse du DNS &ldquo;classique&rdquo;
		(&ldquo;Forward&ldquo; DNS).  C'est la correspondance
		adresses IP vers noms de machine.</entry>
	    </row>

	    <row>
	      <entry>Zone racine</entry>

	      <entry>D&eacute;but de la hi&eacute;rarchie de la zone
		Internet.  Toutes les zones sont rattach&eacute;es
		&agrave; la zone racine, de la m&ecirc;me
		mani&egrave;re qu'un syst&egrave;me de fichier est
		rattach&eacute; au r&eacute;pertoire racine.</entry>
	    </row>

	    <row>
	      <entry>Zone</entry>
	      <entry>Un domaine individuel, un sous-domaine, ou une
		partie des noms administr&eacute;s par un m&ecirc;me
		serveur faisant autorit&eacute;.</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

      <indexterm>
	<primary>zones</primary>
	<secondary>exemples</secondary>
      </indexterm>

      <para>Exemples de zones:</para>

      <itemizedlist>
	<listitem>
	  <para><hostid>.</hostid> est la zone racine</para>
	</listitem>
	<listitem>
	  <para><hostid>org.</hostid> est une zone sous la
	    zone racine</para>
	</listitem>
	<listitem>
	  <para><hostid role="domainname">example.org.</hostid> est une
	    zone sous la zone <hostid>org.</hostid></para>
	</listitem>
	<listitem>
	  <para><hostid role="domainname">foo.example.org.</hostid>
	    est un sous-domaine, une zone sous la zone <hostid
	    role="domainname">example.org.</hostid></para>
	</listitem>
	<listitem>
	  <para>
	    <hostid>1.2.3.in-addr.arpa</hostid> est une zone faisant
	    r&eacute;f&eacute;rence &agrave; toutes les adresses IP
	    qui appartiennent l'espace d'adresse <hostid
	    role="ipaddr">3.2.1.*</hostid>.</para>
	</listitem>
      </itemizedlist>

      <para>Comme on peut le remarquer, la partie la plus
	significative d'un nom de machine est &agrave; sa gauche.  Par
	exemple, <hostid role="domainname">example.org.</hostid> est
	plus sp&eacute;cifique que <hostid>org.</hostid>, comme
	<hostid>org.</hostid> est &agrave; son tour plus
	sp&eacute;cifique que la zone racine.  La constitution de
	chaque partie d'un nom de machine est proche de celle d'un
	syst&egrave;me de fichiers: le r&eacute;pertoire <filename
	class="directory">/dev</filename> se trouve sous la racine, et
	ainsi de suite.</para>
    </sect2>

    <sect2>
      <title>Les raisons de faire tourner un serveur de noms</title>

      <para>Les serveurs de noms se pr&eacute;sentent
	g&eacute;n&eacute;ralement sous deux formes: un serveur de
	noms faisant autorit&eacute;, et un serveur de noms
	cache.</para>

      <para>Un serveur de noms faisant autorit&eacute; est
	n&eacute;cessaire quand:</para>

      <itemizedlist>
	<listitem>
	  <para>on d&eacute;sire fournir des informations DNS au reste
	    du monde, &ecirc;tre le serveur faisant autorit&eacute; lors
	    des r&eacute;ponses aux requ&ecirc;tes.</para>
	</listitem>
	<listitem>
	  <para>un domaine, comme par exemple
	    <hostid role="domainname">example.org</hostid>, est
	    enregistr&eacute; et des adresses IP doivent &ecirc;tre
	    assign&eacute;es &agrave; des noms de machine appartenant
	    &agrave; ce domaine.</para>
	</listitem>
	<listitem>
	  <para>un bloc d'adresses IP n&eacute;cessite des
	    entr&eacute;es DNS inverses (IP vers nom de machine).</para>
	</listitem>
	<listitem>
	  <para>un serveur de noms de secours, appel&eacute; esclave,
	    doit r&eacute;pondre aux requ&ecirc;tes quand le serveur
	    primaire est tomb&eacute; ou inaccessible.</para>
	  </listitem>
      </itemizedlist>

      <para>Un serveur de noms cache est n&eacute;cessaire
	quand:</para>

      <itemizedlist>
	<listitem>
	  <para>un serveur de noms local peut faire office de cache
	    et r&eacute;pondre plus rapidement que l'interrogation
	    d'un serveur de noms ext&eacute;rieur.</para>
	</listitem>
	<listitem>
	  <para>une r&eacute;duction du trafic r&eacute;seau global
	    est d&eacute;sir&eacute;e (il a &eacute;t&eacute;
	    mesur&eacute; que 5% ou plus du trafic Internet total
	    concerne le trafic DNS).</para>
	</listitem>
      </itemizedlist>

      <para>Quand on &eacute;met des requ&ecirc;tes pour <hostid
	role="fqdn">www.FreeBSD.org</hostid>, le r&eacute;solveur
	interroge g&eacute;n&eacute;ralement le serveur de noms du
	fournisseur d'acc&egrave;s, et r&eacute;cup&egrave;re la
	r&eacute;ponse.  Avec un serveur DNS cache local, la
	requ&ecirc;te doit &ecirc;tre effectu&eacute;e qu'une seule
	fois vers le monde ext&eacute;rieur par le serveur DNS cache.
	Chaque interrogation suivante n'aura pas &agrave; &ecirc;tre
	transmise en dehors du r&eacute;seau local, puisque
	l'information est d&eacute;sormais disponible localement dans
	le cache.</para>
    </sect2>

    <sect2>
      <title>Comment cela fonctionne-t-il?</title>

      <para>Sous &os; le &ldquo;daemon&rdquo; BIND est appel&eacute;
	<application>named</application> pour des raisons
	&eacute;videntes.</para>

      <informaltable frame="none" pgwide="1">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>Fichier</entry>
	      <entry>Description</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry><application>named</application></entry>
	      <entry>le &ldquo;daemon&rdquo; BIND</entry>
	    </row>

	    <row>
	      <entry><command>ndc</command></entry>
	      <entry>le programme de contr&ocirc;le du
		&ldquo;daemon&rdquo;</entry>
	    </row>

	    <row>
	      <entry><filename
		class="directory">/etc/namedb</filename></entry>
	      <entry>r&eacute;pertoire o&ugrave; se trouvent les
		informations sur les zones de BIND</entry>
	    </row>

	    <row>
	      <entry><filename>/etc/namedb/named.conf</filename></entry>
	      <entry>le fichier de configuration du
		&ldquo;daemon&rdquo;</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

      <para>Les fichiers de zone sont g&eacute;n&eacute;ralement
	stock&eacute;s dans le r&eacute;pertoire <filename
	class="directory">/etc/namedb</filename>, et contiennent les
	informations concernant les zones DNS g&eacute;r&eacute;es par
	le serveur de noms.</para>
    </sect2>

    <sect2>
      <title>Lancer BIND</title>

      <indexterm>
	<primary>BIND</primary>
	<secondary>lancement</secondary>
      </indexterm>
      <para>Puisque BIND est install&eacute; par d&eacute;faut, sa
	configuration est relativement simple.</para>

      <para>Pour s'assurer que le &ldquo;daemon&rdquo;
	<application>named</application> est lanc&eacute; au
	d&eacute;marrage, ajoutez la ligne suivante dans
	<filename>/etc/rc.conf</filename>:</para>

      <programlisting>named_enable="YES"</programlisting>

      <para>Pour d&eacute;marrer le &ldquo;daemon&rdquo; manuellement
	(apr&egrave;s l'avoir configur&eacute;):</para>

      <screen>&prompt.root; <userinput>ndc start</userinput></screen>
    </sect2>

    <sect2>
      <title>Fichiers de configuration</title>

      <indexterm>
	<primary>BIND</primary>
	<secondary>fichiers de configuration</secondary>
      </indexterm>
      <sect3>
	<title>Utilisation de
	  <command>make-localhost</command></title>

	<para>Assurez-vous d'effectuer:</para>

	<screen>&prompt.root; <userinput>cd /etc/namedb</userinput>
&prompt.root; <userinput>sh make-localhost</userinput></screen>

	<para>pour g&eacute;n&eacute;rer correctement le fichier de
	  zone DNS inverse
	  <filename>/etc/namedb/localhost.rev</filename>.</para>
      </sect3>

      <sect3>
        <title><filename>/etc/namedb/named.conf</filename></title>

        <programlisting>// &dollar;FreeBSD$
//
// Reportez-vous &agrave; la page de manuel named(8) pour plus de
// d&eacute;tails.  Si vous devez configurer un serveur primaire
// assurez-vous d'avoir compris les d&eacute;tails &eacute;pineux du
// fonctionnement du DNS.  M&ecirc;me avec de simples erreurs, vous
// pouvez rompre la connexion entre les parties affect&eacute;es, ou
// causer un important trafic Internet inutile.

options {
        directory "/etc/namedb";

// En plus de la clause "forwarders", vous pouvez forcer votre serveur
// de noms &agrave; ne jamais &ecirc;tre &agrave; l'origine de
// requ&ecirc;tes, mais plut&ocirc;t faire suivre les demandes en
// activant la ligne suivante:
//
//      forward only;

// Si vous avez acc&egrave;s &agrave; un serveur de noms au niveau de
// votre fournisseur d'acc&egrave;s, ajoutez ici son adresse IP, et
// activez la ligne ci-dessous.  Cela vous permettra de
// b&eacute;n&eacute;ficier de son cache, r&eacute;duisant ainsi le
// trafic Internet.
/*
        forwarders {
                127.0.0.1;
        };
*/</programlisting>

	<para>Comme les commentaires le pr&eacute;cisent, pour
	  b&eacute;n&eacute;ficier d'un cache en amont de votre
	  connexion, le param&egrave;tre <literal>forwarders</literal>
	  peut &ecirc;tre activ&eacute;.  Dans des circonstances
	  normales, un serveur de noms interrogera de fa&ccedil;on
	  r&eacute;cursive certains serveurs de noms jusqu'&agrave;
	  obtenir la r&eacute;ponse &agrave; sa requ&ecirc;te.  Avec
	  ce param&egrave;tre activ&eacute;, votre serveur interrogera
	  le serveur de noms en amont (ou le serveur de noms fourni)
	  en premier, en b&eacute;n&eacute;ficiant alors de son cache.
	  Si le serveur en question g&egrave;re beaucoup de trafic, et
	  est un serveur rapide, activer cette option peut en valoir
	  la peine.</para>

	<warning><para><hostid role="ipaddr">127.0.0.1</hostid>
	  ne fonctionnera <emphasis>pas</emphasis> ici.  Remplacez
	  cette adresse IP par un serveur de noms en amont de votre
	  connexion.</para>
        </warning>

        <programlisting>        /*
         * S'il y a un coupe-feu entre vous et les serveurs de noms
         * avec lesquels vous voulez communiquer, vous aurez
         * peut-&ecirc;tre besoin de d&eacute;commenter la directive
         * query-source ci-dessous.  Les versions
         * pr&eacute;c&eacute;dentes de BIND lan&ccedil;aient des
         * requ&ecirc;tes &agrave; partir du port 53, mais depuis la
         * version 8.1, BIND utilise
         * par d&eacute;faut un port quelconque non
         * r&eacute;serv&eacute;.
         */
        // query-source address * port 53;

        /*
         * Si ex&eacute;cution dans un "sandbox", vous pourrez avoir
         * &agrave; indiquer un emplacement diff&eacute;rent pour le
         * fichier de sortie de la base de donn&eacute;es.
         */
        // dump-file "s/named_dump.db";
};

// Note: ce qui suit sera support&eacute; dans une future version.
/*
host { any; } {
        topology {
                127.0.0.0/8;
        };
};
*/

// Configurer des serveurs secondaires est plus simple et le principe
// g&eacute;n&eacute;ral est pr&eacute;sent&eacute; plus bas.
//
// Si vous activez un serveur de noms local, n'oubliez pas d'entrer
// 127.0.0.1 dans votre fichier /etc/resolv.conf de sorte que ce
// serveur soit interrog&eacute; le premier.  Assurez-vous
// &eacute;galement de l'activer dans /etc/rc.conf.

zone "." {
        type hint;
        file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
        type master;
        file "localhost.rev";
};

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.IP6.INT" {
        type master;
        file "localhost.rev";
};

// NB: N'utilisez pas les adresses IP ci-dessous, elles sont factices,
// et ne servent que pour des besoins de
// d&eacute;monstration/documentation!
//
// Exemple d'entr&eacute;es de configuration de serveur secondaire.
// Il peut &ecirc;tre pratique de devenir serveur secondaire pour la
// zone &agrave; laquelle appartient votre domaine.  Demandez &agrave;
// votre administrateur r&eacute;seau l'adresse IP du serveur primaire
// responsable de la zone.
//
// N'oubliez jamais d'inclure la r&eacute;solution de la zone inverse
// (IN-ADDR.ARPA)!
// (Ce sont les premiers octets de l'adresse IP, en ordre inverse,
// auxquels ont a ajout&eacute; ".IN-ADDR.ARPA".)
//
// Avant de commencer &agrave; configurer une zone primaire, il faut
// &ecirc;tre s&ucirc;r que vous avez parfaitement compris comment le
// DNS et BIND fonctionnent.  Il apparait parfois des pi&egrave;ges
// peu &eacute;vidents &agrave; saisir.  En comparaison, configurer un
// serveur secondaire est plus simple.
//
// NB: N'activez pas aveugl&eacute;ment les exemples ci-dessous. :-)
// Utilisez des noms et des adresses r&eacute;elles.
//
// NOTE!!! &os; ex&eacute;cute BIND dans un "sandbox" (voir l'option
// named_flags dans rc.conf).  Le r&eacute;pertoire contenant les
// zones secondaires doit &ecirc;tre accessible &agrave; BIND en
// &eacute;criture.  La s&eacute;quence suivante est
// sugg&eacute;r&eacute;e:
//
//      mkdir /etc/namedb/s
//      chown bind:bind /etc/namedb/s
//      chmod 750 /etc/namedb/s</programlisting>

	<para>Pour plus d'informations sur l'ex&eacute;cution de BIND
	  dans un &ldquo;sandbox&rdquo; (bac &agrave; sable),
	  consultez la section <link
	  linkend="network-named-sandbox">Ex&eacute;cution de named
	  dans un sandbox</link>.
	</para>

	<programlisting>/*
zone "example.com" {
        type slave;
        file "s/example.com.bak";
        masters {
                192.168.1.1;
        };
};

zone "0.168.192.in-addr.arpa" {
        type slave;
        file "s/0.168.192.in-addr.arpa.bak";
        masters {
                192.168.1.1;
        };
};
*/</programlisting>

	<para>Dans <filename>named.conf</filename>, ce sont des
	  exemples d'entr&eacute;es d'un serveur esclave.</para>

	<para>Pour chaque nouvelle zone g&eacute;r&eacute;e, une
	  nouvelle entr&eacute;e de zone doit &ecirc;tre
	  ajout&eacute;e au fichier
	  <filename>named.conf</filename>.</para>

	<para>Par exemple, l'entr&eacute;e de zone la plus simple
	  possible pour <hostid role="domainname">example.org</hostid>
	  serait:</para>

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

	<para>Ce sera un serveur ma&icirc;tre pour la zone, comme
	  indiqu&eacute; par l'option <option>type</option>,
	  concervant ses informations de zone dans le fichier
	  <filename>/etc/namedb/example.org</filename> comme
	  pr&eacute;cis&eacute; par l'option
	  <option>file</option>.</para>

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

	<para>Dans le cas d'un esclave, les informations concernant la
	  zone seront transf&eacute;r&eacute;es &agrave; partir du
	  serveur ma&icirc;tre pour la zone en question, et
	  sauvegard&eacute;es dans le fichier indiqu&eacute;.  Si ou
	  lorsque le serveur ma&icirc;tre tombe ou est inaccessible,
	  le serveur esclave disposera des informations de la zone
	  transf&eacute;r&eacute;e et sera capable de les
	  diffuser.</para>
      </sect3>

      <sect3>
	<title>Fichiers de zone</title>

	<para>Un exemple de fichier de zone ma&icirc;tre pour <hostid
	  role="domainname">example.org</hostid> (d&eacute;fini dans
	  <filename>/etc/namedb/example.org</filename>) suit:</para>

	<programlisting>$TTL 3600

example.org. IN SOA ns1.example.org. admin.example.org. (
                        5               ; Serial
                        10800           ; Refresh
                        3600            ; Retry
                        604800          ; Expire
                        86400 )         ; Minimum TTL

; Serveurs DNS
@       IN NS           ns1.example.org.
@       IN NS           ns2.example.org.

; Noms de machine
localhost       IN A    127.0.0.1
ns1             IN A    3.2.1.2
ns2             IN A    3.2.1.3
mail            IN A    3.2.1.10
@               IN A    3.2.1.30

; Alias
www             IN CNAME        @

; Enregistrement MX
@               IN MX   10      mail.example.org.</programlisting>

	<para>Notez que chaque nom de machine se terminant par un
	  &ldquo;.&rdquo; est un nom de machine complet, alors que
	  tout ce qui se termine pas par un &ldquo;.&rdquo; est
	  r&eacute;f&eacute;renc&eacute; par rapport &agrave; une
	  origine.  Par exemple, <literal>www</literal> sera traduit
	  en
	  <literal>www.<replaceable>origine</replaceable></literal>.
	  Dans notre fichier de zone fictif, notre origine est
	  <hostid>example.org.</hostid>, donc <literal>www</literal>
	  sera traduit en <hostid>www.example.org.</hostid> </para>

	<para>Le format d'un fichier de zone est le suivant:</para>

	<programlisting>nom-enregistrement      IN type-enregistrement   valeur</programlisting>

	<indexterm>
	  <primary>DNS</primary>
	  <secondary>enregistrements</secondary>
	</indexterm>
	<para>Les enregistrements DNS les plus couramment
	  utilis&eacute;s:</para>

	<variablelist>
	  <varlistentry>
	    <term>SOA</term>

	    <listitem>
	      <para>d&eacute;but des donn&eacute;es de
		zone</para></listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>NS</term>

	    <listitem>
	      <para>serveur de noms faisant
		autorit&eacute;</para></listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>A</term>

	    <listitem><para>adresse d'une machine</para></listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>CNAME</term>

	    <listitem><para>alias d'un nom de machine</para></listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>MX</term>

	    <listitem>
	      <para>serveur de messagerie recevant le courrier
		pour le domaine</para></listitem>
	  </varlistentry>

	  <varlistentry>
	    <term>PTR</term>

	    <listitem>
	      <para>un pointeur sur un nom de domaine
		(utilis&eacute; dans le DNS inverse)</para></listitem>
	  </varlistentry>
	</variablelist>

        <programlisting>
example.org. IN SOA ns1.example.org. admin.example.org. (
                        5               ; Serial
                        10800           ; Refresh after 3 hours
                        3600            ; Retry after 1 hour
                        604800          ; Expire after 1 week
                        86400 )         ; Minimum TTL of 1 day</programlisting>



	<variablelist>
	  <varlistentry>
	    <term><hostid role="domainname">example.org.</hostid></term>

	    <listitem>
	      <para>le nom de domaine, &eacute;galement l'origine pour
		ce fichier de zone.</para></listitem>
	  </varlistentry>

	  <varlistentry>
	    <term><hostid role="fqdn">ns1.example.org.</hostid></term>

	    <listitem>
	      <para>le serveur de noms primaire/faisant autorit&eacute;
		pour cette zone.</para></listitem>
	  </varlistentry>

	  <varlistentry>
	    <term><literal>admin.example.org.</literal></term>

	    <listitem>
	      <para>la personne responsable pour cette zone avec
		le caract&egrave;re &ldquo;@&rdquo; remplac&eacute;.
		(<email>admin@example.org</email> devient
		<literal>admin.example.org</literal>)</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term><literal>5</literal></term>

	    <listitem>
	      <para>le num&eacute;ro de s&eacute;rie de ce fichier.
		Celui-ci doit &ecirc;tre incr&eacute;ment&eacute;
		&agrave; chaque modification du fichier de zone.  De nos
		jours, de nombreux administrateurs
		pr&eacute;f&egrave;rent un format du type
		<literal>aaaammjjrr</literal> pour le num&eacute;ro de
		s&eacute;rie.  <literal>2001041002</literal>
		signifierait derni&egrave;re modification le 10/04/2001,
		le <literal>02</literal> indiquant que c'est la seconde
		fois que ce fichier a &eacute;t&eacute;
		r&eacute;vis&eacute; ce jour.  Le num&eacute;ro de
		s&eacute;rie est important puisqu'il indique aux
		serveurs de noms esclaves pour la zone une modification
		de celle-ci.</para>
	    </listitem>
	  </varlistentry>
	</variablelist>

	<programlisting>
@       IN NS           ns1.example.org.</programlisting>

	<para>C'est une entr&eacute;e de type NS.  Tous les serveurs
	  de noms qui doivent faire autorit&eacute; pour la zone
	  devront inclure une de ces entr&eacute;es.  Le
	  caract&egrave;re <literal>@</literal> aurait pu &ecirc;tre
	  remplac&eacute; par <hostid
	  role="domainname">example.org.</hostid>.  Le
	  caract&egrave;re <literal>@</literal> &eacute;tant
	  &eacute;quivalent &agrave; l'origine.</para>

	<programlisting>
localhost       IN A    127.0.0.1
ns1             IN A    3.2.1.2
ns2             IN A    3.2.1.3
mail            IN A    3.2.1.10
@               IN A    3.2.1.30</programlisting>

	<para>Un enregistrement de type A indique des noms de machine.
	  Comme pr&eacute;sent&eacute; ci-dessus <hostid
	  role="fqdn">ns1.example.org</hostid> sera r&eacute;solu en
	  <hostid role="ipaddr">3.2.1.2</hostid>.  Ici encore, le
	  symb&ocirc;le d'origine, <literal>@</literal>, signifie que
	  <hostid>example.org</hostid> donnera pour r&eacute;solution
	  d'adresse l'adresse <hostid
	  role="ipaddr">3.2.1.30</hostid>.</para>

	<programlisting>
www             IN CNAME        @</programlisting>

	<para>L'enregistrement de type CNAME est
	  g&eacute;n&eacute;ralement utilis&eacute; pour cr&eacute;er
	  des alias &agrave; une machine.  Dans l'exemple,
	  <hostid>www</hostid> est un alias de la machine
	  correspondant &agrave; l'origine, ou encore <hostid
	  role="domainname">example.org</hostid> (<hostid
	  role="ipaddr">3.2.1.30</hostid>).  Les enregistrements CNAME
	  peuvent &ecirc;tre utilis&eacute;s pour fournir des alias
	  &agrave; des noms de machines, ou permettre la rotation
	  (&ldquo;round robin&rdquo;) d'un nom de machine entre
	  plusieurs machines.</para>

	<indexterm>
	  <primary>MX record</primary>
	</indexterm>

	<programlisting>
@               IN MX   10      mail.example.org.</programlisting>

	<para>L'enregistrement MX indique quels serveurs de messagerie
	  sont responsables de la gestion du courrier entrant pour la
	  zone.  <hostid role="fqdn">mail.example.org</hostid> est le
	  nom de machine du serveur de messagerie, et 10 &eacute;tant
	  la priorit&eacute; du serveur de messagerie.</para>

	<para>On peut avoir plusieurs serveurs de messagerie, avec des
	  priorit&eacute;s de 3, 2, 1.  Un serveur de messagerie
	  tentant de transmettre du courrier au domaine <hostid
	  role="domainname">example.org</hostid> essaiera en premier
	  le MX avec la plus haute priorit&eacute;, puis celui venant
	  en second, etc, jusqu'&agrave; ce que le courrier puisse
	  &ecirc;tre correctement d&eacute;livr&eacute;.</para>

	<para>Pour les fichiers de zone in-addr.arpa (DNS inverse), le
	  m&ecirc;me format est utilis&eacute;, &agrave; l'exception
	  du fait que des entr&eacute;es PTR seront utilis&eacute;es
	  en place de A ou CNAME.</para>

	<programlisting>$TTL 3600

1.2.3.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
                        5               ; Serial
                        10800           ; Refresh
                        3600            ; Retry
                        604800          ; Expire
                        3600 )          ; Minimum

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

2       IN PTR  ns1.example.org.
3       IN PTR  ns2.example.org.
10      IN PTR  mail.example.org.
30      IN PTR  example.org.</programlisting>

	<para>Ce fichier donne la correspondance entre adresses IP et
	  noms de machines de notre domaine fictif.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>Serveur de noms cache</title>
      <indexterm>
	<primary>BIND</primary>
	<secondary>serveur de noms cache</secondary>
      </indexterm>
      <para>Un serveur de noms cache est un serveur de noms qui ne
	fait autorit&eacute; pour aucune zone.  Il &eacute;met
	simplement des requ&ecirc;tes, et se souvient du r&eacute;sultat
	pour une utilisation ult&eacute;rieure.  Pour mettre en place un
	tel serveur, configurez le serveur de noms comme &agrave;
	l'accoutum&eacute;, en prenant bien soin de n'inclure aucune
	zone.</para>
    </sect2>

    <sect2 id="network-named-sandbox">
      <title>Ex&eacute;cution <application>named</application> dans un
	&ldquo;sandbox&rdquo;</title>
      <indexterm>
	<primary>BIND</primary>
	<secondary>ex&eacute;cution dans un sandbox</secondary>
      </indexterm>

      <indexterm>
	<primary><command>chroot</command></primary>
      </indexterm>
      <para>Pour plus de s&eacute;curit&eacute;, il peut &ecirc;tre
	pr&eacute;f&eacute;rable d'ex&eacute;cuter &man.named.8; sous un
	utilisateur sans privil&egrave;ges, et le configurer pour
	modifier l'emplacement de la racine du syst&egrave;me de
	fichiers (&man.chroot.8;) vers le r&eacute;pertoire du
	&ldquo;sandbox&rdquo; (bac &agrave; sable).  Ceci rend
	inaccessible au &ldquo;daemon&rdquo;
	<application>named</application> tout ce qui est situ&eacute; en
	dehors de l'environnement &ldquo;sandbox&rdquo;.  Si
	<application>named</application> est compromis, cela
	r&eacute;duira l'impact des dommages.  Par d&eacute;faut, &os;
	dispose d'un utilisateur et d'un groupe appel&eacute;
	<groupname>bind</groupname>, destin&eacute; &agrave; cet
	usage.</para>

      <note>
	<para>De nombreuses personnes recommanderont qu'&agrave; la
	  place de configurer <application>named</application> &agrave;
	  &ldquo;chrooter&rdquo;, vous devriez ex&eacute;cuter
	  <application>named</application> dans un environnement
	  &man.jail.8;.  Cette section ne traitera pas ce cas de
	  figure.</para>
      </note>

      <para>Puisque <application>named</application> ne sera pas en
	mesure d'avoir acc&egrave;s &agrave; des
	&eacute;l&eacute;ments ext&eacute;rieur au
	&ldquo;sandbox&rdquo; (comme aux biblioth&egrave;ques
	partag&eacute;es, aux &ldquo;sockets&rdquo; pour
	l'enregistrements des journaux, etc.), il y a un certain
	nombre d'&eacute;tapes &agrave; suivre afin de permettre
	&agrave; <application>named</application> un fonctionnement
	correct.  Dans la liste d'op&eacute;rations qui suit, on
	suppose que l'emplacement du &ldquo;sandbox&rdquo; est
	<filename class="directory">/etc/namedb</filename> et que vous
	n'avez pas pr&eacute;c&eacute;demment modifi&eacute; le
	contenu de ce r&eacute;pertoire.  Effectuez les &eacute;tapes
	suivantes en tant que <username>root</username>:</para>

      <itemizedlist>
	<listitem>
	  <para>Cr&eacute;er tous les r&eacute;pertoires que
	    <application>named</application> s'attend &agrave;
	    trouver:</para>

	  <screen>&prompt.root; <userinput>cd /etc/namedb</userinput>
&prompt.root; <userinput>mkdir -p bin dev etc var/tmp var/run master slave</userinput>
&prompt.root; <userinput>chown bind:bind slave var/*</userinput><co id="chown-slave"></screen>

	  <calloutlist>
	    <callout arearefs="chown-slave">
	      <para><application>named</application> n'a besoin
		uniquement que d'un acc&egrave;s en &eacute;criture
		&agrave; ces r&eacute;pertoires, c'est tout ce que nous
		lui donnerons.</para>
	    </callout>
	  </calloutlist>
	</listitem>

	<listitem>
	  <para>R&eacute;arranger les fichiers de configuration et
	    cr&eacute;er la zone:</para>

	  <screen>&prompt.root; <userinput>cp /etc/localtime etc</userinput><co id="localtime">
&prompt.root; <userinput>mv named.conf etc && ln -sf etc/named.conf</userinput>
&prompt.root; <userinput>mv named.root master</userinput>
<!-- I don't like this next bit -->
&prompt.root; <userinput>sh make-localhost && mv localhost.rev localhost-v6.rev master</userinput>
&prompt.root; <userinput>cat > master/named.localhost
$ORIGIN localhost.
$TTL 6h
@	IN	SOA	localhost. postmaster.localhost. (
			1	; serial
			3600	; refresh
			1800	; retry
			604800	; expiration
			3600 )	; minimum
	IN	NS	localhost.
	IN	A		127.0.0.1
^D</userinput></screen>

	  <calloutlist>
	    <callout arearefs="localtime">
	      <para>Ceci permet &agrave; <application>named</application>
		d'utiliser des dates correctes lors de l'envoie des
		journaux &agrave; &man.syslogd.8;.</para>
	    </callout>
	  </calloutlist>
	</listitem>

	<indexterm><primary>syslog</primary></indexterm>
	<indexterm><primary>journaux</primary>
	  <secondary>DNS</secondary></indexterm>

	<listitem>
	  <para>Si vous utilisez une version de &os; ant&eacute;rieure
	    &agrave; 4.9-RELEASE, compilez une version li&eacute;e en
	    statique de <application>named-xfer</application>, et
	    copiez-la dans le &ldquo;sandbox&rdquo;:</para>

	  <screen>&prompt.root; <userinput>cd /usr/src/lib/libisc</userinput>
&prompt.root; <userinput>make cleandir && make cleandir && make depend && make all</userinput>
&prompt.root; <userinput>cd /usr/src/lib/libbind</userinput>
&prompt.root; <userinput>make cleandir && make cleandir && make depend && make all</userinput>
&prompt.root; <userinput>cd /usr/src/libexec/named-xfer</userinput>
&prompt.root; <userinput>make cleandir && make cleandir && make depend && make NOSHARED=yes all</userinput>
&prompt.root; <userinput>cp named-xfer /etc/namedb/bin && chmod 555 /etc/namedb/bin/named-xfer</userinput><co id="clean-cruft"></screen>

	  <para>Apr&egrave;s avoir install&eacute; votre version
	    statique de <command>named-xfer</command>, un peu de
	    nettoyage est n&eacute;cessaire pour &eacute;viter de
	    conserver des copies inutiles de bibliot&egrave;ques ou de
	    programmes dans votre arborescence des sources:</para>

	  <screen>&prompt.root; <userinput>cd /usr/src/lib/libisc</userinput>
&prompt.root; <userinput>make cleandir</userinput>
&prompt.root; <userinput>cd /usr/src/lib/libbind</userinput>
&prompt.root; <userinput>make cleandir</userinput>
&prompt.root; <userinput>cd /usr/src/libexec/named-xfer</userinput>
&prompt.root; <userinput>make cleandir</userinput></screen>

	  <calloutlist>
	    <callout arearefs="clean-cruft">
	      <para>Il a &eacute;t&eacute; signal&eacute; que cette
		&eacute;tape peut parfois &eacute;chouer.  Si cela vous
		arrive, tapez alors la commande:</para>

	      <screen>&prompt.root; <userinput>cd /usr/src && make cleandir && make cleandir</userinput></screen>

	      <para>et effacez votre arborescence
		<filename class="directory">/usr/obj</filename>:</para>

	      <screen>&prompt.root; <userinput>rm -fr /usr/obj && mkdir /usr/obj</userinput></screen>

	      <para>Cela devrait supprimer les &eacute;ventuels
		&ldquo;scories&rdquo; de votre arborescence des
		sources, puis en r&eacute;essayant les
		op&eacute;rations ci-dessus cela devrait enfin
		fonctionner.</para>
	    </callout>
	  </calloutlist>

	  <para>Si vous utilisez &os;&nbsp;4.9-RELEASE ou une version
	    suivante, alors la version de
	    <command>named-xfer</command> se trouvant dans le
	    r&eacute;pertoire <filename
	    class="directory">/usr/libexec</filename> est li&eacute;e
	    en statique par d&eacute;faut, et vous pouvez tout
	    simplement utiliser la commande &man.cp.1; pour la copier
	    dans l'environnement &ldquo;sandbox&rdquo;.</para>
	</listitem>

	<listitem>
	  <para>Cr&eacute;er un fichier sp&eacute;cial de
	    p&eacute;riph&eacute;rique <filename>dev/null</filename>
	    dans lequel <application>named</application> peut lire et
	    &eacute;crire:</para>

	  <screen>&prompt.root; <userinput>cd /etc/namedb/dev && mknod null c 2 2</userinput>
&prompt.root; <userinput>chmod 666 null</userinput></screen>
	</listitem>

	<listitem>
	  <para>Cr&eacute;er un lien symbolique de
	    <filename>/var/run/ndc</filename> vers
	    <filename>/etc/namedb/var/run/ndc</filename>:</para>

	  <screen>&prompt.root; <userinput>ln -sf /etc/namedb/var/run/ndc /var/run/ndc</userinput></screen>

	  <note>
	    <para>Ceci &eacute;vite tout simplement d'avoir &agrave;
	      sp&eacute;cifier l'option <option>-c</option> &agrave;
	      &man.ndc.8; &agrave; chaque fois que vous
	      l'ex&eacute;cutez.  Comme le contenu du r&eacute;pertoire
	      <filename class="directory">/var/run</filename> est
	      effac&eacute; au d&eacute;marrage, il peut &ecirc;tre
	      utile d'ajouter cette commande dans le fichier
	      &man.crontab.5; de l'utilisateur
	      <username>root</username> en utilisant l'option
	      <option>@reboot</option>.</para>
	  </note>
	</listitem>

	<indexterm><primary>syslog</primary></indexterm>
	<indexterm><primary>journaux</primary>
	  <secondary>named</secondary></indexterm>

	<listitem>
	  <para>Configurer &man.syslogd.8; pour qu'il
	    cr&eacute;&eacute; une &ldquo;socket&rdquo;
	    suppl&eacute;mentaire <devicename>log</devicename> sur
	    laquelle <application>named</application> dispose d'un
	    acc&egrave;s en &eacute;criture.  Pour cela, ajoutez
	    <literal>-l /etc/namedb/dev/log</literal> &agrave; la
	    variable <varname>syslogd_flags</varname> du fichier
	    <filename>/etc/rc.conf</filename>.</para>
	</listitem>

	<indexterm><primary><command>chroot</command></primary></indexterm>

	<listitem>
	  <para>S'arranger &agrave; ce que
	    <application>named</application> d&eacute;marre et se
	    &ldquo;<command>chroot</command>&rdquo; lui-m&ecirc;me dans
	    l'environnement &ldquo;sandbox&rdquo; en ajoutant ce qui
	    suit au fichier <filename>/etc/rc.conf</filename>:</para>

	  <programlisting>named_enable="YES"
named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf"</programlisting>

	  <note>
	    <para>Notez que l'emplacement du fichier de configuration
	      <replaceable>/etc/named.conf</replaceable> est
	      r&eacute;f&eacute;renc&eacute; par rapport un chemin
	      complet <emphasis>relatif au
	      &ldquo;sandbox&rdquo;</emphasis>, i.e. dans la ligne
	      au-dessus, le fichier auquel on fait
	      r&eacute;f&eacute;rence est en fait
	      <filename>/etc/namedb/etc/named.conf</filename>.</para>
	  </note>
	</listitem>
      </itemizedlist>

      <para>L'&eacute;tape suivante est d'&eacute;diter le fichier
	<filename>/etc/namedb/etc/named.conf</filename> pour que
	<application>named</application> puisse savoir quelles zones
	charger et o&ugrave; les trouver sur le disque.  Un exemple
	comment&eacute; suit (tout ce qui n'est pas
	sp&eacute;cifiquement comment&eacute; ici n'est pas
	diff&eacute;rent de la configuration d'un serveur DNS ne
	tournant pas dans un &ldquo;sandbox&rdquo;):</para>

      <programlisting>options {
        directory "/";<co id="directory">
        named-xfer "/bin/named-xfer";<co id="named-xfer">
        version "";		// Ne pas r&eacute;v&eacute;ler la version de BIND
        query-source address * port 53;
};
// socket de contr&ocirc;le ndc
controls {
        unix "/var/run/ndc" perm 0600 owner 0 group 0;
};
// Les zones:
zone "localhost" IN {
        type master;
        file "master/named.localhost";<co id="master">
        allow-transfer { localhost; };
        notify no;
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "master/localhost.rev";
        allow-transfer { localhost; };
        notify no;
};
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.ip6.int" {
	type master;
	file "master/localhost-v6.rev";
	allow-transfer { localhost; };
	notify no;
};
zone "." IN {
        type hint;
        file "master/named.root";
};
zone "private.example.net" in {
        type master;
        file "master/private.example.net.db";
	allow-transfer { 192.168.10.0/24; };
};
zone "10.168.192.in-addr.arpa" in {
        type slave;
        masters { 192.168.10.2; };
        file "slave/192.168.10.db";<co id="slave">
};</programlisting>

      <calloutlist>
	<callout arearefs="directory">
	  <para>L'option <literal>directory</literal> est
	    d&eacute;finie par <filename class="directory">/</filename>,
	    puisque tous les fichiers dont
	    <application>named</application> a besoin sont dans ce
	    r&eacute;pertoire (ceci est &eacute;quivalent au fichier
	    <filename>/etc/namedb</filename> d'un utilisateur
	    &ldquo;normal&rdquo;).</para>
	</callout>

	<callout arearefs="named-xfer">
	  <para>Indique le chemin d'acc&egrave;s complet du binaire
	    <command>named-xfer</command> (&agrave; partir de
	    l'arborescence utilis&eacute;e pour
	    <application>named</application>).  Ceci est
	    n&eacute;cessaire puisque <application>named</application>
	    est compil&eacute; pour chercher
	    <command>named-xfer</command> par d&eacute;faut dans le
	    r&eacute;pertoire <filename
	    class="directory">/usr/libexec</filename>.</para>
	</callout>
	<callout arearefs="master">
	  <para>Indique le nom de fichier (relatif &agrave; la valeur
	    de <literal>directory</literal> plus haut) o&ugrave;
	    <application>named</application> le fichier de zone pour
	    cette zone.</para>
	</callout>
	<callout arearefs="slave">
	  <para>Indique le nom de fichier (relatif &agrave; la valeur
	    de <literal>directory</literal> plus haut) o&ugrave;
	    <application>named</application> devrait trouver une copie
	    du fichier de zone pour cette zone apr&egrave;s l'avoir
	    transf&eacute;r&eacute; avec succ&egrave;s &agrave; partir
	    du serveur ma&icirc;tre.  C'est pourquoi nous avons eu
	    besoin de changer le propri&eacute;taire du
	    r&eacute;pertoire <filename
	    class="directory">slave</filename> pour
	    <groupname>bind</groupname> dans les &eacute;tapes de
	    configuration pr&eacute;c&eacute;dentes.</para>
	</callout>
      </calloutlist>

      <para>Apr&egrave;s avoir compl&eacute;t&eacute;es les
	&eacute;tapes pr&eacute;c&eacute;dentes, red&eacute;marrez
	votre serveur ou relancez &man.syslogd.8; et d&eacute;marrez
	&man.named.8;, en s'assurant de bien utiliser les nouvelles
	options sp&eacute;cifi&eacute;es dans les variables
	<varname>syslogd_flags</varname> et
	<varname>named_flags</varname>.  Vous devriez disposez
	maintenant d'une version de <application>named</application>
	tournant dans un environnement &ldquo;sandbox&rdquo;!</para>
    </sect2>

    <sect2>
      <title>S&eacute;curit&eacute;</title>

      <para>Bien que BIND soit l'impl&eacute;mentation la plus
	courante du DNS, le probl&egrave;me de la
	s&eacute;curit&eacute; subsiste toujours.  De possibles
	probl&egrave;mes de s&eacute;curit&eacute; exploitables sont
	parfois d&eacute;couvert.</para>

      <para>C'est une bonne id&eacute;e de lire les avis de
	s&eacute;curit&eacute; du <ulink
	url="http://www.cert.org/">CERT</ulink> et de s'inscrire
	&agrave; la &a.security-notifications; pour se maintenir au
	courant des probl&egrave;mes de s&eacute;curit&eacute; actuels
	de l'Internet et de &os;.</para>

      <tip>
	<para>Si un probl&egrave;me surgit, conserver les sources
	  &agrave; jour et disposer d'une version compil&eacute;e de
	  <application>named</application> r&eacute;cente ne seront pas
	  de trop.</para>
      </tip>
    </sect2>

    <sect2>
      <title>Lectures suppl&eacute;mentaires</title>

      <para>Les pages de manuel de
	BIND/<application>named</application>: &man.ndc.8;
	&man.named.8; &man.named.conf.5;.</para>

      <itemizedlist>
	<listitem>
	  <para><ulink url="http://www.isc.org/products/BIND/">Page
	    officielle ISC concernant BIND</ulink></para>
	</listitem>

	<listitem>
	  <para><ulink
	    url="http://www.nominum.com/getOpenSourceResource.php?id=6">FAQ
	    BIND</ulink></para>
	</listitem>

	<listitem>
	  <para><ulink url="http://www.oreilly.com/catalog/dns4/">DNS
	    et BIND 4&egrave;me Edition de chez O'Reilly</ulink></para>
	</listitem>

	<listitem>
	  <para><ulink
	    url="ftp://ftp.isi.edu/in-notes/rfc1034.txt">RFC1034
	    - Domain Names - Concepts and Facilities</ulink></para>
	</listitem>

	<listitem>
	  <para><ulink
	    url="ftp://ftp.isi.edu/in-notes/rfc1035.txt">RFC1035
	    - Domain Names - Implementation and
	    Specification</ulink></para>
	</listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 id="network-bind9">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Ecrit par </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title><acronym>BIND</acronym>9 et &os;</title>

<!-- This section is here to get users up with BIND9 configurations!  It
  does not cover the terminology, theoretical discussion (why run a name
  server) or the further reading which is still in the previous section.
  I did things this way to avoid repetition of content and obviously we
  cannot just remove the previous section since other supported releases
  use it.  When the previous section is removed then those comments
  should be moved here.  // Tom Rhodes -->

    <indexterm><primary>bind9</primary>
      <secondary>configuration</secondary></indexterm>

    <para>L'arriv&eacute;e de &os;&nbsp;5.3 a apport&eacute; le
      serveur <acronym>DNS</acronym> <acronym>BIND</acronym>9 dans la
      distribution.  De nouvelles fonctionnalit&eacute;s concernant la
      s&eacute;curit&eacute;, une nouvelle organisation des fichiers,
      une configuration &man.chroot.8; automatis&eacute;e, font partie
      des nouveaut&eacute;s.  Cette section est divis&eacute;e en deux
      parties, la premi&egrave;re abordera les nouvelles
      fonctionnalit&eacute;s et leur configuration, la seconde
      traitera des mises &agrave; jours en vue d'aider la migration
      vers &os;&nbsp;5.3.  A partir de cet instant, il sera fait
      r&eacute;f&eacute;rence au serveur &agrave; l'aide du nom
      &man.named.8; &agrave; la place de <acronym>BIND</acronym>.
      Cette section fait l'impasse sur la terminologie
      pr&eacute;sent&eacute;e dans la section pr&eacute;c&eacute;dente
      tout comme sur une partie de la th&eacute;orie, par
      cons&eacute;quent il est recommand&eacute; de consulter la
      section pr&eacute;c&eacute;dente avant d'aller plus loin.</para>

    <para>Les fichiers de configuration pour
      <application>named</application> se trouvent dans le
      r&eacute;pertoire <filename
      class="directory">/var/named/etc/namedb/</filename> et devront
      &ecirc;tre adapt&eacute;s avant toute utilisation.  C'est
      l&agrave; o&ugrave; la majeure partie de la configuration se
      fera.</para>

    <sect2>
      <title>Configuration d'une zone ma&icirc;tre</title>

      <para>Pour configurer une zone ma&icirc;tre, il faut se rendre
	dans le r&eacute;pertoire <filename
	class="directory">/var/named/etc/namedb/</filename> et
	ex&eacute;cuter la commande suivante:</para>

      <screen>&prompt.root; <userinput>sh make-localhost</userinput></screen>

      <para>Si tout s'est bien pass&eacute;, un nouveau fichier
	devrait appara&icirc;tre dans le r&eacute;pertoire <filename
	class="directory">master</filename>.  Le nom du fichier
	devrait &ecirc;tre <filename>localhost.rev</filename> pour le
	nom de domaine local et <filename>localhost-v6.rev</filename>
	pour les configurations <acronym>IPv6</acronym>.  Tout comme
	le fichier de configuration par d&eacute;faut, une
	configuration pour son utilisation sera d&eacute;j&agrave;
	pr&eacute;sente dans le fichier
	<filename>named.conf</filename>.</para>
    </sect2>

    <sect2>
      <title>Configuration d'une zone esclave</title>

      <para>La configuration de domaines suppl&eacute;mentaires ou de
	sous-domaines peut &ecirc;tre faite sous la forme d'une zone
	esclave.  Dans la plupart des cas, le fichier
	<filename>master/localhost.rev</filename> peut &ecirc;tre
	directement copi&eacute; dans le r&eacute;pertoire <filename
	class="directory">slave</filename> et y &ecirc;tre
	modifi&eacute;.  Une fois compl&eacute;t&eacute;s, les
	fichiers doivent &ecirc;tre ajout&eacute;s dans le fichier
	<filename>named.conf</filename> comme dans la configuration
	suivante pour <hostid
	role="domainname">example.com</hostid>:</para>

      <programlisting>zone "example.com" {
        type slave;
        file "slave/example.com";
        masters {
                10.0.0.1;
        };
};

zone "0.168.192.in-addr.arpa" {
        type slave;
        file "slave/0.168.192.in-addr.arpa";
        masters {
                10.0.0.1;
        };
};</programlisting>

      <para>Notez que dans cet exemple, l'adresse
	<acronym>IP</acronym> du ma&icirc;tre est celle du serveur
	primaire du domaine &agrave; partir duquel les zones sont
	transf&eacute;r&eacute;es; il ne joue pas
	n&eacute;cessairement le r&ocirc;le de serveur
	<acronym>DNS</acronym> en tant que tel.</para>
    </sect2>

    <sect2>
      <title>Configuration de l'initialisation du
	syst&egrave;me</title>

      <para>Afin de lancer le <quote>daemon</quote>
	<application>named</application> au d&eacute;marrage du
	syst&egrave;me, l'option suivante doit &ecirc;tre
	pr&eacute;sente dans le fichier
	<filename>rc.conf</filename>:</para>

      <programlisting>named_enable="YES"</programlisting>

      <para>Alors que d'autres options existent, cela
	repr&eacute;sente le minimum n&eacute;cessaire.  Consultez la
	page de manuel de &man.rc.conf.5; pour une liste des autres
	options disponibles.  Si rien n'est pr&eacute;sent dans le
	fichier <filename>rc.conf</filename> alors
	<application>named</application> peut &ecirc;tre
	ex&eacute;cut&eacute; &agrave; partir de la ligne de commande
	en invoquant:</para>

      <screen>&prompt.root; <userinput>/etc/rc.d/named start</userinput></screen>
    </sect2>

    <sect2>
      <title>La s&eacute;curit&eacute; et
	<acronym>BIND</acronym>9</title>

      <para>Bien que &os; enferme automatique
	<application>named</application> dans un environnement
	&man.chroot.8;, il exite plusieurs autres m&eacute;canismes de
	s&eacute;curit&eacute; pr&eacute;sents qui pourraient aider
	&agrave; se pr&eacute;munir contre de possibles attaques
	<acronym>DNS</acronym>.</para>

      <sect3>
	<title>Listes de contr&ocirc;le d'acc&egrave;s des
	  requ&ecirc;tes</title>

	<para>Une liste de contr&ocirc;le d'acc&egrave;s des
	  requ&ecirc;tes peut &ecirc;tre employ&eacute;e pour
	  restreindre les requ&ecirc;tes sur certaines zones.  La
	  configuration de cette liste fonctionne en
	  d&eacute;finissant le r&eacute;seau concern&eacute; &agrave;
	  l'int&eacute;rieur d'une directive <literal>acl</literal>
	  puis en listant les adresses <acronym>IP</acronym> dans la
	  configuration de zone.  Pour autoriser des domaines &agrave;
	  envoyer des requ&ecirc;tes &agrave; la machine
	  utilis&eacute;e en exemple, effectuez la d&eacute;finition
	  suivante:</para>

	<programlisting>acl "example.com" {
        192.168.0.0/24;
};

zone "example.com" {
        type slave;
        file "slave/example.com";
        masters {
                10.0.0.1;
        };
	allow-query { example.com; };
};

zone "0.168.192.in-addr.arpa" {
        type slave;
        file "slave/0.168.192.in-addr.arpa";
        masters {
                10.0.0.1;
        };
	allow-query { example.com; };
};</programlisting>
      </sect3>

      <sect3>
	<title>Restreindre l'acc&egrave;s au num&eacute;ro de
	  version</title>

	<para>Autoriser les requ&ecirc;tes sur le num&eacute;ro de
	  version du serveur <acronym>DNS</acronym> peut ouvrir les
	  portes &agrave; un agresseur.  Un utilisateur malveillant
	  peut utiliser cette information pour rechercher les exploits
	  connus ou les bogues &agrave; utiliser contre la machine.
	  Une fausse cha&icirc;ne de caract&egrave;res de version peut
	  &ecirc;tre plac&eacute;e dans la section
	  <literal>options</literal> du fichier
	  <filename>named.conf</filename>:</para>

	<programlisting>options {
        directory       "/etc/namedb";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";
	version		"None of your business";</programlisting>
      </sect3>
<!-- Here is where I stopped for now
      <sect3>
        <title>Authentication</title>

	<para> ... </para>

-->
    </sect2>
  </sect1>

  <sect1 id="network-apache">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Murray</firstname>
	  <surname>Stokely</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Serveur HTTP Apache</title>

    <indexterm><primary>serveur web</primary>
      <secondary>configuration</secondary></indexterm>
    <indexterm><primary>Apache</primary></indexterm>

    <sect2>
      <title>G&eacute;n&eacute;ralit&eacute;s</title>

      <para>&os; est utilis&eacute; pour faire tourner certains des
	sites les plus charg&eacute;s au monde.  La majorit&eacute;
	des serveurs web sur l'Internet utilisent le serveur HTTP
	<application>Apache</application>.  Les versions
	pr&eacute;-compil&eacute;es
	d'<application>Apache</application> devraient se trouver sur
	le support d'installation de &os; que vous avez
	utilis&eacute;.  Si vous n'avez pas install&eacute;
	<application>Apache</application> &agrave; l'installation de
	&os;, alors vous pouvez installer le serveur &agrave; partir
	du logiciel port&eacute; <filename
	role="package">www/apache13</filename> ou <filename
	role="package">www/apache2</filename>.</para>

      <para>Une fois qu'<application>Apache</application> a
	&eacute;t&eacute; install&eacute; avec succ&egrave;s, il doit
	&ecirc;tre configur&eacute;.</para>

      <note>
	<para>Cette section traite de la version 1.3.X du serveur
	  HTTP <application>Apache</application> &eacute;tant
	  donn&eacute; que  c'est la version la plus largement
	  utilis&eacute;e sous &os;.
	  <application>Apache&nbsp;2.X</application> introduit de
	  nombreuses nouvelles technologies mais elles ne sont pas
	  abord&eacute;es ici.  Pour plus d'informations concernant
	  <application>Apache&nbsp;2.X</application> veuillez
	  consulter <ulink
	  url="http://httpd.apache.org/"></ulink>.</para>
      </note>
    </sect2>

    <sect2>
      <title>Configuration</title>

      <indexterm><primary>Apache</primary>
	<secondary>fichier de configuration</secondary></indexterm>

      <para>Le fichier principal de configuration du serveur HTTP
	<application>Apache</application> est, sous &os;, le fichier
	<filename>/usr/local/etc/apache/httpd.conf</filename>.  Ce
	fichier est un fichier texte de configuration &unix; typique
	avec des lignes de commentaires d&eacute;butant par un
	caract&egrave;re <literal>#</literal>.  Une description
	compl&egrave;te de toutes les options de configuration
	possibles d&eacute;passe le cadre de cet ouvrage, aussi seules
	les directives les plus fr&eacute;quemment modifi&eacute;es
	seront d&eacute;crites ici.</para>

      <variablelist>
	<varlistentry>
	  <term><literal>ServerRoot "/usr/local"</literal></term>

	  <listitem>
	    <para>Indique le r&eacute;pertoire d'installation par
	      d&eacute;faut pour l'arborescence
	      <application>Apache</application>.  Les binaires sont
	      stock&eacute;s dans les sous-r&eacute;pertoires <filename
	      class="directory">bin</filename> et <filename
	      class="directory">sbin</filename> de la racine du serveur,
	      et les fichiers de configuration dans <filename
	      class="directory">etc/apache</filename>.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>ServerAdmin you@your.address</literal></term>

	  <listitem>
	    <para>L'adresse &eacute;lectronique &agrave; laquelle tous
	      les probl&egrave;mes concernant le serveur doivent
	      &ecirc;tre rapport&eacute;s.  Cette adresse appara&icirc;t
	      sur certaines pages g&eacute;n&eacute;r&eacute;es par le
	      serveur, comme des pages d'erreur.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>ServerName www.example.com</literal></term>

	  <listitem>
	    <para>La directive <literal>ServerName</literal> vous
	      permet de fixer un nom de machine qui est renvoy&eacute;
	      aux clients de votre serveur si le nom est
	      diff&eacute;rent de celui de la machine (i.e, utilisez
	      <hostid>www</hostid> &agrave; la place du v&eacute;ritable
	      nom de la machine).</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><literal>DocumentRoot "/usr/local/www/data"</literal></term>

	  <listitem>
	    <para><literal>DocumentRoot</literal> est le
	      r&eacute;pertoire o&ugrave; se trouvent les documents que
	      votre serveur diffusera.  Par d&eacute;faut, toutes les
	      requ&ecirc;tes sont prises en compte par rapport &agrave;
	      ce r&eacute;pertoire, mais des liens symboliques et des
	      alias peuvent &ecirc;tre utilis&eacute;s pour pointer vers
	      d'autres emplacements.</para>
	  </listitem>
	</varlistentry>
      </variablelist>

      <para>C'est toujours une bonne id&eacute;e de faire des copies
	de sauvegarde de votre fichier de configuration
	d'<application>Apache</application> avant de faire des
	modifications.  Une fois que vous &ecirc;tes satisfait avec
	votre configuration, vous &ecirc;tes pr&ecirc;t &agrave;
	lancer <application>Apache</application>.</para>

<!-- sect3 for performance tuning directives?  maxservers minservers -->
<!-- etc..?? -->

<!-- Advanced configuration section.

Performance tuning directives.

Log file format -->
    </sect2>

    <sect2>
      <title>Ex&eacute;cuter <application>Apache</application></title>

      <indexterm><primary>Apache</primary>
	<secondary>d&eacute;marrage ou
	  arr&ecirc;t</secondary></indexterm>

      <para><application>Apache</application> n'est pas lanc&eacute;
	&agrave; partir du &ldquo;super-serveur&rdquo;
	<application>inetd</application> comme pour beaucoup d'autres
	serveurs r&eacute;seau.  Il est configur&eacute; pour tourner
	de fa&ccedil;on autonome pour de meilleures performances
	&agrave; la r&eacute;ception des requ&ecirc;tes HTTP des
	navigateurs web.  Une proc&eacute;dure est fournie pour rendre
	le d&eacute;marrage, l'arr&ecirc;t, et le red&eacute;marrage
	du serveur aussi simple que possible.  Pour d&eacute;marrer
	<application>Apache</application> pour la premi&egrave;re
	fois, ex&eacute;cutez:</para>

      <screen>&prompt.root; <userinput>/usr/local/sbin/apachectl start</userinput></screen>

      <para>Vous pouvez arr&ecirc;ter le serveur &agrave; tout moment
	en tapant:</para>

      <screen>&prompt.root; <userinput>/usr/local/sbin/apachectl stop</userinput></screen>

      <para>Apr&egrave;s avoir effectu&eacute; des modifications dans
	le fichier de configuration, vous devez red&eacute;marrer le
	serveur:</para>

      <screen>&prompt.root; <userinput>/usr/local/sbin/apachectl restart</userinput></screen>

      <para>Pour red&eacute;marrer <application>Apache</application>
	sans faire &eacute;chouer les connexions en cours,
	ex&eacute;cutez:</para>

      <screen>&prompt.root; <userinput>/usr/local/sbin/apachectl graceful</userinput></screen>

      <para>Des informations suppl&eacute;mentaires sont disponibles
	dans la page de manuel d'&man.apachectl.8;.</para>

      <para>Pour lancer <application>Apache</application> au
	d&eacute;marrage du syst&egrave;me, ajoutez la ligne suivante
	au fichier <filename>/etc/rc.conf</filename>:</para>

      <programlisting>apache_enable="YES"</programlisting>

      <para>Si vous d&eacute;sirez passer des options en ligne de
	commande suppl&eacute;mentaires au programme
	<command>httpd</command> d'<application>Apache</application>
	lanc&eacute; au d&eacute;marrage du syst&egrave;me, vous
	pouvez les sp&eacute;cifier &agrave; l'aide d'une ligne dans
	<filename>rc.conf</filename>:</para>

      <programlisting>apache_flags=""</programlisting>

      <para>Maintenant que le serveur web tourne, vous pouvez voir
	votre site web en pointant votre navigateur sur
	<literal>http://localhost/</literal>.  La page web
	affich&eacute;e par d&eacute;faut est
	<filename>/usr/local/www/data/index.html</filename>.</para>
    </sect2>

    <sect2>
      <title>Serveurs virtuels</title>

      <para><application>Apache</application> supporte deux types
	diff&eacute;rents de serveurs virtuels.  Le premier type est
	celui des serveurs virtuels bas&eacute;s sur les noms.  Ce
	type de serveurs virtuels utilise les ent&ecirc;tes HTTP/1.1
	pour d&eacute;terminer le nom de la machine.  Cela autorise le
	partage de la m&ecirc;me adresse IP entre plusieurs domaines
	diff&eacute;rents.</para>

      <para>Pour configurer <application>Apache</application> &agrave;
	l'utilisation de serveurs virtuels bas&eacute;s sur les noms,
	ajoutez une entr&eacute;e comme la suivante &agrave; votre
	fichier <filename>httpd.conf</filename>:</para>

      <programlisting>NameVirtualHost *</programlisting>

      <para>Si votre serveur web est appel&eacute; <hostid
	role="fqdn">www.domain.tld</hostid> et que vous voulez mettre
	en place un domain virtuel pour <hostid
	role="fqdn">www.someotherdomain.tld</hostid> alors vous
	ajouterez les entr&eacute;es suivantes au fichier
	<filename>httpd.conf</filename>:</para>

      <screen>&lt;VirtualHost *&gt;
ServerName www.domain.tld
DocumentRoot /www/domain.tld
&lt;VirtualHost&gt;

&lt;VirtualHost *&gt;
ServerName www.someotherdomain.tld
DocumentRoot /www/someotherdomain.tld
&lt;/VirtualHost&gt;</screen>

      <para>Remplacez les addresses avec celles que vous
	d&eacute;sirez utiliser et le chemin d'acc&egrave;s des
	documents avec celui que vous utilisez.</para>

      <para>Pour plus d'informations sur la mise en place de serveurs
	virtuels, veuillez consulter la documentation officielle
	d'<application>Apache</application> &agrave; l'adresse <ulink
	url="http://httpd.apache.org/docs/vhosts/"></ulink></para>
    </sect2>

    <sect2>
      <title>Modules Apache</title>

      <indexterm><primary>Apache</primary>
	<secondary>modules</secondary></indexterm>

      <para>Il existe de nombreux modules
	<application>Apache</application> disponibles en vue d'ajouter
	des fonctionnalit&eacute;s au serveur de base.  Le catalogue
	des logiciels port&eacute;s offre une m&eacute;thode simple
	d'installation d'<application>Apache</application> avec
	certains des modules les plus populaires.</para>

      <sect3>
	<title>mod_ssl</title>

	<indexterm><primary>serveur web</primary>
	  <secondary>s&eacute;curis&eacute;</secondary></indexterm>
	<indexterm><primary>SSL</primary></indexterm>
	<indexterm><primary>chiffrement</primary></indexterm>

	<para>Le module <application>mod_ssl</application> utilise la
	  biblioth&egrave;que OpenSSL pour offrir un chiffrement
	  solide &agrave; l'aide des protocoles &ldquo;Secure Sockets
	  Layer&rdquo; (SSL v2/v3) et &ldquo;Transport Layer
	  Security&rdquo;.  Ce module fourni tout ce qui est
	  n&eacute;cessaire &agrave; la demande de certificats
	  sign&eacute;s aupr&egrave;s d'une autorit&eacute; de
	  certification connue de fa&ccedil;on &agrave; pouvoir faire
	  tourner un serveur web s&eacute;curis&eacute; sous
	  &os;.</para>

	<para>Si vous n'avez pas d&eacute;j&agrave; install&eacute;
	  <application>Apache</application>, alors une version
	  d'<application>Apache</application> 1.3.X comprenant
	  <application>mod_ssl</application> peut &ecirc;tre
	  install&eacute;e &agrave; l'aide du logiciel port&eacute;
	  <filename
	  role="package">www/apache13-modssl</filename>.  Le support
	  SSL est &eacute;galement disponible pour
	  <application>Apache&nbsp;2.X</application> avec le logiciel
	  port&eacute; <filename
	  role="package">www/apache2</filename>, o&ugrave; il est
	  activ&eacute; par d&eacute;faut.</para>

<!-- XXX add more information about configuring mod_ssl here. -->
<!-- Generating keys, getting the key signed, setting up your secure -->
<!-- web server! -->
      </sect3>

      <sect3>
	<title>mod_perl</title>

	<indexterm><primary>Perl</primary></indexterm>

	<para>Le projet d'int&eacute;gration
	  <application>Apache</application>/Perl r&eacute;uni la
	  puissance du langage de programmation Perl et le serveur
	  HTTP <application>Apache</application>.  Avec le module
	  <application>mod_perl</application> il est alors possible
	  d'&eacute;crire des modules
	  <application>Apache</application> enti&egrave;rement en
	  Perl.  De plus, la pr&eacute;sence d'un interpr&eacute;teur
	  int&eacute;gr&eacute; au serveur &eacute;vite la surcharge
	  due au lancement d'un interpr&eacute;teur externe et le
	  d&eacute;lai p&eacute;nalisant du d&eacute;marrage de
	  Perl.</para>

	<para>Si vous n'avez pas encore install&eacute;
	  <application>Apache</application>, une version
	  d'<application>Apache</application> comprenant le module
	  <application>mod_perl</application> peut &ecirc;tre
	  install&eacute;e avec le logiciel port&eacute; <filename
	  role="package">www/apache13-modperl</filename>.</para>
      </sect3>

      <sect3>
	<title>PHP</title>

	<indexterm><primary>PHP</primary></indexterm>

	<para>PHP, qui signifie &ldquo;PHP: Hypertext
	  Preprocessor&rdquo; est un langage de script &ldquo;Open
	  Source&rdquo; tr&egrave;s utilis&eacute; qui est tout
	  particuli&egrave;rement adapt&eacute; au
	  d&eacute;veloppement Web et peut &ecirc;tre
	  int&eacute;gr&eacute; &agrave; du HTML.  Sa syntaxe est
	  d&eacute;riv&eacute;e du C, du &java; et du Perl, et est
	  facile &agrave; apprendre.  L'objectif principal de ce
	  langage est de permettre aux d&eacute;veloppeurs Web
	  d'&eacute;crire rapidement des pages au contenu
	  g&eacute;n&eacute;r&eacute; dynamiquement, mais vous pouvez
	  faire bien plus avec PHP.</para>

	<para>PHP peut &ecirc;tre install&eacute; &agrave; partir du
	  logiciel port&eacute; <filename
	  role="package">lang/php5</filename>.</para>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="network-ftp">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Murray</firstname>
	  <surname>Stokely</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Protocole de transfert de fichiers (FTP)</title>

    <indexterm><primary>serveur FTP</primary></indexterm>

    <sect2>
      <title>G&eacute;n&eacute;ralit&eacute;s</title>

      <para>Le protocol de transfert de fichiers (FTP) offre aux
	utilisateurs une m&eacute;thode simple pour transf&eacute;rer
	des fichiers vers ou &agrave; partir d'un serveur <acronym
	role="File Transfer Protocol">FTP</acronym>.  &os; comprend un
	serveur <acronym role="File Transfer Protocol">FTP</acronym>,
	<application>ftpd</application>, dans le syst&egrave;me de
	base.  Cela rend la configuration et l'administration d'un
	serveur <acronym role="File Transfer Protocol">FTP</acronym>
	sous &os; tr&egrave;s simple.</para>
    </sect2>

    <sect2>
      <title>Configuration</title>

      <para>L'&eacute;tape de configuration la plus important est de
	d&eacute;cider quels comptes seront autoris&eacute;s &agrave;
	acc&eacute;der au serveur FTP.  Un syst&egrave;me &os;
	classique poss&egrave;de de nombreux comptes syst&egrave;me
	utilis&eacute;s par divers &ldquo;daemon&rdquo;s, mais les
	utilisateurs inconnus ne devraient pas &ecirc;tre
	autoris&eacute;s &agrave; ouvrir de session sous ces comptes.
	Le fichier <filename>/etc/ftpusers</filename> est une liste
	d'utilisateurs inderdit d'acc&egrave;s au serveur FTP.  Par
	d&eacute;faut, il inclut les comptes syst&egrave;mes
	pr&eacute;c&eacute;demment mentionn&eacute;s, mais il est
	possible d'ajouter des utilisateurs pr&eacute;cis qui ne
	devraient pas avoir acc&egrave;s au serveur FTP.</para>

      <para>Vous pouvez vouloir restreindre l'acc&egrave;s &agrave;
	certains utilisateurs sans leur refuser compl&egrave;tement
	l'utilisation du serveur FTP.  Cela peut &ecirc;tre
	r&eacute;alis&eacute; &agrave; l'aide du fichier
	<filename>/etc/ftpchroot</filename>.  Ce fichier liste les
	utilisateurs et les groupes sujet &agrave; des restrcitions
	d'acc&egrave;s FTP.  La page de manuel &man.ftpchroot.5;
	fournit tous les d&eacute;tails, cela ne sera donc pas
	d&eacute;crit ici.</para>

      <para>Si vous d&eacute;sirez activer l'acc&egrave;s FTP anonyme
	sur votre serveur, vous devez alors cr&eacute;er un
	utilisateur appel&eacute; <username>ftp</username> sur votre
	serveur &os;.  Les utilisateurs seront donc en mesure d'ouvrir
	une session FTP sur votre serveur sous le nom d'utilisateur
	<username>ftp</username> ou <username>anonymous</username> et
	sans aucun mot de passe (par convention l'adresse
	&eacute;lectronique de l'utilisateur devrait &ecirc;tre
	utilis&eacute;e comme mot de passe).  Le serveur FTP appelera
	&man.chroot.2; quand un utilisateur anonyme ouvrira une
	session, pour restreindre l'acc&egrave;s juste au
	r&eacute;pertoire personnel de l'utilisateur
	<username>ftp</username>.</para>

      <para>Il existe deux fichiers texte qui sp&eacute;cifient les
	messages de bienvenue &agrave; afficher aux clients FTP.  Le
	contenu du fichier <filename>/etc/ftpwelcome</filename> sera
	affich&eacute; aux utilisateurs avant qu'ils atteignent
	l'invite de session.  Apr&egrave;s une ouverture de session,
	le contenu du fichier <filename>/etc/ftpmotd</filename> sera
	affich&eacute;.  Notez que le chemin d'acc&egrave;s &agrave;
	ce fichier est relatif &agrave; l'environnement de la session,
	aussi le fichier <filename>~ftp/etc/ftpmotd</filename> sera
	affich&eacute; aux utilisateurs anonymes.</para>

      <para>Une fois que le serveur FTP a &eacute;t&eacute;
	configur&eacute; correctement, il doit &ecirc;tre
	activ&eacute; dans le fichier
	<filename>/etc/inetd.conf</filename>.  Ici il faut juste
	retirer le symbole de commentaire &ldquo;#&rdquo; en face de
	la ligne <application>ftpd</application>:</para>

      <programlisting>ftp	stream	tcp	nowait	root	/usr/libexec/ftpd	ftpd -l</programlisting>

      <para>Comme expliqu&eacute; dans la <xref
	linkend="network-inetd-hangup">, un signal
	&ldquo;HangUP&rdquo; doit &ecirc;tre envoy&eacute; &agrave;
	<application>inetd</application> apr&egrave;s que son fichier
	de configuration ait &eacute;t&eacute; modifi&eacute;.</para>

      <para>Vous pouvez maintenant ouvrir une session FTP sur votre
	serveur en tapant:</para>

      <screen>&prompt.user; <userinput>ftp localhost</userinput></screen>
    </sect2>

    <sect2>
      <title>Maintenance</title>

      <indexterm><primary>syslog</primary></indexterm>
      <indexterm><primary>journaux</primary>
	<secondary>FTP</secondary></indexterm>

      <para>Le &ldquo;daemon&rdquo; <application>ftpd</application>
	utilise &man.syslog.3; pour l'enregistement des messages.  Par
	d&eacute;faut, le &ldquo;daemon&rdquo; de gestion des journaux
	du syst&egrave;me enverra les messages relatifs au FTP dans le
	fichier <filename>/var/log/xferlog</filename>.  L'emplacement
	des journaux FTP peut &ecirc;tre modifi&eacute; en changeant
	la ligne suivante dans le fichier
	<filename>/etc/syslog.conf</filename>:</para>

      <programlisting>ftp.info      /var/log/xferlog</programlisting>

      <para>Soyez conscient des &eacute;ventuels probl&egrave;mes
	impliqu&eacute;s par l'utilisation d'un serveur FTP acceptant
	les connexions anonymes.  Vous devriez, tout
	particuli&egrave;rement, penser &agrave; deux fois avant
	d'autoriser les utilisateurs anonyme &agrave; d&eacute;poser
	des fichiers sur le serveur.  Votre site FTP pourrait devenir
	un forum d'&eacute;change de logiciels commerciaux sans les
	licences ou pire.  Si vous devez autoriser le
	d&eacute;p&ocirc;t de fichiers de fa&ccedil;on anonyme sur le
	serveur FTP, alors vous devriez fixer les permissions sur ces
	fichiers de telle sorte qu'ils ne puissent &ecirc;tre lus par
	d'autres utilisateurs anonymes avant qu'ils n'aient pu
	&ecirc;tre contr&ocirc;l&eacute;s.</para>
    </sect2>
  </sect1>

  <sect1 id="network-samba">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Murray</firstname>
	  <surname>Stokely</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Serveur de fichiers et d'impression pour clients
      &microsoft.windows; (Samba)</title>

    <indexterm><primary>serveur Samba</primary></indexterm>
    <indexterm><primary>Microsoft Windows</primary></indexterm>
    <indexterm>
      <primary>serveur de fichiers</primary>
      <secondary>clients Windows</secondary>
    </indexterm>
    <indexterm>
      <primary>serveur d'impression</primary>
      <secondary>clients Windows</secondary>
    </indexterm>

    <sect2>
      <title>G&eacute;n&eacute;ralit&eacute;s</title>

      <para><application>Samba</application> est un logiciel libre
	tr&egrave;s populaire qui offre des services de partage de
	fichiers et d'imprimantes pour les clients
	&microsoft.windows;.  De tels clients peuvent se connecter et
	utiliser l'espace de fichiers d'une machine &os; comme si
	c'&eacute;tait un disque local, ou utiliser des imprimantes
	&os; comme si elles &eacute;taient des imprimantes
	locales.</para>

      <para><application>Samba</application> devrait se trouver sur
	votre support d'installation.  Si vous n'avez pas
	install&eacute; <application>Samba</application> &agrave;
	l'installation de &os;, vous pouvez alors l'installer &agrave;
	partir de la version pr&eacute;-compil&eacute;e ou
	port&eacute;e <filename
	role="package">net/samba3</filename>.</para>

<!-- mention LDAP, Active Directory, WinBIND, ACL, Quotas, PAM, .. -->

    </sect2>

    <sect2>
      <title>Configuration</title>

      <para>Le fichier de configuration par d&eacute;faut de
	<application>Samba</application> est install&eacute; sous le
	nom <filename>/usr/local/etc/smb.conf.default</filename>.  Ce
	fichier doit &ecirc;tre copi&eacute; vers
	<filename>/usr/local/etc/smb.conf</filename> et
	personnalis&eacute; avant que <application>Samba</application>
	ne puisse &ecirc;tre utilis&eacute;.</para>

      <para>Le fichier <filename>smb.conf</filename> contient la
	configuration n&eacute;cessaire &agrave; l'ex&eacute;cution de
	<application>Samba</application>, comme la d&eacute;finition
	des imprimantes et des &ldquo;syst&egrave;mes de fichiers
	partag&eacute;s&rdquo; que vous d&eacute;sirez partager avec
	les clients &windows;.  Le logiciel
	<application>Samba</application> comprend une interface Web
	appel&eacute; <application>swat</application> qui offre une
	m&eacute;thode simple de configuration du fichier
	<filename>smb.conf</filename>.</para>

      <sect3>
	<title>Utilisation de l'interface web d'administration de
	  Samba (SWAT)</title>

	<para>L'interface web d'administration de
	  <application>Samba</application> (SWAT) est
	  ex&eacute;cut&eacute;e sous la forme d'un
	  &ldquo;daemon&rdquo; &agrave; partir
	  d'<application>inetd</application>.  Par cons&eacute;quent,
	  la ligne suivante dans le fichier
	  <filename>/etc/inetd.conf</filename> doit &ecirc;tre
	  d&eacute;comment&eacute;e avant que
	  <application>swat</application> ne puisse &ecirc;tre
	  utilis&eacute; pour configurer
	  <application>Samba</application>:</para>

	<programlisting>swat   stream  tcp     nowait/400      root    /usr/local/sbin/swat</programlisting>

	<para>Comme expliqu&eacute; dans la <xref
	  linkend="network-inetd-hangup">, un signal
	  &ldquo;HangUP&rdquo; doit &ecirc;tre envoy&eacute; &agrave;
	  <application>inetd</application> apr&egrave;s modification
	  de son fichier de configuration.</para>

	<para>Une fois que <application>swat</application> a
	  &eacute;t&eacute; activ&eacute; dans
	  <filename>inetd.conf</filename>, vous pouvez utiliser un
	  navigateur pour vous connecter &agrave; l'adresse <ulink
	  url="http://localhost:901"></ulink>.  Vous devez ouvrir tout
	  d'abord une session sous le compte syst&egrave;me
	  <username>root</username>.</para>

<!-- XXX screenshots go here, loader is creating them -->

	<para>Une fois que vous avez ouvert une session sur la page
	  principale de configuration de
	  <application>Samba</application>, vous pouvez naviguer dans
	  la documentation du syst&egrave;me, ou commencer par cliquer
	  sur l'onglet <guimenu>Globals</guimenu>.  Le menu
	  <guimenu>Globals</guimenu> correspond aux variables
	  situ&eacute;es dans la section <literal>[global]</literal>
	  du fichier
	  <filename>/usr/local/etc/smb.conf</filename>.</para>
      </sect3>

      <sect3>
	<title>Param&eacute;trages g&eacute;n&eacute;raux</title>

	<para>Que vous utilisiez <application>swat</application> ou
	  &eacute;ditiez directement le fichier
	  <filename>/usr/local/etc/smb.conf</filename>, les
	  premi&egrave;res directives que vous allez s&ucirc;rement
	  rencontrer en configurant <application>Samba</application>
	  seront:</para>

        <variablelist>
	  <varlistentry>
	    <term><literal>workgroup</literal></term>

	    <listitem>
	      <para>Le nom de domaine NT ou le groupe de travail pour
		les ordinateurs qui acc&egrave;deront &agrave; ce
		serveur.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term><literal>netbios name</literal></term>
	    <indexterm><primary>NetBIOS</primary></indexterm>

	    <listitem>
	      <para>Fixe le nom NetBIOS sous lequel est connu le
		serveur <application>Samba</application>.  Par
		d&eacute;faut c'est le m&ecirc;me que la premi&egrave;re
		composante du nom de la machine pour le DNS.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term><literal>server string</literal></term>

	    <listitem>
	      <para>Cette directive d&eacute;finie la cha&icirc;ne de
		caract&egrave;res qui sera affich&eacute;e lors de
		l'utilisation de la commande <command>net view</command>
		et par d'autres outils r&eacute;seau recherchant
		&agrave; afficher une description du serveur.</para>
	    </listitem>
	  </varlistentry>
        </variablelist>
      </sect3>

      <sect3>
	<title>Param&egrave;tres de s&eacute;curit&eacute;</title>

	<para>Deux des plus importants param&eacute;trages de
	  <filename>/usr/local/etc/smb.conf</filename> sont le mode de
	  s&eacute;curit&eacute; choisi, et le format de mot de passe
	  pour les utilisateurs.  Les directives suivantes
	  contr&ocirc;lent ces options:</para>

        <variablelist>
	  <varlistentry>
	    <term><literal>security</literal></term>

	    <listitem>
	      <para>Les deux options les plus courantes sont
		<literal>security = share</literal> et <literal>security
		= user</literal>.  Si vos clients utilisent des noms
		d'utilisateur identiques &agrave; ceux sur votre machine
		&os;, alors vous voudrez utiliser un niveau de
		s&eacute;curit&eacute; utilisateur.  C'est le mode de
		s&eacute;curit&eacute; par d&eacute;faut et qui demande
		aux clients de d'ouvrir une session avant de pouvoir
		acc&eacute;der aux ressources partag&eacute;es.</para>

	      <para>Dans le niveau de s&eacute;curit&eacute; partage
		(&ldquo;share&rdquo;), le client n'a pas besoin
		d'ouvrir de session avant de pouvoir se connecter
		&agrave; une ressource partag&eacute;e.
		C'&eacute;tait le mode de s&eacute;curit&eacute; par
		d&eacute;faut d'anciennes versions de
		<application>Samba</application>.</para>
	    </listitem>
	  </varlistentry>

	  <varlistentry>
	    <term><literal>passdb backend</literal></term>

	    <indexterm><primary>NIS+</primary></indexterm>
	    <indexterm><primary>LDAP</primary></indexterm>
	    <indexterm><primary>base de donn&eacute;es
	      SQL</primary></indexterm>

	    <listitem>
	      <para><application>Samba</application> poss&egrave;de
		plusieurs mod&egrave;les de support d'authentification.
		Vous pouvez authentifier des clients avec LDAP, NIS+,
		une base de donn&eacute;es SQL ou un fichier de mot de
		passe modifi&eacute;.  La m&eacute;thode
		d'authentification par d&eacute;faut est appel&eacute;e
		<literal>smbpasswd</literal>, et c'est celle qui sera
		pr&eacute;sent&eacute;e ici.</para>
	    </listitem>
	  </varlistentry>
	</variablelist>

	<para>En supposant que le mod&egrave;le
	  <literal>smbpasswd</literal> par d&eacute;faut est
	  utilis&eacute;, le fichier
	  <filename>/usr/local/private/smbpasswd</filename> doit
	  &ecirc;tre cr&eacute;&eacute; pour permettre &agrave;
	  <application>Samba</application> d'identifier les clients.
	  Si vous d&eacute;sirez donner acc&egrave;s &agrave; tous vos
	  comptes utilisateur &unix; &agrave; partir de clients
	  &windows;, utilisez la commande suivante:</para>

	<screen>&prompt.root; <userinput>grep -v "^#" /etc/passwd | make_smbpasswd &gt; /usr/local/private/smbpasswd</userinput>
&prompt.root; <userinput>chmod 600 /usr/local/private/smbpasswd</userinput></screen>

	<para>Veuillez consulter la documentation de
	  <application>Samba</application> pour des informations
	  suppl&eacute;mentaires sur les options de configuration.
	  Avec les bases pr&eacute;sent&eacute;es ici, vous devriez
	  disposer de tous les &eacute;l&eacute;ments
	  n&eacute;c&eacute;ssaires au d&eacute;marrage de
	  <application>Samba</application>.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>D&eacute;marrage de
	<application>Samba</application></title>

      <para>Pour activer <application>Samba</application> au
	d&eacute;marrage du syst&egrave;me, ajoutez la ligne suivante
	au fichier <filename>/etc/rc.conf</filename>:</para>

      <programlisting>samba_enable="YES"</programlisting>

      <para>Vous pouvez alors d&eacute;marrer
	<application>Samba</application> en tapant:</para>

      <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba.sh start</userinput>
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.</screen>

      <para><application>Samba</application> consiste essentiellement
	en trois &ldquo;daemon&rdquo;s s&eacute;par&eacute;s.  Vous
	devriez vous rendre compte que les &ldquo;daemon&rdquo;s
	<application>nmbd</application> et
	<application>smbd</application> sont lanc&eacute;s par la
	proc&eacute;dure <filename>samba.sh</filename>.  Si vous avez
	activ&eacute; la r&eacute;solution de noms winbind dans le
	fichier <filename>smb.conf</filename>, alors le
	&ldquo;daemon&rdquo; <application>winbindd</application> sera
	&eacute;galement lanc&eacute;.</para>

      <para>Vous pouvez arr&ecirc;ter <application>Samba</application>
	&agrave; tout moment en tapant:</para>

      <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba.sh stop</userinput></screen>

      <para><application>Samba</application> est une suite logiciels
	complexes avec des fonctionnalit&eacute;s permettant une large
	int&eacute;gration avec les r&eacute;seaux
	&microsoft.windows;.  Pour plus d'information sur les
	fonctionnalit&eacute;s non-abord&eacute;es dans ce document,
	veuillez consulter <ulink
	url="http://www.samba.org"></ulink>.</para>
    </sect2>
  </sect1>

  <sect1 id="network-ntp">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Hukins</surname>
	  <contrib>Contribution de </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Synchronisation de l'horloge avec NTP</title>

    <indexterm><primary>NTP</primary></indexterm>

    <sect2>
      <title>G&eacute;n&eacute;ralit&eacute;s</title>

      <para>Avec le temps, l'horloge d'un ordinateur tend &agrave;
	d&eacute;river.  Le protocole NTP (&ldquo;Network Time
	Protocol&rdquo;) est une des mani&egrave;res pour s'assurer
	que votre horloge reste pr&eacute;cise.</para>

      <para>De nombreux services Internet ont besoin, ou tirent
	partie, de la pr&eacute;cision des horloges des ordinateurs.
	Par exemple, un serveur web, peut recevoir des requ&ecirc;tes
	pour n'envoyer un fichier que s'il a &eacute;t&eacute;
	modifi&eacute; depuis un certain temps.  Sur un r&eacute;seau
	local, il est essentiel que les ordinateurs partageant des
	fichiers &agrave; partir du m&ecirc;me serveur de fichiers
	aient des horloges synchronis&eacute;es de mani&egrave;re
	&agrave; ce que les dates de cr&eacute;ation ou de
	derni&egrave;re modification d'un fichier
	(&ldquo;timestamp&rdquo;) soient coh&eacute;rentes.  Des
	services comme &man.cron.8; reposent sur une horloge
	syst&egrave;me pr&eacute;cise pour ex&eacute;cuter des
	commandes &agrave; des moments pr&eacute;cis.</para>

      <indexterm>
	<primary>NTP</primary>
	<secondary>ntpd</secondary>
      </indexterm>
      <para>&os; est fourni avec le serveur NTP &man.ntpd.8; qui peut
	&ecirc;tre utilis&eacute; pour contacter d'autres serveurs NTP
	pour r&eacute;gler l'horloge de votre machine ou pour jouer le
	r&ocirc;le de serveur de temps pour d'autres.</para>
    </sect2>

    <sect2>
      <title>Choisir les serveurs NTP appropri&eacute;s</title>

      <indexterm>
	<primary>NTP</primary>
	<secondary>choisir les serveurs</secondary>
      </indexterm>

      <para>Afin de synchroniser votre horloge, vous devrez trouver un
	ou plusieurs serveurs NTP.  Votre administrateur r&eacute;seau
	ou votre FAI peuvent avoir mis en place un serveur NTP dans
	cet objectif&mdash;consultez leur documentation pour voir si
	c'est le cas.  Il existe une <ulink
	url="http://ntp.isc.org/bin/view/Servers/WebHome">liste
	en ligne de serveurs NTP accessibles par le public</ulink> que
	vous pouvez utiliser pour trouver un serveur NTP proche de
	vous.  Assurez-vous d'avoir pris connaissance de la politique
	d'utilisation des serveurs que vous choisissez, et demandez la
	permission si n&eacute;cessaire.</para>

      <para>Choisir plusieurs serveurs NTP non-connect&eacute;s entre
	eux est une bonne id&eacute;e au cas o&ugrave; un des serveurs
	que vous utilisez devient inaccessible ou que son horloge
	n'est plus fiable.  &man.ntpd.8; utilise intelligemment les
	r&eacute;ponses qu'il re&ccedil;oit d'autres serveurs&mdash;il
	favorisera les plus fiables par rapport aux moins
	fiables.</para>
    </sect2>

    <sect2>
      <title>Configuration de votre machine</title>

      <indexterm>
	<primary>NTP</primary>
	<secondary>configuration</secondary>
      </indexterm>

      <sect3>
	<title>Configuration de base</title>
	<indexterm><primary>ntpdate</primary></indexterm>

	<para>Si vous d&eacute;sirez synchroniser votre horloge
	  uniquement lors du d&eacute;marrage de la machine, vous
	  pouvez alors employer &man.ntpdate.8;.  Cela peut &ecirc;tre
	  appropri&eacute; pour certaines machines de bureau qui sont
	  fr&eacute;quemment r&eacute;d&eacute;marr&eacute;es et qui
	  ne n&eacute;cessites qu'une synchronisation
	  &eacute;pisodique, cependant la plupart des machines
	  devraient utiliser &man.ntpd.8;.</para>

	<para>Utiliser &man.ntpdate.8; au moment du d&eacute;marrage
	  est &eacute;galement une bonne id&eacute;e pour les machines
	  qui ex&eacute;cutent &man.ntpd.8;.  Le programme
	  &man.ntpd.8; modifie l'horloge graduellement, alors que
	  &man.ntpdate.8; change directement l'horloge, peu importe la
	  diff&eacute;rence entre l'heure actuelle de la machine et
	  l'heure correcte.</para>

	<para>Pour activer &man.ntpdate.8; au d&eacute;marrage,
	  ajoutez la ligne <literal>ntpdate_enable="YES"</literal> au
	  fichier <filename>/etc/rc.conf</filename>.  Vous devrez
	  &eacute;galement pr&eacute;ciser tous les serveurs avec
	  lesquels vous d&eacute;sirez vous synchroniser et tous les
	  indicateurs devant &ecirc;tre pass&eacute;s &agrave;
	  &man.ntpdate.8; avec
	  <literal>ntpdate_flags</literal>.</para>
      </sect3>

      <sect3>
	<indexterm>
	  <primary>NTP</primary>
	  <secondary>ntp.conf</secondary>
	</indexterm>

	<title>Configuration g&eacute;n&eacute;rale</title>

	<para>NTP est configur&eacute; par l'interm&eacute;diaire du
	  fichier <filename>/etc/ntp.conf</filename> suivant le format
	  d&eacute;crit dans la page de manuel &man.ntp.conf.5;.
	  Voici un exemple simple:</para>

	<programlisting>server ntplocal.example.com prefer
server timeserver.example.org
server ntp2a.example.net

driftfile /var/db/ntp.drift</programlisting>

	<para>L'option <literal>server</literal> pr&eacute;cise quels
	  serveurs doivent &ecirc;tre utilis&eacute;s, avec un serveur
	  list&eacute; par ligne.  Si un serveur est
	  sp&eacute;cifi&eacute; avec l'argument
	  <literal>prefer</literal>, comme c'est le cas pour <hostid
	  role="fqdn">ntplocal.example.com</hostid>, ce serveur est
	  pr&eacute;f&eacute;r&eacute; par rapport aux autres
	  serveurs.  Une r&eacute;ponse en provenance d'un serveur
	  <emphasis>pr&eacute;f&eacute;r&eacute;</emphasis> sera
	  ignor&eacute;e si elle diff&egrave;re de fa&ccedil;on
	  significative des r&eacute;ponses des autres serveurs, sinon
	  elle sera utilis&eacute;e sans consid&eacute;rer les autres
	  r&eacute;ponses.  L'argument <literal>prefer</literal> est
	  normalement employ&eacute; pour les serveurs NTP qui sont
	  connus pour leur grande pr&eacute;cision, comme ceux avec
	  des syst&egrave;mes sp&eacute;ciaux de contr&ocirc;le du
	  mat&eacute;riel.</para>

	<para>L'option <literal>driftfile</literal> pr&eacute;cise
	  quel fichier est utilis&eacute; pour stocker le
	  d&eacute;calage de fr&eacute;quence de l'horloge.  Le
	  programmme &man.ntpd.8; l'utilise pour compenser
	  automatiquement la d&eacute;rive naturelle de l'horloge,
	  permettant de maintenir un r&eacute;glage raisonnablement
	  correct m&ecirc;me s'il est coup&eacute; d'autres sources
	  ext&eacute;rieures de temps pendant une certaine
	  p&eacute;riode.</para>

	<para>L'option <literal>driftfile</literal> pr&eacute;cise
	  &eacute;galement quel fichier est utilis&eacute; pour
	  stocker l'information concernant les r&eacute;ponses
	  pr&eacute;c&eacute;dentes des serveurs NTP que vous
	  utilisez.  Il ne devrait pas &ecirc;tre modifi&eacute; par
	  un autre processus.</para>
      </sect3>

      <sect3>
	<title>Contr&ocirc;ler l'acc&egrave;s &agrave; votre
	  serveur</title>

	<para>Par d&eacute;faut, votre serveur NTP sera accessible par
	  toutes les machines sur l'Internet.  L'option
	  <literal>restrict</literal> du fichier
	  <filename>/etc/ntp.conf</filename> vous permet de
	  contr&ocirc;ler quelles machines peuvent acc&eacute;der
	  &agrave; votre serveur.</para>

	<para>Si vous voulez refuser &agrave; tout le monde
	  l'acc&egrave;s &agrave; votre serveur NTP, ajoutez la ligne
	  suivante au fichier
	  <filename>/etc/ntp.conf</filename>:</para>

        <programlisting>restrict default ignore</programlisting>

	<para>Si vous d&eacute;sirez autoriser uniquement
	  l'acc&egrave;s aux machines de votre r&eacute;seau pour
	  qu'elles puissent synchroniser leur horloge, tout en vous
	  assurant qu'elles ne peuvent configurer le serveur ou
	  &ecirc;tre utilis&eacute;es comme point de de
	  synchronisation, ajoutez:</para>

        <programlisting>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap</programlisting>

	<para>&agrave; la place, o&ugrave; <hostid
	  role="ipaddr">192.168.1.0</hostid> est une adresse IP de
	  votre r&eacute;seau et <hostid
	  role="netmask">255.255.255.0</hostid> est votre masque de
	  sous-r&eacute;seau.</para>

	<para>Le fichier <filename>/etc/ntp.conf</filename> peut
	  contenir plusieurs options <literal>restrict</literal>.
	  Pour plus de d&eacute;tails, lisez la section
	  <literal>Access Control Support</literal> de la page de
	  manuel &man.ntp.conf.5;.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>Ex&eacute;cuter le serveur NTP</title>

      <para>Pour s'assurer que le serveur NTP est lanc&eacute; au
	d&eacute;marrage, ajoutez la ligne
	<literal>ntpd_enable="YES"</literal> dans le fichier
	<filename>/etc/rc.conf</filename>.  Si vous d&eacute;sirez
	passer des indicateurs suppl&eacute;mentaires &agrave;
	&man.ntpd.8;, &eacute;ditez les param&egrave;tres de l'option
	<varname>ntpd_flags</varname> dans
	<filename>/etc/rc.conf</filename>.</para>

      <para>Pour lancer le serveur sans red&eacute;marrer votre
	machine, ex&eacute;cutez <command>ntpd</command> en
	&eacute;tant s&ucirc;r de pr&eacute;ciser tout
	param&egrave;tre suppl&eacute;mentaire de
	<varname>ntpd_flags</varname> dans
	<filename>/etc/rc.conf</filename>.  Par exemple:</para>

      <screen>&prompt.root; <userinput>ntpd -p /var/run/ntpd.pid</userinput></screen>

      <note>
	<para>Sous &os;&nbsp;4.X, vous devez remplacer chaque
	  <literal>ntpd</literal> par <literal>xntpd</literal> dans les
	  options ci-dessus.</para></note>
    </sect2>

    <sect2>
      <title>Utiliser ntpd avec une connexion Internet
	temporaire</title>

      <para>Le programme &man.ntpd.8; n'a pas besoin d'une connexion
	permanente &agrave; l'Internet pour fonctionner correctement.
	Cependant, si vous disposez d'une connextion temporaire qui
	est configur&eacute;e de telle sorte qu'il y ait
	&eacute;tablissement de la connexion &agrave; la demande,
	c'est une bonne id&eacute;e d'emp&ecirc;cher le trafic NTP de
	d&eacute;clencher la num&eacute;rotation ou de maintenir
	constamment &eacute;tablie la connexion.  Si vous utilisez PPP
	en mode utilisateur, vous pouvez employer les directives
	<literal>filter</literal> dans le fichier
	<filename>/etc/ppp/ppp.conf</filename>.  Par exemple:</para>

      <programlisting> set filter dial 0 deny udp src eq 123
 # Emp&ecirc;che le trafic NTP de lancer une connexion
 set filter dial 1 permit 0 0
 set filter alive 0 deny udp src eq 123
 # Emp&ecirc;che le trafic NTP entrant de garder la connexion &eacute;tablie
 set filter alive 1 deny udp dst eq 123
 # Emp&ecirc;che le trafic NTP sortant de garder la connexion &eacute;tablie
 set filter alive 2 permit 0/0 0/0</programlisting>

      <para>Pour plus de d&eacute;tails lisez la section
	<literal>PACKET FILTERING</literal> de la page de manuel
	&man.ppp.8; et les exemples du r&eacute;pertoire <filename
	class="directory">/usr/share/examples/ppp/</filename>.</para>

      <note>
	<para>Certains fournisseurs d'acc&egrave;s Internet bloquent
	  les ports dont le num&eacute;ro est faible, emp&ecirc;chant
	  NTP de fonctionner puisque les r&eacute;ponses n'atteingnent
	  jamais votre machine.</para>
      </note>
    </sect2>

    <sect2>
      <title>Information suppl&eacute;mentaire</title>

      <para>La documentation pour le serveur NTP peut &ecirc;tre
	trouv&eacute; dans le r&eacute;pertoire <filename
	class="directory">/usr/share/doc/ntp/</filename> sous le format
	HTML.</para>
    </sect2>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
<!--  LocalWords:  config mnt www -->
