<!--
     The FreeBSD Documentation Project
     The FreeBSD German Documentation Project

     $FreeBSD$
     $FreeBSDde: de-docproj/books/handbook/advanced-networking/chapter.sgml,v 1.78 2003/11/23 16:18:28 mheinen Exp $
     basiert auf: 1.242
-->

<chapter id="advanced-networking">
  <chapterinfo>
    <authorgroup>
      <author>
	  <firstname>Johann</firstname>
	  <surname>Kois</surname>
	  <contrib>&Uuml;bersetzt von </contrib>
	  <!-- j.kois@web.de, 02. Februar 2003 -->
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Weiterf&uuml;hrende Netzwerkthemen</title>

  <sect1 id="advanced-networking-synopsis">

    <title>&Uuml;bersicht</title>

    <para>Dieses Kapitel beschreibt einige der h&auml;ufiger
      verwendeten Netzwerkdienste auf UNIX-Systemen.  Es wird
      beschrieben, wie die von FreeBSD verwendeten Netzwerkdienste
      installiert, getestet und gewartet werden.  Zus&auml;tzlich sind
      im ganzen Kapitel Beispielkonfigurationsdateien vorhanden, von
      denen Sie sicherlich profitieren werden.</para>

    <para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie</para>

    <itemizedlist>
      <listitem>
	<para>Die Grundlagen von Gateways und Routen kennen.</para>
      </listitem>

      <listitem>
	<para>Eine Bridge unter FreeBSD einrichten k&ouml;nnen.</para>
      </listitem>

      <listitem>
	<para>Ein Netzwerkdateisystem (NFS) einrichten k&ouml;nnen.</para>
      </listitem>

      <listitem>
	<para>Einen plattenlosen Rechner &uuml;ber das Netzwerk starten
	  k&ouml;nnen.</para>
      </listitem>

      <listitem>
	<para>Einen Netzwerkinformationsserver (NIS) f&uuml;r gemeinsame
	  Benutzerkonten einrichten k&ouml;nnen.</para>
      </listitem>

      <listitem>
	<para>Automatische Netzwerkeinstellungen mittels DHCP vornehmen
	  k&ouml;nnen.</para>
      </listitem>

      <listitem>
	<para>Einen Domain Name Server (DNS) einrichten k&ouml;nnen.</para>
      </listitem>

      <listitem>
	<para>Unter Verwendung des NTP-Protokolls Uhrzeit und Datum
	  synchronisieren, sowie einen Zeitserver einrichten k&ouml;nnen.</para>
      </listitem>

      <listitem>
	<para>Wissen, wie man NAT (Network Address Translation)
	  einrichtet.</para>
      </listitem>

      <listitem>
	<para>In der Lage sein, den <command>inetd</command>-Daemon
	  einzurichten.</para>
      </listitem>

      <listitem>
	<para>Zwei Computer &uuml;ber PLIP verbinden k&ouml;nnen.</para>
      </listitem>

      <listitem>
	<para>IPv6 auf einem FreeBSD-Rechner einrichten k&ouml;nnen.</para>
      </listitem>
    </itemizedlist>

    <para>Bevor Sie dieses Kapitel lesen, sollten Sie</para>

    <itemizedlist>
      <listitem>
	<para>Die Grundlagen der <filename>/etc/rc</filename>-Skripte
	  verstanden haben.</para>
      </listitem>

      <listitem>
	<para>Mit der grundlegenden Netzwerkterminologie vertraut
	  sein.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="network-routing">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Coranth</firstname>
	  <surname>Gryphon</surname>
	  <contrib>Beigetragen von </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Gateways und Routen</title>

    <indexterm>
      <primary>Routing</primary>
    </indexterm>
    <indexterm>
      <primary>Gateway</primary>
    </indexterm>
    <indexterm>
      <primary>Subnetz</primary>
    </indexterm>

    <para>Damit ein Rechner einen anderen &uuml;ber ein Netzwerk
      finden kann, muss ein Mechanismus vorhanden sein, der
      beschreibt, wie man von einem Rechner zum anderen gelangt.
      Dieser Vorgang wird als <firstterm>Routing</firstterm>
      bezeichnet.  Eine <quote>Route</quote> besteht aus einem
      definierten Adressenpaar: Einem <quote>Ziel</quote> und einem
      <quote>Gateway</quote>.  Dieses Paar zeigt an, dass Sie
      &uuml;ber den <emphasis>Gateway</emphasis> zum
      <emphasis>Ziel</emphasis> gelangen wollen.  Es gibt drei Arten
      von Zielen: Einzelne Rechner (Hosts), Subnetze und das
      <quote>Standard</quote>ziel.  Die <quote>Standardroute</quote>
      wird verwendet, wenn keine andere Route zutrifft.  Wir werden
      Standardrouten sp&auml;ter etwas genauer behandeln.  Au&szlig;erdem
      gibt es drei Arten von Gateways: Einzelne Rechner (Hosts),
      Schnittstellen (Interfaces, auch als <quote>Links</quote>
      bezeichnet), sowie Ethernet Hardware-Adressen
      (MAC-Adressen).</para>

    <sect2>
      <title>Ein Beispiel</title>

      <para>Um die verschiedenen Aspekte des Routings zu
	veranschaulichen, verwenden wir folgende Ausgaben von
	<command>netstat</command>:</para>

      <screen>&prompt.user; <userinput>netstat -r</userinput>
Routing tables

Destination               Gateway            Flags       Refs     Use     Netif Expire

default                   outside-gw         UGSc        37       418     ppp0
localhost                 localhost          UH          0        181     lo0
test0                     0:e0:b5:36:cf:4f   UHLW        5        63288   ed0    77
10.20.30.255              link#1             UHLW        1        2421
example.com               link#1             UC          0        0
host1                     0:e0:a8:37:8:1e    UHLW        3        4601    lo0
host2                     0:e0:a8:37:8:1e    UHLW        0        5       lo0 =>
host2.example.com         link#1             UC          0        0
224                       link#1             UC          0        0
</screen>

      <indexterm>
	<primary>Default-Route</primary>
      </indexterm>
      <indexterm>
	<primary>Standardroute</primary>
      </indexterm>

      <para>Die ersten zwei Zeilen geben die Standardroute (die wir
	im <link linkend="network-routing-default"> n&auml;chsten
	Abschnitt</link> behandeln), sowie die
	<hostid>localhost</hostid> Route an.</para>

      <indexterm>
	<primary>Loopback-Ger&auml;t</primary>
      </indexterm>

      <para>Das in der Routingtabelle f&uuml;r
	<literal>localhost</literal> festgelegte Interface
	(<literal>Netif</literal>-Spalte)
	<devicename>lo0</devicename>, ist auch als loopback-Ger&auml;t
	(Pr&uuml;fschleife) bekannt.  Das hei&szlig;t, dass der ganze
	Datenverkehr f&uuml;r dieses Ziel intern (innerhalb des
	Ger&auml;tes) bleibt, anstatt ihn &uuml;ber ein Netzwerk (LAN)
	zu versenden, da das Ziel dem Start entspricht.</para>

      <indexterm>
	<primary>Ethernet</primary>
	<secondary>MAC-Adresse</secondary>
      </indexterm>

      <para>Der n&auml;chste auff&auml;llige Punkt sind die mit
	<hostid role="mac">0:e0:</hostid> beginnenden Adressen.  Es
	handelt sich dabei um Ethernet Hardwareadressen, die auch als
	MAC-Adressen bekannt sind.  FreeBSD identifiziert Rechner im
	lokalen Netz automatisch (im Beispiel <hostid>test0</hostid>)
	und f&uuml;gt eine direkte Route zu diesem Rechner hinzu.  Dies
	passiert &uuml;ber die Ethernet-Schnittstelle
	<devicename>ed0</devicename>.  Au&szlig;erdem existiert ein Timeout
	(in der Spalte <literal>Expire</literal>) f&uuml;r diese Art
	von Routen, der verwendet wird, wenn dieser Rechner in einem
	definierten Zeitraum nicht reagiert.  Wenn dies passiert, wird
	die Route zu diesem Rechner automatisch gel&ouml;scht.
	Rechner im lokalen Netz werden durch einen als RIP (Routing
	Information Protocol) bezeichneten Mechanismus identifiziert,
	der den k&uuml;rzesten Weg zu den jeweiligen Rechnern
	bestimmt.</para>

      <indexterm>
	<primary>Subnetz</primary>
      </indexterm>

      <para>FreeBSD f&uuml;gt au&szlig;erdem Subnetzrouten f&uuml;r das
	lokale Subnetz hinzu (<hostid
	role="ipaddr">10.20.30.255</hostid> ist die Broadcast-Adresse
	f&uuml;r das Subnetz <hostid role="ipaddr">10.20.30</hostid>,
	<hostid role="domainname">example.com</hostid> ist der zu
	diesem Subnetz geh&ouml;rige Domainname).  Das Ziel
	<literal>link#1</literal> bezieht sich auf die erste
	Ethernet-Karte im Rechner.  Sie k&ouml;nnen auch feststellen,
	dass keine zus&auml;tzlichen Schnittstellen angegeben
	sind.</para>

      <para>Routen f&uuml;r Rechner im lokalen Netz und lokale
	Subnetze werden automatisch durch den
	<application>routed</application> Daemon konfiguriert.  Ist
	dieser nicht gestartet, sind nur statisch definierte
	(explizit eingegebene) Routen vorhanden.</para>

      <para>Die Zeile <literal>host1</literal> bezieht sich auf
	unseren Rechner, der durch seine Ethernetadresse bekannt ist.
	Da unser Rechner der Sender ist, verwendet FreeBSD automatisch
	das Loopback-Ger&auml;t (<devicename>lo0</devicename>),
	anstatt den Datenverkehr &uuml;ber die Ethernetschnittstelle
	zu senden.</para>

      <para>Die zwei <literal>host2</literal> Zeilen sind ein Beispiel
	daf&uuml;r, was passiert, wenn wir ein &man.ifconfig.8; Alias
	verwenden (Lesen Sie dazu den Abschnitt &uuml;ber Ethernet,
	wenn Sie wissen wollen, warum wir das tun sollten.).  Das
	Symbol <literal>=&gt;</literal> (nach der
	<devicename>lo0</devicename>-Schnittstelle) sagt aus, dass wir
	nicht nur das Loopbackger&auml;t verwenden (da sich die
	Adresse auf den lokalen Rechner bezieht), sondern dass es sich
	zus&auml;tzlich auch um ein Alias handelt.  Solche Routen sind
	nur auf Rechnern vorhanden, die den Alias bereitstellen;
	alle anderen Rechner im lokalen Netz haben f&uuml;r solche
	Routen nur eine einfache <literal>link#1</literal>
	Zeile.</para>

      <para>Die letzte Zeile (Zielsubnetz <literal>224</literal>)
	behandelt das Multicasting, das wir in einem anderen Abschnitt
	besprechen werden.</para>

      <para>Schlie&szlig;lich gibt es f&uuml;r Routen noch
	verschiedene Attribute, die Sie in der Spalte
	<literal>Flags</literal> finden.  Nachfolgend finden Sie eine
	kurze &Uuml;bersicht von einigen dieser Flags und ihrer
	Bedeutung:</para>

      <informaltable frame="none">
	<tgroup cols="2">
	  <tbody>
	    <row>
	      <entry>U</entry>

	      <entry>Up: Die Route ist aktiv.</entry>
	    </row>

	    <row>
	      <entry>H</entry>

	      <entry>Host: Das Ziel der Route ist ein einzelner
		Rechner (Host).</entry>
	    </row>

	    <row>
	      <entry>G</entry>

	      <entry>Gateway: Alle Daten, die an dieses Ziel gesendet
		werden, werden von diesem System an ihr jeweiliges
		Ziel weitergeleitet.</entry>
	    </row>

	    <row>
	      <entry>S</entry>

	      <entry>Static: Diese Route wurde manuell konfiguriert,
		das hei&szlig;t sie wurde <emphasis>nicht</emphasis>
		automatisch vom System erzeugt.</entry>
	    </row>

	    <row>
	      <entry>C</entry>

	      <entry>Clone: Erzeugt eine neue Route, basierend auf der
		Route f&uuml;r den Rechner, mit dem wir uns verbinden.
		Diese Routenart wird normalerweise f&uuml;r lokale
		Netzwerke verwendet.</entry>
	    </row>

	    <row>
	      <entry>W</entry>

	      <entry>WasCloned: Eine Route, die automatisch
		konfiguriert wurde.  Sie basiert auf einer lokalen
		Netzwerkroute (Clone).</entry>
	    </row>

	    <row>
	      <entry>L</entry>

	      <entry>Link: Die Route beinhaltet einen Verweis auf eine
		Ethernetkarte (MAC-Adresse).</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>
    </sect2>

    <sect2 id="network-routing-default">
      <title>Standardrouten</title>

      <indexterm>
	<primary>Default-Route</primary>
      </indexterm>
      <indexterm>
	<primary>Standardroute</primary>
      </indexterm>

      <para>Wenn sich der lokale Rechner mit einem entfernten Rechner
	verbinden will, wird die Routingtabelle &uuml;berpr&uuml;ft,
	um festzustellen, ob bereits ein bekannter Pfad vorhanden ist.
	Geh&ouml;rt dieser entfernte Rechner zu einem Subnetz, dessen
	Pfad uns bereits bekannt ist (Cloned route), dann versucht der
	lokale Rechner &uuml;ber diese Schnittstelle eine Verbindung
	herzustellen.</para>

      <para>Wenn alle bekannten Pfade nicht funktionieren, hat der
	lokale Rechner eine letzte M&ouml;glichkeit: Die
	Standardroute (Default-Route).  Bei dieser
	Route handelt es sich um eine spezielle Gateway-Route
	(gew&ouml;hnlich die einzige im System vorhandene), die im
	Flags-Feld immer mit <literal>C</literal> gekennzeichnet ist.
	F&uuml;r Rechner im lokalen Netzwerk ist dieser Gateway auf
	<emphasis>welcher Rechner auch immer eine Verbindung nach
	au&szlig;en hat</emphasis> gesetzt (entweder &uuml;ber eine
	PPP-Verbindung, DSL, ein Kabelmodem, T1 oder eine beliebige
	andere Netzwerkverbindung).</para>

      <para>Wenn Sie die Standardroute f&uuml;r einen Rechner
	konfigurieren, der selbst als Gateway zur Au&szlig;enwelt
	funktioniert, wird die Standardroute zum Gateway-Rechner Ihres
	Internetanbieter (ISP) gesetzt.</para>

      <para>Sehen wir uns ein Beispiel f&uuml;r Standardrouten an.  So
	sieht eine &uuml;bliche Konfiguration aus:</para>

      <literallayout>
[Local2]  &lt;--ether--&gt;  [Local1]  &lt;--PPP--&gt; [ISP-Serv]  &lt;--ether--&gt;  [T1-GW]
      </literallayout>

      <para>Die Rechner <hostid>Local1</hostid> und
	<hostid>Local2</hostid> befinden sich auf Ihrer Seite.
	<hostid>Local1</hostid> ist mit einem ISP &uuml;ber eine
	PPP-Verbindung verbunden.  Dieser PPP-Server ist &uuml;ber ein
	lokales Netzwerk mit einem anderen Gateway-Rechner verbunden,
	der &uuml;ber eine Schnittstelle die Verbindung des ISP zum
	Internet herstellt.</para>

      <para>Die Standardrouten f&uuml;r Ihre Maschinen lauten:</para>

      <informaltable frame="none">
	<tgroup cols="3">
	  <thead>
	    <row>
	      <entry>Host</entry>

	      <entry>Standard Gateway</entry>

	      <entry>Schnittstelle</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry>Local2</entry>

	      <entry>Local1</entry>

	      <entry>Ethernet</entry>
	    </row>

	    <row>
	      <entry>Local1</entry>

	      <entry>T1-GW</entry>

	      <entry>PPP</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

      <para>Eine h&auml;ufig gestellte Frage lautet: <quote>Warum (oder wie)
	sollten wir <hostid>T1-GW</hostid> als Standard-Gateway
	f&uuml;r <hostid>Local1</hostid> setzen,
	statt den (direkt verbundenen) ISP-Server zu
	verwenden?</quote>.</para>

      <para>Bedenken Sie, dass die PPP-Schnittstelle f&uuml;r die
	Verbindung eine Adresse des lokalen Netzes des ISP verwendet.
	Daher werden Routen f&uuml;r alle anderen Rechner im lokalen
	Netz des ISP automatisch erzeugt.  Daraus folgt, dass Sie
	bereits wissen, wie Sie <hostid>T1-GW</hostid> erreichen
	k&ouml;nnen!  Es ist also unn&ouml;tig, einen Zwischenschritt
	&uuml;ber den ISP-Server zu machen.</para>

      <para>Es ist &uuml;blich, die Adresse <hostid
	role="ipaddr">X.X.X.1</hostid> als Gateway-Adresse f&uuml;r
	ihr lokales Netzwerk zu verwenden.  F&uuml;r unser Beispiel
	bedeutet dies Folgendes: Wenn Ihr lokaler Klasse-C-Adressraum
	<hostid role="ipaddr">10.20.30</hostid> ist und Ihr ISP
	<hostid role="ipaddr">10.9.9</hostid> verwendet, sehen die
	Standardrouten so aus:</para>

      <informaltable frame="none">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>Rechner (Host)</entry>

	      <entry>Standardroute</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry>Local2 (10.20.30.2)</entry>

	      <entry>Local1 (10.20.30.1)</entry>
	    </row>

	    <row>
	      <entry>Local1 (10.20.30.1, 10.9.9.30)</entry>

	      <entry>T1-GW (10.9.9.1)</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>
    </sect2>

    <sect2>
      <title>Rechner mit zwei Heimatnetzen</title>

      <indexterm>
	<primary>Dual-Homed-Hosts</primary>
      </indexterm>

      <para>Es gibt noch eine Konfigurationsm&ouml;glichkeit, die wir
	besprechen sollten, und zwar Rechner, die sich in zwei
	Netzwerken befinden.  Technisch gesehen, z&auml;hlt jeder als
	Gateway arbeitende Rechner zu den Rechnern mit zwei
	Heimatnetzen (im obigen Beispiel unter Verwendung einer
	PPP-Verbindung).  In der Praxis meint man damit allerdings nur
	Rechner, die sich in zwei lokalen Netzen befinden.</para>

      <para>Entweder verf&uuml;gt der Rechner &uuml;ber zwei
	Ethernetkarten und jede dieser Karten hat eine Adresse in
	einem separaten Subnetz, oder der Rechner hat nur eine
	Ethernetkarte und verwendet &man.ifconfig.8; Aliasing.  Die
	erste M&ouml;glichkeit wird verwendet, wenn zwei physikalisch
	getrennte Ethernet-Netzwerke vorhanden sind, die zweite, wenn
	es nur ein physikalisches Ethernet-Netzwerk gibt, das aber aus
	zwei logisch getrennten Subnetzen besteht.</para>

      <para>In beiden F&auml;llen werden Routingtabellen erstellt,
	damit jedes Subnetz wei&szlig;, dass dieser Rechner als Gateway zum
	anderen Subnetz arbeitet (<foreignphrase>inbound
	  route</foreignphrase>).  Diese Konfiguration
	(der Gateway-Rechner arbeitet als Router zwischen den
	Subnetzen) wird h&auml;ufig verwendet, wenn es darum geht,
	Paketfilterung oder eine Firewall (in eine oder beide
	Richtungen) zu implementieren.</para>

      <para>Wenn Sie m&ouml;chten, dass dieser Rechner Pakete zwischen
	den beiden Schnittstellen weiterleitet, m&uuml;ssen Sie diese
	Funktion manuell konfigurieren und aktivieren.</para>
    </sect2>

    <sect2 id="network-dedicated-router">
      <title>Einen Router konfigurieren</title>

      <indexterm>
	<primary>Router</primary>
      </indexterm>

      <para>Ein Netzwerkrouter ist einfach ein System, das Pakete von
	einer Schnittstelle zur anderen weiterleitet.
	Internetstandards und gute Ingenieurspraxis sorgten
	daf&uuml;r, dass diese Funktion in FreeBSD per Voreinstellung
	deaktiviert ist.  Sie k&ouml;nnen diese Funktion aktivieren,
	indem Sie in &man.rc.conf.5;  folgende &Auml;nderung
	durchf&uuml;hren:</para>

      <programlisting>gateway_enable=YES          # Auf YES setzen, wenn der Rechner als Gateway arbeiten soll</programlisting>

      <para>Diese Option setzt die &man.sysctl.8;-Variable
	<varname>net.inet.ip.forwarding</varname> auf
	<literal>1</literal>.  Wenn Sie das Routing kurzzeitig
	unterbrechen wollen, k&ouml;nnen Sie die Variable auf
	<literal>0</literal> setzen.</para>

      <indexterm><primary>BGP</primary></indexterm>
      <indexterm><primary>RIP</primary></indexterm>
      <indexterm><primary>OSPF</primary></indexterm>

      <para>Ihr neuer Router ben&ouml;tigt nun noch Routen, um zu
	wissen, wohin er den Verkehr senden soll.  Haben Sie ein
	(sehr) einfaches Netzwerk, k&ouml;nnen Sie statische Routen
	verwenden.  FreeBSD verf&uuml;gt &uuml;ber den Standard
	BSD-Routing-Daemon &man.routed.8;, der RIP (sowohl Version 1
	als auch Version 2) und IRDP versteht.  BGP&nbsp;v4,
	OSPF&nbsp;v2 und andere Protokolle werden von
	<filename role="package">net/zebra</filename>
	unterst&uuml;tzt.  Es stehen auch kommerzielle Produkte
	wie <application>gated</application> zur Verf&uuml;gung.</para>

      <para>Selbst wenn FreeBSD auf diese Art konfiguriert wurde,
	entspricht es den Standardanforderungen an Internet-Router
	nicht vollst&auml;ndig.  F&uuml;r den
	<emphasis>normalen</emphasis> Gebrauch kommt es den Standards
	aber nahe genug.</para>
    </sect2>

    <sect2>
      <title>Verteilung von Routing-Informationen</title>

      <indexterm>
	<primary>routing propagation</primary>
      </indexterm>

      <para>Wir haben bereits dar&uuml;ber gesprochen, wie wir unsere
	Routen zur Au&szlig;enwelt definieren, aber nicht dar&uuml;ber, wie
	die Au&szlig;enwelt uns finden kann.</para>

      <para>Wir wissen bereits, dass Routing-Tabellen so erstellt
	werden k&ouml;nnen, dass s&auml;mtlicher Verkehr f&uuml;r
	einen bestimmten Adressraum (in unserem Beispiel ein
	Klasse-C-Subnetz) zu einem bestimmten Rechner in diesem
	Netzwerk gesendet wird, der die eingehenden Pakete im Subnetz
	verteilt.</para>

      <para>Wenn Sie einen Adressraum f&uuml;r Ihre Seite zugewiesen
	bekommen, richtet Ihr Diensteanbieter seine Routingtabellen so
	ein, dass der ganze Verkehr f&uuml;r Ihr Subnetz entlang Ihrer
	PPP-Verbindung zu Ihrer Seite gesendet wird.  Aber woher
	wissen die Seiten in der Au&szlig;enwelt, dass sie die Daten an
	Ihren ISP senden sollen?</para>

      <para>Es gibt ein System (&auml;hnlich dem verbreiteten DNS),
	das alle zugewiesenen Adressr&auml;ume verwaltet und ihre
	Verbindung zum Internet-Backbone definiert und dokumentiert.
	Der <quote>Backbone</quote> ist das Netz aus
	Hauptverbindungen, die den Internetverkehr in der ganzen Welt
	transportieren und verteilen.  Jeder Backbone-Rechner
	verf&uuml;gt &uuml;ber eine Kopie von Haupttabellen, die den
	Verkehr f&uuml;r ein bestimmtes Netzwerk &uuml;ber
	hierarchisch vom Backbone &uuml;ber eine Kette von
	Diensteanbietern bis hin zu Ihrer Seite leiten.</para>

      <para>Es ist die Aufgabe Ihres Diensteanbieters, den
	Backbone-Seiten mitzuteilen, dass sie mit Ihrer Seite
	verbunden wurden.  Durch diese Mitteilung der Route ist nun
	auch der Weg zu Ihnen bekannt.  Dieser Vorgang wird als
	<emphasis>Bekanntmachung von Routen</emphasis>
	(<foreignphrase>routing propagation</foreignphrase>)
	bezeichnet.</para>
    </sect2>

    <sect2>
      <title>Problembehebung</title>

      <indexterm>
	<primary><command>traceroute</command></primary>
      </indexterm>

      <para>Manchmal kommt es zu Problemen bei der Bekanntmachung von
	Routen, und einige Seiten sind nicht in der Lage, Sie zu
	erreichen.  Vielleicht der n&uuml;tzlichste Befehl, um
	festzustellen, wo das Routing nicht funktioniert, ist
	&man.traceroute.8;.  Er ist au&szlig;erdem sehr n&uuml;tzlich, wenn
	Sie einen entfernten Rechner nicht erreichen k&ouml;nnen
	(sehen Sie dazu auch &man.ping.8;).</para>

      <para>&man.traceroute.8; wird mit dem zu erreichenden Rechner
	(Host) ausgef&uuml;hrt.  Angezeigt werden die Gateway-Rechner
	entlang des Verbindungspfades.  Schlie&szlig;lich wird der
	Zielrechner erreicht oder es kommt zu einem Verbindungsabbruch
	(beispielsweise durch Nichterreichbarkeit eines
	Gateway-Rechners).</para>

      <para>Weitere Informationen erhalten Sie in der
	Hilfeseite &man.traceroute.8;.</para>
    </sect2>

    <sect2>
      <title>Multicast-Routing</title>
      <indexterm>
	<primary>Multicast-Routing</primary>
	<secondary>options MROUTING</secondary>
      </indexterm>
      <para>&os; unterst&uuml;tzt sowohl Multicast-Anwendungen als
	auch Multicast-Routing.  Multicast-Anwendungen m&uuml;ssen
	nicht konfiguriert werden; sie laufen einfach.  Multicast-Routing
	muss in der Kernelkonfiguration aktiviert werden:</para>

      <programlisting>options MROUTING</programlisting>

      <para>Zus&auml;tzlich m&uuml;ssen f&uuml;r den
	Multicast-Routing-D&aelig;mon, &man.mrouted.8;,
	Tunnel und DVMRP in der Datei <filename>/etc/mrouted.conf</filename>
	eingerichtet werden.  Weitere Informationen erhalten
	Sie in der Hilfeseite &man.mrouted.8;.</para>
    </sect2>
  </sect1>

  <sect1 id="network-wireless">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Eric</firstname>
	  <surname>Anderson</surname>
	  <contrib>Geschrieben von </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Drahtlose Netzwerke</title>
    <indexterm>
      <primary>drahtlose Netzwerke</primary>
    </indexterm>
    <indexterm>
      <primary>802.11</primary>
      <see>drahtlose Netzwerke</see>
    </indexterm>

    <sect2>
      <title>Einf&uuml;hrung</title>

      <para>Es kann sehr n&uuml;tzlich sein, einen Computer zu
	verwenden, ohne sich die ganze Zeit mit einem Netzwerkkabel
	herum&auml;rgern zu m&uuml;ssen.  FreeBSD kann auf drahtlose
	Netzwerke (<foreignphrase>wireless LAN</foreignphrase>)
	zugreifen und sogar als <quote>Zugangspunkt </quote>
	(<foreignphrase>access point</foreignphrase>) f&uuml;r
	drahtlose Netzwerke verwendet werden.</para>
    </sect2>

    <sect2>
      <title>Betriebsmodi drahtloser Ger&auml;te</title>

      <para>Drahtlose Ger&auml;te k&ouml;nnen in zwei Modi konfiguriert
        werden: BSS und IBSS.</para>

     <sect3>
       <title>BSS-Modus</title>
       <para>&Uuml;berlicherweise wird der BSS-Modus, der auch
         Infrastruktur-Modus genannt wird, verwendet.  In diesem Modus
	 sind die Zugangspunkte (<foreignphrase>access
	   points</foreignphrase> mit einem Kabel-Netzwerk verbunden.  Jedes
	 drahtlose Netzwerk besitzt einen Namen, der als die SSID des
	 Netzwerks bezeichnet wird.</para>

       <para>Drahtlose Clients benutzen ein im IEEE-802.11-Standard
         beschriebenes Protokoll, um sich mit den Zugangspunkten zu
         verbinden.  Durch die Angabe einer SSID kann sich der Client das
	 Netzwerk, mit dem er sich verbinden will, aussuchen.  Gibt der
	 Client keine SSID an, so wird er mit irgendeinem Netzwerk
	 verbunden.</para>
     </sect3>

     <sect3>
       <title>IBSS-Modus</title>
       <para>Der IBSS-Modus, der auch ad-hoc-Modus genannt wird, wurde
         f&uuml;r Punkt-zu-Punkt-Verbindungen entworfen.  Tats&auml;chlich
	 gibt es zwei Modi: Der IBSS-Modus, auch ad-hoc- oder
	 IEEE-ad-hoc-Modus, der im IEEE-802.11-Standard definiert wird
	 und der demo-ad-hoc-Modus oder Lucent-adhoc-Modus (der zur
	 Verwirrung auch schon mal ad-hoc-Modus genannt wird).  Der letzte
	 Modus stammt aus der Zeit vor IEEE&nbsp;802.11 und sollte nur noch
	 mit alten Installationen verwendet werden.  Im folgenden wird
	 keiner der ad-hoc-Modi behandelt.</para>
     </sect3>
   </sect2>

   <sect2>
     <title>Infrastruktur-Modus</title>

      <sect3>
	<title>Zugangspunkte</title>

	<para>Zugangspunkte sind drahtlose Netzwerkger&auml;te, die es
	  einem oder mehreren Clients erm&ouml;glichen, diesen als
	  einen zentralen Verteiler (Hub) zu benutzen.  Wenn ein
	  Zugangspunkt verwendet wird, kommunizieren alle Clients
	  &uuml;ber diesen Zugangspunkt.  Oft werden mehrere
	  Zugangspunkte kombiniert, um ein ganzes Gebiet, wie ein
	  Haus, ein Unternehmen oder einen Park mit einem drahtlosen
	  Netzwerk zu versorgen.</para>

	<para>&Uuml;blicherweise haben Zugangspunkte mehrere
	  Netzwerkverbindungen: Die drahtlose Karte, sowie eine oder
	  mehrere Ethernetkarten, &uuml;ber die die Verbindung mit dem
	  restlichen Netzwerk hergestellt wird.</para>

	<para>Sie k&ouml;nnen einen vorkonfigurierten Zugangspunkt
	  kaufen, oder Sie k&ouml;nnen sich unter Verwendung von
	  FreeBSD und einer unterst&uuml;tzten drahtlosen Karte einen
	  eigenen bauen.  Es gibt verschiedene Hersteller, die sowohl
	  Zugangspunkte als auch drahtlose Karten mit verschiedensten
	  Eigenschaften vertreiben.</para>
      </sect3>

      <sect3>
	<title>Einen FreeBSD-Zugangspunkt installieren</title>
	<indexterm>
	  <primary>drahtlose Netzwerke</primary>
	  <secondary>Zugangspunkte</secondary>
	</indexterm>

	<sect4>
	  <title>Voraussetzungen</title>

	  <para>Um einen drahtlosen Zugangspunkt unter FreeBSD
	    einzurichten, m&uuml;ssen Sie &uuml;ber eine drahtlose
	    Karte verf&uuml;gen.  Zurzeit werden daf&uuml;r von
	    FreeBSD nur Karten mit Prism-Chipsatz unterst&uuml;tzt.
	    Zus&auml;tzlich ben&ouml;tigen Sie eine von FreeBSD
	    unterst&uuml;tzte Ethernetkarte (diese sollte nicht schwer
	    zu finden sein, da FreeBSD eine Vielzahl von verschiedenen
	    Karten unterst&uuml;tzt).  F&uuml;r die weiteren
	    Erl&auml;uterungen nehmen wir an, dass Sie den ganzen
	    Verkehr zwischen dem drahtlosen Ger&auml;t und dem an die
	    Ethernetkarte angeschlossenen Kabel-Netzwerk &uuml;ber
	    die &man.bridge.4;-Funktion realisieren wollen.</para>

	 <para>Die hostap-Funktion, mit der FreeBSD-Zugangspunkte
	   implementiert, l&auml;uft am besten mit bestimmten
	   Firmware-Versionen.  Prism&nbsp;2-Karten sollten die
	   Version&nbsp;1.3.4 oder neuer der Firmware verwenden.
	   Prism&nbsp;2.5- und Prism&nbsp;3-Karten sollten die
	   Version&nbsp;1.4.9 der Firmware verwenden.  Es kann sein, dass
	   auch &auml;ltere Versionen funktionieren.  Zurzeit ist es nur
	   mit &windows;-Werkzeugen der Hersteller m&ouml;glich, die Firmware
	   zu aktualisieren.</para>
	</sect4>

	<sect4>
	  <title>Einrichtung</title>

	  <para>Stellen Sie als erstes sicher, dass Ihr System die
	    drahtlose Karte erkennt:</para>

	  <screen>&prompt.root; <userinput>ifconfig -a</userinput>
wi0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
        inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
        inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
        ether 00:09:2d:2d:c9:50
        media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
        status: no carrier
        ssid ""
        stationname "FreeBSD Wireless node"
        channel 10 authmode OPEN powersavemode OFF powersavesleep 100
        wepmode OFF weptxkey 1</screen>

	  <para>K&uuml;mmern Sie sich jetzt noch nicht um die Details,
	    sondern stellen Sie nur sicher, dass ihre drahtlose Karte
	    &uuml;berhaupt erkannt und angezeigt wird.  Wenn die
	    Karte eine PC&nbsp;Card ist und &uuml;berhaupt nicht
	    erkannt wird, schauen Sie in den Hilfeseiten
	    &man.pccardc.8; und &man.pccardd.8; nach weiteren
	    Hinweisen.</para>

	  <para>Danach m&uuml;ssen Sie ein Modul laden, um die
	    Bridge-Funktion von FreeBSD f&uuml;r den Zugangspunkt
	    vorzubereiten.  Um das &man.bridge.4;-Modul zu laden,
	    machen Sie Folgendes:</para>

	  <screen>&prompt.root; <userinput>kldload bridge</userinput></screen>

	  <para>Dabei sollten beim Laden des Moduls keine
	    Fehlermeldungen auftreten.  Geschieht dies doch, kann es
	    sein, dass Sie die Bridge-Funktion (&man.bridge.4;)
	    in Ihren Kernel kompilieren m&uuml;ssen.  Der Abschnitt
	    <link linkend="network-bridging">LAN-Kopplung mit einer
	      Bridge</link> sollte Ihnen bei dieser Aufgabe
	    behilflich sein.</para>

	  <para>Wenn die Bridge-Funktion aktiviert ist,
	    m&uuml;ssen wir FreeBSD mitteilen, welche Schnittstellen
	    &uuml;ber die Bridge verbunden werden sollen.  Dazu
	    verwenden wir &man.sysctl.8;:</para>

	  <screen>&prompt.root; <userinput>sysctl net.link.ether.bridge=1</userinput>
&prompt.root; <userinput>sysctl net.link.ether.bridge_cfg="wi0 xl0"</userinput>
&prompt.root; <userinput>sysctl net.inet.ip.forwarding=1</userinput></screen>

	  <para>Nun ist es an der Zeit, die drahtlose Karte zu
	    installieren.</para>

	  <para>Der folgende Befehl konfiguriert einen Zugangspunkt:</para>

	  <screen>&prompt.root; <userinput>ifconfig wi0 ssid my_net channel 11 media DS/11Mbps mediaopt hostap up stationname "FreeBSD AP"</userinput></screen>

	  <para>Die &man.ifconfig.8; Zeile aktiviert das
	    <devicename>wi0</devicename>-Ger&auml;t, und setzt die
	    SSID auf <literal>my_net</literal> sowie den Namen des
	    Zugangspunkts auf <literal>FreeBSD AP</literal>
	    Mit <option>media DS/11Mbps</option> wird die Karte in den
	    11&nbsp;Mbps-Modus versetzt.  Diese Option ist n&ouml;tig,
	    damit <option>mediaopt</option>-Optionen wirksam werden.  Mit
	    <option>mediaopt hostap</option> wird die Schnittstelle als
	    Zugangspunkt konfiguriert.  Der zu benutzende 802.11b-Kanal
	    wird mit <option>channel 11</option> festgelegt.  In der
	    Hilfeseite &man.wicontrol.8; werden weitere Kan&auml;le
	    <!-- f&uuml;r die regulatory domain -->
	    aufgez&auml;hlt.</para>

	  <para>Nun sollten Sie &uuml;ber einen voll
	    funktionsf&auml;higen und laufenden Zugangspunkt
	    verf&uuml;gen.  Mehr Informationen finden Sie
	    in den Hilfeseiten &man.wicontrol.8;, &man.ifconfig.8;
	    und &man.wi.4;.</para>

	  <para>Au&szlig;erdem ist es empfehlenswert, den folgenden
	    Abschnitt zu lesen, um sich &uuml;ber die Sicherung bzw.
	    Verschl&uuml;sselung von Zugangspunkten zu
	    informieren.</para>
	</sect4>

       <sect4>
         <title>Status Informationen</title>
	 <para>Wenn der Zugangspunkt eingerichtet ist und l&auml;uft,
	   k&ouml;nnen Sie die verbundenen Clients mit dem nachstehenden
	   Kommando abfragen:</para>

         <screen>&prompt.root; <userinput>wicontrol -l</userinput>
1 station:
00:09:b7:7b:9d:16  asid=04c0, flags=3&lt;ASSOC,AUTH&gt;, caps=1&lt;ESS&gt;, rates=f&lt;1M,2M,5.5M,11M&gt;, sig=38/15
</screen>

	 <para>Das Beispiel zeigt eine verbundene Station und die
	   dazugeh&ouml;renden Verbindungsparameter.  Die angegebene
	   Signalst&auml;rke sollte nur relativ interpretiert werden, da
	   die Umrechnung in dBm oder andere Einheiten abh&auml;ngig von
	   der Firmware-Version ist.</para>
       </sect4>
      </sect3>

      <sect3>
	<title>Clients</title>

	<para>Ein drahtloser Client ist ein System, das direkt auf
	  einen Zugangspunkt oder einen anderen Client
	  zugreift.</para>

	<para>&Uuml;blicherweise haben drahtlose Clients nur ein
	  Netzwerkger&auml;t, die drahtlose Netzkarte.</para>

	<para>Es gibt verschiedene M&ouml;glichkeiten, einen
	  drahtlosen Client zu konfigurieren.  Diese h&auml;ngen von
	  den verschiedenen drahtlosen Betriebsmodi ab.  Man
	  unterscheidet vor allem zwischen BSS (Infrastrukturmodus,
	  erfordert einen Zugangspunkt) und IBSS (ad-hoc,
	  Peer-to-Peer-Modus, zwischen zwei Clients, ohne
	  Zugangspunkt).  In unserem Beispiel verwenden wir den weiter
	  verbreiteten BSS-Modus, um einen Zugangspunkt anzusprechen.
	  </para>

	<sect4>
	  <title>Voraussetzungen</title>

	  <para>Es gibt nur eine Voraussetzung, um FreeBSD als
	    drahtlosen Client betreiben zu k&ouml;nnen: Sie brauchen
	    eine von FreeBSD unterst&uuml;tzte drahtlose
	    Karte.</para>
	</sect4>

	<sect4>
	  <title>Einen drahtlosen FreeBSD-Client einrichten</title>

	  <para>Sie m&uuml;ssen ein paar Dinge &uuml;ber das drahtlose
	    Netzwerk wissen, mit dem Sie sich verbinden wollen, bevor
	    Sie starten k&ouml;nnen.  In unserem Beispiel verbinden
	    wir uns mit einem Netzwerk, das den Namen
	    <literal>my_net</literal> hat, und bei dem die
	    Verschl&uuml;sselung deaktiviert ist.</para>

	  <para>Anmerkung: In unserem Beispiel verwenden wir keine
	    Verschl&uuml;sselung.  Dies ist eine gef&auml;hrliche
	    Situation.  Im n&auml;chsten Abschnitt werden Sie daher
	    lernen, wie man die Verschl&uuml;sselung aktiviert, warum
	    es wichtig ist, dies zu tun, und warum einige
	    Verschl&uuml;sselungstechnologien Sie trotzdem nicht
	    v&ouml;llig sch&uuml;tzen.</para>

	  <para>Stellen Sie sicher, dass Ihre Karte von FreeBSD
	    erkannt wird:</para>

	  <screen>&prompt.root; <userinput>ifconfig -a</userinput>
wi0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
        inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
        inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
        ether 00:09:2d:2d:c9:50
        media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
        status: no carrier
        ssid ""
        stationname "FreeBSD Wireless node"
        channel 10 authmode OPEN powersavemode OFF powersavesleep 100
        wepmode OFF weptxkey 1</screen>

	  <para>Nun werden wir die Einstellungen der Karte unserem
	    Netzwerk anpassen:</para>

	  <screen>&prompt.root; <userinput>ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net</userinput></screen>

	  <para>Ersetzen Sie <hostid
	    role="IPAddr">192.168.0.20</hostid> und <hostid
	    role="Netmask">255.255.255.0</hostid> mit einer
	    g&uuml;ltigen IP-Adresse und Netzmaske ihres
	    Kabel-Netzwerks.  Bedenken Sie au&szlig;erdem, dass unser
	    Zugangspunkt als Bridge zwischen dem drahtlosen und
	    dem Kabel-Netzwerk fungiert.  F&uuml;r die anderen
	    Rechner Ihres Netzwerks befinden Sie sich, genauso wie
	    diese, im gleichen Kabel-Netzwerk, obwohl Sie zum
	    drahtlosen Netzwerk geh&ouml;ren.</para>

	  <para>Nachdem Sie dies erledigt haben, sollten Sie andere
	    Rechner (Hosts) im Kabel-Netzwerk anpingen k&ouml;nnen.
	    Dies genauso, wie wenn Sie &uuml;ber eine
	    Standardkabelverbindung mit ihnen verbunden
	    w&auml;ren.</para>

	  <para>Wenn Probleme mit Ihrer drahtlosen Verbindung
	    auftreten, stellen Sie sicher, dass Sie mit dem
	    Zugangspunkt verbunden sind:</para>

	  <screen>&prompt.root; <userinput>ifconfig wi0</userinput></screen>

	  <para>sollte einige Informationen ausgeben und Sie sollten
	    Folgendes sehen:</para>

	  <screen>status: associated</screen>

	  <para>Wird dies nicht angezeigt, sind Sie entweder
	    au&szlig;erhalb der Reichweite des Zugangspunktes, haben die
	    Verschl&uuml;sselung deaktiviert, oder Sie haben ein
	    anderes Konfigurationsproblem.</para>
	</sect4>
      </sect3>

      <sect3>
	<title>Verschl&uuml;sselung</title>
	<indexterm>
	  <primary>drahtlose Netzwerke</primary>
	  <secondary>Verschl&uuml;sselung</secondary>
	</indexterm>

	<para>Verschl&uuml;sselung ist in einem drahtlosen Netzwerk
	  wichtig, da Sie das Netzwerk nicht l&auml;nger in einem
	  gesch&uuml;tzten Bereich betreiben k&ouml;nnen.  Ihre Daten
	  verbreiten sich in der ganzen Nachbarschaft, das hei&szlig;t
	  jeder, der es will, kann Ihre Daten lesen.  Deshalb gibt es die
	  Verschl&uuml;sselung.  Durch die Verschl&uuml;sselung der durch
	  die Luft versendeten Daten machen Sie es einem Dritten sehr
	  viel schwerer, Ihre Daten abzufangen oder auf diese
	  zuzugreifen.</para>

	<para>Die gebr&auml;uchlichsten Methoden, um Daten zwischen
	  Ihrem Client und dem Zugangspunkt zu verschl&uuml;sseln,
	  sind WEP und &man.ipsec.4;.</para>

	<sect4>
	  <title>WEP</title>
	  <indexterm>
	    <primary>WEP</primary>
	  </indexterm>

	  <para>WEP ist die Abk&uuml;rzung f&uuml;r Wired Equivalency
	    Protocol ("Verkabelung entsprechendes Protokoll").  WEP
	    war ein Versuch, drahtlose Netzwerke genauso sicher und
	    gesch&uuml;tzt zu machen wie verkabelte Netzwerke.
	    Ungl&uuml;cklicherweise wurde es bereits geknackt, und ist
	    relativ einfach auszuhebeln.  Sie sollten sich also nicht
	    darauf verlassen, wenn Sie sensible Daten
	    verschl&uuml;sseln wollen.</para>

	  <para>Allerdings ist eine schlechte Verschl&uuml;sselung
	    noch immer besser als gar keine Verschl&uuml;sselung.
	    Aktivieren Sie daher WEP f&uuml;r Ihren neuen FreeBSD
	    Zugangspunkt:</para>

	  <screen>&prompt.root; <userinput>ifconfig wi0 inet up ssid my_net wepmode on wepkey 0x1234567890 media DS/11Mbps mediaopt hostap</userinput></screen>

	  <para>Auf dem Client k&ouml;nnen Sie WEP wie folgt
	    aktivieren:</para>

	  <screen>&prompt.root; <userinput>ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net wepmode on wepkey 0x1234567890</userinput></screen>

	  <para>Beachten Sie bitte, dass Sie
	    <literal>0x1234567890</literal> durch einen besseren
	    Schl&uuml;ssel ersetzen sollten.</para>
	</sect4>

	<sect4>
	  <title>IPsec</title>

	  <para>&man.ipsec.4; ist ein viel besseres und robusteres
	    Werkzeug, um Daten in einem Netzwerk zu
	    verschl&uuml;sseln und ist auch der bevorzugte Weg,
	    Daten in einem drahtlosen Netzwerk zu verschl&uuml;sseln.
	    Weitere Informationen &uuml;ber
	    &man.ipsec.4;-Sicherheit, und dessen Implementierung
	    enth&auml;lt der Abschnitt <link linkend="ipsec">IPsec</link>
	    des Handbuches.</para>
	</sect4>
      </sect3>

      <sect3>
	<title>Werkzeuge</title>

	<para>Es gibt einige Werkzeuge, die dazu dienen, Ihr
	  drahtloses Netzwerk zu installieren, und auftretende
	  Probleme zu beheben.  Wir werden nun versuchen, einige davon
	  zu beschreiben.</para>

	<sect4>
	  <title><application>bsd-airtools</application></title>

	  <para>Das Paket <application>bsd-airtools</application>
	    enth&auml;lt einen kompletten Werkzeugsatz zum
	    Herausfinden von WEP-Schl&uuml;sseln, zum Auffinden von
	    Zugangspunkten, usw.</para>

	  <para>Die <application>bsd-airtools</application>
	    k&ouml;nnen Sie &uuml;ber den <filename
	    role="package">net/bsd-airtools</filename> Port
	    installieren.  Wie ein Port installiert wird,
	    beschreibt <xref linkend="ports"> des Handbuchs.</para>

	  <para>Das Programm <command>dstumbler</command> ist ein
	    Werkzeug, das Sie beim Auffinden von Zugangspunkten
	    unterst&uuml;tzt, und das Signal-Rausch-Verh&auml;ltnis
	    graphisch darstellen kann.  Wenn Sie Probleme beim
	    Einrichten und Betreiben Ihres Zugangspunktes haben,
	    k&ouml;nnte <command>dstumbler</command> genau das
	    Richtige f&uuml;r Sie sein.</para>

	  <para>Um die Sicherheit Ihres drahtlosen Netzwerks zu
	    &uuml;berpr&uuml;fen, k&ouml;nnten Sie das Paket
	    <quote>dweputils</quote> (<command>dwepcrack</command>,
	    <command>dwepdump</command> und
	    <command>dwepkeygen</command>) verwenden, um
	    festzustellen, ob WEP Ihren Sicherheitsanspr&uuml;chen
	    gen&uuml;gt.</para>
	</sect4>

	<sect4>
	  <title><application>wicontrol</application>,
	    <application>ancontrol</application> und
	    <application>raycontrol</application></title>

	  <para>Dies sind Werkzeuge, um das Verhalten Ihrer drahtlosen
	    Karte im drahtlosen Netzwerk zu kontrollieren.  In den
	    obigen Beispielen haben wir &man.wicontrol.8; verwendet,
	    da es sich bei unser drahtlosen Karte um ein Ger&auml;t
	    der <devicename>wi0</devicename>-Schnittstelle handelt.
	    H&auml;tten Sie eine drahtlose Karte von Cisco,
	    w&uuml;rden Sie diese &uuml;ber
	    <devicename>an0</devicename> ansprechen, und daher
	    &man.ancontrol.8; verwenden.</para>
	</sect4>

	<sect4>
	  <title>Das Kommando <application>ifconfig</application></title>
	  <indexterm>
	    <primary>ifconfig</primary>
	  </indexterm>

	  <para>&man.ifconfig.8; kennt zwar viele Optionen von
	    &man.wicontrol.8;, einige fehlen jedoch.  Die Hilfeseite
	    &man.ifconfig.8; z&auml;hlt weitere Parameter und
	    Optionen auf.</para>
	</sect4>
      </sect3>

      <sect3>
	<title>Unterst&uuml;tzte Karten</title>

	<sect4>
	  <title>Zugangspunkt</title>

	  <para>Die einzigen Karten, die im BSS-Modus (das hei&szlig;t als
	    Zugangspunkt) derzeit unterst&uuml;tzt werden, sind solche
	    mit Prism&nbsp;2-, 2.5- oder 3-Chipsatz.  F&uuml;r eine
	    komplette &Uuml;bersicht lesen Sie bitte &man.wi.4;.</para>
	</sect4>

	<sect4>
	  <title>Clients</title>

	  <para>Beinahe alle nach 802.11b arbeitenden drahtlosen
            Karten werden von FreeBSD unterst&uuml;tzt.  Die meisten dieser
            Karten von Prism, Spectrum24, Hermes, Aironet und Raylink
            arbeiten als drahtlose Netzkarten im IBSS-Modus (ad-hoc,
            Peer-to-Peer und BSS).</para>
	</sect4>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="network-bridging">
  <sect1info>
    <authorgroup>
      <author>
        <firstname>Steve</firstname>
	<surname>Peterson</surname>
	<contrib>Geschrieben von </contrib>
      </author>
    </authorgroup>
  </sect1info>
    <title>LAN-Kopplung mit einer Bridge</title>

    <sect2>
      <title>Einf&uuml;hrung</title>

      <indexterm><primary>Subnetz</primary></indexterm>
      <indexterm><primary>Bridge</primary></indexterm>

      <para>Manchmal ist es n&uuml;tzlich, ein physikalisches Netzwerk
        (wie ein Ethernetsegment) in zwei separate Netzwerke aufzuteilen,
        ohne gleich IP-Subnetze zu erzeugen, die &uuml;ber einen Router
	miteinander verbunden sind.  Ein Ger&auml;t, das zwei Netze
	auf diese Weise verbindet, wird als <emphasis>Bridge</emphasis>
	bezeichnet.  Jedes FreeBSD-System mit zwei Netzkarten kann
	als Bridge fungieren.</para>

      <para>Die Bridge arbeitet, indem sie die MAC Layeradressen (Ethernet
        Adressen) der Ger&auml;te in ihren Netzsegmenten lernt.  Der
	Verkehr wird nur dann zwischen zwei Netzsegmenten weitergeleitet,
        wenn sich Sender und Empf&auml;nger in verschiedenen Netzsegmenten
	befinden.</para>

      <para>In vielerlei Hinsicht entspricht eine Bridge daher einem
        Ethernet-Switch mit sehr wenigen Ports.</para>
    </sect2>

    <sect2>
      <title>Situationen, in denen <emphasis>Bridging</emphasis> angebracht
        ist</title>

      <para>Eine Bridge wird vor allem in folgenden zwei Situationen
        verwendet.</para>

      <sect3>
	<title>Hohes Datenaufkommen in einem Segment</title>

	<para>In der ersten Situation wird Ihr physisches Netz
	  mit Datenverkehr &uuml;berschwemmt.  Aus irgendwelchen
	  Gr&uuml;nden wollen Sie allerdings keine Subnetze verwenden,
	  die &uuml;ber einen Router miteinander verbunden sind.</para>

	<para>Stellen Sie sich einen Zeitungsverlag vor, in dem sich die
	  Redaktions- und Produktionsabteilungen in verschiedenen Subnetzen
	  befinden.  Die Redaktionsrechner verwenden den Server A f&uuml;r
	  Dateioperationen, und die Produktionsrechner verwenden den
	  Server B.  Alle Benutzer sind &uuml;ber ein gemeinsames
	  Ethernet-LAN miteinander verbunden.  Durch den hohen Datenverkehr
	  sinkt die Geschwindigkeit des gesamten Netzwerks.</para>

	<para>W&uuml;rde man die Redaktionsrechner und die
	  Produktionsrechner in separate Netzsegmente auslagern,
	  k&ouml;nnte man diese beiden Segmente &uuml;ber eine Bridge
	  verbinden.  Nur der f&uuml;r Rechner im <emphasis>anderen</emphasis>
	  Segment bestimmte Verkehr wird dann &uuml;ber die Brigde in
	  das andere Netzsegment geleitet.  Dadurch verringert sich das
	  Gesamtdatenaufkommen in beiden Segmenten.</para>
      </sect3>

      <sect3>
	<title>Filtering/Traffic Shaping Firewall</title>

	<indexterm><primary>Firewall</primary></indexterm>
	<indexterm><primary>IP-Masquerading</primary></indexterm>

	<para>Die zweite h&auml;ufig anzutreffende Situation tritt auf,
	  wenn Firewallfunktionen ben&ouml;tigt werden, ohne dass
	  IP-Maskierung (NAT &ndash; Network Adress Translation)
	  verwendet wird.</para>

	<para>Ein Beispiel daf&uuml;r w&auml;re ein kleines Unternehmen,
	  das &uuml;ber DSL oder ISDN an ihren ISP angebunden ist.  Es
	  verf&uuml;gt &uuml;ber 13 weltweit erreichbare IP-Adressen, und
	  sein Netzwerk besteht aus 10 Rechnern.  In dieser Situation ist
	  die Verwendung von Subnetzen sowie einer routerbasierten Firewall
	  schwierig.</para>

	<indexterm><primary>Router</primary></indexterm>
	<indexterm><primary>DSL</primary></indexterm>
	<indexterm><primary>ISDN</primary></indexterm>

	<para>Eine brigdebasierte Firewall kann konfiguriert und in den
	  ISDN/DSL-Downstreampfad ihres Routers eingebunden werden, ohne
	  sich um IP-Adressen k&uuml;mmern zu m&uuml;ssen.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>Die LAN-Kopplung konfigurieren</title>

      <sect3>
	<title>Auswahl der Netzkarten</title>

	<para>Eine Bridge ben&ouml;tigt mindestens zwei Netzkarten.
	  Leider sind unter FreeBSD&nbsp;4.x nicht alle verf&uuml;gbaren
	  Netzkarten daf&uuml;r geeignet.  Lesen Sie &man.bridge.4;, um
	  sich &uuml;ber Details der unterst&uuml;tzten Karten zu
	  informieren.</para>

	<para>Installieren und testen Sie beide Netzkarten, bevor Sie
	  fortfahren.</para>
      </sect3>

      <sect3>
	<title>Anpassen der Kernelkonfiguration</title>

	<indexterm><primary>Kernelkonfiguration</primary></indexterm>
	<indexterm>
	  <primary>Kernelkonfiguration</primary>
	  <secondary>options BRIDGE</secondary>
	</indexterm>

	<para>Um die Kernelunterst&uuml;tzung f&uuml;r die LAN-Kopplung
	  zu aktivieren, f&uuml;gen Sie</para>

	<programlisting>options BRIDGE</programlisting>

	<para>in Ihre Kernelkonfigurationsdatei ein, und erzeugen einen
	  neuen Kernel.</para>
      </sect3>

      <sect3>
	<title>Firewallunterst&uuml;tzung</title>

	<indexterm><primary>Firewall</primary></indexterm>

	<para>Wenn Sie die Bridge als Firewall verwenden wollen, m&uuml;ssen
	  Sie zus&auml;tzlich die Option <varname>IPFIREWALL</varname>
	  einf&uuml;gen.  Die Konfiguration von Firewalls
	  wird in <xref linkend="firewalls"> beschrieben.</para>

	<para>Wenn Sie Nicht-IP-Pakete (wie ARP-Pakete) durch Ihre
	  Bridge leiten wollen, m&uuml;ssen Sie eine zus&auml;tzliche,
	  undokumentierte Option verwenden.  Es handelt sich um
	  <literal>IPFIREWALL_DEFAULT_TO_ACCEPT</literal>.
	  Beachten Sie aber, dass Ihre Firewall durch diese Option per
	  Voreinstellung alle Pakete akzeptiert.  Sie sollten sich also
	  &uuml;ber die Auswirkungen dieser Option im Klaren sein,
	  bevor Sie sie verwenden.</para>
      </sect3>

      <sect3>
	<title>Unterst&uuml;tzung f&uuml;r Traffic Shaping</title>

	<para>Wenn Sie die Bridge als Traffic-Shaper verwenden wollen,
	  m&uuml;ssen Sie die Option <literal>DUMMYNET</literal> in
	  Ihre Kernelkonfigurationsdatei einf&uuml;gen.  Lesen Sie
	  &man.dummynet.4;, um weitere Informationen zu erhalten.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>Die LAN-Kopplung aktivieren</title>

      <para>F&uuml;gen Sie die Zeile</para>

      <programlisting>net.link.ether.bridge=1</programlisting>

      <para>in <filename>/etc/sysctl.conf</filename> ein, um die Bridge
        zur Laufzeit zu aktivieren, sowie die Zeile</para>

      <programlisting>net.link.ether.bridge_cfg=<replaceable>if1</replaceable>,<replaceable>if2</replaceable></programlisting>

      <para>um die LAN-Kopplung f&uuml;r die festgelegten Ger&auml;te
        zu erm&ouml;glichen (ersetzen Sie dazu <replaceable>if1</replaceable>
        und <replaceable>if2</replaceable> mit den Namen Ihrer Netzkarten).
	Wenn Sie die Datenpakete via &man.ipfw.8; filtern wollen, sollten
	Sie zus&auml;tzlich Folgendes einf&uuml;gen:</para>

      <programlisting>net.link.ether.bridge_ipfw=1</programlisting>
    </sect2>

    <sect2>
      <title>Sonstige Informationen</title>

      <para>Wenn Sie via <command>telnet</command> auf die Bridge zugreifen
        wollen, ist es in Ordnung, einer der beiden Netzkarten eine IP-Adresse
	zuzuweisen.  Es besteht Einigkeit dar&uuml;ber, dass es eine schlechte
	Idee ist, beiden Karten eine IP-Adresse zuzuweisen.</para>

      <para>Wenn Sie verschiedene Bridges in Ihrem Netzwerk haben, kann es
        dennoch nicht mehr als einen Weg zwischen zwei Arbeitspl&auml;tzen
	geben.  Das hei&szlig;t, Spanning tree link Management wird nicht
	unterst&uuml;tzt.</para>

      <para>Eine Bridge kann, besonders f&uuml;r Verkehr &uuml;ber
	Segmente, die Laufzeiten von Paketen erh&ouml;hen.</para>
    </sect2>
  </sect1>

  <sect1 id="network-nfs">
    <!-- j.kois@web.de, 04. April 2003 -->
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Tom</firstname>
          <surname>Rhodes</surname>
          <contrib>Reorganisiert und erweitert von </contrib>
        </author>
      </authorgroup>

      <authorgroup>
        <author>
	  <firstname>Bill</firstname>
	  <surname>Swingle</surname>
	  <contrib>Geschrieben von </contrib>
        </author>
      </authorgroup>
    </sect1info>

    <title>NFS &ndash; Network File System</title>

    <indexterm><primary>NFS</primary></indexterm>

    <para>Eines der vielen von FreeBSD unterst&uuml;tzten Dateisysteme
      ist das Netzwerkdateisystem, das auch als <acronym>NFS</acronym>
      bekannt ist.  <acronym>NFS</acronym> erm&ouml;glicht es einem
      System, Dateien und Verzeichnisse &uuml;ber ein Netzwerk mit anderen
      zu teilen.  &Uuml;ber <acronym>NFS</acronym> k&ouml;nnen Benutzer
      und Programme auf Daten entfernter Systeme zugreifen, und zwar
      genauso, wie wenn es sich um lokale Daten handeln w&uuml;rde.</para>

    <para>Einige der wichtigsten Vorteile von <acronym>NFS</acronym>
      sind:</para>

    <itemizedlist>
      <listitem>
	<para>Lokale Arbeitsstationen ben&ouml;tigen weniger Plattenplatz,
          da gemeinsam benutzte Daten nur auf einem einzigen Rechner
	  vorhanden sind.  Alle anderen Stationen greifen &uuml;ber das
	  Netzwerk auf diese Daten zu.</para>
      </listitem>

      <listitem>
	<para>Benutzer ben&ouml;tigen nur noch ein zentrales
	  Heimatverzeichnis auf einem <acronym>NFS</acronym>-Server.
	  Diese Verzeichnisse sind &uuml;ber das Netzwerk auf allen
	  Stationen verf&uuml;gbar.</para>
      </listitem>

      <listitem>
	<para>Speicherger&auml;te wie Disketten-, CD-ROM-
	  oder ZIP-Laufwerke k&ouml;nnen &uuml;ber das Netzwerk von
	  anderen Arbeitstationen genutzt werden.  Dadurch sind f&uuml;r
	  das gesamte Netzwerk deutlich weniger Speicherger&auml;te
	  n&ouml;tig.</para>
      </listitem>
    </itemizedlist>

    <sect2>
      <title>Wie funktioniert <acronym>NFS</acronym>?</title>

      <para><acronym>NFS</acronym> besteht aus zwei Hauptteilen: Einem
        Server und einem oder mehreren Clients.  Der Client greift
	&uuml;ber das Netzwerk auf die Daten zu, die auf dem Server
	gespeichert sind.  Damit dies korrekt funktioniert, m&uuml;ssen
	einige Prozesse konfiguriert und gestartet werden:</para>

      <note>
	<para>In &os;nbsp;5.X wurde <application>portmap</application>
	  durch <command>rpcbind</command> ersetzt.  Benutzer von
	  &os;nbsp;5.X m&uuml;ssen in den folgenden Beispielen
	  <application>portmap</application> durch
	  <command>rpcbind</command> ersetzen.</para>
      </note>

      <para>Der Server ben&ouml;tigt folgende Daemonen:</para>

      <indexterm>
        <primary>NFS</primary>
        <secondary>Server</secondary>
      </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">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>Daemon</entry>

	      <entry>Beschreibung</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry>nfsd</entry>

	      <entry>Der <acronym>NFS</acronym>-Daemon.  Er bearbeitet
	        Anfragen der <acronym>NFS</acronym>-Clients.</entry>
	    </row>

	    <row>
	      <entry>mountd</entry>

	      <entry>Der <acronym>NFS</acronym>-Mount-Daemon.  Er
	        bearbeitet die Anfragen, die &man.nfsd.8; an ihn
		weitergibt.</entry>
	    </row>

	    <row>
	      <entry>portmap</entry>

	      <entry> Der Portmapper-Daemon.  Durch ihn erkennen die
	        <acronym>NFS</acronym>-Clients, welchen Port der
		<acronym>NFS</acronym>-Server verwendet.</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

      <para>Der Client kann ebenfalls einen Daemon aufrufen, und zwar den
        <application>nfsiod</application>-Daemon.  Der
	<application>nfsiod</application>-Daemon bearbeitet Anfragen vom
	<acronym>NFS</acronym>-Server.  Er ist optional und verbessert
	die Leistung des Netzwerks.  F&uuml;r eine normale und korrekte
	Arbeit ist er allerdings nicht erforderlich.  Lesen Sie
	&man.nfsiod.8;, wenn Sie weitere Informationen ben&ouml;tigen.</para>
    </sect2>

    <sect2 id="network-configuring-nfs">

      <title><acronym>NFS</acronym> einrichten</title>

      <indexterm>
        <primary>NFS</primary>
	<secondary>einrichten</secondary>
      </indexterm>

      <para><acronym>NFS</acronym> l&auml;&szlig;t sich leicht
        einrichten.  Die n&ouml;tigen Prozesse werden durch einige
	&Auml;nderungen in <filename>/etc/rc.conf</filename> bei
	jedem Systemstart gestartet.</para>

      <para>Stellen Sie sicher, dass auf dem <acronym>NFS</acronym>-Server
        folgende Optionen in <filename>/etc/rc.conf</filename>
	gesetzt sind:</para>

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

      <para><command>mountd</command> l&auml;uft automatisch, wenn der
        <acronym>NFS</acronym>-Server aktiviert ist.</para>

      <para>Auf dem Client muss in <filename>/etc/rc.conf</filename>
        folgende Option gesetzt sein:</para>

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

      <para>
        <filename>/etc/exports</filename> legt fest, welche Dateisysteme
	<acronym>NFS</acronym> exportieren (manchmal auch als
	<quote>teilen</quote> bezeichnet) soll.  Jede Zeile in
	<filename>/etc/exports</filename> legt ein Dateisystem sowie
	die Arbeitsstationen, die darauf Zugriff haben, fest.  Au&szlig;erdem
	ist es m&ouml;glich, Zugriffsoptionen festzulegen.  Es gibt viele
	verschiedene Optionen, allerdings werden hier nur einige von
	ihnen erw&auml;hnt.  Wenn Sie Informationen &uuml;ber weitere
	Optionen ben&ouml;tigen, lesen Sie &man.exports.5;.</para>

      <para>Nun folgen einige Beispieleintr&auml;ge f&uuml;r
        <filename>/etc/exports</filename>:</para>

      <indexterm>
        <primary>NFS</primary>
        <secondary>Export von Dateisystemen</secondary>
      </indexterm>

      <para>Die folgenden Beispiele geben Ihnen Anhaltspunkte zum
        Exportieren von Dateisystemen, obwohl diese Einstellungen
	nat&uuml;rlich von Ihrer Arbeitsumgebung und Ihrer
	Netzwerkkonfiguration abh&auml;ngen.  Das n&auml;chste
	Beispiel exportiert das Verzeichnis <filename>/cdrom</filename>
	f&uuml;r drei Rechner, die sich in derselben Dom&auml;ne wie
	der Server befinden oder f&uuml;r die entsprechende Eintr&auml;ge
	in <filename>/etc/hosts</filename> existieren.
	Die Option <option>-ro</option> kennzeichnet das
	exportierte Dateisystem als schreibgesch&uuml;tzt.  Durch dieses
	Flag ist das entfernte System nicht in der Lage, das exportierte
	Dateisystem zu ver&auml;ndern.</para>

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

      <para>Die n&auml;chste Zeile exportiert <filename>/home</filename>
        auf drei durch IP-Adressen bestimmte Rechner.  Diese Einstellung
	ist n&uuml;tzlich, wenn Sie &uuml;ber ein privates Netzwerk ohne
	<acronym>DNS</acronym>-Server verf&uuml;gen.  Optional
	k&ouml;nnten interne Rechnernamen auch in
	<filename>/etc/hosts</filename>	konfiguriert werden.
	Ben&ouml;tigen Sie hierzu weitere Informationen, lesen Sie bitte
	&man.hosts.5;.  Durch das Flag <option>-alldirs</option> wird es
	m&ouml;glich, auch Unterverzeichnisse als Mountpunkte
	festzulegen.  Dies bedeutet aber nicht, dass alle
	Unterverzeichnisse eingeh&auml;ngt werden, vielmehr wird es dem
	Client erm&ouml;glicht, nur diejenigen	Verzeichnisse
	einzuh&auml;ngen, die auch ben&ouml;tigt werden.</para>

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

      <para>Die n&auml;chste Zeile exportiert <filename>/a</filename>,
        damit Clients von verschiedenen Dom&auml;nen auf das Dateisystem
	zugreifen k&ouml;nnen.  Das <option>-maproot=root</option>-Flag
	erlaubt es dem Benutzer <username>root</username> des entfernten
	Systems, als <username>root</username> auf das exportierte
	Dateisystem zu schreiben.  Wenn dieses Flag nicht gesetzt ist,
	kann selbst <username>root</username> nicht auf das exportierte
	Dateisystem schreiben.</para>

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

      <para>Damit ein Client auf ein exportiertes Dateisystem zugreifen
        kann, muss ihm dies explizit gestattet werden.  Stellen Sie also
	sicher, dass der Client in <filename>/etc/exports</filename>
	aufgef&uuml;hrt wird.</para>

      <para>Jede Zeile in <filename>/etc/exports</filename> entspricht
        der Exportinformation f&uuml;r ein Dateisystem auf einen Rechner.
	Ein entfernter Rechner kann f&uuml;r jedes Dateisystem nur
	einmal festgelegt werden, und kann auch nur einen Standardeintrag
	haben.  Nehmen wir an, dass <filename>/usr</filename>
        ein einziges Dateisystem ist.  Dann w&auml;ren folgende Zeilen
	ung&uuml;ltig:</para>

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

      <para>Das Dateisystem <filename>/usr</filename> wird hier zweimal
	auf den selben Rechner (<hostid>client</hostid>)
	exportiert.  Dies ist aber nicht zul&auml;ssig.  Der richtige
	Eintrag sieht daher so aus:</para>

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

      <para>Die Eigenschaften eines auf einen anderen Rechner
        exportierten Dateisystems m&uuml;ssen alle in einer Zeile
	stehen.  Zeilen, in denen kein Rechner festgelegt wird, werden
	als einzelner Rechner behandelt.  Dies schr&auml;nkt die
	M&ouml;glichkeiten zum Export von Dateisystemen ein, f&uuml;r
	die meisten Anwender ist dies aber kein Problem.</para>

      <para>Eine g&uuml;ltige Exportliste, in der
        <filename>/usr</filename> und <filename>/exports</filename>
	lokale Dateisysteme sind, sieht so aus:</para>

      <programlisting>
# Export src and ports to client01 and client02, but only
# client01 has root privileges on it
/usr/src /usr/ports -maproot=root    client01
/usr/src /usr/ports                  client02
# The client machines have root and can mount anywhere
# on /exports. Anyone in the world can mount /exports/obj read-only
/exports -alldirs -maproot=root      client01 client02
/exports/obj -ro
      </programlisting>

      <para>Sie m&uuml;ssen <command>mountd</command> nach jeder
        &Auml;nderung von <filename>/etc/exports</filename> neu
	starten, damit die &Auml;nderungen wirksam werden.  Dies
	kann durch das Senden des HUP-Signals an den
	<command>mountd</command>-Prozess erfolgen:</para>

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

      <para>Alternativ k&ouml;nnen Sie auch das System neu starten.
        Dies ist allerdings nicht n&ouml;tig.  Wenn Sie die folgenden
	Befehle als <username>root</username> ausf&uuml;hren, sollte
	alles korrekt gestartet werden.</para>

      <para>Auf dem <acronym>NFS</acronym>-Server:</para>

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

      <para>Auf dem <acronym>NFS</acronym>-Client:</para>

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

      <para>Nun sollte alles bereit sein, um ein entferntes Dateisystem
        einh&auml;ngen zu k&ouml;nnen.  In unseren Beispielen nennen wir
	den Server <literal>server</literal>, den Client
	<literal>client</literal>.  Wenn Sie ein entferntes Dateisystem
	nur zeitweise einh&auml;ngen wollen, oder nur Ihre Konfiguration
	testen m&ouml;chten, f&uuml;hren Sie auf dem Client als
	<username>root</username> einen Befehl &auml;hnlich dem
	folgenden aus:</para>

      <indexterm>
        <primary>NFS</primary>
	<secondary>Dateisysteme einh&auml;ngen</secondary>
      </indexterm>

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

      <para>Dadurch wird das Verzeichnis <filename>/home</filename> des
        Servers auf dem Client unter <filename>/mnt</filename> eingeh&auml;ngt.
	Wenn alles korrekt konfiguriert wurde, sehen Sie auf dem Client
	im Verzeichnis <filename>/mnt</filename> alle Dateien des
	Servers.</para>

      <para>Wenn Sie ein entferntes Dateisystem nach jedem Systemstart
        automatisch einh&auml;ngen wollen, f&uuml;gen Sie das Dateisystem
	in <filename>/etc/fstab</filename> ein.  Dazu ein Beispiel:</para>

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

      <para>F&uuml;r Informationen zu allen m&ouml;glichen Optionen lesen
        Sie bitte &man.fstab.5;.</para>
    </sect2>

    <sect2>
      <title>Praktische Anwendungen</title>

      <para><acronym>NFS</acronym> ist in vielen Situationen
        n&uuml;tzlich.  Einige Anwendungsbereiche finden Sie in der
	folgenden Liste:</para>

      <indexterm>
        <primary>NFS</primary>
	<secondary>Anwendungsbeispiele</secondary>
      </indexterm>

      <itemizedlist>
        <listitem>
	  <para>Mehrere Maschinen k&ouml;nnen sich ein CD-ROM-Laufwerk
	    oder andere Medien teilen.  Dies ist billiger und au&szlig;erdem
	    praktischer, um Programme auf mehreren Rechnern zu
	    installieren.</para>
	</listitem>

	<listitem>
	  <para>In gr&ouml;&szlig;eren Netzwerken ist es praktisch,
	    einen zentralen <acronym>NFS</acronym>-Server einzurichten,
	    auf dem die Heimatverzeichnisse der Benutzer gespeichert
	    werden.  Diese Heimatverzeichnisse werden &uuml;ber das
	    Netzwerk exportiert.  Dadurch haben die Benutzer immer das
	    gleiche Heimatverzeichnis zur Verf&uuml;gung,
	    unabh&auml;ngig davon, an welchem Arbeitsplatz sie sich
	    anmelden.</para>
	</listitem>

	<listitem>
	  <para>Verschiedene Rechner k&ouml;nnen auf ein gemeinsames
	    <filename>/usr/ports/distfiles</filename>-Verzeichnis
	    zugreifen.  Wenn Sie nun einen Port auf mehreren Rechnern
	    installieren wollen, greifen Sie einfach auf dieses
	    Verzeichnis zu, ohne die Quelldateien auf jede Maschine
	    zu kopieren.</para>
	</listitem>
      </itemizedlist>
    </sect2>

    <sect2 id="network-amd">
    <!-- j.kois@web.de, 05. April 2003 -->
      <sect2info>
	<authorgroup>
	  <author>
	    <firstname>Wylie</firstname>
	    <surname>Stilwell</surname>
	    <contrib>Beigetragen von </contrib>
	  </author>
	</authorgroup>

	<authorgroup>
	  <author>
	    <firstname>Chern</firstname>
	    <surname>Lee</surname>
	    <contrib>&Uuml;berarbeitet von </contrib>
	  </author>
	</authorgroup>
      </sect2info>

      <title><application>AMD</application></title>

      <indexterm><primary>amd</primary></indexterm>
      <indexterm><primary>Automatic Mounter Daemon</primary></indexterm>

      <para>&man.amd.8; (Automatic Mounter Daemon) h&auml;ngt ein
	entferntes Dateisystem automatisch ein,
	wenn auf eine Datei oder ein Verzeichnis in diesem Dateisystem
	zugegriffen wird.  Dateisysteme, die &uuml;ber einen gewissen
	Zeitraum inaktiv sind, werden von <application>amd</application>
	automatisch abgeh&auml;ngt.
	<application>amd</application> ist eine einfache
	Alternative zum dauerhaften Einh&auml;ngen von Dateisystemen
	in <filename>/etc/fstab</filename>.</para>

      <para>In der Voreinstellung stellt <application>amd</application>
	die Verzeichnisse <filename>/host</filename> und
	<filename>/net</filename> als NFS-Server bereit.  Wenn auf eine Datei
	in diesen Verzeichnissen zugegriffen wird, sucht
	<application>amd</application> den entsprechenden Mountpunkt
	und h&auml;ngt das Dateisystem automatisch ein.
	<filename>/net</filename> wird zum Einh&auml;ngen von
	exportierten Dateisystemen von einer IP-Adresse verwendet,
	w&auml;hrend <filename>/host</filename> zum Einh&auml;ngen
	von exportierten Dateisystemen eines durch seinen Namen
	festgelegten Rechners dient.</para>

      <para>Ein Zugriff auf eine Datei in
        <filename>/host/foobar/usr</filename> w&uuml;rde
	<application>amd</application> veranlassen,
	das von <hostid>foobar</hostid> exportierte Dateisystem
	<filename>/usr</filename> einzuh&auml;ngen.</para>

      <example>
	<title>Ein exportiertes Dateisystem mit
	  <application>amd</application> in den Verzeichnisbaum
	    einh&auml;ngen</title>

	<para>Sie k&ouml;nnen sich die verf&uuml;gbaren Mountpunkte
	  eines entfernten Rechners mit <command>showmount</command>
	  ansehen.  Wollen Sie sich die Mountpunkte des Rechners
	  <hostid>foobar</hostid> ansehen, so verwenden Sie:</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>Wie Sie an diesem Beispiel erkennen k&ouml;nnen, zeigt
        <command>showmount</command> <filename>/usr</filename>
	als exportiertes Dateisystem an.  Wenn man in das Verzeichnis
	<filename>/host/foobar/usr</filename> wechselt, versucht
	<application>amd</application> den Rechnernamen
	<hostid>foobar</hostid>	aufzul&ouml;sen	und den gew&uuml;nschten
	Export in den Verzeichnisbaum einzuh&auml;ngen.</para>

      <para><application>amd</application> kann durch das Einf&uuml;gen
        der folgenden Zeile in <filename>/etc/rc.conf</filename>
	automatisch gestartet werden:</para>

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

      <para>Mit der Option <varname>amd_flags</varname> kann
        <application>amd</application> angepasst werden.
	Die Voreinstellung f&uuml;r <varname>amd_flags</varname> sieht
	so aus:</para>

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

      <para><filename>/etc/amd.map</filename> legt die Standardoptionen
        fest, mit denen exportierte Dateisysteme in den Verzeichnisbaum
	eingeh&auml;ngt werden.  <filename>/etc/amd.conf</filename>
	hingegen legt einige der erweiterten Optionen von
	<application>amd</application> fest.</para>

      <para>Weitere Informationen finden Sie in den Hilfeseiten
	&man.amd.8; und &man.amd.conf.5;.</para>
    </sect2>

    <sect2 id="network-nfs-integration">
      <!-- j.kois@web.de, 05. April 2003 -->
      <sect2info>
        <authorgroup>
          <author>
            <firstname>John</firstname>
            <surname>Lind</surname>
            <contrib>Beigetragen von </contrib>
          </author>
        </authorgroup>
      </sect2info>

      <title>Integrationsprobleme mit anderen Systemen</title>

      <para>Bestimmte ISA-Ethernetadapter haben Beschr&auml;nkungen, die
        zu ernsthaften Netzwerkproblemen, insbesondere mit NFS
	f&uuml;hren k&ouml;nnen.  Es handelt sich dabei nicht um ein
	FreeBSD-spezifisches Problem, aber FreeBSD-Systeme sind davon
	ebenfalls betroffen.</para>

      <para>Das Problem tritt fast ausschlie&szlig;lich dann auf, wenn
        (FreeBSD)-PC-Systeme mit Hochleistungsrechnern verbunden werden,
	wie Systemen von Silicon&nbsp;Graphics, Inc. oder
	Sun&nbsp;Microsystems, Inc.  Das Einh&auml;ngen via NFS funktioniert
	problemlos, auch einige	Dateioperationen k&ouml;nnen erfolgreich
	sein.  Pl&ouml;tzlich aber wird der Server nicht mehr auf den
	Client reagieren, obwohl Anfragen an und von anderen Rechnern
	weiter bearbeitet werden.  Dieses Problem betrifft stets den
	Client, egal ob es sich beim Client um das FreeBSD-System oder
	den Hochleistungsrechner handelt.  Auf vielen Systemen gibt es
	keine M&ouml;glichkeit mehr, den Client ordnungsgem&auml;&szlig;
	zu beenden.  Die einzige L&ouml;sung ist oft, den Rechner neu
	zu starten, da dieses NFS-Problem nicht mehr behoben werden kann.</para>

      <para>Die <quote>korrekte</quote> L&ouml;sung f&uuml;r dieses
        Problem ist es, sich eine schnellere Ethernetkarte f&uuml;r
	FreeBSD zu kaufen.  Allerdings gibt es auch eine einfache und
	meist zufriedenstellende L&ouml;sung, um dieses Problem zu
	umgehen.  Wenn es sich beim FreeBSD-System um den
	<emphasis>Server</emphasis> handelt, verwenden Sie beim
	Einh&auml;ngen in den Verzeichnisbaum auf der Clientseite
	zus&auml;tzlich die Option <option>-w=1024</option> .  Wenn es
	sich beim FreeBSD-System um den <emphasis>Client</emphasis>
	handelt, dann h&auml;ngen Sie das NFS-Dateisystem mit der
	zus&auml;tzlichen Option <option>-r=1024</option> ein.
	Diese Optionen k&ouml;nnen auf der Clientseite auch durch
	das vierte Feld der Eintr&auml;ge in <filename>/etc/fstab</filename>
	festgelegt werden, damit die Dateisysteme automatisch eingeh&auml;ngt
	werden.  Um die Dateisysteme manuell einzuh&auml;ngen, verwendet
	man bei <command>mount</command> zus&auml;tzlich die Option
	<option>-o</option>.</para>

      <para>Es gibt ein anderes Problem, das oft mit diesem verwechselt
        wird.  Dieses andere Problem tritt auf, wenn sich &uuml;ber NFS
	verbundene Server und Clients in verschiedenen Netzwerken
	befinden.  Wenn dies der Fall ist, stellen Sie
	<emphasis>sicher</emphasis>, dass Ihre Router die
	n&ouml;tigen UDP-Informationen weiterleiten, oder Sie werden
	nirgends hingelangen, egal was Sie machen.</para>

      <para>In den folgenden Beispielen ist <hostid>fastws</hostid> der
        Name des Hochleistungsrechners (bzw. dessen Schnittstelle),
	<hostid>freebox</hostid> hingegen ist der Name des
	FreeBSD-Systems, das &uuml;ber eine Netzkarte mit geringer
	Leistung verf&uuml;gt.  <filename>/sharedfs</filename> ist das
	exportierte NFS&nbsp;-Dateisystem (lesen Sie dazu auch
	&man.exports.5;).  Bei <filename>/project</filename> handelt es
	sich um den Mountpunkt, an dem das exportierte Dateisystem auf
	der Clientseite	eingeh&auml;ngt wird.  In allen F&auml;llen
	k&ouml;nnen zus&auml;tzliche Optionen, wie z.B.
	<option>hard</option>, <option>soft</option> oder
	<option>bg</option> w&uuml;nschenswert sein.</para>

      <para>FreeBSD als Client (eingetragen in
        <filename>/etc/fstab</filename> auf <hostid>freebox</hostid>):</para>

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

      <para>Manuelles Einh&auml;ngen auf <hostid>freebox</hostid>:</para>

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

      <para>FreeBSD als Server (eingetragen in
        <filename>/etc/fstab</filename> auf <hostid>fastws</hostid>):</para>

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

      <para>Manuelles Einh&auml;ngen auf <hostid>fastws</hostid>:</para>

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

      <para>Nahezu alle 16-bit Ethernetadapter erlauben Operationen
        ohne obengenannte Einschr&auml;nkungen auf die Lese- oder
	Schreibgr&ouml;&szlig;e.</para>

      <para>F&uuml;r alle technisch Interessierten wird nun beschrieben,
        was passiert, wenn dieser Fehler auftritt, und warum er
	irreversibel ist.  NFS arbeitet &uuml;blicherweise mit einer
	<quote>Blockgr&ouml;&szlig;e</quote> von 8&nbsp;kByte (obwohl
	es kleinere Fragmente zulassen w&uuml;rde).  Da die maximale
	Rahmengr&ouml;&szlig;e von Ethernet 1500&nbsp;Bytes
	betr&auml;gt, wird der NFS-<quote>Block</quote> in einzelne
	Ethernetrahmen aufgeteilt, obwohl es sich nach wie vor um eine
	Einheit handelt, die auch als Einheit empfangen, verarbeitet
	und <emphasis>best&auml;tigt</emphasis> werden muss.  Der
	Hochleistungsrechner verschickt die Pakete, aus denen der
	NFS-Block besteht, so eng hintereinander, wie es der Standard
	erlaubt.  Auf der anderen Seite (auf der sich die langsamere
	Netzkarte befindet), &uuml;berschreiben die sp&auml;teren
	Pakete ihre Vorg&auml;nger, bevor diese vom System verarbeitet
	werden (&Uuml;berlauf!).  Dies hat zur Folge, dass der NFS-Block
	nicht mehr rekonstruiert und best&auml;tigt werden kann.  Als
	Folge davon glaubt der Hochleistungsrechner, dass der andere
	Rechner nicht erreichbar ist (Timeout!) und versucht die
	Sendung zu wiederholen.  Allerdings wird wiederum der komplette
	NFS-Block verschickt, so dass sich der ganze Vorgang wiederholt,
	und zwar immer wieder (oder bis zum Systemneustart).</para>

      <para>Indem wir die Einheitengr&ouml;&szlig;e unter der maximalen
        Gr&ouml;&szlig;e der Ethernetpakete halten, k&ouml;nnen wir
	sicherstellen, dass jedes vollst&auml;ndig erhaltene
	Ethernetpaket individuell angesprochen werden kann und vermeiden
	die Blockierung des Systems.</para>

      <para>&Uuml;berl&auml;ufe k&ouml;nnen zwar nach wie vor auftreten,
        wenn ein Hochleistungsrechner Daten auf ein PC-System
	transferiert.  Durch die besseren (und schnelleren) Netzkarten
	treten solche &Uuml;berl&auml;ufe allerdings nicht mehr
	<emphasis>zwingend</emphasis> auf, wenn
	NFS-<quote>Einheiten</quote> &uuml;bertragen werden.  Tritt nun
	ein &Uuml;berlauf auf, wird die betroffene Einheit erneut
	verschickt, und es besteht eine gute Chance, dass sie nun
	erhalten, verarbeitet und best&auml;tigt werden kann.</para>
    </sect2>
  </sect1>

  <sect1 id="network-diskless">
    <!-- j.kois@web.de, 05.05.2003 -->
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Jean-Fran&ccedil;ois</firstname>
          <surname>Dock&egrave;s</surname>
          <contrib>Aktualisiert von </contrib>
        </author>
      </authorgroup>
    </sect1info>

    <title>Start und Betrieb von FreeBSD &uuml;ber ein Netzwerk</title>

    <indexterm>
      <primary>plattenloser Arbeitsplatz</primary>
    </indexterm>
    <indexterm>
      <primary>plattenloser Betrieb</primary>
    </indexterm>

    <para>FreeBSD kann &uuml;ber ein Netzwerk starten und arbeiten, ohne
      eine lokale Festplatte zu verwenden, indem es Dateisysteme eines
      NFS-Servers in den eigenen Verzeichnisbaum einh&auml;ngt.  Dazu
      sind, von den Standardkonfigurationsdateien abgesehen, keine
      System&auml;nderungen n&ouml;tig.  Ein solches System kann leicht
      installiert werden, da alle notwendigen Elemente bereits vorhanden
      sind:</para>

    <itemizedlist>
      <listitem>
        <para>Es gibt mindestens zwei M&ouml;glichkeiten, den Kernel
          &uuml;ber das Netzwerk zu laden:</para>

        <itemizedlist>
          <listitem>
            <para><emphasis>PXE</emphasis>: Das
              <quote>Preboot Execution Environment System</quote> von
              &intel; ist eine Art intelligentes Boot-ROM, das in einigen
              Netzkarten oder Hauptplatinen verwendet wird.  Mehr
	      Informationen finden Sie in der Hilfeseite
	      &man.pxeboot.8;.</para>
          </listitem>

          <listitem>
            <para>Der Port
              <emphasis><application>etherboot </application></emphasis>
              (<filename role="package">net/etherboot</filename>) erzeugt
              ROM-f&auml;higen Code, um einen Kernel &uuml;ber das
              Netzwerk zu laden.  Dieser Code kann entweder auf ein
              Boot-PROM einer Netzkarte gebrannt werden, was von vielen
              Netzkarten unterst&uuml;tzt wird.  Oder er kann von einer
              lokalen Diskette, Festplatte oder von einem laufenden
              &ms-dos;-System geladen werden.</para>
          </listitem>
        </itemizedlist>
      </listitem>

      <listitem>
        <para>Das Beispielskript
          (<filename>/usr/share/examples/diskless/clone_root</filename>)
          erleichtert die Erzeugung und die Wartung des root-Dateisystems
          auf dem Server.  Das Skript muss wahrscheinlich angepasst
          werden, dennoch werden Sie schnell zu einem Ergebnis kommen.
        </para>
      </listitem>

      <listitem>
        <para>Die Startdateien, die einen plattenlosen Systemstart
          erkennen und unterst&uuml;tzen, sind nach der Installation
          in <filename>/etc</filename> vorhanden.</para>
      </listitem>

      <listitem>
        <para>Dateiauslagerungen k&ouml;nnen sowohl via NFS als auch
          auf die lokale Platte erfolgen.</para>
      </listitem>
    </itemizedlist>

    <para>Es gibt verschiedene Wege, einen plattenlosen Rechner
      einzurichten.  Viele Elemente sind daran beteiligt, die fast
      immer an den pers&ouml;nlichen Geschmack angepasst werden
      k&ouml;nnen.  Die folgende Beschreibung erkl&auml;rt die
      Installation eines kompletten Systems, wobei der Schwerpunkt auf
      Einfachheit und Kompatibilit&auml;t zu den Standardstartskripten
      von FreeBSD liegt.  Das beschriebene System hat folgende
      Eigenschaften:</para>

    <itemizedlist>
      <listitem>
        <para>Die plattenlosen Rechner haben ein gemeinsames
          <filename>root</filename>- sowie ein gemeinsames
          <filename>/usr</filename>-Dateisystem, die jeweils
          schreibgesch&uuml;tzt sind.</para>

        <para>Das <filename>root</filename>-Dateisystem ist eine Kopie
          eines Standardwurzelverzeichnisses von FreeBSD
          (&uuml;blicherweise das des Servers), bei dem einige
          Konfigurationsdateien durch f&uuml;r den plattenlosen
          Betrieb geeignete Versionen ersetzt wurden.</para>

        <para>F&uuml;r die Bereiche von <filename>root</filename>, die
          beschreibbar sein m&uuml;ssen, werden mit &man.mfs.8;
          virtuelle Dateisysteme erzeugt.  Dies bedeutet aber auch, dass
          alle Ver&auml;nderungen verloren gehen, wenn das System neu
          gestartet wird.</para>
      </listitem>

      <listitem>
          <para>Der Kernel wird von <application>etherboot</application>
            geladen.  Dazu werden DHCP (oder BOOTP) und TFTP verwendet.</para>
      </listitem>
    </itemizedlist>

    <caution><para>Das hier beschriebene System ist nicht sicher.  Es
      sollte nur in einem gesicherten Bereich eines Netzwerks verwendet
      werden und f&uuml;r andere Rechner nicht erreichbar sein.</para>
    </caution>

    <sect2>
      <title>Installationsanweisungen</title>
      <indexterm>
	<primary>plattenloser Betrieb</primary>
	<secondary>Systemstart</secondary>
      </indexterm>

      <sect3>
        <title>DHCP/BOOTP konfigurieren</title>

        <para>Es gibt zwei h&auml;ufig verwendete Protokolle, um Rechner
          zu starten, die ihre Konfiguration &uuml;ber ein Netzwerk
          erhalten: BOOTP und DHCP.  Diese werden in verschiedenen
          Phasen des Startvorganges verwendet:</para>

        <itemizedlist>
          <listitem><para><application>etherboot</application> verwendet
            DHCP (Voreinstellung) oder BOOTP (muss vorher konfiguriert
            werden), um den Kernel zu finden (PXE verwendet DHCP).</para>
          </listitem>

          <listitem><para>Der Kernel verwendet BOOTP, um das
            NFS-Wurzelverzeichnis zu finden.</para>
          </listitem>
        </itemizedlist>

        <para>Es ist m&ouml;glich, das System so zu konfigurieren, dass
          es nur BOOTP verwendet.  Das &man.bootpd.8;-Serverprogramm ist
          bereits im Basissystem enthalten.</para>

        <para>DHCP hat im Vergleich zu BOOTP allerdings mehrere Vorteile
          (bessere Konfigurationsdateien, die M&ouml;glichkeit zur
          Verwendung von PXE, sowie viele andere, die nicht in direktem
          Zusammenhang mit dem plattenlosen Betrieb stehen), daher werden
          hier beide Methoden, die ausschlie&szlig;liche Verwendung von
          BOOTP sowie die gemeinsame Nutzung von BOOTP und DHCP
          beschrieben.  Der Schwerpunkt liegt dabei auf der Betrachtung
          von DHCP.  Dazu wird das Softwarepaket ISC-DHCP verwendet.</para>

        <sect4>
          <title>Konfiguration unter Verwendung von ISC DHCP</title>
          <indexterm>
            <primary>DHCP</primary>
	    <secondary>plattenloser Betrieb</secondary>
          </indexterm>

          <para>Der <application>isc-dhcp</application>-Server kann
            Anfragen sowohl von BOOTP als auch von DHCP beantworten.
          </para>

          <para><application>isc-dhcp 3.0</application> ist nicht Teil
            des Basissystems.  Sie m&uuml;ssen es daher zuerst
            installieren.  Verwenden Sie dazu den Port
            <filename role="package">net/isc-dhcp3</filename> oder das
            entsprechende Paket.  F&uuml;r allgemeine Informationen zu
            Ports und Paketen lesen Sie bitte <xref linkend="ports">.
          </para>

          <para>Nachdem <application>isc-dhcp</application> installiert
            ist, muss das Programm konfiguriert werden (normalerweise in
            <filename>/usr/local/etc/dhcpd.conf</filename>).  Nachfolgend
            finden Sie dazu ein kommentiertes Beispiel:</para>

          <programlisting>
          default-lease-time 600;
          max-lease-time 7200;
          authoritative;

          option domain-name "example.com";
          option domain-name-servers 192.168.4.1;
          option routers 192.168.4.1;

          subnet 192.168.4.0 netmask 255.255.255.0 {
            use-host-decl-names on; <co id="co-dhcp-host-name">
            option subnet-mask 255.255.255.0;
            option broadcast-address 192.168.4.255;

            host margaux {
              hardware ethernet 01:23:45:67:89:ab;
              fixed-address margaux.example.com;
              next-server 192.168.4.4;<co id="co-dhcp-next-server">
              filename "/tftpboot/kernel.diskless";<co id="co-dhcp-filename">
              option root-path "192.168.4.4:/data/misc/diskless";<co id="co-dhcp-root-path">
            }
          }
          </programlisting>

          <calloutlist>
            <callout arearefs="co-dhcp-host-name"><para>Diese Option
              weist <command>dhcpd</command> an, den Wert der
              <literal>host</literal>-Deklaration als Rechnernamen des
              plattenlosen Rechners zu senden.  Alternativ kann man der
              Hostdeklaration Folgendes hinzuf&uuml;gen:
              <literal>option host-name
              <replaceable>margaux</replaceable></literal></para>
            </callout>

            <callout arearefs="co-dhcp-next-server"><para>Die Anweisung
              <literal>next-server</literal> bestimmt den TFTP-Server
              (in der Voreinstellung ist das der DHCP-Server
	      selbst).</para>
            </callout>

            <callout arearefs="co-dhcp-filename"><para>Die Anweisung
              <literal>filename</literal> bestimmt die Datei, die
              <application>etherboot</application> als Kernel l&auml;dt.
                <note><para>PXE erfordert einen relativen Dateinamen und
                  l&auml;dt <command>pxeboot</command> (dies geschieht
                  also nicht &uuml;ber die Kerneloption
                  <literal>option filename "pxeboot"</literal>).</para>
                </note>
              </para>
            </callout>

            <callout arearefs="co-dhcp-root-path"><para>Die Option
              <literal>root-path</literal> bestimmt den Pfad des
              root-Dateisystems in normaler NFS-Schreibweise.</para>
            </callout>
          </calloutlist>
        </sect4>

        <sect4>
          <title>Konfiguration bei Verwendung von BOOTP</title>
          <indexterm>
            <primary>BOOTP</primary>
	    <secondary>plattenloser Betrieb</secondary>
          </indexterm>

          <para>Es folgt nun eine der Konfiguration von DHCP
            entsprechende Konfiguration f&uuml;r
            <command>bootpd</command>.  Zu finden ist die
            Konfigurationsdatei unter <filename>/etc/bootptab</filename>.
          </para>

          <para>Beachten Sie bitte, dass
            <application>etherboot</application> mit der Option
            <literal>NO_DHCP_SUPPORT</literal> kompiliert werden muss,
            damit BOOTP verwendet werden kann.  PXE hingegen
            <emphasis>ben&ouml;tigt</emphasis> DHCP.  Der einzige
            offensichtliche Vorteil von <application>bootpd</application>
            ist, dass es bereits im Basissystem vorhanden ist.</para>

          <programlisting>
            .def100:\
              :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\
              :sm=255.255.255.0:\
              :ds=192.168.4.1:\
              :gw=192.168.4.1:\
              :hd="/tftpboot":\
              :bf="/kernel.diskless":\
              :rp="192.168.4.4:/data/misc/diskless":

            margaux:ha=0123456789ab:tc=.def100
          </programlisting>
        </sect4>
      </sect3>

      <sect3>
        <title>Ein Startprogramm unter Verwendung von
          <application>Etherboot</application> erstellen</title>

        <indexterm>
          <primary>Etherboot</primary>
        </indexterm>

        <para><ulink url="http://etherboot.sourceforge.net">
          Die Internetseite von Etherboot</ulink> enth&auml;lt
          <ulink url="http://etherboot.sourceforge.net/doc/html/userman.html">
          ausf&uuml;hrliche Informationen</ulink>, die zwar vor allem
          f&uuml;r Linux gedacht sind, aber dennoch n&uuml;tzliche
          Informationen enthalten.  Im Folgenden wird daher nur grob
          beschrieben, wie Sie <application>etherboot</application> auf
          einem FreeBSD-System einsetzen k&ouml;nnen.</para>

        <para>Als erstes m&uuml;ssen Sie
          <filename role="package">net/etherboot</filename> als Paket
          oder als Port installieren.  Der Port
          <application>etherboot</application> befindet sich unter
          <filename>/usr/ports/net/etherboot</filename>.  Wenn Sie
          die Portssammlung installiert haben, reicht es aus, in dieses
          Verzeichnis zu wechseln, und <command>make install</command>
          aufzurufen.
          Alles Weitere sollte automatisch ablaufen.  Ist dies nicht der
          Fall, lesen Sie bitte <xref linkend="ports">, das
          Informationen zu Ports und Paketen enth&auml;lt.</para>

        <para>F&uuml;r unsere Installation verwenden wir eine
          Startdiskette.  F&uuml;r Informationen zu anderen Methoden
          (PROM oder DOS-Programme) lesen Sie bitte die Dokumentation zu
          <application>etherboot</application>.</para>

        <para>Um eine Startdiskette zu erzeugen, legen Sie eine Diskette
          in das Laufwerk des Rechners ein, auf dem Sie
          <application>etherboot</application> installiert haben.  Danach
          wechseln Sie in das Verzeichnis <filename>src</filename> des
          <application>etherboot</application>-Verzeichnisbaums und geben
          Folgendes ein:</para>

        <screen>
          &prompt.root; <userinput>gmake bin32/<replaceable>devicetype</replaceable>.fd0</userinput>
        </screen>

        <para><replaceable>devicetype</replaceable> h&auml;ngt vom Typ
          der Ethernetkarte ab, &uuml;ber die der plattenlose Rechner
          verf&uuml;gt.  Lesen Sie dazu <filename>NIC</filename> im
          gleichen Verzeichnis, um den richtigen Wert f&uuml;r
        <replaceable>devicetype</replaceable> zu bestimmen.</para>
      </sect3>

      <sect3>
        <title>Serverkonfiguration - TFTP und NFS</title>

        <indexterm>
          <primary>TFTP</primary>
          <secondary>plattenloser Betrieb</secondary>
        </indexterm>
        <indexterm>
          <primary>NFS</primary>
          <secondary>plattenloser Betrieb</secondary>
        </indexterm>

        <para>Sie m&uuml;ssen auf dem TFTP-Server
          <command>tftpd</command> aktivieren:</para>

        <procedure>
          <step>
            <para>Erzeugen Sie ein Verzeichnis, in dem
              <command>tftpd</command> seine Dateien ablegt,
              beispielsweise <filename>/tftpboot</filename>.</para>
          </step>

          <step>
            <para>F&uuml;gen Sie folgende Zeile in
              <filename>/etc/inetd.conf</filename> ein:</para>

            <programlisting>tftp    dgram   udp     wait    root  /usr/libexec/tftpd    tftpd -s /tftpboot</programlisting>

            <note><para>Anscheinend ben&ouml;tigen zumindest einige
              PXE-Versionen die TCP-Version von TFTP.  Sollte dies der
              Fall sein, f&uuml;gen Sie eine zweite Zeile ein, in der
              Sie <literal>dgram udp</literal> durch
              <literal>stream tcp</literal> ersetzen.</para>
            </note>
          </step>

          <step>
            <para>Weisen Sie <command>inetd</command> an, seine
              Konfiguration erneut einzulesen:</para>

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

        <para>Sie k&ouml;nnen das Verzeichnis
          <filename>/tftpboot</filename> an einem beliebigen Ort auf dem
          Server ablegen.  Stellen Sie aber sicher, dass Sie diesen Ort
          sowohl in <filename>inetd.conf</filename> als auch in
          <filename>dhcpd.conf</filename> eingetragen.</para>

        <para>Au&szlig;erdem m&uuml;ssen Sie NFS aktivieren und die
          entsprechenden Verzeichnisse exportieren.</para>

        <procedure>
          <step>
            <para>F&uuml;gen Sie folgende Zeile in
              <filename>/etc/rc.conf</filename> ein:</para>

            <programlisting>nfs_server_enable="YES"</programlisting>
          </step>

          <step>
            <para>Exportieren Sie das Verzeichnis, in dem sich das
              Wurzelverzeichnis f&uuml;r den plattenlosen Betrieb
              befindet, indem Sie folgende Zeile in
              <filename>/etc/exports</filename> einf&uuml;gen (passen
              Sie dabei den Einh&auml;ngpunkt an und ersetzen Sie
              <replaceable>margaux</replaceable> durch den Namen Ihres
              plattenlosen Rechners):</para>

            <programlisting><replaceable>/data/misc</replaceable> -alldirs -ro <replaceable>margaux</replaceable></programlisting>
          </step>

          <step>
            <para>Weisen sie nun <command>mountd</command> an, seine
              Konfigurationsdatei erneut einzulesen.  Wenn Sie NFS erst
              in <filename>/etc/rc.conf</filename> aktivieren mussten,
              sollten Sie stattdessen den Rechner neu starten.  Dadurch
              wird die Konfigurationsdatei ebenfalls neu eingelesen.
            </para>

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

      <sect3>
        <title>Einen plattenlosen Kernel erzeugen</title>

        <indexterm>
          <primary>plattenloser Betrieb</primary>
          <secondary>Kernelkonfiguration</secondary>
        </indexterm>

        <para>F&uuml;gen Sie in Ihre Kernelkonfigurationsdatei
          zus&auml;tzlich folgende Optionen ein:</para>

        <programlisting>
          options     BOOTP          # Use BOOTP to obtain IP address/hostname
          options     BOOTP_NFSROOT  # NFS mount root filesystem using BOOTP info
          options     BOOTP_COMPAT   # Workaround for broken bootp daemons.
        </programlisting>

        <para>Au&szlig;erdem k&ouml;nnen Sie die Optionen
          <literal>BOOTP_NFSV3</literal> und
          <literal>BOOTP_WIRED_TO</literal> verwenden (sehen Sie sich
          dazu auch <filename>LINT</filename> an).</para>

        <para>Erzeugen Sie den neuen Kernel (lesen Sie dazu auch
          <xref linkend="kernelconfig">) und kopieren Sie ihn unter dem
          in <filename>dhcpd.conf</filename> angegebenen Namen ins
          TFTP-Verzeichnis.</para>
      </sect3>

      <sect3>
        <title>Das root-Dateisystem erzeugen</title>

        <indexterm>
          <primary>Root-Dateisystem</primary>
	  <secondary>plattenloser Betrieb</secondary>
        </indexterm>

        <para>Sie m&uuml;ssen f&uuml;r den plattenlosen Rechner ein
          root-Dateisystem erzeugen, und zwar an dem in
          <filename>dhcpd.conf</filename> als
          <literal>root-path</literal> festgelegten Ort.</para>

        <para>Der einfachste Weg, dies zu tun, ist die Verwendung des
          Shellskripts
          <filename>/usr/share/examples/diskless/clone_root</filename>.
          Dieses Skript muss von Ihnen allerdings noch angepasst werden.
          Unbedingt n&ouml;tig ist der Ort, an dem das Dateisystem
          erzeugt werden soll.  Dies geschieht &uuml;ber die Variable
          <literal>DEST</literal>.</para>

	<para>Die Kommentare am Anfang des Skripts enthalten
          weitere Informationen.  Dort wird erkl&auml;rt, wie das
          Basisdateisystem erzeugt wird und wie einzelne Dateien durch
          angepasste Versionen f&uuml;r den plattenlosen Betrieb,
	  f&uuml;r ein Subnetzwerk oder f&uuml;r einen speziellen
	  Rechner ersetzt werden.  Ebenfalls enthalten sind Beispiele
	  f&uuml;r <filename>/etc/fstab</filename> und
          <filename>/etc/rc.conf</filename>, die f&uuml;r den
          plattenlosen Betrieb angepasst sind.</para>

        <para>Die <filename>README</filename>-Dateien unter
          <filename>/usr/share/examples/diskless</filename> enthalten
          sehr viele interessante Hintergrundinformationen.  Gemeinsam
          mit den Beispielen im Verzeichnis <filename>diskless</filename>
          beschreiben sie allerdings eine Konfigurationsmethode, die von
          der in <filename>clone_root</filename> und
          <filename>/etc/rc.diskless[12]</filename> abweicht.  Dies kann
          etwas verwirrend sein.  Verwenden Sie diese Dateien also nur,
          wenn Sie weitere Informationen ben&ouml;tigen.  Es sei denn,
          Sie wollen die dort beschriebene Methode verwenden.  In diesem
          Fall m&uuml;ssen Sie allerdings die
          <filename>rc</filename>-Skripte anpassen.</para>
      </sect3>

      <sect3>
        <title>Den Auslagerungsbereich konfigurieren</title>

        <para>Falls n&ouml;tig, kann eine auf dem NFS-Server liegende
          Datei als Auslagerungsdatei eingerichtet werden.  Die
          genauen Optionen f&uuml;r <filename>bootptab</filename>
          oder <filename>dhcpd.conf</filename> sind zurzeit allerdings
          nicht vollst&auml;ndig dokumentiert.  Die folgenden
          Einstellungen wurden bereits auf einigen Systemen mit
          <filename>isc-dhcp 3.0rc11</filename> erfolgreich getestet.
        </para>

        <procedure>
          <step><para>F&uuml;gen Sie folgende Zeilen in
            <filename>dhcpd.conf</filename> ein:</para>

            <programlisting>
              # Global section
              option swap-path code 128 = string;
              option swap-size code 129 = integer 32;

              host margaux {
                ... # Standard lines, see above
                option swap-path <replaceable>"192.168.4.4:/netswapvolume/netswap"</replaceable>;
                option swap-size <replaceable>64000</replaceable>;
              }
            </programlisting>

            <para>Die Idee dahinter ist, dass es sich bei der Option 128
              von DHCP/BOOTP (zumindest auf einem FreeBSD-Client) um den
              Pfad zur NFS-Auslagerungsdatei handelt.  Option 129
              hingegen gibt die Gr&ouml;&szlig;e der Auslagerungsdatei
              in Kilobytes an.  &Auml;ltere Versionen von
              <command>dhcpd</command> erlaubten auch Folgendes:
              <literal>option option-128 "...</literal>.  Diese Option
              scheint allerdings nicht mehr zu funktionieren.</para>

            <para><filename>/etc/bootptab</filename> w&uuml;rde hingegen
              folgende Syntax verwenden:</para>

            <para>
              <literal>T128="192.168.4.4:/netswapvolume/netswap":T129=64000</literal>
            </para>
          </step>

          <step>
            <para>Erzeugen Sie die Auslagerungsdatei(en) auf dem
              NFS-Server.</para>

            <screen>
              &prompt.root; <userinput>mkdir <replaceable>/netswapvolume/netswap</replaceable></userinput>
              &prompt.root; <userinput>cd <replaceable>/netswapvolume/netswap</replaceable></userinput>
              &prompt.root; <userinput>dd if=/dev/zero bs=1024 count=<replaceable>64000</replaceable> of=swap.<replaceable>192.168.4.6</replaceable></userinput>
              &prompt.root; <userinput>chmod 0600 swap.<replaceable>192.168.4.6</replaceable></userinput>
            </screen>

            <para><replaceable>192.168.4.6</replaceable> ist die
              IP-Adresse des plattenlosen Clients.</para>
          </step>

          <step>
            <para>Auf dem NFS-Server, auf dem die Auslagerungsdatei
              liegt, f&uuml;gen Sie in <filename>/etc/exports</filename>
              folgende Zeile ein:</para>

            <programlisting>
              <replaceable>/netswapvolume</replaceable>  -maproot=0:10 -alldirs <replaceable>margaux</replaceable>
            </programlisting>

             <para>Anschlie&szlig;end weisen Sie (wie bereits
               beschrieben) <application>mountd</application> an, die
               Exportdatei erneut einzulesen.</para>
          </step>
        </procedure>
      </sect3>

      <sect3>
        <title>Verschiedenes</title>

        <sect4>
          <title>Schreibgesch&uuml;tztes Dateisystem
	    <filename>/usr</filename></title>

          <indexterm>
            <primary>plattenloser Betrieb</primary>
            <secondary>/usr schreibgesch&uuml;tzt</secondary>
          </indexterm>

          <para>Wenn am plattenlosen Rechner X l&auml;uft, m&uuml;ssen
            Sie die Konfigurationsdatei von <filename>xdm</filename>
            anpassen, da Fehlermeldungen per Voreinstellung auf
            <filename>/usr</filename> geschrieben werden.</para>
        </sect4>

        <sect4>
          <title>Der Server l&auml;uft nicht unter FreeBSD</title>

	  <para>Wenn das root-Dateisystem nicht auf einem FreeBSD-Rechner
	    liegt, muss das Dateisystem zuerst unter FreeBSD erzeugt
	    werden.  Anschlie&szlig;end wird es beispielsweise mit
	    <command>tar</command> oder <command>cpio</command>
	    an den gew&uuml;nschten Ort kopiert.</para>

	  <para>Dabei kann es Probleme mit den Ger&auml;tedateien
	    in <filename>/dev</filename> geben, die durch eine
	    unterschiedliche Darstellung der  Major- und Minor-Number
	    von Ger&auml;ten auf beiden Systemen hervorgerufen werden.
	    Eine Probleml&ouml;sung besteht darin, das root-Verzeichnis
	    auf einem FreeBSD einzuh&auml;ngen und die
	    Ger&auml;tedateien dort mit <command>MAKEDEV</command>
	    zu erzeugen (seit FreeBSD&nbsp;5.0
            werden Ger&auml;tedateien allerdings mit
            &man.devfs.5; erzeugt, ein Ausf&uuml;hren von
            <command>MAKEDEV</command> ist unter diesen Versionen
            daher sinnlos).</para>
        </sect4>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="network-isdn">
    <!-- j.kois@web.de, 10. Mai 2003 -->
    <title>ISDN &ndash; diensteintegrierendes digitales Netzwerk</title>

    <indexterm>
      <primary>ISDN</primary>
    </indexterm>

    <para>Eine gute Quelle f&uuml;r Informationen zu ISDN ist die
      <ulink url="http://alumni.caltech.edu/~dank/isdn/">
      ISDN-Seite</ulink> von Dan Kegel.</para>

    <para>Welche Informationen finden Sie in diesem Abschnitt?</para>

    <itemizedlist>
      <listitem>
        <para>Wenn Sie in Europa leben, k&ouml;nnte der Abschnitt
          &uuml;ber ISDN-Karten f&uuml;r Sie interessant sein.</para>
      </listitem>

      <listitem>
        <para>Wenn Sie ISDN haupts&auml;chlich dazu verwenden wollen, um
          sich &uuml;ber einen Anbieter ins Internet einzuw&auml;hlen,
          sollten Sie den Abschnitt &uuml;ber Terminaladapter lesen.
          Dies ist die flexibelste Methode, die auch die wenigsten
          Probleme verursacht.</para>
      </listitem>

      <listitem>
        <para>Wenn Sie zwei Netzwerke miteinander verbinden, oder sich
          &uuml;ber eine ISDN-Standleitung mit dem Internet verbinden
          wollen, finden Sie entsprechende Informationen im Abschnitt
          &uuml;ber Router und Bridges.</para>
      </listitem>
    </itemizedlist>

    <para>Bei der Wahl der gew&uuml;nschten L&ouml;sung sind die
      entstehenden Kosten ein entscheidender Faktor.  Die folgenden
      Beschreibungen reichen von der billigsten bis zur teuersten
      Variante.</para>

    <sect2 id="network-isdn-cards">
      <sect2info>
        <authorgroup>
          <author>
            <firstname>Hellmuth</firstname>
            <surname>Michaelis</surname>
            <contrib>Beigetragen von </contrib>
          </author>
        </authorgroup>
      </sect2info>

      <title>ISDN-Karten</title>

      <indexterm>
        <primary>ISDN</primary>
        <secondary>Karten</secondary>
      </indexterm>

      <para>Das ISDN-Subsystem von FreeBSD unterst&uuml;tzt den
        DSS1/Q.931- (oder Euro-ISDN)-Standard nur f&uuml;r passive
        Karten.  Beginnend mit FreeBSD&nbsp;4.4 werden auch einige
        aktive Karten unterst&uuml;tzt, bei denen die Firmware auch
        andere Signalprotokolle unterst&uuml;tzt;  dies schlie&szlig;t
        auch die erste ISDN-Karte mit
        Prim&auml;rmultiplex-Unterst&uuml;tzung mit ein.</para>

      <para><application>isdn4bsd</application> erlaubt es Ihnen, sich
        unter Verwendung von <emphasis>IP over raw HDLC</emphasis> oder
        <emphasis>synchronem PPP</emphasis> mit anderen ISDN-Routern zu
        verbinden.  Dazu verwenden Sie entweder Kernel-&man.ppp.8;
        (via isppp, einem modifizierten sppp-Treiber), oder Sie benutzen
        User-&man.ppp.8;.  Wenn Sie User-&man.ppp.8; verwenden,
        k&ouml;nnen Sie zwei oder mehrere ISDN-B-Kan&auml;le
        b&uuml;ndeln.  Im Paket enthalten ist auch ein Programm mit
        Anrufbeantworterfunktion sowie verschiedene Werkzeuge, wie ein
        Softwaremodem, das 300&nbsp;Baud unterst&uuml;tzt.</para>

      <para>FreeBSD unterst&uuml;tzt eine st&auml;ndig wachsende Anzahl
        von PC-ISDN-Karten, die weltweit erfolgreich eingesetzt werden.
      </para>

      <para>Von FreeBSD unterst&uuml;tzte passive ISDN-Karten enthalten
        fast immer den ISAC/HSCX/IPAC ISDN-Chipsatz von Infineon
        (ehemals Siemens).  Unterst&uuml;tzt werden aber auch Karten mit
        Cologne Chip (diese allerdings nur f&uuml;r den ISA-Bus),
        PCI-Karten mit Winbond W6692 Chipsatz, einige Karten mit dem
        Tiger 300/320/ISAC Chipsatz sowie einige Karten mit einem
        herstellerspezifischen Chipsatz, wie beispielsweise die
        Fritz!Card PCI V.1.0 und die Fritz!Card PnP von AVM.</para>

      <para>An aktiven ISDN-Karten werden derzeit die AVM B1 BRI-Karten
        (ISA und PCI-Version) sowie die AVM T1 PRI-Karten (PCI-Version)
        unterst&uuml;tzt.</para>

      <para>Informationen zu <application>isdn4bsd</application> finden
        Sie im Verzeichnis <filename>/usr/share/examples/isdn/</filename>
        Ihres FreeBSD-Systems, oder auf der
        <ulink url="http://www.freebsd-support.de/i4b/">Internetseite</ulink>
        von <application>isdn4bsd</application>.  Dort finden Sie auch
        Verweise zu Tipps, Korrekturen, sowie weiteren Informationen,
        wie dem
        <ulink url="http://people.FreeBSD.org/~hm/">isdn4bsd-Handbuch</ulink>.
      </para>

      <para>Falls Sie an der Unterst&uuml;tzung eines zus&auml;tzlichen
        ISDN-Protokolls, einer weiteren ISDN-Karte oder an einer anderen
        Erweiterung von <application>isdn4bsd</application> interessiert
        sind, wenden Sie sich bitte an &a.hm;.</para>

      <para>F&uuml;r Fragen zur Installation, Konfiguration und zu
        sonstigen Problemen von <application>isdn4bsd</application> gibt
        es die Mailingliste &a.isdn.name;.</para>
    </sect2>

    <sect2>
      <title>ISDN-Terminaladapter</title>

      <indexterm>
        <primary>Terminaladapter</primary>
      </indexterm>

      <para>Terminaladapter (TA) sind f&uuml;r ISDN, was Modems f&uuml;r
        analoge Telefonleitungen sind.</para>

      <indexterm>
        <primary>Modem</primary>
      </indexterm>

      <para>Die meisten Terminaladapter verwenden den Standardbefehlssatz
	f&uuml;r Modems von Hayes (AT-Kommandos) und k&ouml;nnen daher als
        Modemersatz verwendet werden.</para>

      <para>Ein Terminaladapter funktioniert prinzipiell wie ein Modem,
	allerdings erfolgt der Verbindungsaufbau um einiges schneller.  Die
        Konfiguration von <link linkend="ppp">PPP</link> entspricht
        dabei exakt der eines Modems.  Stellen Sie dabei allerdings
        die serielle Geschwindigkeit so hoch wie m&ouml;glich ein.</para>

      <indexterm>
        <primary>PPP</primary>
      </indexterm>

      <para>Der Hauptvorteil bei der Verwendung eines Terminaladapters zur
        Verbindung mit einem Internetanbieter ist die M&ouml;glichkeit
        zur Nutzung von dynamischem PPP.  Da IP-Adressen immer knapper
        werden, vergeben die meisten Provider keine statischen
        IP-Adressen mehr.  Die meisten Router unterst&uuml;tzen
        allerdings keine dynamische Zuweisung von IP-Adressen.</para>

      <para>Der PPP-Daemon bestimmt die Stabilit&auml;t und
	Eigenschaften der Verbindung, wenn Sie einen Terminaladapter
	verwenden.  Daher k&ouml;nnen Sie unter FreeBSD einfach von einer
	Modemverbindung auf eine ISDN-Verbindung wechseln, wenn
	Sie PPP bereits konfiguriert haben.  Allerdings bedeutet
	dies auch, das bereits bestehende Probleme mit PPP auch unter
	ISDN auftreten werden.</para>

      <para>Wenn Sie an maximaler Stabilit&auml;t interessiert sind,
        verwenden Sie Kernel-<link linkend="ppp">PPP</link>, und
        nicht das User-<link linkend="userppp">PPP</link>.
      </para>

      <para>Folgende Terminaladapter werden von FreeBSD
	unterst&uuml;tzt:</para>

      <itemizedlist>
        <listitem>
          <para>Motorola BitSurfer und Bitsurfer Pro</para>
        </listitem>

        <listitem>
          <para>Adtran</para>
        </listitem>
      </itemizedlist>

      <para>Die meisten anderen Terminaladapter werden wahrscheinlich
	ebenfalls funktionieren, da die Hersteller von Terminaladaptern
	darauf achten, dass ihre Produkte den Standardbefehlssatz
	m&ouml;glichst gut unterst&uuml;tzen.</para>

      <para>Das wirkliche Problem mit einem externen Terminaladapter ist,
        dass, &auml;hnlich wie bei Modems, eine gute serielle Karte
        eine Grundvoraussetzung ist.</para>

      <para>Sie sollten sich die
        <ulink url="http://www.freebsd.org/doc/en_US.ISO8859-1/articles/serial-uart/index.html">
        Anleitung f&uuml;r die Nutzung serieller Ger&auml;te unter
        FreeBSD</ulink> ansehen, wenn Sie detaillierte Informationen
        &uuml;ber serielle Ger&auml;te und die Unterschiede zwischen
        asynchronen und synchronen seriellen Ports ben&ouml;tigen.</para>

      <para>Ein Terminaladapter, der an einem (asynchronen)
	seriellen Standardport angeschlossen ist, beschr&auml;nkt
	Sie auf 115,2&nbsp;Kbs.  Dies
        selbst dann, wenn Sie eine Verbindung mit 128&nbsp;Kbs haben.
        Um die volle Leistungsf&auml;higkeit von ISDN (128&nbsp;Kbs)
        nutzen zu k&ouml;nnen, m&uuml;ssen Sie den Terminaladapter
	daher an eine synchrone serielle Karte anschlie&szlig;en.</para>

      <para>Kaufen Sie keinen internen Terminaladapter in der Hoffnung,
        damit das synchron/asynchron-Problem vermeiden zu k&ouml;nnen.
	Interne Terminaladapter haben einen (asynchronen) seriellen
	Standardportchip eingebaut.  Der einzige Vorteil interner
	Terminaladapter ist es, dass Sie sich den Kauf eines seriellen
	Kabels ersparen und dass Sie ein Stromkabel weniger haben.</para>

      <para>Eine synchrone Karte mit einem Terminaladapter ist
	mindestens so schnell wie ein autonomer ISDN-Router,
	und, in Kombination mit einem einfachen 386-FreeBSD-System,
	wahrscheinlich flexibler.</para>

      <para>Die Entscheidung zwischen synchroner Karte/Terminaladapter
	und einem autonomen ISDN-Router ist eine beinahe religi&ouml;se
        Angelegenheit.  Zu diesem Thema gibt es viele Diskussionen
        in den Mailinglisten.  Suchen Sie in den
        <ulink url="http://www.freebsd.org/search/index.html">
        Archiven</ulink> danach, wenn Sie an der kompletten Diskussion
        interessiert sind.</para>
    </sect2>

    <sect2>
      <title>ISDN-Bridges und Router</title>

      <indexterm>
        <primary>ISDN</primary>
        <secondary>Autonome Bridge/Router</secondary>
      </indexterm>

      <para>ISDN-Bridges und Router sind keine Eigenheit von
        FreeBSD oder eines anderen Betriebssystems.  F&uuml;r eine
        vollst&auml;ndigere Beschreibung von Routing und
        Netzwerkkopplungen mit einer Bridge informieren Sie sich
        bitte durch weiterf&uuml;hrende Literatur.</para>

      <para>In diesem Abschnitt werden die Begriffe Router und
        Bridge synonym verwendet.</para>

      <para>ISDN-Router und Bridges werden immer g&uuml;nstiger und damit
        auch immer beliebter.  Ein ISDN-Router ist eine kleine Box, die
        direkt an Ihr lokales Ethernet-Netzwerk angeschlossen wird und
        sich mit mit einem Router oder einer Bridge verbindet.  Die
        eingebaute Software erm&ouml;glicht die Kommunikation &uuml;ber
        PPP oder andere beliebte Protokolle.</para>

      <para>Ein Router erm&ouml;glicht einen deutlich h&ouml;heren
        Datendurchsatz als ein herk&ouml;mmlicher Terminaladapter,
	da er eine vollsynchrone ISDN-Verbindung nutzt.</para>

      <para>Das Hauptproblem mit ISDN-Routern und Bridges ist,
        dass die Zusammenarbeit zwischen Ger&auml;ten verschiedener
        Hersteller nach wie vor ein Problem ist.  Wenn Sie sich auf
        diese Weise mit einem Internetanbieter verbinden wollen,
        kl&auml;ren Sie daher vorher ab, welche Anforderungen Ihre
        Ger&auml;te erf&uuml;llen m&uuml;ssen.</para>

      <para>Eine ISDN-Bridge ist eine einfache und wartungsarme
	L&ouml;sung, zwei Netze, beispielsweise Ihr privates Netz
	und Ihr Firmennetz, miteinander zu verbinden.  Da Sie die
        technische Ausstattung f&uuml;r beide Seiten kaufen m&uuml;ssen,
        ist sichergestellt, dass die Verbindung funktionieren
        wird.</para>

      <para>Um beispielsweise einen privaten Computer oder eine
        Zweigstelle mit dem Hauptnetzwerk zu verbinden, k&ouml;nnte
        folgende Konfiguration verwendet werden:</para>

      <example>
        <title>Kleines Netzwerk (Privatnetz)</title>

        <indexterm>
          <primary>10 base 2</primary>
        </indexterm>

        <para>Das Netzwerk basiert auf der Bustopologie mit 10base2
          Ethernet (<quote>Thinnet</quote>).  Falls n&ouml;tig, stellen
          Sie die Verbindung zwischen Router und Netzwerkkabel mit einem
          AUI/10BT-Transceiver her.</para>

        <mediaobject>
          <imageobject>
            <imagedata fileref="advanced-networking/isdn-bus">
          </imageobject>

          <textobject>
            <literallayout class="monospaced">
---Sun Workstation
|
---FreeBSD Rechner
|
---Windows 95
|
Autonomer Router
   |
ISDN BRI Verbindung
            </literallayout>
          </textobject>

          <textobject>
            <phrase>10Base2 - Ethernet</phrase>
          </textobject>
        </mediaobject>

        <para>Wenn Sie nur einen einzelnen Rechner verbinden wollen,
          k&ouml;nnen Sie auch ein Twisted-Pair-Kabel (Cross-Over)
          verwenden, das direkt an den Router angeschlossen wird.</para>
      </example>

      <example>
        <title>Gro&szlig;es Netzwerk (Firmennetz)</title>

        <indexterm>
          <primary>10 base T</primary>
        </indexterm>

        <para>Dieses Netzwerk basiert auf der Sterntopologie und 10baseT
          Ethernet (<quote>Twisted Pair</quote>).</para>

        <mediaobject>
          <imageobject>
            <imagedata fileref="advanced-networking/isdn-twisted-pair">
          </imageobject>

          <textobject>
            <literallayout class="monospaced">
-------Novell Server
    | H |
    |   ---Sun
    |   |
    | U ---FreeBSD
    |   |
    |   ---Windows 95
    | B |
    |___---Autonomer Router
                |
        ISDN BRI Verbindung
            </literallayout>
          </textobject>

          <textobject>
            <phrase>ISDN Netzwerkdiagramm</phrase>
          </textobject>
        </mediaobject>
      </example>

      <para>Ein gro&szlig;er Vorteil der meisten Router und Bridges
	ist es, dass man <emphasis>gleichzeitig</emphasis> zwei
	<emphasis>unabh&auml;ngige</emphasis> PPP-Verbindungen
	zu zwei verschiedenen Zielen aufbauen kann.  Diese
        Funktion bieten die meisten Terminaladapter nicht.  Die
        Ausnahme sind spezielle (meist teure) Modelle, die &uuml;ber
        zwei getrennte serielle Ports verf&uuml;gen.  Verwechseln Sie
        dies aber nicht mit Kanalb&uuml;ndelung oder MPP.</para>

      <para>Dies kann sehr n&uuml;tzlich sein, wenn Sie eine
        ISDN-Standleitung in Ihrem B&uuml;ro haben, die sie
        aufteilen wollen, ohne eine zus&auml;tzliche ISDN-Leitung
        zu installieren.  Ein ISDN-Router kann &uuml;ber einen B-Kanal
        (64&nbsp;Kbps) eine dedizierte Verbindung ins Internet aufbauen,
        und gleichzeitig den anderen B-Kanal f&uuml;r eine separate
        Datenverbindung nutzen.  Der zweite B-Kanal kann beispielsweise
        f&uuml;r ein- oder ausgehende Verbindungen verwendet werden.
        Sie k&ouml;nnen ihn aber auch dynamisch mit dem ersten B-Kanal
        b&uuml;ndeln, um Ihre Bandbreite zu erh&ouml;hen.</para>

      <indexterm>
        <primary>IPX/SPX</primary>
      </indexterm>

      <para>Eine Ethernet-Bridge kann Daten nicht nur im IP-Protokoll,
        sondern auch in beliebigen anderen Protokollen versenden.</para>
    </sect2>
  </sect1>

  <sect1 id="network-nis">
    <!-- j.kois@web.de, 10. Juli 2003 -->

    <sect1info>
      <authorgroup>
        <author>
          <firstname>Bill</firstname>
          <surname>Swingle</surname>
          <contrib>Beigetragen von </contrib>
         </author>
      </authorgroup>

      <authorgroup>
        <author>
          <firstname>Eric</firstname>
          <surname>Ogren</surname>
          <contrib>Erweitert von </contrib>
        </author>

        <author>
          <firstname>Udo</firstname>
          <surname>Erdelhoff</surname>
        </author>
      </authorgroup>
    </sect1info>

    <title>NIS/YP (Network Information Service)</title>

    <sect2>
      <title>Was ist NIS?</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 (Network Information Service) wurde von Sun Microsystems
        entwickelt, um &unix;-Systeme (urspr&uuml;nglich &sunos;) zentral
        verwalten zu k&ouml;nnen.  Mittlerweile hat es sich zu einem
        Industriestandard entwickelt, der von allen wichtigen
        &unix;-Systemen (&solaris;, HP-UX, &aix;, Linux, NetBSD, OpenBSD,
        FreeBSD und anderen) unterst&uuml;tzt wird.</para>

      <indexterm>
        <primary>yellow pages</primary>
          <see>NIS</see>
      </indexterm>

     <para>NIS war urspr&uuml;nglich als
       <emphasis>Yellow Pages</emphasis> bekannt, aus markenrechtlichen
       Gr&uuml;nden wurde der Name aber ge&auml;ndert.  Die alte
       Bezeichnung (sowie die Abk&uuml;rzung YP) wird aber nach wie vor
       h&auml;ufig verwendet.</para>

      <indexterm>
        <primary>NIS</primary>
        <secondary>Dom&auml;nen</secondary>
      </indexterm>

      <para>Bei NIS handelt es sich um ein RPC-basiertes
        Client/Server-System. Eine Gruppe von Rechnern greift dabei
        innerhalb einer NIS-Dom&auml;ne auf gemeinsame
        Konfigurationsdateien zu.  Ein Systemadministrator wird dadurch
        in die Lage versetzt, NIS-Clients mit minimalem Aufwand
        einzurichten, sowie &Auml;nderungen an der Systemkonfiguration
        von einem zentralen Ort aus durchzuf&uuml;hren.</para>

      <indexterm>
        <primary>Windows NT</primary>
      </indexterm>

      <para>Die Funktion entspricht dem Dom&auml;nensystem von
        &windowsnt;; auch wenn sich die interne Umsetzung unterscheidet,
        sind die Basisfunktionen vergleichbar.</para>
    </sect2>

    <sect2>
      <title>Wichtige Prozesse und Begriffe</title>

      <para>Es gibt verschiedene Begriffe und Anwenderprozesse, auf die
        Sie sto&szlig;en werden, wenn Sie NIS unter FreeBSD einrichten,
        egal ob Sie einen Server oder einen Client konfigurieren:</para>

      <indexterm>
        <primary><application>portmap</application></primary>
      </indexterm>

      <informaltable>
        <tgroup cols="2">
          <thead>
            <row>
              <entry>Begriff</entry>

              <entry>Beschreibung</entry>
            </row>
          </thead>

          <tbody>
            <row>
              <entry>NIS-Dom&auml;nenname</entry>

              <entry>Ein NIS-Masterserver sowie alle Clients (inklusive
                der Slaveserver) haben einen NIS-Dom&auml;nennamen.
                Dieser hat (&auml;hnlich den &windowsnt;-Dom&auml;nennamen)
                nichts mit DNS zu tun.</entry>
            </row>

            <row>
              <entry>portmap</entry>

              <entry>Muss laufen, damit RPC (Remote Procedure Call, ein
                von NIS verwendetes Netzwerkprotokoll) funktioniert.
                NIS-Server sowie Clients funktionieren ohne
                <command>portmap</command> nicht.</entry>
            </row>

            <row>
              <entry>ypbind</entry>

              <entry><quote>Bindet</quote> einen NIS-Client an seinen
                NIS-Server.  Der Client bezieht den
                NIS-Dom&auml;nennamen vom System und stellt &uuml;ber
                das RPC-Protokoll eine Verbindung zum NIS-Server her.
                <command>ypbind</command> ist der zentrale Bestandteil
                der Client-Server-Kommunikation in einer NIS-Umgebung.
                Wird <command>ypbind</command> auf einem Client beendet,
                ist dieser nicht mehr in der Lage, auf den NIS-Server
                zuzugreifen.</entry>
            </row>

            <row>
              <entry>ypserv</entry>

              <entry>Sollte nur auf dem NIS-Server laufen, da es sich um
                den Serverprozess selbst handelt.  Wenn &man.ypserv.8;
                nicht mehr l&auml;uft, kann der Server nicht mehr auf
                NIS-Anforderungen reagieren (wenn ein Slaveserver
                existiert, kann dieser als Ersatz fungieren).  Einige
		NIS-Systeme (allerdings nicht das von
                FreeBSD) versuchen allerdings erst gar nicht, sich mit
                einem anderen Server zu verbinden, wenn der bisher
                verwendete Server nicht mehr reagiert.  Die einzige
                L&ouml;sung dieses Problems besteht dann darin, den
                Serverprozess (oder gar den Server selbst) oder den
                <command>ypbind</command>-Prozess auf dem Client neu
                zu starten.</entry>
            </row>

            <row>
             <entry>rpc.yppasswdd</entry>

             <entry>Ein weiterer Prozess, der nur auf dem
               NIS-Masterserver laufen sollte.  Es handelt sich um einen
               Daemonprozess, der es NIS-Clients erm&ouml;glicht, sich
               auf dem NIS-Masterserver anzumelden, um ihr Passwort zu
               &auml;ndern.</entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
      <!-- XXX Missing: rpc.ypxfrd (not important, though) May only run
      on the master -->
    </sect2>

    <sect2>
      <title>Wie funktioniert NIS?</title>

      <para>In einer NIS-Umgebung gibt es drei Rechnerarten:
        Masterserver, Slaveserver und Clients.  Server dienen als
        zentraler Speicherort f&uuml;r Rechnerkonfigurationen.
        Masterserver speichern die ma&szlig;gebliche Kopie dieser
        Informationen, w&auml;hrend Slaveserver diese Informationen
        aus Redundanzgr&uuml;nden spiegeln.  Die Clients beziehen
        ihre Informationen immer vom Server.</para>

      <para>Auf diese Art und Weise k&ouml;nnen Informationen aus
        verschiedenen Dateien von mehreren Rechnern gemeinsam
        verwendet werden. <filename>master.passwd</filename>,
        <filename>group</filename>, und <filename>hosts</filename>
        werden oft gemeinsam &uuml;ber NIS verwendet.  Immer, wenn
        ein Prozess auf einem Client auf Informationen zugreifen will,
        die normalerweise in lokalen Dateien vorhanden w&auml;ren,
        wird stattdessen eine Anfrage an den NIS-Server gestellt, an
        den der Client gebunden ist.</para>

      <sect3>
        <title>Arten von NIS-Rechnern</title>

        <itemizedlist>
          <indexterm>
            <primary>NIS</primary>
            <secondary>Masterserver</secondary>
          </indexterm>

          <listitem>
            <para>Ein <emphasis>NIS-Masterserver</emphasis> verwaltet,
              &auml;hnlich einem &windowsnt;-Dom&auml;nencontroller, die
              von allen NIS-Clients gemeinsam verwendeten Dateien.
              <filename>passwd</filename>, <filename>group</filename>,
              sowie verschiedene andere von den Clients verwendete
              Dateien existieren auf dem Masterserver.</para>

            <note><para>Ein Rechner kann auch f&uuml;r mehrere
              NIS-Dom&auml;nen als Masterserver fungieren.  Dieser
              Abschnitt konzentriert sich im Folgenden allerdings auf
              eine relativ kleine NIS-Umgebung.</para></note>
          </listitem>

          <indexterm>
            <primary>NIS</primary>
            <secondary>Slaveserver</secondary>
          </indexterm>

          <listitem>
            <para><emphasis>NIS-Slaveserver</emphasis>. &Auml;hnlich
              einem &windowsnt;-Backupdom&auml;nencontroller, verwalten
              NIS-Slaveserver Kopien der Daten des NIS-Masterservers.
              NIS-Slaveserver bieten die Redundanz, die f&uuml;r
              kritische Umgebungen ben&ouml;tigt wird.  Zus&auml;tzlich
              entlasten Slaveserver den Masterserver:  NIS-Clients
              verbinden sich immer mit dem NIS-Server, der zuerst
              reagiert.  Dieser Server kann auch ein Slaveserver sein.</para>
          </listitem>

          <indexterm>
            <primary>NIS</primary>
            <secondary>Client</secondary>
          </indexterm>

          <listitem>
            <para><emphasis>NIS-Clients</emphasis>.  NIS-Clients
              identifizieren sich gegen&uuml;ber dem NIS-Server
              (&auml;hnlich den &windowsnt;-Workstations), um sich am Server
              anzumelden.</para>
          </listitem>
        </itemizedlist>
      </sect3>
    </sect2>

    <sect2>
      <title>NIS/YP konfigurieren</title>

      <para>Dieser Abschnitt beschreibt an Hand eines Beispiels die
        Einrichtung einer NIS-Umgebung.</para>

      <note><para>Es wird dabei davon ausgegangen, dass Sie
        FreeBSD&nbsp;3.3 oder eine aktuellere Version verwenden.
        <emphasis>Wahrscheinlich</emphasis> funktioniert diese Anleitung
        auch f&uuml;r FreeBSD-Versionen ab 3.0, es gibt daf&uuml;r aber
        keine Garantie.</para></note>

      <sect3>
        <title>Planung</title>

        <para>Nehmen wir an, Sie seien der Administrator eines kleinen
          Universit&auml;tsnetzes.  Dieses Netz besteht aus
          f&uuml;nfzehn FreeBSD-Rechnern, f&uuml;r die derzeit keine
          zentrale Verwaltung existiert, jeder Rechner hat also eine
          eigene Version von <filename>/etc/passwd</filename> und
          <filename>/etc/master.passwd</filename>.  Diese Dateien werden
          manuell synchron gehalten; legen Sie einen neuen Benutzer an,
          so muss dies auf allen f&uuml;nfzehn Rechnern manuell
          erledigt werden (unter Verwendung von
          <command>adduser</command>).  Da diese L&ouml;sung sehr
          ineffizient ist, soll das Netzwerk in Zukunft NIS verwenden,
          wobei zwei der Rechner als Server dienen sollen.</para>

        <para>In Zukunft soll das Netz also wie folgt aussehen:</para>

        <informaltable>
          <tgroup cols="3">
            <thead>
              <row>
                <entry>Rechnername</entry>
                <entry>IP-Adresse</entry>
                <entry>Rechneraufgabe</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry><hostid>ellington</hostid></entry>
                <entry><hostid role="ipaddr">10.0.0.2</hostid></entry>
                <entry>NIS-Master</entry>
              </row>
              <row>
                <entry><hostid>coltrane</hostid></entry>
                <entry><hostid role="ipaddr">10.0.0.3</hostid></entry>
                <entry>NIS-Slave</entry>
              </row>
              <row>
                <entry><hostid>basie</hostid></entry>
                <entry><hostid role="ipaddr">10.0.0.4</hostid></entry>
                <entry>Workstation der Fakult&auml;t</entry>
              </row>
              <row>
                <entry><hostid>bird</hostid></entry>
                <entry><hostid role="ipaddr">10.0.0.5</hostid></entry>
                <entry>Clientrechner</entry>
              </row>
              <row>
                <entry><hostid>cli[1-11]</hostid></entry>
                <entry><hostid role="ipaddr">10.0.0.[6-17]</hostid></entry>
                <entry>Verschiedene andere Clients</entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>

        <para>Wenn Sie NIS das erste Mal einrichten, ist es ratsam, sich
          zuerst &uuml;ber die Vorgangsweise Gedanken zu machen.
          Unabh&auml;ngig von der Gr&ouml;&szlig;e Ihres Netzwerks
          m&uuml;ssen Sie stets einige Entscheidungen treffen.</para>

        <sect4>
          <title>Einen NIS-Dom&auml;nennamen w&auml;hlen</title>

          <indexterm>
            <primary>NIS</primary>
            <secondary>Dom&auml;nenname</secondary>
          </indexterm>

          <para>Dies muss nicht der <quote>Domainname</quote> sein.  Es
            handelt sich vielmehr um den <quote>NIS-Domainnamen</quote>.
            Wenn ein Client Informationen anfordert, ist in dieser
            Anforderung der Name der NIS-Dom&auml;ne enthalten.
            Dadurch wei&szlig; jeder Server im Netzwerk, auf welche
            Anforderung er antworten muss.  Stellen Sie sich den
            NIS-Dom&auml;nennamen als den Namen einer Gruppe von
            Rechnern vor, die etwas gemeinsam haben.</para>

          <para>Manchmal wird der Name der Internetdom&auml;ne auch
            f&uuml;r die NIS-Dom&auml;ne verwendet.  Dies ist allerdings
            nicht empfehlenswert, da dies bei der Behebung von Problemen
            verwirrend sein kann.  Der Name der NIS-Dom&auml;ne sollte
            innerhalb Ihres Netzwerks einzigartig sein.  Hilfreich ist
            es, wenn der Name die Gruppe der in ihr zusammengefassten
            Rechner beschreibt.  Die Kunstabteilung von Acme Inc.
            h&auml;tte daher die NIS-Dom&auml;ne
            <quote>acme-art</quote>.  F&uuml;r unser Beispiel verwenden
            wir den NIS-Dom&auml;nennamen
            <emphasis>test-domain</emphasis>.</para>

          <indexterm><primary>SunOS</primary></indexterm>

          <para>Es gibt jedoch auch Betriebssysteme (vor allem &sunos;),
            die als NIS-Dom&auml;nennamen den Name der
            Internetdom&auml;ne verwenden.  Wenn dies f&uuml;r einen
            oder mehrere Rechner Ihres Netzwerks zutrifft,
            <emphasis>m&uuml;ssen</emphasis> Sie den Namen der
            Internetdom&auml;ne als Ihren NIS-Dom&auml;nennamen
            verwenden.</para>
        </sect4>

        <sect4>
          <title>Anforderungen an den Server</title>

          <para>Wenn Sie einen NIS-Server einrichten wollen, m&uuml;ssen
            Sie einige Dinge beachten.  Eine unangenehme Eigenschaft
            von NIS ist die Abh&auml;ngigkeit der Clients vom Server.
            Wenn sich der Client nicht &uuml;ber den Server mit seiner
            NIS-Dom&auml;ne verbinden kann, wird der Rechner oft
            unbenutzbar, da das Fehlen von Benutzer- und
            Gruppeninformationen zum Einfrieren des Clients f&uuml;hrt.
            Daher sollten Sie f&uuml;r den Server einen Rechner
            ausw&auml;hlen, der nicht regelm&auml;&szlig;ig neu
            gestartet werden muss und der nicht f&uuml;r Testversuche
            verwendet wird.  Idealerweise handelt es sich um einen
            alleinstehenden Rechner, dessen einzige Aufgabe es ist, als
            NIS-Server zu dienen.  Wenn Sie ein Netzwerk haben, das
            nicht zu stark ausgelastet ist, ist es auch m&ouml;glich,
            den NIS-Server als weiteren Dienst auf einem anderen Rechner
            laufen zu lassen.  Denken Sie aber daran, dass ein Ausfall
            des NIS-Servers <emphasis>alle</emphasis> NIS-Clients
            betrifft.</para>
        </sect4>
      </sect3>

      <sect3>
        <title>NIS-Server</title>

        <para>Die verbindlichen Kopien aller NIS-Informationen befinden
          sich auf einem einzigen Rechner, dem NIS-Masterserver.  Die
          Datenbanken, in denen die Informationen gespeichert sind,
          bezeichnet man als NIS-Maps.  Unter FreeBSD werden diese
          Maps unter <filename>/var/yp/[domainname]</filename>
          gespeichert, wobei <filename>[domainname]</filename> der
          Name der NIS-Dom&auml;ne ist.  Ein einzelner NIS-Server
          kann gleichzeitig mehrere NIS-Dom&auml;nen verwalten, daher
          k&ouml;nnen auch mehrere Verzeichnisse vorhanden sein.  Jede
          Dom&auml;ne verf&uuml;gt &uuml;ber ein eigenes Verzeichnis
          sowie einen eigenen, von anderen Dom&auml;nen
          unabh&auml;ngigen Satz von NIS-Maps.</para>

        <para>NIS-Master- und Slaveserver verwenden den
          <command>ypserv</command>-Daemon, um NIS-Anfragen zu
          bearbeiten.  <command>ypserv</command> empf&auml;ngt
          eingehende Anfragen der NIS-Clients, ermittelt aus der
          angeforderten Dom&auml;ne und Map einen Pfad zur
          entsprechenden Datenbank, und sendet die angeforderten
          Daten von der Datenbank zum Client.</para>

        <sect4>
          <title>Einen NIS-Masterserver einrichten</title>

          <indexterm>
            <primary>NIS</primary>
            <secondary>Serverkonfiguration</secondary>
          </indexterm>

          <para>Abh&auml;ngig von Ihren Anforderungen ist die
            Einrichtung eines NIS-Masterservers relativ einfach, da
            NIS von FreeBSD bereits in der Standardkonfiguration
            unterst&uuml;tzt wird.  Sie m&uuml;ssen nur folgende
            Zeilen in <filename>/etc/rc.conf</filename> einf&uuml;gen:
          </para>

          <procedure>
            <step>
              <programlisting>nisdomainname="test-domain"</programlisting>

              <para>Diese Zeile setzt den NIS-Dom&auml;nennamen auf
                <emphasis>test-domain</emphasis>, wenn Sie das Netzwerk
                initialisieren (beispielsweise nach einem Systemstart).
              </para>
            </step>

            <step>
              <para><programlisting>nis_server_enable="YES"</programlisting>
                Dadurch werden die NIS-Serverprozesse gestartet.</para>
            </step>

            <step>
              <para><programlisting>nis_yppasswdd_enable="YES"</programlisting>
                Durch diese Zeile wird der
                <command>rpc.yppasswdd</command>-Daemon aktiviert, der,
                wie bereits erw&auml;hnt, die &Auml;nderung von
                NIS-Passw&ouml;rtern von einem Client aus
                erm&ouml;glicht.</para>
            </step>
          </procedure>

          <note>
            <para>In Abh&auml;ngigkeit von Ihrer NIS-Konfiguration
              k&ouml;nnen weitere Eintr&auml;ge erforderlich sein.
	      Weitere Informationen finden Sie im Abschnitt
              <link linkend="nis-server-is-client">NIS-Server, die auch
              als NIS-Clients arbeiten</link>.</para>
          </note>

          <para>Nun m&uuml;ssen Sie nur noch
            <command>/etc/netstart</command> als Superuser
            ausf&uuml;hren, um alles entsprechend Ihren Vorgaben in
            <filename>/etc/rc.conf</filename> einzurichten.</para>
        </sect4>

        <sect4>
          <title>Die NIS-Maps initialisieren</title>

          <indexterm>
            <primary>NIS</primary>
            <secondary>maps</secondary>
          </indexterm>

          <para><emphasis>NIS-Maps</emphasis> sind Datenbanken, die
            sich im Verzeichnis <filename>/var/yp</filename> befinden.
            Sie werden am NIS-Masterserver aus den Konfigurationsdateien
            unter <filename>/etc</filename> erzeugt.  Einzige Ausnahme:
            <filename>/etc/master.passwd</filename>.  Dies ist auch
            sinnvoll, da Sie die Passw&ouml;rter f&uuml;r Ihr
            <username>root</username>- bzw. andere
            Administratorkonten nicht an alle Server der NIS-Dom&auml;ne
            verteilen wollen.  Bevor Sie also die NIS-Maps des
            Masterservers einrichten, sollten Sie Folgendes tun:</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>Entfernen Sie alle Systemkonten
            (wie <username>bin</username>, <username>tty</username>,
            <username>kmem</username> oder <username>games</username>),
            sowie alle Konten, die Sie nicht an die NIS-Clients
            weitergeben wollen (beispielsweise <username>root</username>
            und alle Konten mit der UID 0 (=Superuser).</para>

          <note><para>Stellen Sie sicher, dass
            <filename>/var/yp/master.passwd</filename> weder von der
            Gruppe noch von der Welt gelesen werden kann (Zugriffsmodus
            600)!  Ist dies nicht der Fall, &auml;ndern Sie dies mit
            <command>chmod</command>.</para></note>

          <indexterm><primary>Tru64 UNIX</primary></indexterm>

          <para>Nun k&ouml;nnen Sie die NIS-Maps initialisieren.
            FreeBSD verwendet f&uuml;r diese Aufgabe das Skript
            <command>ypinit</command> (weiteres erfahren Sie
	    in der Hilfeseite &man.ypinit.8;).  Dieses Skript ist auf
            fast allen UNIX-Betriebssystemen verf&uuml;gbar.  Bei
            Digitals Unix/Compaq Tru64 UNIX nennt es sich allerdings
            <command>ypsetup</command>.  Da wir Maps f&uuml;r einen
            NIS-Masterserver erzeugen, verwenden wir
            <command>ypinit</command> mit der Option
            <option>-m</option>.  Nachdem Sie die beschriebenen
            Aktionen durchgef&uuml;hrt haben, erzeugen Sie nun die
            NIS-Maps:</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>Dadurch erzeugt <command>ypinit</command>
            <filename>/var/yp/Makefile</filename> aus der Datei
            <filename>/var/yp/Makefile.dist</filename>.
            Durch diese Datei wird festgelegt, dass Sie in einer
            NIS-Umgebung mit nur einem Server arbeiten und dass alle
            Clients unter FreeBSD laufen.  Da
            <emphasis>test-domain</emphasis> aber auch &uuml;ber einen
            Slaveserver verf&uuml;gt, m&uuml;ssen Sie
            <filename>/var/yp/Makefile</filename> entsprechend anpassen:
          </para>

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

          <para>Sie sollten die Zeile</para>

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

          <para>auskommentieren (falls dies nicht bereits der Fall ist).</para>
        </sect4>

        <sect4>
          <title>Einen NIS-Slaveserver einrichten</title>

          <indexterm>
            <primary>NIS</primary>
            <secondary>Slaveserver</secondary>
          </indexterm>

          <para>Ein NIS-Slaveserver ist noch einfacher einzurichten als
            ein Masterserver.  Melden Sie sich am Slaveserver an und
            &auml;ndern Sie <filename>/etc/rc.conf</filename> analog
            zum Masterserver.  Der einzige Unterschied besteht in der
            Verwendung der Option <option>-s</option>, wenn Sie
            <command>ypinit</command> aufrufen.  Die Option
            <option>-s</option> erfordert den Namen des
            NIS-Masterservers, daher sieht unsere Ein- und Ausgabe wie
            folgt aus:</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>Sie sollten nun &uuml;ber das Verzeichnis
            <filename>/var/yp/test-domain</filename> verf&uuml;gen.
            Die Kopien der NIS-Masterserver-Maps sollten sich in diesem
            Verzeichnis befinden.  Allerdings m&uuml;ssen Sie diese
            auch aktuell halten.  Die folgenden Eintr&auml;ge in
            <filename>/etc/crontab</filename> erledigen diese Aufgabe:
          </para>

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

          <para>Diese zwei Zeilen zwingen den Slaveserver, seine Maps
            mit denen des Masterservers zu synchronisieren.  Diese
            Eintr&auml;ge sind nicht zwingend, da der Masterserver
            versucht, alle &Auml;nderungen seiner NIS-Maps an seine
            Slaveserver weiterzugeben.  Da Passwortinformationen aber
            f&uuml;r vom Server abh&auml;ngige Systeme vital sind, ist
            es eine gute Idee, diese Aktualisierungen zu erzwingen.
            Besonders wichtig ist dies in stark ausgelasteten Netzen,
            in denen Map-Aktualisierungen unvollst&auml;ndig sein
            k&ouml;nnten.</para>

          <para>F&uuml;hren Sie nun <command>/etc/netstart</command>
            auch auf dem Slaveserver aus, um den NIS-Server erneut zu
            starten.</para>
        </sect4>
      </sect3>

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

        <para>Ein NIS-Client <literal>bindet</literal> sich unter
          Verwendung des <command>ypbind</command>-Daemons an einen
          NIS-Server.  <command>ypbind</command> pr&uuml;ft die
          Standarddom&auml;ne des Systems (die durch
          <command>domainname</command> gesetzt wird), und beginnt
          RPCs &uuml;ber das lokale Netzwerk zu verteilen (broadcast).
          Diese Anforderungen legen den Namen der Dom&auml;ne fest,
          f&uuml;r die <command>ypbind</command> eine Bindung erzeugen
          will.  Wenn der Server der entsprechenden Dom&auml;ne eine
          solche Anforderung erh&auml;lt, schickt er eine Antwort an
          <command>ypbind</command>.  <command>ybind</command> speichert
          daraufhin die Adresse des Servers.  Wenn mehrere Server
          verf&uuml;gbar sind (beispielsweise ein Master- und mehrere
          Slaveserver), verwendet <command>ypbind</command> die erste
          erhaltene Adresse.  Ab diesem Zeitpunkt richtet der Client alle
          Anfragen an genau diesen Server.  <command>ypbind</command>
          <quote>pingt</quote> den Server gelegentlich an, um
          sicherzustellen, dass der Server funktioniert.  Antwortet der
          Server innerhalb eines bestimmten Zeitraums nicht (Timeout),
          markiert <command>ypbind</command> die Dom&auml;ne als
          ungebunden und beginnt erneut, RPCs &uuml;ber das Netzwerk zu
          verteilen, um einen anderen Server zu finden.</para>

        <sect4>
          <title>Einen NIS-Client konfigurieren</title>

          <indexterm>
            <primary>NIS</primary>
            <secondary>Client konfigurieren</secondary>
          </indexterm>

          <para>Einen FreeBSD-Rechner als NIS-Client einzurichten, ist
            recht einfach.</para>

          <procedure>
            <step>
              <para>F&uuml;gen Sie folgende Zeilen in
                <filename>/etc/rc.conf</filename> ein, um den
                NIS-Dom&auml;nennamen festzulegen, und um
                <command>ypbind</command> bei der Initialisierung des
                Netzwerks zu starten:</para>

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

            <step>
              <para>Um alle Passworteintr&auml;ge des NIS-Servers zu
                importieren, l&ouml;schen Sie alle Benutzerkonten in
                <filename>/etc/master.passwd</filename> und f&uuml;gen
                mit <command>vipw</command> folgende Zeile am Ende der
                Datei ein:</para>

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

              <note>
                <para>Diese Zeile legt f&uuml;r alle g&uuml;ltigen
                  Benutzerkonten der NIS-Server-Maps einen Zugang an.
                  Es gibt verschiedene Wege, Ihren NIS-Client durch
                  &Auml;nderung dieser Zeile zu konfigurieren.  Lesen
                  Sie dazu auch den Abschnitt &uuml;ber
                  <link linkend="netgroups">Netzgruppen </link> weiter
                  unten.  Weitere detaillierte Informationen finden Sie
                  im Buch <literal>Managing NFS and NIS</literal> von
                  O'Reilly.</para>
              </note>

              <note>
                <para>Sie sollten zumindest ein lokales Benutzerkonto,
                  das nicht &uuml;ber NIS importiert wird, in Ihrer
                  <filename>/etc/master.passwd</filename> behalten.
                  Dieser Benutzer sollte au&szlig;erdem ein Mitglied der
                  Gruppe <groupname>wheel</groupname> sein.  Wenn es
                  mit NIS Probleme gibt, k&ouml;nnen Sie diesen Zugang
                  verwenden, um sich anzumelden,
                  <username>root</username> zu werden und das Problem
                  zu beheben.</para>
              </note>
            </step>

            <step>
              <para>Um alle m&ouml;glichen Gruppeneintr&auml;ge vom
                NIS-Server zu importieren, f&uuml;gen sie folgende Zeile
                in <filename>/etc/group</filename> ein:</para>

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

          <para>Nachdem Sie diese Schritte erledigt haben, sollten Sie
            mit <command>ypcat passwd</command> die
            <literal>passwd-Map</literal> des NIS-Server anzeigen
            k&ouml;nnen.
          </para>
        </sect4>
      </sect3>
    </sect2>

    <sect2>
      <title>Sicherheit unter NIS</title>

      <indexterm>
        <primary>NIS</primary>
        <secondary>Sicherheit</secondary>
      </indexterm>

      <para>Im Allgemeinen kann jeder entfernte Anwender einen RPC an
        &man.ypserv.8; schicken, um den Inhalt Ihrer NIS-Maps abzurufen,
        falls er Ihren NIS-Dom&auml;nennamen kennt.  Um solche
        unautorisierten Transaktionen zu verhindern, unterst&uuml;tzt
        &man.ypserv.8; <literal>securenets</literal>, durch die man den
        Zugriff auf bestimmte Rechner beschr&auml;nken kann.
        &man.ypserv.8; versucht, beim Systemstart die Informationen
        &uuml;ber <literal>securenets</literal> aus der Datei
        <filename>/var/yp/securenets</filename> zu laden.</para>

      <note>
	<para>Die Datei <filename>securenets</filename> kann auch
	  in einem anderen Verzeichnis stehen, das mit der Option
          <option>-p</option> angegeben wird.  Diese Datei
          enth&auml;lt Eintr&auml;ge, die aus einer Netzwerkadresse und
          einer Netzmaske bestehen, die durch Leerzeichen getrennt
          werden.  Kommentarzeilen beginnen mit <quote>#</quote>.
          <filename>/var/yp/securnets</filename> k&ouml;nnte
          beispielsweise so aussehen:</para>
      </note>

      <programlisting>
# allow connections from local host -- mandatory
127.0.0.1     255.255.255.255
# allow connections from any host
# on the 192.168.128.0 network
192.168.128.0 255.255.255.0
# allow connections from any host
# between 10.0.0.0 to 10.0.15.255
# this includes the machines in the testlab
10.0.0.0      255.255.240.0
      </programlisting>

      <para>Wenn &man.ypserv.8; eine Anforderung von einer zu diesen
        Regeln passenden Adresse erh&auml;lt, wird die Anforderung
        bearbeitet.  Gibt es keine passende Regel, wird die
        Anforderung ignoriert und eine Warnmeldung aufgezeichnet.  Wenn
        <filename>/var/yp/securenets</filename> nicht vorhanden ist,
        erlaubt <command>ypserv</command> Verbindungen von jedem Rechner
        aus.</para>

      <para><command>ypserv</command> unterst&uuml;tzt auch das
        <application>tcpwrapper</application>-Paket von Wietse Venema.
        Mit diesem Paket kann der Administrator f&uuml;r
        Zugriffskontrollen die Konfigurationsdateien von
        <application>tcpwrapper</application> anstelle von
        <filename>/var/yp/securenets</filename> verwenden.</para>

      <note>
        <para>W&auml;hrend beide Kontrollmechanismen einige Sicherheit
          gew&auml;hren, beispielsweise durch privilegierte Ports, sind
          sie gegen&uuml;ber <quote>IP spoofing</quote>-Attacken
          verwundbar.  Jeder NIS-Verkehr sollte daher von Ihrer Firewall
          blockiert werden.</para>

        <para>Server, die <filename>/var/yp/securenets</filename>
          verwenden, k&ouml;nnen Schwierigkeiten bei der Anmeldung von
          Clients haben, die ein veraltetes TCP/IP-Subsystem
          besitzen.  Einige dieser TCP/IP-Subsysteme setzen alle
          Rechnerbits auf Null, wenn Sie einen
          <literal>Broadcast</literal> durchf&uuml;hren und/oder
          k&ouml;nnen die Subnetzmaske nicht auslesen, wenn sie die
          Broadcast-Adresse berechnen.  Einige Probleme k&ouml;nnen durch
          &Auml;nderungen der Clientkonfiguration behoben werden.
          Andere hingegen lassen sich nur durch das Entfernen des
          betreffenden Rechners aus dem Netzwerk oder den Verzicht auf
          <filename>/var/yp/securenets</filename> umgehen.</para>

        <para>Die Verwendung von <filename>/var/yp/securenets</filename>
          auf einem Server mit einem solch veralteten
          TCP/IP-Subsystem ist eine sehr schlechte Idee, die zu
          einem Verlust der NIS-Funktionalit&auml;t f&uuml;r gro&szlig;e
          Teile Ihres Netzwerks f&uuml;hren kann.</para>

        <indexterm>
          <primary>tcpwrapper</primary>
        </indexterm>

        <para>Die Verwendung von <application>tcpwrapper</application>
          verlangsamt die Reaktion Ihres NIS-Servers.  Diese
          zus&auml;tzliche Reaktionszeit kann in Clientprogrammen zu
          Timeouts f&uuml;hren.  Dies vor allem in Netzwerken, die
          stark ausgelastet sind, oder nur &uuml;ber langsame NIS-Server
          verf&uuml;gen.  Wenn ein oder mehrere Ihrer Clientsysteme
          dieses Problem aufweisen, sollten Sie die betreffenden Clients
          in NIS-Slaveserver umwandeln, und diese an sich selbst binden.
        </para>
      </note>
    </sect2>

    <sect2>
      <title>Bestimmte Benutzer an der Anmeldung hindern</title>

      <indexterm>
        <primary>NIS</primary>
        <secondary>Benutzer blockieren</secondary>
      </indexterm>

      <para>In unserem Labor gibt es den Rechner <hostid>basie</hostid>,
        der nur f&uuml;r Mitarbeiter der Fakult&auml;t bestimmt ist.
        Wir wollen diesen Rechner nicht aus der NIS-Dom&auml;ne
        entfernen, obwohl <filename>passwd</filename> des
        NIS-Masterservers Benutzerkonten sowohl f&uuml;r
        Fakult&auml;tsmitarbeiter als auch f&uuml;r Studenten
        enth&auml;lt.  Was k&ouml;nnen wir also tun?</para>

      <para>Es gibt eine M&ouml;glichkeit, bestimmte Benutzer an der
        Anmeldung an einem bestimmten Rechner zu hindern, selbst wenn
        diese in der NIS-Datenbank vorhanden sind.  Dazu m&uuml;ssen
        Sie lediglich an diesem Rechner den Eintrag
        <emphasis>-<replaceable>Benutzername</replaceable></emphasis> an
        das Ende von <filename>/etc/master.passwd</filename> setzen,
        wobei <replaceable>Benutzername</replaceable> der zu
        blockierende Benutzername ist.  Diese &Auml;nderung sollte
        bevorzugt durch <command>vipw</command> erledigt werden, da
        <command>vipw</command> Ihre &Auml;nderungen an
        <filename>/etc/master.passwd</filename> auf Plausibilit&auml;t
        &uuml;berpr&uuml;ft und nach erfolgter &Auml;nderung die
        Passwortdatenbank automatisch aktualisiert.  Um also den
        Benutzer <emphasis>bill</emphasis> an der Anmeldung am Rechner
        <hostid>basie</hostid> zu hindern, gehen wir wie folgt vor:
      </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="netgroups">
      <sect2info>
        <authorgroup>
          <author>
            <firstname>Udo</firstname>
            <surname>Erdelhoff</surname>
            <contrib>Beigetragen von </contrib>
          </author>
        </authorgroup>
      </sect2info>

      <title>Netzgruppen verwenden</title>

      <indexterm><primary>Netzgruppen</primary></indexterm>

      <para>Die im letzten Abschnitt beschriebene Methode eignet sich
        besonders, wenn Sie spezielle Regeln f&uuml;r wenige
        Benutzer oder wenige Rechner ben&ouml;tigen.  In gro&szlig;en
        Netzwerken werden Sie allerdings
        <emphasis>mit Sicherheit</emphasis> vergessen, einige Benutzer
        von der Anmeldung an bestimmten Rechnern auszuschlie&szlig;en.
        Oder Sie werden gezwungen sein, jeden Rechner einzeln zu
        konfigurieren.  Dadurch verlieren Sie aber den Hauptvorteil von
        NIS, die <emphasis>zentrale</emphasis> Verwaltung.</para>

      <para>Die L&ouml;sung f&uuml;r dieses Problem sind
        <emphasis>Netzgruppen</emphasis>.  Ihre Aufgabe und Bedeutung
        ist vergleichbar mit normalen, von UNIX-Dateisystemen
        verwendeten Gruppen.  Die Hauptunterschiede sind das Fehlen
        einer numerischen ID sowie die M&ouml;glichkeit, Netzgruppen
        zu definieren, die sowohl Benutzer als auch andere Netzgruppen
        enthalten.</para>

      <para>Netzgruppen wurden entwickelt, um gro&szlig;e, komplexe
        Netzwerke mit Hunderten Benutzern und Rechnern zu verwalten.
        Sie sind also von Vorteil, wenn Sie von dieser Situation
        betroffen sind.  Andererseits ist es dadurch beinahe
        unm&ouml;glich, Netzgruppen mit einfachen Beispielen zu
        erkl&auml;ren.  Das hier verwendete Beispiel veranschaulicht
        dieses Problem.</para>

      <para>Nehmen wir an, dass Ihre erfolgreiche Einf&uuml;hrung von
        NIS die Aufmerksamkeit Ihrer Vorgesetzten geweckt hat.  Ihre
        n&auml;chste Aufgabe besteht nun darin, Ihre NIS-Dom&auml;ne
        um zus&auml;tzliche Rechner zu erweitern.  Die folgenden
        Tabellen enthalten die neuen Benutzer und Rechner inklusive
        einer kurzen Beschreibung.</para>

      <informaltable>
        <tgroup cols="2">
          <thead>
            <row>
              <entry>Benutzername(n)</entry>
              <entry>Beschreibung</entry>
            </row>
          </thead>

          <tbody>
            <row>
              <entry>alpha, beta</entry>
              <entry>Besch&auml;ftigte der IT-Abteilung</entry>
            </row>

            <row>
              <entry>charlie, delta</entry>
              <entry>Die neuen Lehrlinge der IT-Abteilung</entry>
            </row>

            <row>
              <entry>echo, foxtrott, golf, ...</entry>
              <entry>Normale Mitarbeiter</entry>
            </row>

            <row>
              <entry>able, baker, ...</entry>
              <entry>Externe Mitarbeiter</entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>

      <informaltable>
        <tgroup cols="2">
          <thead>
            <row>
              <entry>Rechnername(n)</entry>
              <entry>Beschreibung</entry>
            </row>
          </thead>

          <tbody>
            <row>
              <!--  Names taken from "Good Omens" by Neil Gaiman and Terry
                    Pratchett.  Many thanks for a brilliant book.  -->
              <entry>war, death, famine, pollution</entry>
              <entry>Ihre wichtigsten Server.  Nur IT-Fachleute
                d&uuml;rfen sich an diesen Rechnern anmelden.</entry>
            </row>

            <row>
              <!-- gluttony was omitted because it was too fat -->
              <entry>pride, greed, envy, wrath, lust, sloth</entry>
              <entry>Weniger wichtige Server.  Alle Mitarbeiter der
                IT-Abteilung d&uuml;rfen sich auf diesen Rechnern
                anmelden.</entry>
            </row>

            <row>
              <entry>one, two, three, four, ...</entry>
              <entry>Gew&ouml;hnliche Arbeitsrechner.  Nur die
                <emphasis>wirklichen</emphasis> Mitarbeiter d&uuml;rfen
                diese Rechner verwenden.</entry>
            </row>

            <row>
              <entry>trashcan</entry>
              <entry>Ein sehr alter Rechner ohne kritische Daten. Sogar
                externe Mitarbeiter d&uuml;rfen diesen Rechner
                verwenden.</entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>

      <para>Wollten Sie diese Einschr&auml;nkungen umsetzen, indem Sie
        jeden Benutzer einzeln blockieren, m&uuml;ssten Sie auf jedem
        System f&uuml;r jeden Benutzer eine Zeile in
        <filename>passwd</filename> einf&uuml;gen.  Wenn Sie nur einen
        Eintrag vergessen, haben Sie ein Problem.  Es mag noch angehen,
        dies w&auml;hrend der ersten Installation zu erledigen, im
        t&auml;glichen Betrieb werden Sie allerdings
        <emphasis>mit Sicherheit</emphasis> einmal vergessen, die
        entsprechenden Eintr&auml;ge anzulegen.  Vergessen Sie nicht:
        Murphy war Optimist.</para>

      <para>Die Verwendung von Netzgruppen hat in dieser Situation
        mehrere Vorteile.  Sie m&uuml;ssen nicht jeden Benutzer einzeln
        verwalten;  weisen Sie stattdessen den Benutzer einer Netzgruppe
        zu und erlauben oder verbieten Sie allen Mitglieder dieser
        Gruppe die Anmeldung an einem Server.  Wenn Sie einen neuen
        Rechner hinzuf&uuml;gen, m&uuml;ssen Sie
        Zugangsbeschr&auml;nkungen nur f&uuml;r die Netzgruppen
        festlegen.  Legen Sie einen neuen Benutzer an, m&uuml;ssen Sie
        ihn nur einer oder mehrere Netzgruppen zuweisen.  Diese
        Ver&auml;nderungen sind voneinander unabh&auml;ngig; Anweisungen
        der Form <quote>f&uuml;r diese Kombination aus Benutzer und
        Rechner mache Folgendes ...</quote> sind nicht mehr n&ouml;tig.
        Wenn Sie die Einrichtung von NIS sorgf&auml;ltig geplant haben,
        m&uuml;ssen Sie nur noch eine zentrale Konfigurationsdatei
        bearbeiten, um den Zugriff auf bestimmte Rechner zu erlauben
        oder zu verbieten.</para>

      <para>Der erste Schritt ist die Initialisierung der NIS-Maps
        der Netzgruppe.  &man.ypinit.8; kann dies unter FreeBSD nicht
        automatisch durchf&uuml;hren.  Sind die Maps aber erst einmal
        erzeugt, werden sie jedoch von NIS problemlos unterst&uuml;tzt.
        Um eine leere Map zu erzeugen, geben Sie Folgendes ein:</para>

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

      <para>Danach legen Sie die Eintr&auml;ge an.  F&uuml;r unser
        Beispiel ben&ouml;tigen wir mindestens vier Netzgruppen:
        IT-Besch&auml;ftige, IT-Lehrlinge, normale Besch&auml;ftigte
        sowie Externe.</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>Bei <literal>IT_EMP</literal>, <literal>IT_APP</literal>
        usw. handelt es sich um Netzgruppennamen.  In den Klammern
        werden diesen Netzgruppen jeweils ein oder mehrere
        Benutzerkonten hinzugef&uuml;gt.  Die drei Felder in der
        Klammer haben folgende Bedeutung:</para>

      <orderedlist>
        <listitem>
          <para>Der Name des Rechners, auf dem die folgenden Werte
            g&uuml;ltig sind.  Legen Sie keinen Rechnernamen fest, ist
            der Eintrag auf allen Rechnern g&uuml;ltig. Dadurch
            gehen Sie vielen Problemen aus dem Weg.</para>
        </listitem>

        <listitem>
          <para>Der Name des Benutzerkontos, der zu dieser Netzgruppe
            geh&ouml;rt.</para>
        </listitem>

        <listitem>
          <para>Die NIS-Dom&auml;ne f&uuml;r das Benutzerkonto.  Sie
            k&ouml;nnen Benutzerkonten von anderen NIS-Dom&auml;nen in
            Ihre Netzgruppe importieren, wenn Sie mehrere
            NIS-Dom&auml;nen verwalten.</para>
        </listitem>
      </orderedlist>

      <para>Jedes Feld kann Wildcards enthalten.  Die Einzelheiten
	entnehmen Sie bitte &man.netgroup.5;.</para>

      <note>
        <indexterm><primary>Netzgruppen</primary></indexterm>

        <para>Netzgruppennamen sollten nicht l&auml;nger als 8 Zeichen
          sein, vor allem dann, wenn Sie Rechner mit verschiedenen
          Betriebssystemen in Ihrer NIS-Dom&auml;ne haben.  Es wird
          zwischen Gro&szlig;- und Kleinschreibung unterschieden.
          Die Verwendung von Gro&szlig;buchstaben f&uuml;r
          Netzgruppennamen erm&ouml;glicht eine leichte Unterscheidung
          zwischen Benutzern, Rechnern und Netzgruppen.</para>

        <para>Einige NIS-Clients (dies gilt nicht f&uuml;r FreeBSD)
          k&ouml;nnen keine Netzgruppen mit einer gro&szlig;en Anzahl
          von Eintr&auml;gen verwalten.  Einige &auml;ltere Versionen
          von &sunos; haben beispielsweise Probleme, wenn Netzgruppen mehr
          als f&uuml;nfzehn <emphasis>Eintr&auml;ge</emphasis>
          enthalten.  Sie k&ouml;nnen dieses Problem umgehen, indem Sie
          mehrere Subnetzgruppen mit weniger als f&uuml;nfzehn Benutzern
          anlegen und diese Subnetzgruppen wiederum in einer Netzgruppe
          zusammenfassen:</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>Sie k&ouml;nnen diesen Vorgang wiederholen, wenn Sie mehr
          als 255 Benutzer in einer einzigen Netzgruppe ben&ouml;tigen.
        </para>
      </note>

      <para>Das Aktivieren und Verteilen Ihre neuen NIS-Map ist
        einfach:</para>

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

      <para>Dadurch werden die NIS-Maps <filename>netgroup</filename>,
        <filename>netgroup.byhost</filename> und
        <filename>netgroup.byuser</filename> erzeugt.  Pr&uuml;fen Sie
        die Verf&uuml;gbarkeit Ihrer neuen NIS-Maps mit &man.ypcat.1;.
      </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>Die Ausgabe des ersten Befehls gibt den Inhalt von
        <filename>/var/yp/netgroup</filename> wieder.  Der zweite Befehl
        erzeugt nur dann eine Ausgabe, wenn Sie rechnerspezifische
        Netzgruppen erzeugt haben.  Der dritte Befehl gibt die
        Netzgruppen nach Benutzern sortiert aus.</para>

      <para>Die Einrichtung der Clients ist einfach.  Sie m&uuml;ssen
        lediglich auf dem Server <replaceable>war</replaceable>
        &man.vipw.8; aufrufen und die Zeile</para>

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

      <para>durch</para>

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

      <para>ersetzen.</para>

      <para>Ab sofort werden nur noch die Daten der in der Netzgruppe
        <replaceable>IT_EMP</replaceable> vorhandenen Benutzer in die
        Passwortdatenbank von <replaceable>war</replaceable> importiert.
        Nur diese Benutzer d&uuml;rfen sich am Server anmelden.</para>

      <para>Ungl&uuml;cklicherweise gilt diese Einschr&auml;nkung auch
        f&uuml;r die ~-Funktion der Shell und f&uuml;r alle Routinen,
        die auf Benutzernamen und numerische Benutzer-IDs zugreifen.
        Oder anders formuliert,
        <command>cd ~<replaceable>user</replaceable></command> ist nicht
        m&ouml;glich, <command>ls -l</command> zeigt die numerische
        Benutzer-ID statt dem Benutzernamen und
        <command>find . -user joe -print</command> erzeugt die
        Fehlermeldung <errorname>No such user</errorname>.  Um dieses
        Problem zu beheben, m&uuml;ssen Sie alle Benutzereintr&auml;ge
        importieren, <emphasis>ohne ihnen jedoch zu erlauben, sich an
        Ihrem Server anzumelden</emphasis>.</para>

      <para>Dazu f&uuml;gen Sie eine weitere Zeile in
        <filename>/etc/master.passwd</filename> ein.  Diese Zeile sollte
        &auml;hnlich der folgenden aussehen:</para>

      <para><literal>+:::::::::/sbin/nologin</literal>, was in etwa
        <quote>Importiere alle Eintr&auml;ge, aber ersetze die Shell in
        den importierten Eintr&auml;gen durch
        <filename>/sbin/nologin</filename></quote> entspricht.  Sie
        k&ouml;nnen jedes Feld dieses Eintrages ersetzen, indem Sie
        einen Standardwert in <filename>/etc/master.passwd</filename>
        eintragen.</para>

      <warning>
        <para>Stellen Sie sicher, dass die Zeile
        <literal>+:::::::::/sbin/nologin</literal>
        <emphasis>nach </emphasis> der Zeile
        <literal>+@IT_EMP:::::::::</literal> eingetragen ist.  Sonst
        haben alle via NIS importierten Benutzerkonten
        <filename>/sbin/nologin</filename> als Loginshell.</para>
      </warning>

      <para>Danach m&uuml;ssen Sie nur mehr eine einzige NIS-Map
        &auml;ndern, wenn ein neuer Mitarbeiter ber&uuml;cksichtigt
        werden muss.  F&uuml;r weniger wichtige Server gehen Sie analog
        vor, indem Sie den alten Eintrag <literal>+:::::::::</literal>
        in den lokalen Versionen von
        <filename>/etc/master.passwd</filename> durch folgende
        Eintr&auml;ge ersetzen:</para>

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

      <para>Die entsprechenden Zeilen f&uuml;r normale Arbeitspl&auml;tze
        lauten:</para>

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

      <para>Ab jetzt w&auml;re alles wunderbar, allerdings &auml;ndert
        sich kurz darauf die Firmenpolitik:  Die IT-Abteilung beginnt
        damit, externe Mitarbeiter zu besch&auml;ftigen.  Externe
        d&uuml;rfen sich an normalen Arbeitspl&auml;tzen sowie an den
        weniger wichtigen Servern anmelden.  Die IT-Lehrlinge
        d&uuml;rfen sich nun auch an den Hauptservern anmelden.  Sie
        legen also die neue Netzgruppe IT_INTERN an, weisen Ihr die
        neuen IT-Externen als Benutzer zu und beginnen damit,
        die Konfiguration auf jedem einzelnen Rechner zu &auml;ndern ...
        Halt.  Sie haben gerade die alte Regel <quote>Fehler in der
        zentralisierten Planung f&uuml;hren zu globaler
        Verwirrung.</quote> best&auml;tigt.</para>

      <para>Da NIS in der Lage ist, Netzgruppen aus anderen Netzgruppen
        zu bilden, lassen sich solche Situationen leicht vermeiden.
        Eine M&ouml;glichkeit ist die Erzeugung rollenbasierter
        Netzgruppen.  Sie k&ouml;nnten eine Netzgruppe
        <replaceable>BIGSRV</replaceable> erzeugen, um den Zugang zu
        den wichtigsten Servern zu beschr&auml;nken, eine weitere
        Gruppe <replaceable>SMALLSRV</replaceable> f&uuml;r die weniger
        wichtigen Server und eine dritte Netzgruppe
        <replaceable>USERBOX</replaceable> f&uuml;r die normalen
        Arbeitsplatzrechner.  Jede dieser Netzgruppen enth&auml;lt die
        Netzgruppen, die sich auf diesen Rechnern anmelden d&uuml;rfen.
        Die Eintr&auml;ge der Netzgruppen in der NIS-Map sollten
        &auml;hnlich den folgenden aussehen:</para>

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

      <para>Diese Methode funktioniert besonders gut, wenn Sie
        Rechner in Gruppen mit identischen Beschr&auml;nkungen einteilen
        k&ouml;nnen.  Ungl&uuml;cklicherweise ist dies die Ausnahme und
        nicht die Regel.  Meistens werden Sie die M&ouml;glichkeit zur
        rechnerspezischen Zugangsbeschr&auml;nkung ben&ouml;tigen.</para>

      <para>Rechnerspezifische Netzgruppen sind die zweite
        M&ouml;glichkeit, um mit den oben beschriebenen &Auml;nderungen
        umzugehen.  In diesem Szenario enth&auml;lt
        <filename>/etc/master.passwd</filename> auf jedem Rechner zwei
        mit <quote>+</quote> beginnende Zeilen.  Die erste Zeile
        legt die Netzgruppe mit den Benutzern fest, die sich auf diesem
        Rechner anmelden d&uuml;rfen.  Die zweite Zeile weist allen
        anderen Benutzern <filename>/sbin/nologin</filename> als Shell
        zu.  Verwenden Sie auch hier (analog zu den Netzgruppen)
        Gro&szlig;buchstaben f&uuml;r die Rechnernamen.  Die Zeilen
        sollten also &auml;hnlich den folgenden aussehen:</para>

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

      <para>Wenn Sie dies f&uuml;r alle Rechner erledigt haben, werden
        Sie die lokalen Versionen von
        <filename>/etc/master.passwd</filename> nie mehr ver&auml;ndern
        m&uuml;ssen.  Alle weiteren &Auml;nderungen geschehen &uuml;ber
        die NIS-Maps.  Nachfolgend ein Beispiel f&uuml;r eine
        m&ouml;gliche Netzgruppen-Map, die durch einige Besonderheiten
        erweitert wurde:</para>

      <programlisting># Define groups of users first
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)
#
# Now, define some groups based on roles
USERS     DEPT1   DEPT2     DEPT3
BIGSRV    IT_EMP  IT_APP
SMALLSRV  IT_EMP  IT_APP    ITINTERN
USERBOX   IT_EMP  ITINTERN  USERS
#
# And a groups for a special tasks
# Allow echo and golf to access our anti-virus-machine
SECURITY  IT_EMP  (,echo,test-domain)  (,golf,test-domain)
#
# machine-based netgroups
# Our main servers
WAR       BIGSRV
FAMINE    BIGSRV
# User india needs access to this server
POLLUTION  BIGSRV  (,india,test-domain)
#
# This one is really important and needs more access restrictions
DEATH     IT_EMP
#
# The anti-virus-machine mentioned above
ONE       SECURITY
#
# Restrict a machine to a single user
TWO       (,hotel,test-domain)
# [...more groups to follow]
      </programlisting>

      <para>Wenn Sie eine Datenbank verwenden, um Ihre Benutzerkonten zu
        verwalten, sollten Sie den ersten Teil der NIS-Map mit Ihren
        Datenbanktools erstellen k&ouml;nnen.  Auf diese Weise haben
        neue Benutzer automatisch Zugriff auf die Rechner.</para>

      <para>Eine letzte Warnung:  Es ist nicht immer ratsam,
        rechnerbasierte Netzgruppen zu verwenden.  Wenn Sie Dutzende
        oder gar Hunderte identische Rechner einrichten m&uuml;ssen,
        sollten Sie rollenbasierte Netzgruppen verwenden, um die
        Gr&ouml;sse der NIS-Maps in Grenzen zu halten.</para>
    </sect2>

    <sect2>
      <title>Weitere wichtige Punkte</title>

      <para>Nachdem Sie Ihre NIS-Umgebung eingerichtet haben,
        m&uuml;ssen Sie einige Dinge anders als bisher erledigen.</para>

      <itemizedlist>
        <listitem>
          <para>Jedes Mal, wenn Sie einen neuen Benutzer anlegen wollen,
            tun Sie dies <emphasis>ausschlie&szlig;lich</emphasis> am
            NIS-Masterserver.  Au&szlig;erdem
            <emphasis>m&uuml;ssen</emphasis> Sie anschlie&szlig;end die
            NIS-Maps neu erzeugen.  Wenn Sie diesen Punkt vergessen,
            kann sich der neue Benutzer <emphasis>nur</emphasis> am
            NIS-Masterserver anmelden.  Wenn Sie also den neuen Benutzer
            <quote>jsmith</quote> anlegen, gehen Sie wie folgt vor:</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>Statt <command>pw useradd jsmith</command> k&ouml;nnten
            Sie auch <command>adduser jsmith</command> verwenden.</para>
        </listitem>

        <listitem>
          <para><emphasis>Tragen Sie die Administratorkonten nicht
            in die NIS-Maps ein</emphasis>.  Administratorkonten und
            Passw&ouml;rter d&uuml;rfen nicht auf Rechnern verbreitet
            werden, auf denen sich Benutzer anmelden k&ouml;nnen, die
            auf diese Konten keine Zugriff haben sollen.</para>
        </listitem>

        <listitem>
          <para><emphasis>Sichern Sie die NIS-Master- und Slaveserver
            und minimieren Sie die Ausfallzeiten</emphasis>.  Wenn
            diese Rechner gehackt oder einfach nur ausgeschaltet werden,
            haben viele Leute keinen Netzwerkzugriff mehr.</para>

          <para>Dies ist die gr&ouml;&szlig;te Schw&auml;che
            jeder zentralen Verwaltung.  Wenn Sie Ihre NIS-Server nicht
            sch&uuml;tzen, werden Sie viele ver&auml;rgerte Anwender
            haben.</para>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Kompatibilit&auml;t zu NIS v1</title>

      <indexterm>
        <primary>NIS</primary>
        <secondary>Kompatibilit&auml;t zu NIS v1</secondary>
      </indexterm>

      <para><application>ypserv</application> unterst&uuml;tzt NIS v1
        unter FreeBSD nur eingeschr&auml;nkt.  Die NIS-Implementierung
        von FreeBSD verwendet nur NIS v2, andere Implementierungen
        unterst&uuml;tzen aus Gr&uuml;nden der
        Abw&auml;rtskompatibilit&auml;t mit &auml;lteren Systemen auch
        NIS v1.  Die mit diesen Systemen gelieferten
        <application>ypbind</application>-Daemonen versuchen, sich an
        einen NIS-v1-Server zu binden (Dies selbst dann, wenn sie ihn
        nie ben&ouml;tigen.  Au&szlig;erdem versuchen Sie auch dann, einen
        v1-Server zu erreichen, wenn Sie zuvor eine Antwort von einem
        v2-Server erhalten.).  W&auml;hrend normale Clientaufrufe
        unter FreeBSD unterst&uuml;tzt werden, sind Anforderungen zum
        Transfer von v1-Maps nicht m&ouml;glich.  Daher kann FreeBSD
        nicht als Client oder Server verwendet werden, wenn ein
        NIS-Server vorhanden ist, der nur NIS v1 unterst&uuml;tzt.
        Gl&uuml;cklicherweise sollte es heute keine Server mehr geben,
        die nur NIS v1 unterst&uuml;tzen.</para>
    </sect2>

    <sect2 id="nis-server-is-client">
      <title>NIS-Server, die auch als NIS-Clients arbeiten</title>

      <para>Wenn Sie ypserv in einer Multi-Serverdom&auml;ne verwenden,
        in der NIS-Server gleichzeitig als NIS-Clients arbeiten, ist es
        eine gute Idee, diese Server zu zwingen, sich an sich selbst zu
        binden.  Damit wird verhindert, dass Bindeanforderungen gesendet
        werden und sich die Server gegenseitig binden.  Sonst
        k&ouml;nnten seltsame Fehler auftreten, wenn ein Server
        ausf&auml;llt, auf den andere Server angewiesen sind.  Letztlich
        werden alle Clients einen Timeout melden, und versuchen, sich an
        andere Server zu binden.  Die dadurch entstehende
        Verz&ouml;gerung kann betr&auml;chtlich sein.  Au&szlig;erdem kann
        der Fehler erneut auftreten, da sich die Server wiederum
        aneinander binden k&ouml;nnten.</para>

      <para>Sie k&ouml;nnen einen Rechner durch die Verwendung von
        <command>ypbind</command> sowie der Option <option>-S</option>
        zwingen, sich an einen bestimmten Server zu binden.  Um diesen
        Vorgang zu automatisieren, k&ouml;nnen Sie folgende Zeilen in
        <filename>/etc/rc.conf</filename> einf&uuml;gen:</para>

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

      <para>Lesen Sie &man.ypbind.8;, wenn Sie weitere Informationen
        ben&ouml;tigen.</para>
    </sect2>

    <sect2>
      <title>Passwort Formate</title>
      <indexterm>
        <primary>NIS</primary>
	<secondary>Passwort Formate</secondary>
      </indexterm>
      <para>Unterschiedliche Passwort-Formate sind die Hauptprobleme,
	die beim Einrichten eines NIS-Servers auftreten k&ouml;nnen.
	Wenn der NIS-Server mit DES verschl&uuml;sselte Passw&ouml;rter
	verwendet, werden nur Clients unterst&uuml;tzt, die ebenfalls
	DES benutzen.  Wenn sich auf Ihrem Netzwerk beispielsweise
	&solaris; NIS-Clients befinden, m&uuml;ssen die Passw&ouml;rter
	mit DES verschl&uuml;sselt werden.</para>

      <para>Welches Format die Server und Clients verwenden,
	steht in <filename>/etc/login.conf</filename>.  Wenn ein
	System Passw&ouml;rter mit DES verschl&uuml;sselt,
	enth&auml;lt die <literal>default</literal>-Klasse einen
	Eintrag wie den folgenden:</para>

      <programlisting>default:\
	:passwd_format=des:\
	:copyright=/etc/COPYRIGHT:\
	[weitere Eintr&auml;ge]</programlisting>

      <para>M&ouml;gliche Werte f&uuml;r <literal>passwd_format</literal>
	sind unter anderem <literal>blf</literal> und
	<literal>md5</literal> (mit Blowfish und MD5 verschl&uuml;sselte
	Passw&ouml;rter).</para>

      <para>Wenn die Datei <filename>/etc/login.conf</filename>
	ge&auml;ndert wird, muss die Login-Capability Datenbank
	neu erstellt werden.  Setzen Sie dazu als <username>root</username>
	den folgenden Befehl ab:</para>

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

      <note>
	<para>Das Format der schon in
	  <filename>/etc/master.passwd</filename> befindlichen
	  Passw&ouml;rter wird erst aktualisiert, wenn ein Benutzer
	  sein Passwort &auml;ndert, <emphasis>nachdem</emphasis>
	  die Datenbank neu erstellt wurde.</para>
      </note>

      <para>Damit die Passw&ouml;rter auch im gew&auml;hlten
	Format abgespeichert werden, muss mit
	<literal>crypt_default</literal> in der Datei
	<filename>/etc/auth.conf</filename> die richtige
	Priorit&auml;t der Formate eingestellt werden.  Das
	gew&auml;hlte Format sollte als erstes in der Liste
	stehen.  Sollen die Passw&ouml;rter mit DES verschl&uuml;sselt
	werden, verwenden Sie den folgenden Eintrag:</para>

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

      <para>Wenn Sie alle &os; NIS-Server und NIS-Clients entsprechend
	den obigen Schritten eingestellt haben, wird im ganzen
	Netzwerk dasselbe Passwort-Format verwendet.  Falls Sie
	Probleme mit der Authentifizierung eines NIS-Clients
	haben, kontrollieren Sie die verwendeten Passwort-Formate.
	In einer heterogenen Umgebung werden Sie DES benutzen
	m&uuml;ssen, da dies der meist unterst&uuml;tzte Standard
	ist.</para>
    </sect2>
  </sect1>

  <sect1 id="network-dhcp">
    <!-- j.kois@web.de, 24. August 2003 -->

    <sect1info>
      <authorgroup>
        <author>
          <firstname>Greg</firstname>
          <surname>Sutter</surname>
          <contrib>Geschrieben von </contrib>
        </author>
      </authorgroup>
    </sect1info>

    <title>DHCP - Dynamic Host Configuration Protocol</title>

    <sect2>
      <title>Was ist DHCP?</title>

      <indexterm>
        <primary>Dynamic Host Configuration Protocol</primary>
        <see>DHCP</see>
      </indexterm>

      <indexterm>
        <primary>Internet Software Consortium (ISC)</primary>
      </indexterm>

      <para>&Uuml;ber DHCP, das Dynamic Host Configuration Protocol,
        kann sich ein System mit einem Netzwerk verbinden und die
        f&uuml;r die Kommunikation mit diesem Netzwerk n&ouml;tigen
        Informationen beziehen.  FreeBSD verwendet die
        DHCP-Implementation von ISC (Internet Software Consortium),
        daher beziehen sich alle implementationsspezifischen
        Informationen in diesem Abschnitt auf die ISC-Distribution.
      </para>
    </sect2>

    <sect2>
      <title>&Uuml;bersicht</title>

      <para>Dieser Abschnitt beschreibt sowohl die Client- als auch die
        Serverseite des DHCP-Systems von ISC.  Das Clientprogramm
        <command>dhclient</command> ist in FreeBSD integriert, das
        Serverprogramm kann &uuml;ber den Port
        <filename role="package">net/isc-dhcp3</filename> installiert
        werden.  Mehr Informationen finden Sie in den Hilfeseiten
        &man.dhclient.8;, &man.dhcp-options.5; sowie
        &man.dhclient.conf.5;.</para>
    </sect2>

    <sect2>
      <title>Wie funktioniert DHCP?</title>

      <indexterm><primary>UDP</primary></indexterm>

      <para>Der DHCP-Client <command>dhclient</command> beginnt von
        einem Clientrechner aus &uuml;ber den UDP-Port 68
        Konfigurationsinformationen anzufordern.  Der Server antwortet
	auf dem UDP-Port 67, indem er dem Client eine IP-Adresse
        zuweist und ihm weitere wichtige Informationen &uuml;ber das
        Netzwerk, wie Netzmasken, Router und DNS-Server mitteilt.  Diese
        Informationen werden als
        <firstterm>DHCP-Lease</firstterm> bezeichnet und
        sind nur f&uuml;r eine bestimmte Zeit, die vom Administrator des
        DHCP-Servers vorgegeben wird, g&uuml;ltig.  Dadurch fallen
        verwaiste IP-Adressen, deren Clients nicht mehr mit dem Netzwerk
        verbunden sind, automatisch an den Server zur&uuml;ck.</para>

      <para>DHCP-Clients k&ouml;nnen sehr viele Informationen von einem
        DHCP-Server erhalten.  Eine ausf&uuml;hrliche Liste finden Sie
        in &man.dhcp-options.5;.</para>
    </sect2>

    <sect2>
      <title>Integration in FreeBSD</title>

      <para>Der ISC-DHCP-Client ist seit FreeBSD&nbsp;3.2
	vollst&auml;ndig in FreeBSD integriert.  Sowohl w&auml;hrend
	der Installation als auch im Basissystem steht der
	DHCP-Client zur Verf&uuml;gung.  In Netzen mit
	DHCP-Servern wird dadurch die Konfiguration von
	Systemen erheblich vereinfacht.</para>

      <indexterm>
        <primary><application>sysinstall</application></primary>
      </indexterm>

      <para>DHCP wird von <application>sysinstall</application>
        unterst&uuml;tzt.  Richten Sie eine Netzkarte unter
        <application>sysinstall</application> ein, wird Ihnen zuerst
        folgende Frage gestellt: <quote>Wollen Sie diese Karte &uuml;ber
        DHCP einrichten?</quote>  Wenn Sie diese Frage bejahen, wird
        <command>dhclient</command> aufgerufen, und die Netzkarte wird
        automatisch eingerichtet.</para>

      <para>Um DHCP beim Systemstart zu aktivieren, m&uuml;ssen Sie zwei
        Dinge erledigen:</para>

      <indexterm>
        <primary>DHCP</primary>
        <secondary>Anforderungen</secondary>
      </indexterm>

      <itemizedlist>
        <listitem>
          <para>Stellen Sie sicher, dass <devicename>bpf</devicename> in
            Ihren Kernel kompiliert ist.  Dazu f&uuml;gen Sie die Zeile
            <literal>pseudo-device bpf</literal> in Ihre
            Kernelkonfigurationsdatei ein und erzeugen einen neuen
            Kernel.  Mehr &uuml;ber die Kernelkonfiguration
	    erfahren Sie in <xref linkend="kernelconfig">.</para>

          <para>Das Ger&auml;t <devicename>bpf</devicename> ist im
            <filename>GENERIC</filename>-Kernel bereits enthalten.
            F&uuml;r die Nutzung von DHCP muss also kein angepasster
            Kernel erzeugt werden.</para>

            <note>
              <para>Wenn Sie um die Sicherheit Ihres Systems besorgt
                sind, sollten Sie wissen, dass
                <devicename>bpf</devicename> auch zur Ausf&uuml;hrung
                von Paketsniffern erforderlich ist (obwohl diese dennoch
                als <username>root</username> ausgef&uuml;hrt werden
                m&uuml;ssen).  <devicename>bpf</devicename>
                <emphasis>muss</emphasis> vorhanden sein, damit DHCP
                funktioniert.  Sind Sie sehr sicherheitsbewusst, sollten
                Sie <devicename>bpf</devicename> aus Ihrem Kernel
                entfernen, wenn Sie DHCP nicht verwenden.</para>
            </note>
        </listitem>

        <listitem>
          <para>F&uuml;gen Sie folgende Zeile in
            <filename>/etc/rc.conf</filename> ein:</para>

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

            <note>
              <para>Ersetzen Sie <literal>fxp0</literal> durch den
                Eintrag f&uuml;r die Netzkarte, die Sie dynamisch
                einrichten wollen.  Lesen Sie dazu auch
                <xref linkend="config-network-setup">.</para>
            </note>

          <para>Wenn Sie <command>dhclient</command> an einem anderen
            Ort installiert haben, oder zus&auml;tzliche Flags an
            <command>dhclient</command> &uuml;bergeben wollen,
            f&uuml;gen Sie auch folgende (entsprechend angepasste)
            Zeilen ein:</para>

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

      <indexterm>
          <primary>DHCP</primary>
          <secondary>Server</secondary>
      </indexterm>

      <para>Der DHCP-Server <command>dhcpd</command> ist als Teil des
        <filename role="package">net/isc-dhcp3</filename>-Ports
        verf&uuml;gbar.  Dieser Port enth&auml;lt die komplette
        ISC-DHCP-Distribution, inklusive Client, Server, Relay-Agent und
        der Dokumentation.</para>
    </sect2>

    <sect2>
      <title>Dateien</title>

      <indexterm>
        <primary>DHCP</primary>
        <secondary>Konfigurationsdateien</secondary>
      </indexterm>

      <itemizedlist>
        <listitem>
          <para><filename>/etc/dhclient.conf</filename></para>

          <para><command>dhclient</command> ben&ouml;tigt die
            Konfigurationsdatei <filename>/etc/dhclient.conf</filename>.
            Diese Datei enth&auml;lt normalerweise nur Kommentare,
	    da die Vorgabewerte meistens ausreichend sind.
	    Die Hilfeseite &man.dhclient.conf.5; beschreibt
	    diese Konfigurationsdatei.</para>
        </listitem>

        <listitem>
          <para><filename>/sbin/dhclient</filename></para>

          <para><command>dhclient</command> ist statisch gelinkt und
            befindet sich in <filename>/sbin</filename>.  Mehr
	    Informationen finden Sie in der Hilfeseite
	    &man.dhclient.8;.</para>
        </listitem>

        <listitem>
          <para><filename>/sbin/dhclient-script</filename></para>

          <para>Bei <command>dhclient-script</command> handelt es sich
            um das FreeBSD-spezifische Konfigurationsskript des
            DHCP-Clients.  Es wird in &man.dhclient-script.8;
            beschrieben und kann meist unver&auml;ndert &uuml;bernommen
            werden.</para>
        </listitem>

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

          <para>Der DHCP-Client verf&uuml;gt &uuml;ber eine Datenbank,
            die alle derzeit g&uuml;ltigen Leases enth&auml;lt und als
            Logdatei erzeugt wird.  Weitere Informationen finden Sie in
            &man.dhclient.8;.</para>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Weitere Informationen</title>

      <para>Das DHCP-Protokoll wird vollst&auml;ndig im
        <ulink url="http://www.freesoft.org/CIE/RFC/2131/">RFC 2131</ulink>
        beschrieben.  Eine weitere, lehrreiche Informationsquelle
        existiert unter
        <ulink url="http://www.dhcp.org/">dhcp.org</ulink>.</para>
    </sect2>

    <sect2 id="network-dhcp-server">
      <title>Einen DHCP-Server installieren und einrichten</title>

      <sect3>
        <title>&Uuml;bersicht</title>

        <para>Dieser Abschnitt beschreibt die Einrichtung eines
          FreeBSD-Systems als DHCP-Server.  Dazu wird die
          DHCP-Implementation von ISC (Internet Software Consortium)
          verwendet.</para>

        <para>Der DHCP-Server ist nicht im Basissystem von FreeBSD
          enthalten,  daher m&uuml;ssen Sie als erstes den Port
          <filename role="package">net/isc-dhcp3</filename>
          installieren.  Lesen Sie <xref linkend="ports">, wenn Sie
          weitere Informationen zur Portssammlung ben&ouml;tigen.
        </para>
      </sect3>

      <sect3>
        <title>Den DHCP-Server installieren</title>

        <indexterm>
          <primary>DHCP</primary>
          <secondary>installieren</secondary>
        </indexterm>

        <para>Stellen Sie sicher, dass <devicename>bpf</devicename> in
          Ihren Kernel kompiliert ist.  Dazu f&uuml;gen Sie die Zeile
          <literal>pseudo-device bpf</literal> in Ihre
          Kernelkonfigurationsdatei ein und erzeugen einen neuen
          Kernel.  Die Kernelkonfiguration wird in
          <xref linkend="kernelconfig"> beschrieben.</para>

        <para>Das Ger&auml;t <devicename>bpf</devicename> ist im
          <filename>GENERIC</filename>-Kernel bereits enthalten.
          F&uuml;r die Nutzung von DHCP muss also kein angepasster
          Kernel erzeugt werden.</para>

          <note>
            <para>Wenn Sie um die Sicherheit Ihres Systems besorgt
              sind, sollten Sie wissen, dass
              <devicename>bpf</devicename> auch zur Ausf&uuml;hrung
              von Paketsniffern erforderlich ist (obwohl diese dennoch
              als <username>root</username> ausgef&uuml;hrt werden
              m&uuml;ssen).  <devicename>bpf</devicename>
              <emphasis>muss</emphasis> vorhanden sein, damit DHCP
              funktioniert.  Sind Sie sehr sicherheitsbewusst, sollten
              Sie <devicename>bpf</devicename> aus Ihrem Kernel
              entfernen, wenn Sie DHCP nicht verwenden.</para>
          </note>

        <para>Danach m&uuml;ssen Sie die vom Port
          <filename role="package">net/isc-dhcp3</filename> erzeugte
          Vorlage f&uuml;r <filename>dhcpd.conf</filename> anpassen.
          Die bei der Installation erzeugte Datei
          <filename>/usr/local/etc/dhcpd.conf.sample</filename>
          sollten Sie nach
          <filename>/usr/local/etc/dhcpd.conf</filename> kopieren,
          bevor Sie Ver&auml;nderungen vornehmen.</para>
      </sect3>

      <sect3>
        <title>Den DHCP-Server einrichten</title>

        <indexterm>
          <primary>DHCP</primary>
          <secondary>dhcpd.conf</secondary>
        </indexterm>

        <para><filename>dhcpd.conf</filename> besteht aus Festlegungen
          zu Subnetzen und Rechnern und l&auml;sst sich am besten an
          einem Beispiel erkl&auml;ren:</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>Diese Option beschreibt die Dom&auml;ne, die den
                Clients als Standardsuchdom&auml;ne zugewiesen wird.
		Weitere Informationen finden Sie in der Hilfeseite
		&man.resolv.conf.5;.</para>
            </callout>

            <callout arearefs="domain-name-servers">
              <para>Diese Option legt eine, durch Kommata getrennte
                Liste von DNS-Servern fest, die von den Clients
                verwendet werden sollen.</para>
            </callout>

            <callout arearefs="subnet-mask">
              <para>Die den Clients zugewiesene Netzmaske.</para>
            </callout>

            <callout arearefs="default-lease-time">
              <para>Ein Client kann eine Lease einer bestimmten Dauer
                anfordern.  Geschieht dies nicht, weist der Server eine
                Lease mit einer vorgegebenen Ablaufdauer (in Sekunden)
                zu.</para>
            </callout>

            <callout arearefs="max-lease-time">
              <para>Die maximale Zeitdauer, f&uuml;r die der Server
                Konfigurationsinformationen vergibt.  Sollte ein Client
                eine l&auml;ngere Zeitspanne anfordern, wird dennoch
                nur der Wert <literal>max-lease-time</literal> in
                Sekunden zugewiesen.</para>
            </callout>

            <callout arearefs="ddns-update-style">
              <para>Diese Option legt fest, ob der DHCP-Server eine
                DNS-Aktualisierung versuchen soll, wenn
                Konfigurationsdateien vergeben oder zur&uuml;ckgezogen
                werden.  In der ISC-Implementation
                <emphasis>muss</emphasis> diese Option gesetzt sein.
              </para>
            </callout>

            <callout arearefs="range">
              <para>Dadurch werden die IP-Adressen festgelegt, die den
                Clients zugewiesen werden k&ouml;nnen.  IP-Adressen
                zwischen diesen Grenzen sowie die einschlie&szlig;enden
                Adressen werden den Clients zugewiesen.</para>
            </callout>

            <callout arearefs="routers">
              <para>Legt den Standard-Gateway fest, der den Clients
                zugewiesen wird.</para>
            </callout>

            <callout arearefs="hardware">
              <para>Die (Hardware-)MAC-Adresse eines Rechners (durch die
                der DHCP-Server den Client erkennt, der eine Anforderung
                an ihn stellt).</para>
            </callout>

            <callout arearefs="fixed-address">
              <para>Einem Rechner soll immer die gleiche IP-Adresse
                zugewiesen werden.  Beachten Sie, dass hier auch ein
                Rechnername g&uuml;ltig ist, da der DHCP-Server den
                Rechnernamen aufl&ouml;st, bevor er die
                Konfigurationsinformationen zuweist.</para>
            </callout>
          </calloutlist>

        <para>Nachdem Sie <filename>dhcpd.conf</filename> fertig
          konfiguriert haben, k&ouml;nnen Sie den DHCP-Server starten:
        </para>

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

        <para>Sollten Sie die Konfiguration Ihres Servers einmal
          ver&auml;ndern m&uuml;ssen, reicht es nicht aus, ein
          <literal>SIGHUP</literal>-Signal an
          <application>dhcpd</application> zu senden, weil damit die
          Konfiguration <emphasis>nicht</emphasis> erneut geladen wird
          (im Gegensatz zu den meisten Daemonen).  Sie m&uuml;ssen
          den Prozess vielmehr mit dem Signal
          <literal>SIGTERM</literal> stoppen, um ihn
          anschlie&szlig;end neu zu starten.</para>
      </sect3>

      <sect3>
        <title>Dateien</title>

        <indexterm>
          <primary>Server</primary>
          <secondary>Konfigurationsdateien</secondary>
        </indexterm>

        <itemizedlist>
          <listitem>
            <para><filename>/usr/local/sbin/dhcpd</filename></para>

            <para><application>dhcpd</application> ist statisch
              gelinkt und befindet sich in
              <filename>/usr/local/sbin</filename>.  Lesen Sie auch die
              mit dem Port installierte Hilfeseite &man.dhcpd.8;, wenn Sie
              weitere Informationen zu <application>dhcpd</application>
              ben&ouml;tigen.</para>
          </listitem>

          <listitem>
            <para><filename>/usr/local/etc/dhcpd.conf</filename></para>

            <para><application>dhcpd</application> ben&ouml;tigt die
              Konfigurationsdatei
              <filename>/usr/local/etc/dhcpd.conf</filename>, damit
              der Server den Clients seine Dienste anbieten kann.
              Diese Datei muss alle Informationen enthalten, die an
              die Clients weitergegeben werden soll.  Au&szlig;erdem
              sind hier Informationen zur Konfiguration des Servers
              enthalten.  Die mit dem Port installierte Hilfeseite
	      &man.dhcpd.conf.5; enth&auml;lt weitere Informationen.</para>
          </listitem>

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

            <para>Der DHCP-Server hat eine Datenbank, die alle
              vergebenen Leases enth&auml;lt.  Diese wird als Logdatei
              erzeugt.  Weitere Informationen finden Sie in der vom
              Port installierten Hilfeseite &man.dhcpd.leases.5;.</para>
          </listitem>

          <listitem>
            <para><filename>/usr/local/sbin/dhcrelay</filename></para>

            <para><application>dhcrelay</application> wird in
              komplexen Umgebungen verwendet, in denen ein DHCP-Server
              eine Anfrage eines Clients an einen DHCP-Server in einem
              separaten Netzwerk weiterleitet.  Die vom Port
	      installierte Hilfeseite &man.dhcrelay.8; enth&auml;lt
	      weitere Informationen.</para>
          </listitem>
        </itemizedlist>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="network-dns">
    <title>DNS (Domain Name Service)</title>

    <para>Dieser Abschnitt ist noch nicht &uuml;bersetzt.  Lesen Sie
      bitte <ulink
      url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/dns.html">
      das Original in englischer Sprache</ulink>.</para>
  </sect1>

  <sect1 id="network-ntp">
    <title>NTP (Network Time Protocol)</title>

    <para>Dieser Abschnitt ist noch nicht &uuml;bersetzt.  Lesen Sie
      bitte <ulink
      url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ntp.html">
      das Original in englischer Sprache</ulink>.</para>
  </sect1>

  <sect1 id="network-natd">
    <title>NATD (Network Address Translation Daemon)</title>

    <para>Dieser Abschnitt ist noch nicht &uuml;bersetzt.  Lesen Sie
      bitte <ulink
      url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/natd.html">
      das Original in englischer Sprache</ulink>.</para>
  </sect1>

  <sect1 id="network-inetd">
    <title>inetd <quote>Super-Server</quote></title>

    <para>Dieser Abschnitt ist noch nicht &uuml;bersetzt.  Lesen Sie
      bitte <ulink
      url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/inetd.html">
      das Original in englischer Sprache</ulink>.</para>
  </sect1>

  <sect1 id="network-plip">
    <title>Parallel Line IP (PLIP)</title>

    <para>Dieser Abschnitt ist noch nicht &uuml;bersetzt.  Lesen Sie
      bitte <ulink
      url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/plip.html">
      das Original in englischer Sprache</ulink>.</para>
  </sect1>

  <sect1 id="network-ipv6">
    <title>IPv6</title>

    <para>Dieser Abschnitt ist noch nicht &uuml;bersetzt.  Lesen Sie
      bitte <ulink
      url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ipv6.html">
      das Original in englischer Sprache</ulink>.</para>
  </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:
-->
