books/faq/book.sgml 1.780 -> 1.781 books/handbook/Makefile 1.98 -> 1.100 books/handbook/book.sgml 1.164 -> 1.166 books/handbook/chapters.ent 1.33 -> 1.35 books/handbook/firewalls/chapter.sgml 1.66 -> 1.67 books/handbook/mirrors/chapter.sgml 1.416 -> 1.418 books/handbook/network-servers/chapter.sgml 1.79 -> 1.81 books/handbook/preface/preface.sgml 1.30 -> 1.32 flyer/Makefile 1.1 -> 1.2 flyer/flyer.tex 1.10 -> 1.13 Obtained from: The FreeBSD German Documentation Project.
5660 lines
222 KiB
Text
5660 lines
222 KiB
Text
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD German Documentation Project
|
|
|
|
$FreeBSD$
|
|
$FreeBSDde: de-docproj/books/handbook/network-servers/chapter.sgml,v 1.57 2006/05/13 18:19:38 jkois Exp $
|
|
basiert auf: 1.81
|
|
-->
|
|
|
|
<chapter id="network-servers">
|
|
<chapterinfo>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
<contrib>Überarbeitet von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<!-- 23 July 2004 -->
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Johann</firstname>
|
|
<surname>Kois</surname>
|
|
<contrib>Übersetzt von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</chapterinfo>
|
|
|
|
<title>Netzwerkserver</title>
|
|
|
|
<sect1 id="network-servers-synopsis">
|
|
<title>Übersicht</title>
|
|
|
|
<para>Dieses Kapitel beschreibt einige der häufiger verwendeten
|
|
Netzwerkdienste auf &unix;-Systemen. Beschrieben werden
|
|
Installation und Konfiguration sowie Test und Wartung
|
|
verschiedener Netzwerkdienste. Zusä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>Den <application>inetd</application>-Daemon konfigurieren
|
|
können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man ein Netzwerkdateisystem einrichtet.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Einen <foreignphrase>Network Information
|
|
Server</foreignphrase> einrichten können, um damit
|
|
Benutzerkonten im Netzwerk zu verteilen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Rechner durch Nutzung von DHCP automatisch für ein
|
|
Netzwerk konfigurieren können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>In der Lage sein, einen <foreignphrase>Domain Name
|
|
Server</foreignphrase> einzurichten.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Den <application>Apache</application> HTTP-Server
|
|
konfigurieren können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man einen <foreignphrase>File Transfer
|
|
Protocol</foreignphrase> (FTP)-Server einrichtet.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Mit <application>Samba</application> einen Datei- und
|
|
Druckserver für &windows;-Clients konfigurieren
|
|
können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Unter Nutzung des NTP-Protokolls Datum und Uhrzeit
|
|
synchronisieren sowie einen Zeitserver installieren
|
|
kö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>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man zusätzliche Softwarepakete von
|
|
Drittherstellern installiert (<xref linkend="ports">).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 id="network-inetd">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Chern</firstname>
|
|
<surname>Lee</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author>
|
|
<contrib>Aktualisiert für &os; 6.1-RELEASE vom </contrib>
|
|
<othername>&os; Documentation Project</othername>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Der <application>inetd</application>
|
|
<quote>Super-Server</quote></title>
|
|
|
|
<sect2 id="network-inetd-overview">
|
|
<title>Überblick</title>
|
|
|
|
<para>&man.inetd.8; wird manchmal auch als <quote>Internet
|
|
Super-Server</quote> bezeichnet, weil er Verbindungen für
|
|
mehrere Dienste verwaltet. Wenn eine Verbindung eintrifft,
|
|
bestimmt <application>inetd</application>, welches Programm
|
|
für die eingetroffene Verbindung zuständig ist,
|
|
aktiviert den entsprechenden Prozess und reicht den Socket an
|
|
ihn weiter (der Socket dient dabei als Standardein- und -ausgabe
|
|
sowie zur Fehlerbehandlung). Der Einsatz des
|
|
<application>inetd</application>-Daemons an Stelle
|
|
viele einzelner Daemonen kann auf nicht komplett ausgelasteten
|
|
Servern zu einer Verringerung der Systemlast führen.</para>
|
|
|
|
<para><application>inetd</application> wird vor allem dazu
|
|
verwendet, andere Daemonen zu aktivieren, einige Protokolle
|
|
werden aber auch direkt verwaltet. Dazu gehören
|
|
<application>chargen</application>,
|
|
<application>auth</application>, sowie
|
|
<application>daytime</application>.</para>
|
|
|
|
<para>Dieser Abschnitt beschreibt die Konfiguration von
|
|
<application>inetd</application> durch Kommandozeilenoptionen
|
|
sowie die Konfigurationsdatei
|
|
<filename>/etc/inetd.conf</filename>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-settings">
|
|
<title>Einstellungen</title>
|
|
|
|
<para><application>inetd</application> wird durch das
|
|
&man.rc.8;-System initialisiert. Die Option
|
|
<literal>inetd_enable</literal> ist in der Voreinstellung zwar
|
|
auf <literal>NO</literal> gesetzt, sie kann aber in
|
|
Abhängigkeit von der vom Benutzer bei der Installation
|
|
gewählten Konfiguration von
|
|
<application>sysinstall</application> aktiviert werden.
|
|
Die Verwendung von
|
|
<programlisting>inetd_enable="YES"</programlisting> oder
|
|
<programlisting>inetd_enable="NO"</programlisting> in
|
|
<filename>/etc/rc.conf</filename> deaktiviert oder startet
|
|
<application>inetd</application> beim Systemstart. Über
|
|
den Befehl <programlisting>/etc/rc.d/inetd rcvar</programlisting>
|
|
können Sie die aktuelle Konfiguration abfragen.</para>
|
|
|
|
<para>Weitere Optionen können über die Option
|
|
<literal>inetd_flags</literal> an
|
|
<application>inetd</application> übergeben werden.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-cmdline">
|
|
<title>Kommandozeilenoptionen</title>
|
|
|
|
<para>Wie die meisten anderen Server-Daemonen lässt
|
|
sich auch <application>inetd</application> über
|
|
verschiedene Optionen steuern. Die vollständige Syntax
|
|
für <application>inetd</application> lautet:</para>
|
|
|
|
<para><command>inetd</command> <option>[-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a address | hostname]
|
|
[-p filename] [-R rate] [-s maximum] [configuration file]</option></para>
|
|
|
|
<para>Die verschiedenen Optionen können über die Option
|
|
<literal>inetd_flags</literal> der Datei
|
|
<filename>/etc/rc.conf</filename> an
|
|
<application>inetd</application> übergeben werden. In
|
|
der Voreinstellung hat diese Option den Wert
|
|
<literal>-wW -C 60</literal>. Durch das Setzen dieser Werte
|
|
wird das TCP-Wrapping für alle
|
|
<application>inetd</application>-Dienste aktiviert.
|
|
Zusätzlich kann eine einzelne IP-Adresse jeden Dienst
|
|
nur maximal 60 Mal pro Minute anfordern.</para>
|
|
|
|
<para>Für Einsteiger ist es erfreulich, dass diese Parameter
|
|
in der Regel nicht angepasst werden müssen. Da diese
|
|
Parameter aber dennoch von Interesse sein können
|
|
(beispielsweise, wenn Sie eine enorme Anzahl von
|
|
Verbindungsanfragen erhalten), werden einige dieser
|
|
einschränkenden Parameter im Folgenden näher
|
|
erläutert. Eine vollständige Auflistung aller
|
|
Optionen finden Sie hingegen in &man.inetd.8;.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>-c maximum</term>
|
|
|
|
<listitem>
|
|
<para>Legt die maximale Anzahl von parallen Aufrufen eines
|
|
Dienstes fest; in der Voreinstellung gibt es keine
|
|
Einschränkung. Diese Einstellung kann für jeden
|
|
Dienst durch Setzen des <option>max-child</option>
|
|
-Parameters festgelegt werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>-C rate</term>
|
|
|
|
<listitem>
|
|
<para>Legt fest, wie oft ein Dienst von einer einzelnen
|
|
IP-Adresse in einer Minute aufgerufen werden kann; in der
|
|
Voreinstellung gibt es keine Einschränkung. Dieser
|
|
Wert kann für jeden Dienst durch Setzen des
|
|
Parameters
|
|
<option>max-connections-per-ip-per-minute</option>
|
|
festgelegt werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>-R rate</term>
|
|
|
|
<listitem>
|
|
<para>Legt fest, wie oft ein Dienst in der Minute aktiviert
|
|
werden kann; in der Voreinstellung sind dies 256
|
|
Aktivierungen pro Minute. Ein Wert von 0 erlaubt
|
|
unbegrenzt viele Aktivierungen.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>-s maximum</term>
|
|
|
|
<listitem>
|
|
<para>Legt fest, wie oft ein Dienst in der Minute von einer
|
|
einzelnen IP-Adresse aus aktiviert werden kann; in der
|
|
Voreinstellung gibt es hier keine Beschränkung. Diese
|
|
Einstellung kann für jeden Dienst durch die Angabe
|
|
<option>max-child-per-ip</option> angepasst werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-conf">
|
|
<!-- XXX Dieser Abschnitt ist etwas verwirrend und sollte mal überarbeitet werden. -->
|
|
<title><filename>inetd.conf</filename></title>
|
|
|
|
<para>Die Konfiguration von <application>inetd</application>
|
|
erfolgt über die Datei
|
|
<filename>/etc/inetd.conf</filename>.</para>
|
|
|
|
<para>Wenn <filename>/etc/inetd.conf</filename> geändert
|
|
wird, kann <application>inetd</application> veranlasst werden,
|
|
seine Konfigurationsdatei neu einzulesen.</para>
|
|
|
|
<example id="network-inetd-reread">
|
|
<title>Die <application>inetd</application>-Konfiguration neu
|
|
einlesen</title>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/inetd reload</userinput></screen>
|
|
</example>
|
|
|
|
<para>Jede Zeile der Konfigurationsdatei beschreibt jeweils einen
|
|
Daemon. Kommentare beginnen mit einem <quote>#</quote>. Ein
|
|
Eintrag der Datei <filename>/etc/inetd.conf</filename> hat
|
|
folgenden Aufbau:</para>
|
|
|
|
<programlisting>service-name
|
|
socket-type
|
|
protocol
|
|
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
|
|
user[:group][/login-class]
|
|
server-program
|
|
server-program-arguments</programlisting>
|
|
|
|
<para>Ein Eintrag für den IPv4 verwendenden
|
|
&man.ftpd.8;-Daemon könnte so aussehen:</para>
|
|
|
|
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>service-name</term>
|
|
|
|
<listitem>
|
|
<para>Der Dienstname eines bestimmten Daemons. Er muss
|
|
einem in <filename>/etc/services</filename> aufgelisteten
|
|
Dienst entsprechen. In dieser Datei wird festgelegt,
|
|
welchen Port <application>inetd</application> abhören
|
|
muss. Wenn ein neuer Dienst erzeugt wird, muss er zuerst
|
|
in die Datei <filename>/etc/services</filename>
|
|
eingetragen werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>socket-type</term>
|
|
|
|
<listitem>
|
|
<para>Entweder <literal>stream</literal>,
|
|
<literal>dgram</literal>, <literal>raw</literal>, oder
|
|
<literal>seqpacket</literal>. <literal>stream</literal>
|
|
muss für verbindungsorientierte TCP-Daemonen
|
|
verwendet werden, während <literal>dgram</literal>
|
|
das <acronym>UDP</acronym>-Protokoll verwaltet.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>protocol</term>
|
|
|
|
<listitem>
|
|
<para>Eines der folgenden:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Protokoll</entry>
|
|
|
|
<entry>Bedeutung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>tcp, tcp4</entry>
|
|
|
|
<entry>TCP (IPv4)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>udp, udp4</entry>
|
|
|
|
<entry>UDP (IPv4)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>tcp6</entry>
|
|
|
|
<entry>TCP (IPv6)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>udp6</entry>
|
|
|
|
<entry>UDP (IPv6)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>tcp46</entry>
|
|
|
|
<entry>TCP sowohl unter IPv4 als auch unter IPv6</entry>
|
|
</row>
|
|
<row>
|
|
<entry>udp46</entry>
|
|
|
|
<entry>UDP sowohl unter IPv4 als auch unter IPv6</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]</term>
|
|
|
|
<listitem>
|
|
<para><option>wait|nowait</option> gibt an, ob der von
|
|
<application>inetd</application> aktivierte Daemon seinen
|
|
eigenen Socket verwalten kann oder nicht.
|
|
<option>dgram</option>-Sockets müssen die Option
|
|
<option>wait</option> verwenden, während Daemonen mit
|
|
Stream-Sockets, die normalerweise auch aus mehreren
|
|
Threads bestehen, die Option <option>nowait</option>
|
|
verwenden sollten. Die Option <option>wait</option>
|
|
gibt in der Regel mehrere Sockets an einen einzelnen
|
|
Daemon weiter, während <option>nowait</option>
|
|
für jeden neuen Socket einen Childdaemon erzeugt.</para>
|
|
|
|
<para>Die maximale Anzahl an Child-Daemonen, die
|
|
<application>inetd</application> erzeugen kann, wird durch
|
|
die Option <option>max-child</option> festgelegt. Wenn
|
|
ein bestimmter Daemon 10 Instanzen benötigt, sollte
|
|
der Wert <literal>/10</literal> hinter die Option
|
|
<option>nowait</option> gesetzt werden. Geben Sie
|
|
hingegen den Wert <literal>/0</literal> an, gibt es
|
|
keine Beschränkung.</para>
|
|
|
|
<para>Zusätzlich zu <option>max-child</option> kann
|
|
die maximale Anzahl von Verbindungen eines Rechners mit
|
|
einem bestimmten Daemon durch zwei weitere Optionen
|
|
beschränkt werden. Die Option
|
|
<option>max-connections-per-ip-per-minute</option>
|
|
legt die maximale Anzahl von Verbindungsversuchen fest,
|
|
die von einer bestimmten IP-Adresse aus unternommen werden
|
|
können. Ein Wert von zehn würde die maximale
|
|
Anzahl von Verbindungsversuchen einer IP-Adresse mit einem
|
|
bestimmten Dienst auf zehn Versuche in der Minute
|
|
beschränken. Durch die Angabe der Option
|
|
<option>max-child-per-ip</option> können Sie hingegen
|
|
festlegen, wieviele Child-Daemonen von einer bestimmten
|
|
IP-Adresse aus gestartet werden können. Durch diese
|
|
Optionen lassen sich ein absichtlicher oder unabsichtlicher
|
|
Ressourcenverbrauch sowie die Auswirkungen eines
|
|
<literal>Denial of Service (DoS)</literal>-Angriffs auf
|
|
einen Rechner begrenzen.</para>
|
|
|
|
<para>Sie müssen hier entweder <option>wait</option>
|
|
oder <option>nowait</option> angeben. Die Angabe von
|
|
<option>max-child</option>,
|
|
<option>max-connections-per-ip-per-minute</option> und
|
|
<option>max-child-per-ip</option> ist hingegen
|
|
optional.</para>
|
|
|
|
<para>Ein multithread-Daemon vom Streamtyp ohne die Optionen
|
|
<option>max-child</option>,
|
|
<option>max-connections-per-ip-per-minute</option> oder
|
|
<option>max-child-per-ip</option> sieht so aus:
|
|
<literal>nowait</literal></para>
|
|
|
|
<para>Der gleiche Daemon mit einer maximal möglichen
|
|
Anzahl von 10 parallelen Daemonen würde so aussehen:
|
|
<literal>nowait/10</literal></para>
|
|
|
|
<para>Wird zusätzlich die Anzahl der möglichen
|
|
Verbindungen pro Minute für jede IP-Adresse auf
|
|
20 sowie die mögliche Gesamtzahl von Childdaemonen
|
|
auf 10 begrenzt, so sieht der Eintrag so aus:
|
|
<literal>nowait/10/20</literal></para>
|
|
|
|
<para>All diese Optionen werden vom
|
|
&man.fingerd.8;-Daemon bereits in der Voreinstellung
|
|
verwendet:</para>
|
|
|
|
<programlisting>finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s</programlisting>
|
|
|
|
<para>Will man die maximale Anzahl von Child-Daemonen auf
|
|
100 beschränken, wobei von jeder IP-Adresse aus
|
|
maximal 5 Child-Daemonen gestartet werden dürfen,
|
|
verwendet man den folgenden Eintrag:
|
|
<literal>nowait/100/0/5</literal>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>user</term>
|
|
|
|
<listitem>
|
|
<para>Der Benutzername, unter dem der jeweilige Daemon
|
|
laufen soll. Meistens laufen Daemonen als User
|
|
<username>root</username>. Aus Sicherheitsgründen
|
|
laufen einige Server aber auch als User
|
|
<username>daemon</username>, oder als am wenigsten
|
|
privilegierter User <username>nobody</username>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>server-program</term>
|
|
|
|
<listitem>
|
|
<para>Der vollständige Pfad des Daemons, der eine
|
|
Verbindung entgegennimmt. Wird der Daemon von
|
|
<application>inetd</application> intern bereitgestellt,
|
|
sollte die Option <option>internal</option> verwendet
|
|
werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>server-program-arguments</term>
|
|
|
|
<listitem>
|
|
<para>Dieser Eintrag legt (gemeinsam mit
|
|
<option>server-program</option> und beginnend mit
|
|
<literal>argv[0]</literal>), die Argumente fest, die bei
|
|
der Aktivierung an den Daemon übergeben werden.
|
|
Wenn die Anweisung auf der Kommandozeile also
|
|
<command>mydaemon -d</command> lautet, wäre
|
|
<literal>mydaemon -d</literal> auch der Wert der Option
|
|
<option>server program arguments</option>. Wenn es sich
|
|
beim Daemon um einen internen Dienst handelt, sollte
|
|
wiederum die Option <option>internal</option> verwendet
|
|
werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-security">
|
|
<title>Sicherheit</title>
|
|
|
|
<para>Abhängig von der bei der Installation festgelegten
|
|
Konfiguration werden viele der von
|
|
<application>inetd</application> verwalteten Dienste automatisch
|
|
aktiviert! Wenn Sie einen bestimmten Daemon nicht
|
|
benötigen, sollten Sie ihn deaktivieren! Dazu kommentieren
|
|
Sie den jeweiligen Daemon in <filename>/etc/inetd.conf</filename>
|
|
mit einem <quote>#</quote> aus, um danach die
|
|
<link linkend="network-inetd-reread">inetd-Konfiguration neu
|
|
einzulesen</link>. Einige Daemonen, zum Beispiel
|
|
<application>fingerd</application>, sollten generell deaktiviert
|
|
werden, da sie zu viele Informationen an einen potentiellen
|
|
Angreifer liefern.</para>
|
|
|
|
<para>Einige Daemonen haben unsichere Einstellungen, etwa
|
|
große oder nichtexistierende Timeouts für
|
|
Verbindungsversuche, die es einem Angreifer erlauben, über
|
|
lange Zeit langsam Verbindungen zu einem bestimmten Daemon
|
|
aufzubauen, um dessen verfügbare Ressourcen zu verbrauchen.
|
|
Es ist daher eine gute Idee, diese Daemonen durch die Optionen
|
|
<option>max-connections-per-ip-per-minute</option>,
|
|
<option>max-child</option> sowie
|
|
<option>max-child-per-ip</option> zu beschränken, wenn
|
|
Sie sehr viele Verbindungsversuche mit Ihrem System
|
|
registrieren.</para>
|
|
|
|
<para>TCP-Wrapping ist in der Voreinstellung aktiviert. Lesen Sie
|
|
&man.hosts.access.5;, wenn Sie weitere Informationen zum
|
|
Setzen von TCP-Beschränkungen für verschiedene von
|
|
<application>inetd</application> aktivierte Daemonen
|
|
benötigen.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-misc">
|
|
<title>Verschiedenes</title>
|
|
|
|
<para>Bei <application>daytime</application>,
|
|
<application>time</application>,
|
|
<application>echo</application>,
|
|
<application>discard</application>,
|
|
<application>chargen</application>, und
|
|
<application>auth</application> handelt es sich um intern
|
|
von <application>inetd</application> bereitgestellte Dienste.
|
|
</para>
|
|
|
|
<para>Der <application>auth</application>-Dienst bietet
|
|
Identifizierungsdienste über das Netzwerk
|
|
an und ist bis zu einem bestimmten Grad konfigurierbar,
|
|
während die meisten anderen Dienste nur aktiviert
|
|
oder deaktiviert werden können.</para>
|
|
|
|
<para>Eine ausführliche Beschreibung finden Sie in
|
|
&man.inetd.8;.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-nfs">
|
|
<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 – Network File System</title>
|
|
|
|
<indexterm><primary>NFS</primary></indexterm>
|
|
|
|
<para>Eines der vielen von FreeBSD unterstützten Dateisysteme
|
|
ist das Netzwerkdateisystem, das auch als <acronym role="Network
|
|
File System">NFS</acronym>
|
|
bekannt ist. <acronym role="Network File System">NFS</acronym>
|
|
ermöglicht es einem System, Dateien und Verzeichnisse
|
|
über ein Netzwerk mit anderen zu teilen. Über
|
|
<acronym role="Network File System">NFS</acronym> können
|
|
Benutzer und Programme auf Daten entfernter Systeme zugreifen, und
|
|
zwar genauso, wie wenn es sich um lokale Daten handeln würde.
|
|
</para>
|
|
|
|
<para>Einige der wichtigsten Vorteile von <acronym>NFS</acronym>
|
|
sind:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Lokale Arbeitsstationen benötigen weniger
|
|
Plattenplatz, da gemeinsam benutzte Daten nur auf einem
|
|
einzigen Rechner vorhanden sind. Alle anderen Stationen
|
|
greifen über das Netzwerk auf diese Daten zu.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Benutzer benötigen nur noch ein zentrales
|
|
Heimatverzeichnis auf einem <acronym>NFS</acronym>-Server.
|
|
Diese Verzeichnisse sind über das Netzwerk auf allen
|
|
Stationen verfügbar.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Speichergeräte wie Disketten-, CD-ROM- oder
|
|
&iomegazip;-Laufwerke können über das Netzwerk von
|
|
anderen Arbeitstationen genutzt werden. Dadurch sind für
|
|
das gesamte Netzwerk deutlich weniger Speichergeräte
|
|
nö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
|
|
über das Netzwerk auf die Daten zu, die auf dem Server
|
|
gespeichert sind. Damit dies korrekt funktioniert, müssen
|
|
einige Prozesse konfiguriert und gestartet werden:</para>
|
|
|
|
<note>
|
|
<para>&os; 4.X verwendet <application>portmap</application>
|
|
an Stelle von <application>rpcbind</application>. Benutzer
|
|
von &os; 4.X müssen daher in den folgenden
|
|
Beispielen <application>rpcbind</application> durch
|
|
<application>portmap</application> ersetzen.</para>
|
|
</note>
|
|
|
|
<para>Der Server benötigt folgende Daemonen:</para>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>Server</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Dateiserver</primary>
|
|
<secondary>Unix-Clients</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><application>rpcbind</application></primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><application>portmap</application></primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><application>mountd</application></primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><application>nfsd</application></primary>
|
|
</indexterm>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*">
|
|
<colspec colwidth="3*">
|
|
|
|
<thead>
|
|
<row>
|
|
<entry>Daemon</entry>
|
|
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><application>nfsd</application></entry>
|
|
|
|
<entry>Der <acronym>NFS</acronym>-Daemon. Er bearbeitet
|
|
Anfragen der <acronym>NFS</acronym>-Clients.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>mountd</application></entry>
|
|
|
|
<entry>Der <acronym>NFS</acronym>-Mount-Daemon. Er
|
|
bearbeitet die Anfragen, die &man.nfsd.8; an ihn
|
|
weitergibt.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>rpcbind</application></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ür eine normale und korrekte
|
|
Arbeit ist er allerdings nicht erforderlich. Mehr erfahren
|
|
Sie in der Hilfeseite &man.nfsiod.8;.</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ässt sich leicht
|
|
einrichten. Die nötigen Prozesse werden durch einige
|
|
Ä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 der Datei
|
|
<filename>/etc/rc.conf</filename> gesetzt sind:</para>
|
|
|
|
<programlisting>rpcbind_enable="YES"
|
|
nfs_server_enable="YES"
|
|
mountd_flags="-r"</programlisting>
|
|
|
|
<para><application>mountd</application> lä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ßerdem ist es möglich, Zugriffsoptionen
|
|
festzulegen. Es gibt viele verschiedene Optionen, allerdings
|
|
werden hier nur einige von ihnen erwähnt. Wenn Sie
|
|
Informationen zu weiteren Optionen benötigen, lesen Sie
|
|
&man.exports.5;.</para>
|
|
|
|
<para>Nun folgen einige Beispieleinträge fü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ürlich von Ihrer Arbeitsumgebung und Ihrer
|
|
Netzwerkkonfiguration abhängen. Das nächste
|
|
Beispiel exportiert das Verzeichnis <filename>/cdrom</filename>
|
|
für drei Rechner, die sich in derselben Domäne wie
|
|
der Server befinden oder für die entsprechende
|
|
Einträge in <filename>/etc/hosts</filename> existieren.
|
|
Die Option <option>-ro</option> kennzeichnet das
|
|
exportierte Dateisystem als schreibgeschützt. Durch dieses
|
|
Flag ist das entfernte System nicht in der Lage, das exportierte
|
|
Dateisystem zu verändern.</para>
|
|
|
|
<programlisting>/cdrom -ro host1 host2 host3</programlisting>
|
|
|
|
<para>Die nächste Zeile exportiert <filename>/home</filename>
|
|
auf drei durch IP-Adressen bestimmte Rechner. Diese Einstellung
|
|
ist nützlich, wenn Sie über ein privates Netzwerk ohne
|
|
<acronym>DNS</acronym>-Server verfügen. Optional
|
|
könnten interne Rechnernamen auch in
|
|
<filename>/etc/hosts</filename> konfiguriert werden.
|
|
Benötigen Sie hierzu weitere Informationen, lesen Sie bitte
|
|
&man.hosts.5;. Durch das Flag <option>-alldirs</option> wird es
|
|
möglich, auch Unterverzeichnisse als Mountpunkte
|
|
festzulegen. Dies bedeutet aber nicht, dass alle
|
|
Unterverzeichnisse eingehängt werden, vielmehr wird es dem
|
|
Client ermöglicht, nur diejenigen Verzeichnisse
|
|
einzuhängen, die auch benötigt werden.</para>
|
|
|
|
<programlisting>/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4</programlisting>
|
|
|
|
<para>Die nächste Zeile exportiert <filename>/a</filename>,
|
|
damit Clients von verschiedenen Domänen auf das Dateisystem
|
|
zugreifen kö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ührt wird.</para>
|
|
|
|
<para>Jede Zeile in <filename>/etc/exports</filename> entspricht
|
|
der Exportinformation für ein Dateisystem auf einen
|
|
Rechner. Ein entfernter Rechner kann fü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ären folgende Zeilen ungültig:</para>
|
|
|
|
<programlisting>#Nicht erlaubt, wenn /usr ein einziges Dateisystem ist
|
|
/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ässig. Der korrekte
|
|
Eintrag sieht daher so aus:</para>
|
|
|
|
<programlisting>/usr/src /usr/ports client</programlisting>
|
|
|
|
<para>Die Eigenschaften eines auf einen anderen Rechner
|
|
exportierten Dateisystems müssen alle in einer Zeile
|
|
stehen. Zeilen, in denen kein Rechner festgelegt wird, werden
|
|
als einzelner Rechner behandelt. Dies schränkt die
|
|
Möglichkeiten zum Export von Dateisystemen ein, für
|
|
die meisten Anwender ist dies aber kein Problem.</para>
|
|
|
|
<para>Eine gü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>Der Daemon <application>mountd</application> muss
|
|
die Datei <filename>/etc/exports</filename> nach jeder
|
|
Änderung neu einlesen, damit die Ä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önnen Sie das
|
|
<command>mountd</command>-&man.rc.8;-Skript auch mit dem
|
|
passenden Parameter aufrufen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/mountd reload</userinput></screen>
|
|
|
|
<para>Lesen Sie bitte <xref linkend="configtuning-rcd">
|
|
des Handbuchs für Informationen zum Einsatz der
|
|
rc-Skripte.</para>
|
|
|
|
<para>Eine weitere Möglichkeit, diese Änderungen zu
|
|
übernehmen, wäre der Neustart des Systems. Dies ist
|
|
allerdings nicht nötig. Wenn Sie die folgenden
|
|
Befehle als <username>root</username> ausführen, sollte
|
|
alles korrekt gestartet werden.</para>
|
|
|
|
<para>Auf dem <acronym>NFS</acronym>-Server:</para>
|
|
|
|
<screen>&prompt.root; <userinput>rpcbind</userinput>
|
|
&prompt.root; <userinput>nfsd -u -t -n 4</userinput>
|
|
&prompt.root; <userinput>mountd -r</userinput></screen>
|
|
|
|
<para>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ängen zu können. In unseren Beispielen nennen wir
|
|
den Server <hostid>server</hostid>, den Client
|
|
<hostid>client</hostid>. Wenn Sie ein entferntes Dateisystem
|
|
nur zeitweise einhängen wollen, oder nur Ihre Konfiguration
|
|
testen möchten, führen Sie auf dem Client als
|
|
<username>root</username> einen Befehl ähnlich dem
|
|
folgenden aus:</para>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>Dateisysteme einhä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ä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ängen wollen, fügen Sie das
|
|
Dateisystem in <filename>/etc/fstab</filename> ein. Dazu ein
|
|
Beispiel:</para>
|
|
|
|
<programlisting>server:/home /mnt nfs rw 0 0</programlisting>
|
|
|
|
<para>Eine Beschreibung aller Optionen enthält
|
|
die Hilfeseite &man.fstab.5;.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Praktische Anwendungen</title>
|
|
|
|
<para><acronym>NFS</acronym> ist in vielen Situationen
|
|
nützlich. Einige Anwendungsbereiche finden Sie in der
|
|
folgenden Liste:</para>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>Anwendungsbeispiele</secondary>
|
|
</indexterm>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Mehrere Maschinen können sich ein CD-ROM-Laufwerk
|
|
oder andere Medien teilen. Dies ist billiger und
|
|
außerdem praktischer, um Programme auf mehreren
|
|
Rechnern zu installieren.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>In größeren Netzwerken ist es praktisch,
|
|
einen zentralen <acronym>NFS</acronym>-Server einzurichten,
|
|
auf dem die Heimatverzeichnisse der Benutzer gespeichert
|
|
werden. Diese Heimatverzeichnisse werden über das
|
|
Netzwerk exportiert. Dadurch haben die Benutzer immer das
|
|
gleiche Heimatverzeichnis zur Verfügung,
|
|
unabhängig davon, an welchem Arbeitsplatz sie sich
|
|
anmelden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Verschiedene Rechner können auf ein gemeinsames
|
|
Verzeichnis <filename>/usr/ports/distfiles</filename>
|
|
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">
|
|
<sect2info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Wylie</firstname>
|
|
<surname>Stilwell</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Chern</firstname>
|
|
<surname>Lee</surname>
|
|
<contrib>Ü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ängt ein
|
|
entferntes Dateisystem automatisch ein,
|
|
wenn auf eine Datei oder ein Verzeichnis in diesem Dateisystem
|
|
zugegriffen wird. Dateisysteme, die über einen gewissen
|
|
Zeitraum inaktiv sind, werden von <application>amd</application>
|
|
automatisch abgehängt.
|
|
<application>amd</application> ist eine einfache
|
|
Alternative zum dauerhaften Einhä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ängt das Dateisystem automatisch ein.
|
|
<filename>/net</filename> wird zum Einhängen von
|
|
exportierten Dateisystemen von einer IP-Adresse verwendet,
|
|
während <filename>/host</filename> zum Einhä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ürde
|
|
<application>amd</application> veranlassen,
|
|
das von <hostid>foobar</hostid> exportierte Dateisystem
|
|
<filename>/usr</filename> einzuhängen.</para>
|
|
|
|
<example>
|
|
<title>Ein exportiertes Dateisystem mit
|
|
<application>amd</application> in den Verzeichnisbaum
|
|
einhängen</title>
|
|
|
|
<para>Sie können sich die verfü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ö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ösen und den gewünschten
|
|
Export in den Verzeichnisbaum einzuhängen.</para>
|
|
|
|
<para><application>amd</application> kann durch das Einfü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ü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ä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">
|
|
<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änkungen, die
|
|
zu ernsthaften Netzwerkproblemen, insbesondere mit NFS
|
|
führen kö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ßlich dann auf, wenn
|
|
(FreeBSD)-PC-Systeme mit Hochleistungsrechnern verbunden werden,
|
|
wie Systemen von Silicon Graphics, Inc. oder
|
|
Sun Microsystems, Inc. Das Einhängen via NFS
|
|
funktioniert problemlos, auch einige Dateioperationen
|
|
können erfolgreich sein. Plötzlich aber wird der
|
|
Server nicht mehr auf den Client reagieren, obwohl Anfragen von
|
|
anderen Rechnern weiterhin 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öglichkeit mehr, den
|
|
Client ordnungsgemäß zu beenden. Die einzige
|
|
Lösung ist es oft, den Rechner neu zu starten, da dieses
|
|
NFS-Problem nicht mehr behoben werden kann.</para>
|
|
|
|
<para>Die <quote>korrekte</quote> Lösung für dieses
|
|
Problem ist es, sich eine schnellere Ethernetkarte für
|
|
FreeBSD zu kaufen. Allerdings gibt es auch eine einfache und
|
|
meist zufriedenstellende Lösung, um dieses Problem zu
|
|
umgehen. Wenn es sich beim FreeBSD-System um den
|
|
<emphasis>Server</emphasis> handelt, verwenden Sie beim
|
|
Einhängen in den Verzeichnisbaum auf der Clientseite
|
|
zusätzlich die Option <option>-w=1024</option> . Wenn es
|
|
sich beim FreeBSD-System um den <emphasis>Client</emphasis>
|
|
handelt, dann hängen Sie das NFS-Dateisystem mit der
|
|
zusätzlichen Option <option>-r=1024</option> ein.
|
|
Diese Optionen können auf der Clientseite auch durch
|
|
das vierte Feld der Einträge in
|
|
<filename>/etc/fstab</filename> festgelegt werden, damit die
|
|
Dateisysteme automatisch eingehängt werden. Um die
|
|
Dateisysteme manuell einzuhängen, verwendet man bei
|
|
&man.mount.8; zusä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 ü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ötigen <acronym>UDP</acronym>-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 über eine Netzkarte mit geringer
|
|
Leistung verfügt. <filename>/sharedfs</filename> ist das
|
|
exportierte NFS -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ängt wird. In allen Fällen
|
|
können zusätzliche Optionen, wie z.B.
|
|
<option>hard</option>, <option>soft</option> oder
|
|
<option>bg</option> wü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ängen auf
|
|
<hostid>freebox</hostid>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t nfs -o -r=1024 fastws:/sharedfs /project</userinput></screen>
|
|
|
|
<para>&os; 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ä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änkungen auf die Lese- oder
|
|
Schreibgröße.</para>
|
|
|
|
<para>Für alle technisch Interessierten wird nun beschrieben,
|
|
was passiert, wenn dieser Fehler auftritt, und warum er
|
|
irreversibel ist. NFS arbeitet üblicherweise mit einer
|
|
<quote>Blockgröße</quote> von 8 kByte (obwohl
|
|
es kleinere Fragmente zulassen würde). Da die maximale
|
|
Rahmengröße von Ethernet 1500 Bytes
|
|
beträ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ä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), überschreiben die späteren
|
|
Pakete ihre Vorgänger, bevor diese vom System verarbeitet
|
|
werden (Überlauf!). Dies hat zur Folge, dass der NFS-Block
|
|
nicht mehr rekonstruiert und bestä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öße unter der maximalen
|
|
Größe der Ethernetpakete halten, können wir
|
|
sicherstellen, dass jedes vollständig erhaltene
|
|
Ethernetpaket individuell angesprochen werden kann und vermeiden
|
|
die Blockierung des Systems.</para>
|
|
|
|
<para>Überläufe können zwar nach wie vor auftreten,
|
|
wenn ein Hochleistungsrechner Daten auf ein PC-System
|
|
transferiert. Durch die besseren (und schnelleren) Netzkarten
|
|
treten solche Überläufe allerdings nicht mehr
|
|
<emphasis>zwingend</emphasis> auf, wenn
|
|
NFS-<quote>Einheiten</quote> übertragen werden. Tritt nun
|
|
ein Überlauf auf, wird die betroffene Einheit erneut
|
|
verschickt, und es besteht eine gute Chance, dass sie nun
|
|
erhalten, verarbeitet und bestätigt werden kann.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-nis">
|
|
<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><acronym role="Network Information Service">NIS</acronym>
|
|
wurde von Sun Microsystems entwickelt, um &unix;-Systeme
|
|
(ursprünglich &sunos;) zentral verwalten zu kö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ützt wird.</para>
|
|
|
|
<indexterm>
|
|
<primary>yellow pages</primary>
|
|
<see>NIS</see>
|
|
</indexterm>
|
|
|
|
<para><acronym role="Network Information Service">NIS</acronym> war
|
|
ursprünglich als <emphasis>Yellow Pages</emphasis> bekannt,
|
|
aus markenrechtlichen Gründen wurde der Name aber
|
|
geändert. Die alte Bezeichnung (sowie die Abkürzung YP)
|
|
wird aber nach wie vor häufig verwendet.</para>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Domä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äne auf gemeinsame
|
|
Konfigurationsdateien zu. Ein Systemadministrator wird dadurch
|
|
in die Lage versetzt, NIS-Clients mit minimalem Aufwand
|
|
einzurichten, sowie Änderungen an der Systemkonfiguration
|
|
von einem zentralen Ort aus durchzuführen.</para>
|
|
|
|
<indexterm>
|
|
<primary>Windows NT</primary>
|
|
</indexterm>
|
|
|
|
<para>Die Funktion entspricht dem Domä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ßen werden, wenn Sie NIS unter FreeBSD einrichten,
|
|
egal ob Sie einen Server oder einen Client konfigurieren:</para>
|
|
|
|
<indexterm>
|
|
<primary><application>rpcbind</application></primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><application>portmap</application></primary>
|
|
</indexterm>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*">
|
|
<colspec colwidth="3*">
|
|
|
|
<thead>
|
|
<row>
|
|
<entry>Begriff</entry>
|
|
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>NIS-Domänenname</entry>
|
|
|
|
<entry>Ein NIS-Masterserver sowie alle Clients
|
|
(inklusive der Slaveserver) haben einen
|
|
NIS-Domänennamen. Dieser hat (ähnlich den
|
|
&windowsnt;-Domänennamen) nichts mit DNS zu tun.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>rpcbind</application></entry>
|
|
|
|
<entry>Muss laufen, damit RPC (Remote Procedure Call, ein
|
|
von NIS verwendetes Netzwerkprotokoll) funktioniert.
|
|
NIS-Server sowie Clients funktionieren ohne
|
|
<application>rpcbind</application> nicht. Unter
|
|
&os; 4.X ersetzen Sie
|
|
<application>rpcbind</application> durch
|
|
<application>portmap</application>.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>ypbind</application></entry>
|
|
|
|
<entry><quote>Bindet</quote> einen NIS-Client an seinen
|
|
NIS-Server. Der Client bezieht den
|
|
NIS-Domänennamen vom System und stellt über
|
|
das RPC-Protokoll eine Verbindung zum NIS-Server her.
|
|
<application>ypbind</application> ist der zentrale
|
|
Bestandteil der Client-Server-Kommunikation in einer
|
|
NIS-Umgebung. Wird <application>>ypbind</application>
|
|
auf einem Client beendet, ist dieser nicht mehr in der
|
|
Lage, auf den NIS-Server zuzugreifen.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>ypserv</application></entry>
|
|
|
|
<entry>Sollte nur auf dem NIS-Server laufen, da es sich um
|
|
den Serverprozess selbst handelt. Wenn &man.ypserv.8;
|
|
nicht mehr lä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ösung dieses Problems
|
|
besteht dann darin, den Serverprozess (oder gar den
|
|
Server selbst) oder den
|
|
<application>ypbind</application>-Prozess auf dem Client
|
|
neu zu starten.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>rpc.yppasswdd</application></entry>
|
|
|
|
<entry>Ein weiterer Prozess, der nur auf dem
|
|
NIS-Masterserver laufen sollte. Es handelt sich um einen
|
|
Daemonprozess, der es NIS-Clients ermöglicht, sich
|
|
auf dem NIS-Masterserver anzumelden, um ihr Passwort zu
|
|
ä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ür Rechnerkonfigurationen.
|
|
Masterserver speichern die maßgebliche Kopie dieser
|
|
Informationen, während Slaveserver diese Informationen
|
|
aus Redundanzgründen spiegeln. Die Clients beziehen
|
|
ihre Informationen immer vom Server.</para>
|
|
|
|
<para>Auf diese Art und Weise kö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 über NIS verwendet. Immer, wenn
|
|
ein Prozess auf einem Client auf Informationen zugreifen will,
|
|
die normalerweise in lokalen Dateien vorhanden wä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,
|
|
ähnlich einem &windowsnt;-Domä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ür mehrere
|
|
NIS-Domä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>. Ähnlich
|
|
einem &windowsnt;-Backupdomänencontroller, verwalten
|
|
NIS-Slaveserver Kopien der Daten des NIS-Masterservers.
|
|
NIS-Slaveserver bieten die Redundanz, die für
|
|
kritische Umgebungen benötigt wird. Zusä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über dem NIS-Server
|
|
(ä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 3.3 oder eine aktuellere Version verwenden.
|
|
<emphasis>Wahrscheinlich</emphasis> funktioniert diese Anleitung
|
|
auch für FreeBSD-Versionen ab 3.0, es gibt dafür aber
|
|
keine Garantie.</para></note>
|
|
|
|
<sect3>
|
|
<title>Planung</title>
|
|
|
|
<para>Nehmen wir an, Sie seien der Administrator eines kleinen
|
|
Universitätsnetzes. Dieses Netz besteht aus
|
|
fünfzehn FreeBSD-Rechnern, fü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ünfzehn Rechnern manuell
|
|
erledigt werden (unter Verwendung von
|
|
<command>adduser</command>). Da diese Lö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 frame="none" pgwide="1">
|
|
<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ä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 über die Vorgangsweise Gedanken zu machen.
|
|
Unabhängig von der Größe Ihres Netzwerks
|
|
müssen Sie stets einige Entscheidungen treffen.</para>
|
|
|
|
<sect4>
|
|
<title>Einen NIS-Domänennamen wählen</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Domä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äne enthalten.
|
|
Dadurch weiß jeder Server im Netzwerk, auf welche
|
|
Anforderung er antworten muss. Stellen Sie sich den
|
|
NIS-Domänennamen als den Namen einer Gruppe von
|
|
Rechnern vor, die etwas gemeinsam haben.</para>
|
|
|
|
<para>Manchmal wird der Name der Internetdomäne auch
|
|
für die NIS-Domäne verwendet. Dies ist allerdings
|
|
nicht empfehlenswert, da dies bei der Behebung von Problemen
|
|
verwirrend sein kann. Der Name der NIS-Domä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ätte daher die NIS-Domäne
|
|
<quote>acme-art</quote>. Für unser Beispiel verwenden
|
|
wir den NIS-Domänennamen
|
|
<literal>test-domain</literal>.</para>
|
|
|
|
<indexterm><primary>SunOS</primary></indexterm>
|
|
|
|
<para>Es gibt jedoch auch Betriebssysteme (vor allem &sunos;),
|
|
die als NIS-Domänennamen den Name der
|
|
Internetdomäne verwenden. Wenn dies für einen
|
|
oder mehrere Rechner Ihres Netzwerks zutrifft,
|
|
<emphasis>müssen</emphasis> Sie den Namen der
|
|
Internetdomäne als Ihren NIS-Domänennamen
|
|
verwenden.</para>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Anforderungen an den Server</title>
|
|
|
|
<para>Wenn Sie einen NIS-Server einrichten wollen, müssen
|
|
Sie einige Dinge beachten. Eine unangenehme Eigenschaft
|
|
von NIS ist die Abhängigkeit der Clients vom Server.
|
|
Wenn sich der Client nicht über den Server mit seiner
|
|
NIS-Domäne verbinden kann, wird der Rechner oft
|
|
unbenutzbar, da das Fehlen von Benutzer- und
|
|
Gruppeninformationen zum Einfrieren des Clients führt.
|
|
Daher sollten Sie für den Server einen Rechner
|
|
auswählen, der nicht regelmäßig neu
|
|
gestartet werden muss und der nicht fü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ö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äne ist. Ein einzelner NIS-Server
|
|
kann gleichzeitig mehrere NIS-Domänen verwalten, daher
|
|
können auch mehrere Verzeichnisse vorhanden sein. Jede
|
|
Domäne verfügt über ein eigenes Verzeichnis
|
|
sowie einen eigenen, von anderen Domänen
|
|
unabhä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ängt
|
|
eingehende Anfragen der NIS-Clients, ermittelt aus der
|
|
angeforderten Domä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ängig von Ihren Anforderungen ist die
|
|
Einrichtung eines NIS-Masterservers relativ einfach, da
|
|
NIS von FreeBSD bereits in der Standardkonfiguration
|
|
unterstützt wird. Sie müssen nur folgende
|
|
Zeilen in <filename>/etc/rc.conf</filename> einfügen:
|
|
</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<programlisting>nisdomainname="test-domain"</programlisting>
|
|
|
|
<para>Diese Zeile setzt den NIS-Domänennamen auf
|
|
<literal>test-domain</literal>, 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ähnt, die Änderung von
|
|
NIS-Passwörtern von einem Client aus
|
|
ermöglicht.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<note>
|
|
<para>In Abhängigkeit von Ihrer NIS-Konfiguration
|
|
können weitere Einträ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üssen Sie nur noch
|
|
<command>/etc/netstart</command> als Superuser
|
|
ausfü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örter für Ihr
|
|
<username>root</username>- oder andere
|
|
Administratorkonten nicht an alle Server der NIS-Domä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, ändern Sie dies mit
|
|
<command>chmod</command>.</para></note>
|
|
|
|
<indexterm><primary>Tru64 UNIX</primary></indexterm>
|
|
|
|
<para>Nun können Sie die NIS-Maps initialisieren.
|
|
FreeBSD verwendet dafür das Skript
|
|
<command>ypinit</command> (lesen Sie dazu auch
|
|
&man.ypinit.8;). Dieses Skript ist auf fast allen
|
|
UNIX-Betriebssystemen verfügbar. Bei
|
|
Digitals Unix/Compaq Tru64 UNIX nennt es sich allerdings
|
|
<command>ypsetup</command>. Da wir Maps für einen
|
|
NIS-Masterserver erzeugen, verwenden wir
|
|
<command>ypinit</command> mit der Option
|
|
<option>-m</option>. Nachdem Sie die beschriebenen
|
|
Aktionen durchgefü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 <control D>.
|
|
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
|
|
<literal>test-domain</literal> aber auch über einen
|
|
Slaveserver verfügt, mü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
|
|
ä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 über das Verzeichnis
|
|
<filename>/var/yp/test-domain</filename> verfügen.
|
|
Die Kopien der NIS-Masterserver-Maps sollten sich in diesem
|
|
Verzeichnis befinden. Allerdings müssen Sie diese
|
|
auch aktuell halten. Die folgenden Einträ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äge sind nicht zwingend, da der Masterserver
|
|
versucht, alle Änderungen seiner NIS-Maps an seine
|
|
Slaveserver weiterzugeben. Da Passwortinformationen aber
|
|
für vom Server abhä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ändig sein
|
|
könnten.</para>
|
|
|
|
<para>Fü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üft die
|
|
Standarddomäne des Systems (die durch
|
|
<command>domainname</command> gesetzt wird), und beginnt
|
|
RPCs über das lokale Netzwerk zu verteilen (broadcast).
|
|
Diese Anforderungen legen den Namen der Domäne fest,
|
|
für die <command>ypbind</command> eine Bindung erzeugen
|
|
will. Wenn der Server der entsprechenden Domäne eine
|
|
solche Anforderung erhält, schickt er eine Antwort an
|
|
<command>ypbind</command>. <command>ybind</command> speichert
|
|
daraufhin die Adresse des Servers. Wenn mehrere Server
|
|
verfü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äne als
|
|
ungebunden und beginnt erneut, RPCs ü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ügen Sie folgende Zeilen in
|
|
<filename>/etc/rc.conf</filename> ein, um den
|
|
NIS-Domä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äge des NIS-Servers zu
|
|
importieren, löschen Sie alle Benutzerkonten in
|
|
<filename>/etc/master.passwd</filename> und fügen
|
|
mit <command>vipw</command> folgende Zeile am Ende der
|
|
Datei ein:</para>
|
|
|
|
<programlisting>+:::::::::</programlisting>
|
|
|
|
<note>
|
|
<para>Diese Zeile legt für alle gültigen
|
|
Benutzerkonten der NIS-Server-Maps einen Zugang an.
|
|
Es gibt verschiedene Wege, Ihren NIS-Client durch
|
|
Änderung dieser Zeile zu konfigurieren. Lesen
|
|
Sie dazu auch den Abschnitt ü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 über NIS importiert wird, in Ihrer
|
|
<filename>/etc/master.passwd</filename> behalten.
|
|
Dieser Benutzer sollte außerdem ein Mitglied der
|
|
Gruppe <groupname>wheel</groupname> sein. Wenn es
|
|
mit NIS Probleme gibt, kö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öglichen Gruppeneinträge vom
|
|
NIS-Server zu importieren, fü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-Servers anzeigen
|
|
kö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änennamen kennt. Um solche
|
|
unautorisierten Transaktionen zu verhindern, unterstützt
|
|
&man.ypserv.8; <quote>securenets</quote>, durch die man den
|
|
Zugriff auf bestimmte Rechner beschränken kann.
|
|
&man.ypserv.8; versucht, beim Systemstart die Informationen
|
|
ü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ält Einträ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ö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ä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ützt auch das
|
|
<application>TCP-Wrapper</application>-Paket von Wietse Venema.
|
|
Mit diesem Paket kann der Administrator für
|
|
Zugriffskontrollen die Konfigurationsdateien von
|
|
<application>TCP-Wrapper</application> anstelle von
|
|
<filename>/var/yp/securenets</filename> verwenden.</para>
|
|
|
|
<note>
|
|
<para>Während beide Kontrollmechanismen einige Sicherheit
|
|
gewähren, beispielsweise durch privilegierte Ports, sind
|
|
sie gegenü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ö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ühren und/oder
|
|
können die Subnetzmaske nicht auslesen, wenn sie die
|
|
Broadcast-Adresse berechnen. Einige Probleme können
|
|
durch Ä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ät für große
|
|
Teile Ihres Netzwerks führen kann.</para>
|
|
|
|
<indexterm>
|
|
<primary>TCP-Wrapper</primary>
|
|
</indexterm>
|
|
|
|
<para>Die Verwendung der <application>TCP-Wrapper</application>
|
|
verlangsamt die Reaktion Ihres NIS-Servers. Diese
|
|
zusätzliche Reaktionszeit kann in Clientprogrammen zu
|
|
Timeouts führen. Dies vor allem in Netzwerken, die
|
|
stark ausgelastet sind, oder nur über langsame NIS-Server
|
|
verfü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ür Mitarbeiter der Fakultät bestimmt ist.
|
|
Wir wollen diesen Rechner nicht aus der NIS-Domäne
|
|
entfernen, obwohl <filename>passwd</filename> des
|
|
NIS-Masterservers Benutzerkonten sowohl für
|
|
Fakultätsmitarbeiter als auch für Studenten
|
|
enthält. Was können wir also tun?</para>
|
|
|
|
<para>Es gibt eine Möglichkeit, bestimmte Benutzer an der
|
|
Anmeldung an einem bestimmten Rechner zu hindern, selbst wenn
|
|
diese in der NIS-Datenbank vorhanden sind. Dazu müssen
|
|
Sie lediglich an diesem Rechner den Eintrag
|
|
<literal>-<replaceable>Benutzername</replaceable></literal> an
|
|
das Ende von <filename>/etc/master.passwd</filename> setzen,
|
|
wobei <replaceable>Benutzername</replaceable> der zu
|
|
blockierende Benutzername ist. Diese Änderung sollte
|
|
bevorzugt durch <command>vipw</command> erledigt werden, da
|
|
<command>vipw</command> Ihre Änderungen an
|
|
<filename>/etc/master.passwd</filename> auf Plausibilität
|
|
überprüft und nach erfolgter Änderung die
|
|
Passwortdatenbank automatisch aktualisiert. Um also den
|
|
Benutzer <username>bill</username> 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ür wenige
|
|
Benutzer oder wenige Rechner benötigen. In großen
|
|
Netzwerken werden Sie allerdings
|
|
<emphasis>mit Sicherheit</emphasis> vergessen, einige Benutzer
|
|
von der Anmeldung an bestimmten Rechnern auszuschließ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ösung fü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öglichkeit, Netzgruppen
|
|
zu definieren, die sowohl Benutzer als auch andere Netzgruppen
|
|
enthalten.</para>
|
|
|
|
<para>Netzgruppen wurden entwickelt, um groß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öglich, Netzgruppen mit einfachen Beispielen zu
|
|
erklären. Das hier verwendete Beispiel veranschaulicht
|
|
dieses Problem.</para>
|
|
|
|
<para>Nehmen wir an, dass Ihre erfolgreiche Einführung von
|
|
NIS die Aufmerksamkeit Ihrer Vorgesetzten geweckt hat. Ihre
|
|
nächste Aufgabe besteht nun darin, Ihre NIS-Domäne
|
|
um zusätzliche Rechner zu erweitern. Die folgenden
|
|
Tabellen enthalten die neuen Benutzer und Rechner inklusive
|
|
einer kurzen Beschreibung.</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Benutzername(n)</entry>
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><username>alpha</username>,
|
|
<username>beta</username></entry>
|
|
<entry>Beschäftigte der IT-Abteilung</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><username>charlie</username>,
|
|
<username>delta</username></entry>
|
|
<entry>Die neuen Lehrlinge der IT-Abteilung</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><username>echo</username>,
|
|
<username>foxtrott</username>,
|
|
<username>golf</username>, ...</entry>
|
|
<entry>Normale Mitarbeiter</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><username>able</username>,
|
|
<username>baker</username>, ...</entry>
|
|
<entry>Externe Mitarbeiter</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<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><hostid>war</hostid>, <hostid>death</hostid>,
|
|
<hostid>famine</hostid>, <hostid>pollution</hostid></entry>
|
|
<entry>Ihre wichtigsten Server. Nur IT-Fachleute
|
|
dürfen sich an diesen Rechnern anmelden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<!-- gluttony was omitted because it was too fat -->
|
|
<entry><hostid>pride</hostid>, <hostid>greed</hostid>,
|
|
<hostid>envy</hostid>, <hostid>wrath</hostid>,
|
|
<hostid>lust</hostid>, <hostid>sloth</hostid></entry>
|
|
<entry>Weniger wichtige Server. Alle Mitarbeiter der
|
|
IT-Abteilung dürfen sich auf diesen Rechnern
|
|
anmelden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>one</hostid>, <hostid>two</hostid>,
|
|
<hostid>three</hostid>, <hostid>four</hostid>, ...</entry>
|
|
<entry>Gewöhnliche Arbeitsrechner. Nur die
|
|
<emphasis>wirklichen</emphasis> Mitarbeiter dürfen
|
|
diese Rechner verwenden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>trashcan</hostid></entry>
|
|
<entry>Ein sehr alter Rechner ohne kritische Daten. Sogar
|
|
externe Mitarbeiter dürfen diesen Rechner
|
|
verwenden.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Wollten Sie diese Einschränkungen umsetzen, indem Sie
|
|
jeden Benutzer einzeln blockieren, müssten Sie auf jedem
|
|
System für jeden Benutzer eine entsprechende Zeile in
|
|
<filename>passwd</filename> einfügen. Wenn Sie nur einen
|
|
Eintrag vergessen, haben Sie ein Problem. Es mag noch angehen,
|
|
dies während der ersten Installation zu erledigen, im
|
|
täglichen Betrieb werden Sie allerdings
|
|
<emphasis>mit Sicherheit</emphasis> einmal vergessen, die
|
|
entsprechenden Einträge anzulegen. Vergessen Sie nicht:
|
|
Murphy war Optimist.</para>
|
|
|
|
<para>Die Verwendung von Netzgruppen hat in dieser Situation
|
|
mehrere Vorteile. Sie mü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ügen, müssen Sie
|
|
Zugangsbeschränkungen nur für die Netzgruppen
|
|
festlegen. Legen Sie einen neuen Benutzer an, müssen Sie
|
|
ihn nur einer oder mehrere Netzgruppen zuweisen. Diese
|
|
Veränderungen sind voneinander unabhängig; Anweisungen
|
|
der Form <quote>für diese Kombination aus Benutzer und
|
|
Rechner mache Folgendes ...</quote> sind nicht mehr nötig.
|
|
Wenn Sie die Einrichtung von NIS sorgfältig geplant haben,
|
|
mü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ühren. Sind die Maps aber erst einmal
|
|
erzeugt, werden sie jedoch von NIS problemlos unterstü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äge an. Für unser
|
|
Beispiel benötigen wir mindestens vier Netzgruppen:
|
|
IT-Beschäftige, IT-Lehrlinge, normale Beschä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ügt. Die drei Felder in der
|
|
Klammer haben folgende Bedeutung:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Der Name des Rechners, auf dem die folgenden Werte
|
|
gültig sind. Legen Sie keinen Rechnernamen fest, ist
|
|
der Eintrag auf allen Rechnern gültig. Dadurch
|
|
gehen Sie vielen Problemen aus dem Weg.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Der Name des Benutzerkontos, der zu dieser Netzgruppe
|
|
gehört.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die NIS-Domäne für das Benutzerkonto. Sie
|
|
können Benutzerkonten von anderen NIS-Domänen in
|
|
Ihre Netzgruppe importieren, wenn Sie mehrere
|
|
NIS-Domä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änger als 8 Zeichen
|
|
sein, vor allem dann, wenn Sie Rechner mit verschiedenen
|
|
Betriebssystemen in Ihrer NIS-Domäne haben. Es wird
|
|
zwischen Groß- und Kleinschreibung unterschieden.
|
|
Die Verwendung von Großbuchstaben für
|
|
Netzgruppennamen ermöglicht eine leichte Unterscheidung
|
|
zwischen Benutzern, Rechnern und Netzgruppen.</para>
|
|
|
|
<para>Einige NIS-Clients (dies gilt nicht für FreeBSD)
|
|
können keine Netzgruppen mit einer großen Anzahl
|
|
von Einträgen verwalten. Einige ältere Versionen
|
|
von &sunos; haben beispielsweise Probleme, wenn Netzgruppen
|
|
mehr als fünfzehn <emphasis>Einträge</emphasis>
|
|
enthalten. Sie können dieses Problem umgehen, indem Sie
|
|
mehrere Subnetzgruppen mit weniger als fü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önnen diesen Vorgang wiederholen, wenn Sie mehr
|
|
als 255 Benutzer in einer einzigen Netzgruppe benö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üfen Sie
|
|
die Verfü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üssen
|
|
lediglich auf dem Server <hostid>war</hostid>
|
|
&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
|
|
<literal>IT_EMP</literal> vorhandenen Benutzer in die
|
|
Passwortdatenbank von <hostid>war</hostid> importiert.
|
|
Nur diese Benutzer dürfen sich am Server anmelden.</para>
|
|
|
|
<para>Unglücklicherweise gilt diese Einschränkung auch
|
|
für die <literal>~</literal>-Funktion der Shell und
|
|
für alle Routinen, die auf Benutzernamen und numerische
|
|
Benutzer-IDs zugreifen. Oder anders formuliert,
|
|
<command>cd ~<replaceable>user</replaceable></command> ist nicht
|
|
mö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üssen Sie alle Benutzereinträge
|
|
importieren, <emphasis>ohne ihnen jedoch zu erlauben, sich an
|
|
Ihrem Server anzumelden</emphasis>.</para>
|
|
|
|
<para>Dazu fügen Sie eine weitere Zeile in
|
|
<filename>/etc/master.passwd</filename> ein. Diese Zeile sollte
|
|
ähnlich der folgenden aussehen:</para>
|
|
|
|
<para><literal>+:::::::::/sbin/nologin</literal>, was in etwa
|
|
<quote>Importiere alle Einträge, aber ersetze die Shell in
|
|
den importierten Einträgen durch
|
|
<filename>/sbin/nologin</filename></quote> entspricht. Sie
|
|
kö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üssen Sie nur mehr eine einzige NIS-Map
|
|
ändern, wenn ein neuer Mitarbeiter berücksichtigt
|
|
werden muss. Fü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äge ersetzen:</para>
|
|
|
|
<programlisting>+@IT_EMP:::::::::
|
|
+@IT_APP:::::::::
|
|
+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para>Die entsprechenden Zeilen für normale Arbeitsplätze
|
|
lauten:</para>
|
|
|
|
<programlisting>+@IT_EMP:::::::::
|
|
+@USERS:::::::::
|
|
+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para>Ab jetzt wäre alles wunderbar, allerdings ändert
|
|
sich kurz darauf die Firmenpolitik: Die IT-Abteilung beginnt
|
|
damit, externe Mitarbeiter zu beschäftigen. Externe
|
|
dürfen sich an normalen Arbeitsplätzen sowie an den
|
|
weniger wichtigen Servern anmelden. Die IT-Lehrlinge
|
|
dürfen sich nun auch an den Hauptservern anmelden. Sie
|
|
legen also die neue Netzgruppe <literal>IT_INTERN</literal> an,
|
|
weisen Ihr die neuen IT-Externen als Benutzer zu und beginnen
|
|
damit, die Konfiguration auf jedem einzelnen Rechner zu
|
|
ändern ... Halt. Sie haben gerade die alte Regel
|
|
<quote>Fehler in der zentralisierten Planung führen zu
|
|
globaler Verwirrung.</quote> bestätigt.</para>
|
|
|
|
<para>Da NIS in der Lage ist, Netzgruppen aus anderen Netzgruppen
|
|
zu bilden, lassen sich solche Situationen leicht vermeiden.
|
|
Eine Möglichkeit ist die Erzeugung rollenbasierter
|
|
Netzgruppen. Sie könnten eine Netzgruppe
|
|
<literal>BIGSRV</literal> erzeugen, um den Zugang zu
|
|
den wichtigsten Servern zu beschränken, eine weitere
|
|
Gruppe <literal>SMALLSRV</literal> für die weniger
|
|
wichtigen Server und eine dritte Netzgruppe
|
|
<literal>USERBOX</literal> für die normalen
|
|
Arbeitsplatzrechner. Jede dieser Netzgruppen enthält die
|
|
Netzgruppen, die sich auf diesen Rechnern anmelden dürfen.
|
|
Die Einträge der Netzgruppen in der NIS-Map sollten
|
|
ä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änkungen einteilen
|
|
können. Unglücklicherweise ist dies die Ausnahme und
|
|
nicht die Regel. Meistens werden Sie die Möglichkeit zur
|
|
rechnerspezischen Zugangsbeschränkung benötigen.
|
|
</para>
|
|
|
|
<para>Rechnerspezifische Netzgruppen sind die zweite
|
|
Möglichkeit, um mit den oben beschriebenen Änderungen
|
|
umzugehen. In diesem Szenario enthä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ürfen. Die zweite Zeile weist allen
|
|
anderen Benutzern <filename>/sbin/nologin</filename> als Shell
|
|
zu. Verwenden Sie auch hier (analog zu den Netzgruppen)
|
|
Großbuchstaben für die Rechnernamen. Die Zeilen
|
|
sollten also ähnlich den folgenden aussehen:</para>
|
|
|
|
<programlisting>+@<replaceable>BOXNAME</replaceable>:::::::::
|
|
+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para>Wenn Sie dies für alle Rechner erledigt haben, werden
|
|
Sie die lokalen Versionen von
|
|
<filename>/etc/master.passwd</filename> nie mehr verändern
|
|
müssen. Alle weiteren Änderungen geschehen über
|
|
die NIS-Maps. Nachfolgend ein Beispiel für eine
|
|
mö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ö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üssen,
|
|
sollten Sie rollenbasierte Netzgruppen verwenden, um die
|
|
Grösse der NISs-Maps in Grenzen zu halten.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Weitere wichtige Punkte</title>
|
|
|
|
<para>Nachdem Sie Ihre NIS-Umgebung eingerichtet haben,
|
|
mü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ßlich</emphasis> am
|
|
NIS-Masterserver. Außerdem
|
|
<emphasis>müssen</emphasis> Sie anschließ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
|
|
<username>jsmith</username> anlegen, gehen Sie
|
|
folgerndermassen 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ö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örter dürfen nicht auf Rechnern verbreitet
|
|
werden, auf denen sich Benutzer anmelden kö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ößte Schwäche
|
|
jeder zentralen Verwaltung. Wenn Sie Ihre NIS-Server nicht
|
|
schützen, werden Sie viele verärgerte Anwender
|
|
haben.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Kompatibilität zu NIS v1</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Kompatibilität zu NIS v1</secondary>
|
|
</indexterm>
|
|
|
|
<para><application>ypserv</application> unterstützt NIS v1
|
|
unter FreeBSD nur eingeschränkt. Die NIS-Implementierung
|
|
von FreeBSD verwendet nur NIS v2, andere Implementierungen
|
|
unterstützen aus Gründen der
|
|
Abwärtskompatibilität mit ä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ötigen. Außerdem versuchen Sie auch dann,
|
|
einen v1-Server zu erreichen, wenn Sie zuvor eine Antwort von
|
|
einem v2-Server erhalten.). Während normale Clientaufrufe
|
|
unter FreeBSD unterstützt werden, sind Anforderungen zum
|
|
Transfer von v1-Maps nicht möglich. Daher kann FreeBSD
|
|
nicht als Client oder Server verwendet werden, wenn ein
|
|
NIS-Server vorhanden ist, der nur NIS v1 unterstützt.
|
|
Glücklicherweise sollte es heute keine Server mehr geben,
|
|
die nur NIS v1 unterstützen.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="nis-server-is-client">
|
|
<title>NIS-Server, die auch als NIS-Clients arbeiten</title>
|
|
|
|
<para>Wenn Sie <application>ypserv</application> in einer
|
|
Multi-Serverdomä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önnten seltsame
|
|
Fehler auftreten, wenn ein Server ausfä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ögerung kann beträchtlich
|
|
sein. Außerdem kann der Fehler erneut auftreten, da sich
|
|
die Server wiederum aneinander binden könnten.</para>
|
|
|
|
<para>Sie kö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önnen Sie folgende Zeilen in
|
|
<filename>/etc/rc.conf</filename> einfü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ötigen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Passwortformate</title>
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Passwortformate</secondary>
|
|
</indexterm>
|
|
<para>Unterschiedliche Passwortformate sind das Hauptproblem,
|
|
das beim Einrichten eines NIS-Servers auftreten kann.
|
|
Wenn der NIS-Server mit DES verschlüsselte Passwörter
|
|
verwendet, werden nur Clients unterstützt, die ebenfalls
|
|
DES benutzen. Wenn sich auf Ihrem Netzwerk beispielsweise
|
|
&solaris; NIS-Clients befinden, müssen die Passwörter
|
|
mit DES verschlüsselt werden.</para>
|
|
|
|
<para>Welches Format die Server und Clients verwenden,
|
|
steht in <filename>/etc/login.conf</filename>. Wenn ein
|
|
System Passwörter mit DES verschlüsselt,
|
|
enthält die <literal>default</literal>-Klasse einen
|
|
Eintrag wie den folgenden:</para>
|
|
|
|
<programlisting>default:\
|
|
:passwd_format=des:\
|
|
:copyright=/etc/COPYRIGHT:\
|
|
[weitere Einträge]</programlisting>
|
|
|
|
<para>Mögliche Werte für
|
|
<literal>passwd_format</literal> sind unter anderem
|
|
<literal>blf</literal> und <literal>md5</literal> (mit
|
|
Blowfish und MD5 verschlüsselte Passwörter).</para>
|
|
|
|
<para>Wenn die Datei <filename>/etc/login.conf</filename>
|
|
geändert wird, muss die Login-Capability Datenbank
|
|
neu erstellt werden. Geben Sie dazu als
|
|
<username>root</username> den folgenden Befehl ein:</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örter wird erst aktualisiert, wenn ein Benutzer
|
|
sein Passwort ändert, <emphasis>nachdem</emphasis>
|
|
die Datenbank neu erstellt wurde.</para>
|
|
</note>
|
|
|
|
<para>Damit die Passwörter auch im gewählten
|
|
Format abgespeichert werden, muss mit
|
|
<literal>crypt_default</literal> in der Datei
|
|
<filename>/etc/auth.conf</filename> die richtige
|
|
Priorität der Formate eingestellt werden. Das
|
|
gewählte Format sollte als Erstes in der Liste
|
|
stehen. Sollen die Passwörter mit DES verschlü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 Passwortformat verwendet. Falls Sie
|
|
Probleme mit der Authentifizierung eines NIS-Clients
|
|
haben, kontrollieren Sie die verwendeten Passwortformate.
|
|
In einer heterogenen Umgebung werden Sie DES benutzen
|
|
müssen, da dies der meist unterstützte Standard
|
|
ist.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-dhcp">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Greg</firstname>
|
|
<surname>Sutter</surname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Automatische Netzwerkkonfiguration mit DHCP</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>Über DHCP, das Dynamic Host Configuration Protocol,
|
|
kann sich ein System mit einem Netzwerk verbinden und die
|
|
für die Kommunikation mit diesem Netzwerk nötigen
|
|
Informationen beziehen. &os;-Versionen vor 6.0 verwenden
|
|
die DHCP-Client-Implementierung (&man.dhclient.8;) von ISC
|
|
(Internet Software Consortium). Ab 6.0 wird der von
|
|
OpenBSD 3.7 stammende <command>dhclient</command>
|
|
zum Einsatz kommen. Die Informationen in diesem Abschnitt
|
|
beziehen sich daher sowohl auf den <command>dhclient</command>
|
|
von ISC als auch auf den von OpenBSD. Als DHCP-Server wird
|
|
in beiden Fällen der DHCP-Server der ISC-Distribution
|
|
verwendet.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Übersicht</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt sowohl die Clientseite des
|
|
ISC- als auch des OpenBSD-Clients sowie die
|
|
Serverseite des DHCP-Systems von ISC. Das Clientprogramm
|
|
<command>dhclient</command> ist in FreeBSD integriert, das
|
|
Serverprogramm kann über den Port
|
|
<filename role="package">net/isc-dhcp3-server</filename>
|
|
installiert werden. Weiter Informationen finden Sie in
|
|
&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 ü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 über das
|
|
Netzwerk, wie Netzmasken, Router und DNS-Server mitteilt. Diese
|
|
Informationen werden als
|
|
<firstterm>DHCP-Lease</firstterm> bezeichnet und
|
|
sind nur für eine bestimmte Zeit, die vom Administrator des
|
|
DHCP-Servers vorgegeben wird, gültig. Dadurch fallen
|
|
verwaiste IP-Adressen, deren Clients nicht mehr mit dem Netzwerk
|
|
verbunden sind, automatisch an den Server zurück.</para>
|
|
|
|
<para>DHCP-Clients können sehr viele Informationen von einem
|
|
DHCP-Server erhalten. Eine ausführliche Liste finden Sie
|
|
in &man.dhcp-options.5;.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Integration in FreeBSD</title>
|
|
|
|
<para>In Abhängigkeit von der eingesetzten &os;-Version wird
|
|
entweder der ISC-DHCP-Client oder der DHCP-Client von OpenBSD
|
|
in FreeBSD integriert. Sowohl während der Installation als
|
|
auch im Basissystem steht der DHCP-Client zur Verfügung.
|
|
In Netzen mit DHCP-Servern wird dadurch die Konfiguration von
|
|
Systemen erheblich vereinfacht. <command>dhclient</command>
|
|
ist seit der Version 3.2 in &os; enthalten.</para>
|
|
|
|
<indexterm>
|
|
<primary><application>sysinstall</application></primary>
|
|
</indexterm>
|
|
|
|
<para>DHCP wird von <application>sysinstall</application>
|
|
unterstützt. Wenn Sie eine Netzwerkkarte mit
|
|
<application>sysinstall</application> konfigurieren, lautet
|
|
die zweite Frage <quote>Do you want to try DHCP configuration
|
|
of the interface?</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ü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ügen Sie die Zeile
|
|
<literal>device bpf</literal>
|
|
(<literal>pseudo-device bpf</literal> unter &os; 4.X)
|
|
in Ihre Kernelkonfigurationsdatei ein und erzeugen einen
|
|
neuen Kernel. Weitere Informationen zur Kernelkonfiguration
|
|
finden Sie in <xref linkend="kernelconfig"> des Handbuchs.
|
|
</para>
|
|
|
|
<para>Das Gerät <devicename>bpf</devicename> ist im
|
|
<filename>GENERIC</filename>-Kernel bereits enthalten.
|
|
Fü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ührung
|
|
von Paketsniffern erforderlich ist (obwohl diese dennoch
|
|
als <username>root</username> ausgeführt werden
|
|
mü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ü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ü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ätzliche Flags an
|
|
<command>dhclient</command> übergeben wollen,
|
|
fü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 <application>dhcpd</application> ist als
|
|
Teil des Ports
|
|
<filename role="package">net/isc-dhcp3-server</filename>
|
|
verfügbar. Dieser Port enthält die komplette
|
|
ISC-DHCP-Distribution, inklusive 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ötigt die
|
|
Konfigurationsdatei <filename>/etc/dhclient.conf</filename>.
|
|
Diese Datei enthält normalerweise nur Kommentare, da
|
|
die Vorgabewerte zumeist ausreichend sind. Lesen Sie dazu
|
|
auch &man.dhclient.conf.5;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/sbin/dhclient</filename></para>
|
|
|
|
<para><command>dhclient</command> ist statisch gelinkt und
|
|
befindet sich in <filename>/sbin</filename>. Weitere
|
|
Informationen finden Sie in &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ändert übernommen
|
|
werden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/var/db/dhclient.leases</filename></para>
|
|
|
|
<para>Der DHCP-Client verfügt über eine Datenbank,
|
|
die alle derzeit gültigen Leases enthä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ä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/"></ulink>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-dhcp-server">
|
|
<title>Einen DHCP-Server installieren und einrichten</title>
|
|
|
|
<sect3>
|
|
<title>Ü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üssen Sie als Erstes den Port
|
|
<filename role="package">net/isc-dhcp3-server</filename>
|
|
installieren. Lesen Sie <xref linkend="ports">, wenn Sie
|
|
weitere Informationen zur Ports-Sammlung benötigen.
|
|
</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Den DHCP-Server installieren</title>
|
|
|
|
<indexterm>
|
|
<primary>DHCP</primary>
|
|
<secondary>installieren</secondary>
|
|
</indexterm>
|
|
|
|
<para>Stellen Sie sicher, dass &man.bpf.4; in Ihren Kernel
|
|
kompiliert ist. Dazu fügen Sie die Zeile
|
|
<literal>device bpf</literal>
|
|
(<literal>pseudo-device bpf</literal> unter &os; 4.X)in
|
|
Ihre Kernelkonfigurationsdatei ein und erzeugen einen neuen
|
|
Kernel. Die Kernelkonfiguration wird in
|
|
<xref linkend="kernelconfig"> beschrieben.</para>
|
|
|
|
<para>Das Gerät <devicename>bpf</devicename> ist im
|
|
<filename>GENERIC</filename>-Kernel bereits enthalten.
|
|
Fü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ührung
|
|
von Paketsniffern erforderlich ist (obwohl diese dennoch
|
|
als <username>root</username> ausgeführt werden
|
|
mü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üssen Sie die vom Port
|
|
<filename role="package">net/isc-dhcp3-server</filename>
|
|
erzeugte Vorlage fü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ä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ässt sich am besten an
|
|
einem Beispiel erklä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äne, die den
|
|
Clients als Standardsuchdomäne zugewiesen wird.
|
|
Weitere Informationen finden Sie in 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ür die der Server
|
|
Konfigurationsinformationen vergibt. Sollte ein Client
|
|
eine lä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ü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önnen. IP-Adressen
|
|
zwischen diesen Grenzen sowie die einschließenden
|
|
Adressen werden den Clients zugewiesen.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="routers">
|
|
<para>Legt das Standard-Gateway fest, das 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ültig ist, da der DHCP-Server den
|
|
Rechnernamen auflöst, bevor er die
|
|
Konfigurationsinformationen zuweist.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Nachdem Sie <filename>dhcpd.conf</filename> fertig
|
|
konfiguriert haben, sollten Sie den DHCP-Server aktivieren,
|
|
indem Sie folgende Zeilen in
|
|
<filename>/etc/rc.conf</filename> aufnehmen:</para>
|
|
|
|
<programlisting>dhcpd_enable="YES"
|
|
dhcpd_ifaces="dc0"</programlisting>
|
|
|
|
<para>Dabei müssen Sie den Geräteeintrag
|
|
<literal>dc0</literal> durch die Gerätedatei (mehrere
|
|
Gerätedateien müssen durch Leerzeichen getrennt
|
|
werden) ersetzen, die Ihr DHCP-Server auf Anfragen von
|
|
DHCP-Clients hin überwachen soll.</para>
|
|
|
|
<para>Danach können Sie den Server durch Eingabe des
|
|
folgenden Befehls 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ändern mü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üssen
|
|
den Prozess vielmehr mit dem Signal
|
|
<literal>SIGTERM</literal> stoppen, um ihn
|
|
anschließ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ötigen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/usr/local/etc/dhcpd.conf</filename></para>
|
|
|
|
<para><application>dhcpd</application> benö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ßerdem
|
|
sind hier Informationen zur Konfiguration des Servers
|
|
enthalten. Die mit dem Port installierte Hilfeseite
|
|
&man.dhcpd.conf.5; enthä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ä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. Wenn Sie diese
|
|
Funktion benötigen, müssen Sie den Port
|
|
<filename role="package">net/isc-dhcp3-relay</filename>
|
|
installieren. Weitere Informationen zu diesem Thema
|
|
finden Sie in &man.dhcrelay.8;.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-dns">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Chern</firstname>
|
|
<surname>Lee</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>DNS – Domain Name Service</title>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<indexterm><primary>BIND</primary></indexterm>
|
|
|
|
<para>DNS ist das für die Umwandlung von Rechnernamen in
|
|
IP-Adressen zuständige Protokoll. FreeBSD verwendet dazu
|
|
BIND (Berkeley Internet Name Domain), die am häufigsten
|
|
verwendete Implementierung von DNS. Eine Anfrage nach
|
|
<hostid role="fqdn">www.FreeBSD.org</hostid> gibt die
|
|
IP-Adresse des &os;-Webservers, eine Anfrage nach
|
|
<hostid role="fqdn">ftp.FreeBSD.org</hostid> die IP-Adresse des
|
|
entsprechenden FTP-Servers zurück. Der umgekehrte Weg
|
|
ist ebenso möglich, eine IP-Adresse kann also auch in ihren
|
|
Rechnernamen aufgelöst werden. Um eine DNS-Abfrage
|
|
durchzuführen, muss auf dem jeweiligen Rechner kein Nameserver
|
|
installiert sein.</para>
|
|
|
|
<indexterm><primary>DNS</primary></indexterm>
|
|
|
|
<para>Im Internet wird DNS durch ein komplexes System von
|
|
autoritativen Root-Nameservern sowie anderen kleineren
|
|
Nameservern verwaltet, die individuelle Rechnerinformationen
|
|
speichern und untereinander abgleichen.</para>
|
|
|
|
<para>Dieses Dokument beschreibt die unter &os; verwendete
|
|
stabile Version BIND 8.x. Seit &os; 5.3 ist BIND 9.x
|
|
im Basissystem enthalten, dessen Konfiguration weiter hinten
|
|
im diesem Abschnitt besprochen wird. Nutzer von &os; 5.2
|
|
und älter können BIND9 über den Port
|
|
<filename role="package">net/bind9</filename> installieren.</para>
|
|
|
|
<para>Das DNS-Protokoll wird in den RFCs 1034 und 1035
|
|
beschrieben.</para>
|
|
|
|
<para>Derzeit wird BIND vom Internet Software Consortium
|
|
(<ulink url="http://www.isc.org/"></ulink>) verwaltet.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Begriffsbestimmungen</title>
|
|
|
|
<para>Um dieses Dokument besser verstehen zu können,
|
|
müssen einige DNS-spezifische Begriffe genauer definiert
|
|
werden.</para>
|
|
|
|
<indexterm><primary>Resolver</primary></indexterm>
|
|
<indexterm><primary>Reverse-DNS</primary></indexterm>
|
|
<indexterm><primary>root zone</primary></indexterm>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*">
|
|
<colspec colwidth="3*">
|
|
|
|
<thead>
|
|
<row>
|
|
<entry>Begriff</entry>
|
|
|
|
<entry>Bedeutung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>Forward-DNS</entry>
|
|
|
|
<entry>Rechnernamen in IP-Adressen umwandeln</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Origin (Ursprung)</entry>
|
|
|
|
<entry>Die in einer bestimmten Zonendatei beschriebene
|
|
Domäne.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>named</application>, BIND,
|
|
Nameserver</entry>
|
|
|
|
<entry>Gebräuchliche Namen für das unter FreeBSD
|
|
verwendete BIND-Nameserverpaket</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Resolver</entry>
|
|
|
|
<entry>Ein Systemprozess, durch den ein Rechner
|
|
Zoneninformationen von einem Nameserver anfordert.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Reverse-DNS</entry>
|
|
|
|
<entry>Das Gegenteil von Forward-DNS; die Umwandlung von
|
|
IP-Adressen in Rechnernamen</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Root-Zone</entry>
|
|
|
|
<entry>Der Beginn der Internet-Zonenhierarchie. Alle
|
|
Zonen befinden sich innerhalb der Root-Zone. Dies ist
|
|
analog zu einem Dateisystem, in dem sich alle Dateien
|
|
und Verzeichnisse innerhalb des Wurzelverzeichnisses
|
|
befinden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Zone</entry>
|
|
|
|
<entry>Eine individuelle Domäne, Unterdomäne,
|
|
oder ein Teil von DNS, der von der gleichen
|
|
Autorität verwaltet wird.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<indexterm>
|
|
<primary>Zonen</primary>
|
|
<secondary>Beispiele</secondary>
|
|
</indexterm>
|
|
|
|
<para>Es folgen nun einige Zonenbeispiele:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><hostid>.</hostid> ist die Root-Zone.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><hostid>org.</hostid> ist eine Zone innerhalb der
|
|
Root-Zone.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><hostid role="domainname">example.org.</hostid>
|
|
ist eine Zone innerhalb der
|
|
<hostid>org.</hostid>-Zone.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><hostid role="domainname">foo.example.org.</hostid>
|
|
ist eine Unterdomäne, eine Zone innerhalb der Zone
|
|
<hostid role="domainname">example.org</hostid>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><hostid>1.2.3.in-addr.arpa.</hostid> ist die Zone mit
|
|
allen IP-Adressen des <hostid
|
|
role="domainname">3.2.1.*</hostid>-IP-Adressraums.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Wie man an diesen Beispielen erkennen kann, befindet sich
|
|
der spezifischere Teil eines Rechnernamens auf der linken Seite
|
|
der Adresse. <hostid role="domainname">example.org.</hostid>
|
|
beschreibt einen Rechner also genauer als <hostid>org.</hostid>,
|
|
während <hostid>org.</hostid> genauer als die Root-Zone
|
|
ist. Jeder Teil des Rechnernamens hat Ähnlichkeiten mit
|
|
einem Dateisystem, in dem etwa <filename>/dev</filename> dem
|
|
Wurzelverzeichnis untergeordnet ist.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Gründe für die Verwendung eines
|
|
Nameservers</title>
|
|
|
|
<para>Es gibt zwei Arten von Nameservern: Autoritative Nameserver
|
|
sowie zwischenspeichernde (cachende) Nameserver.</para>
|
|
|
|
<para>Ein autoritativer Nameserver ist notwendig, wenn</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Sie anderen verbindliche DNS-Auskünfte erteilen
|
|
wollen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>eine Domain, beispielsweise
|
|
<hostid role="domainname">example.org</hostid>, registriert
|
|
wird, und den zu dieser Domain gehörenden Rechnern
|
|
IP-Adressen zugewiesen werden müssen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>ein IP-Adressblock reverse-DNS-Einträge
|
|
benötigt, um IP-Adressen in Rechnernamen auflösen
|
|
zu können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>ein Backup-Nameserver (auch Slaveserver genannt) auf
|
|
Anfragen antworten muss, weil der Hauptserver nicht
|
|
erreichbar ist.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Ein cachender Nameserver ist notwendig, weil</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>ein lokaler DNS-Server Daten zwischenspeichern und daher
|
|
schneller auf Anfragen reagieren kann als ein entfernter
|
|
Server.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>die Datenmenge reduziert werden muss
|
|
(DNS-Verkehr macht etwa 5 % des gesamten Datenverkehrs im
|
|
Internet aus).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Wird nach <hostid role="fqdn">www.FreeBSD.org</hostid>
|
|
gesucht, leitet der Resolver diese Anfrage an den Nameserver des
|
|
ISPs weiter und nimmt danach das Ergebnis der
|
|
Abfrage entgegen. Existiert ein lokaler, zwischenspeichernder
|
|
DNS-Server, muss dieser die Anfrage nur einmal nach außen
|
|
weitergeben. Für alle weiteren Anfragen ist dies nicht
|
|
mehr nötig, da diese Information nun lokal gespeichert
|
|
ist.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Wie funktioniert DNS?</title>
|
|
|
|
<para>Unter FreeBSD wird der BIND-Daemon als
|
|
<application>named</application> bezeichnet.</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Datei</entry>
|
|
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><application>named</application></entry>
|
|
|
|
<entry>Der BIND-Daemon.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><command>ndc</command></entry>
|
|
|
|
<entry>Das Steuerprogramm für
|
|
<application>named</application>.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>/etc/namedb</filename></entry>
|
|
|
|
<entry>Das Verzeichnis, in dem sich die Zoneninformationen
|
|
für BIND befinden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>/etc/namedb/named.conf</filename></entry>
|
|
|
|
<entry>Die Konfigurationsdatei für
|
|
<application>named</application>.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Zonendateien befinden sich normalerweise im Verzeichnis
|
|
<filename>/etc/namedb</filename> und enthalten die vom
|
|
Nameserver angebotenen DNS-Zoneninformationen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>BIND starten</title>
|
|
|
|
<indexterm>
|
|
<primary>BIND</primary>
|
|
<secondary>Start</secondary>
|
|
</indexterm>
|
|
|
|
<para>Da BIND automatisch installiert wird, ist die Konfiguration
|
|
relativ einfach.</para>
|
|
|
|
<para>Um den <application>named</application>-Daemon beim
|
|
Systemstart automatisch zu starten, fügen Sie folgende
|
|
Zeile in <filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>named_enable="YES"</programlisting>
|
|
|
|
<para>Um den Daemon (nach der Konfiguration) manuell zu starten,
|
|
geben Sie Folgendes ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ndc start</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfigurationsdateien</title>
|
|
|
|
<indexterm>
|
|
<primary>BIND</primary>
|
|
<secondary>Konfigurationsdateien</secondary>
|
|
</indexterm>
|
|
|
|
<sect3>
|
|
<title><command>make-localhost</command> verwenden</title>
|
|
|
|
<para>Um die lokale reverse-DNS-Zonendatei
|
|
<filename>/etc/namedb/master/localhost.rev</filename> korrekt zu
|
|
erzeugen, machen Sie Folgendes:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /etc/namedb</userinput>
|
|
&prompt.root; <userinput>sh make-localhost</userinput></screen>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><filename>/etc/namedb/named.conf</filename></title>
|
|
|
|
<programlisting>// $FreeBSD$
|
|
//
|
|
// Refer to the named(8) manual page for details. If you are ever going
|
|
// to setup a primary server, make sure you've understood the hairy
|
|
// details of how DNS is working. Even with simple mistakes, you can
|
|
// break connectivity for affected parties, or cause huge amount of
|
|
// useless Internet traffic.
|
|
|
|
options {
|
|
directory "/etc/namedb";
|
|
|
|
// In addition to the "forwarders" clause, you can force your name
|
|
// server to never initiate queries of its own, but always ask its
|
|
// forwarders only, by enabling the following line:
|
|
//
|
|
// forward only;
|
|
|
|
// If you've got a DNS server around at your upstream provider, enter
|
|
// its IP address here, and enable the line below. This will make you
|
|
// benefit from its cache, thus reduce overall DNS traffic in the
|
|
Internet.
|
|
/*
|
|
forwarders {
|
|
127.0.0.1;
|
|
};
|
|
*/ </programlisting>
|
|
|
|
<para>Um vom Cache Ihres Internetproviders zu profitieren,
|
|
können hier <literal>forwarders</literal> aktiviert
|
|
werden. Normalerweise sucht ein Nameserver das Internet
|
|
rekursiv ab, bis er die gesuchte Antwort findet. Durch
|
|
diese Option wird stets der Nameserver Ihres
|
|
Internetproviders zuerst abgefragt, um von dessen
|
|
Cache zu profitieren. Wenn es sich um einen schnellen,
|
|
viel benutzten Nameserver handelt, kann dies zu einer
|
|
Geschwindigkeitssteigerung führen.</para>
|
|
|
|
<warning>
|
|
<para><hostid role="ipaddr">127.0.0.1</hostid> funktioniert
|
|
hier <emphasis>nicht</emphasis>. Ändern Sie diese
|
|
Adresse in einen Nameserver Ihres Einwahlproviders.</para>
|
|
</warning>
|
|
|
|
<programlisting>/*
|
|
* If there is a firewall between you and name servers you want
|
|
* to talk to, you might need to uncomment the query-source
|
|
* directive below. Previous versions of BIND always asked
|
|
* questions using port 53, but BIND 8.1 uses an unprivileged
|
|
* port by default.
|
|
*/
|
|
// query-source address * port 53;
|
|
|
|
/*
|
|
* If running in a sandbox, you may have to specify a different
|
|
* location for the dumpfile.
|
|
*/
|
|
// dump-file "s/named_dump.db";
|
|
};
|
|
|
|
// Note: the following will be supported in a future release.
|
|
/*
|
|
host { any; } {
|
|
topology {
|
|
127.0.0.0/8;
|
|
};
|
|
};
|
|
*/
|
|
|
|
// Setting up secondaries is way easier and the rough picture for this
|
|
// is explained below.
|
|
//
|
|
// If you enable a local name server, don't forget to enter 127.0.0.1
|
|
// into your /etc/resolv.conf so this server will be queried first.
|
|
// Also, make sure to enable it in /etc/rc.conf.
|
|
|
|
zone "." {
|
|
type hint;
|
|
file "named.root";
|
|
};
|
|
|
|
zone "0.0.127.IN-ADDR.ARPA" {
|
|
type master;
|
|
file "localhost.rev";
|
|
};
|
|
|
|
// NB: Do not use the IP addresses below, they are faked, and only
|
|
// serve demonstration/documentation purposes!
|
|
//
|
|
// Example secondary config entries. It can be convenient to become
|
|
// a secondary at least for the zone where your own domain is in. Ask
|
|
// your network administrator for the IP address of the responsible
|
|
// primary.
|
|
//
|
|
// Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
|
|
// (This is the first bytes of the respective IP address, in reverse
|
|
// order, with ".IN-ADDR.ARPA" appended.)
|
|
//
|
|
// Before starting to setup a primary zone, better make sure you fully
|
|
// understand how DNS and BIND works, however. There are sometimes
|
|
// unobvious pitfalls. Setting up a secondary is comparably simpler.
|
|
//
|
|
// NB: Don't blindly enable the examples below. :-) Use actual names
|
|
// and addresses instead.
|
|
//
|
|
// NOTE!!! FreeBSD runs BIND in a sandbox (see named_flags in rc.conf).
|
|
// The directory containing the secondary zones must be write accessible
|
|
// to BIND. The following sequence is suggested:
|
|
//
|
|
// mkdir /etc/namedb/s
|
|
// chown bind:bind /etc/namedb/s
|
|
// chmod 750 /etc/namedb/s</programlisting>
|
|
|
|
<para>Wenn Sie BIND innerhalb einer Sandbox betreiben wollen,
|
|
lesen Sie bitte den
|
|
<xref linkend="network-named-sandbox">.</para>
|
|
|
|
<programlisting>/*
|
|
zone "example.com" {
|
|
type slave;
|
|
file "s/example.com.bak";
|
|
masters {
|
|
192.168.1.1;
|
|
};
|
|
};
|
|
|
|
zone "0.168.192.in-addr.arpa" {
|
|
type slave;
|
|
file "s/0.168.192.in-addr.arpa.bak";
|
|
masters {
|
|
192.168.1.1;
|
|
};
|
|
};
|
|
*/ </programlisting>
|
|
|
|
<para>Hierbei handelt es sich um Slave-Einträge für
|
|
eine Reverse- und Forward-DNS-Zone, die in der Datei
|
|
<filename>named.conf</filename> definiert sind.</para>
|
|
|
|
<para>Für jede neue Zone muss ein zusätzlicher Eintrag
|
|
in <filename>named.conf</filename> erstellt werden.</para>
|
|
|
|
<para>Ein einfacher Eintrag für eine Zone
|
|
<hostid role="domainname">example.org</hostid> könnte
|
|
beispielsweise so aussehen:</para>
|
|
|
|
<programlisting>zone "example.org" {
|
|
type master;
|
|
file "example.org";
|
|
}; </programlisting>
|
|
|
|
<para>Die Option <option>type</option> legt fest, dass es sich
|
|
um eine Master-Zone handelt, deren Zoneninformationen sich in
|
|
der Datei <filename>/etc/namedb/example.org</filename>
|
|
befinden. Diese Datei wird durch die Option
|
|
<option>file</option> festgelegt.</para>
|
|
|
|
<programlisting>zone "example.org" {
|
|
type slave;
|
|
file "example.org";
|
|
}; </programlisting>
|
|
|
|
<para>Hier handelt es sich um einen Slaveserver, der seine
|
|
Informationen vom Masterserver der betreffenden Zone bezieht
|
|
und diese in der angegebenen Datei speichert. Wenn der
|
|
Masterserver nicht erreichbar ist, verfügt der
|
|
Slaveserver über die transferierten Zoneninformationen
|
|
und kann diese an andere Rechner weitergeben.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Zonendateien</title>
|
|
|
|
<para>Die in der Datei
|
|
<filename>/etc/namedb/example.org</filename> definierte
|
|
Zonendatei für
|
|
<hostid role="domainname">example.org</hostid> könnte
|
|
etwa so aussehen:</para>
|
|
|
|
<programlisting>$TTL 3600
|
|
|
|
example.org. IN SOA ns1.example.org. admin.example.org. (
|
|
5 ; Serial
|
|
10800 ; Refresh
|
|
3600 ; Retry
|
|
604800 ; Expire
|
|
86400 ) ; Minimum TTL
|
|
|
|
; DNS Servers
|
|
@ IN NS ns1.example.org.
|
|
@ IN NS ns2.example.org.
|
|
|
|
; Machine Names
|
|
localhost IN A 127.0.0.1
|
|
ns1 IN A 3.2.1.2
|
|
ns2 IN A 3.2.1.3
|
|
mail IN A 3.2.1.10
|
|
@ IN A 3.2.1.30
|
|
|
|
; Aliases
|
|
www IN CNAME @
|
|
|
|
; MX Record
|
|
@ IN MX 10 mail.example.org.</programlisting>
|
|
|
|
<para>Beachten Sie, dass jeder mit einem <quote>.</quote>
|
|
endende Rechnername ein exakter Rechnername ist, während
|
|
sich alles ohne einen abschließenden <quote>.</quote>
|
|
auf den Ursprung bezieht. <literal>www</literal> steht daher
|
|
für
|
|
<literal>www.<replaceable>Ursprung</replaceable></literal>.
|
|
In unserer fiktiven Zonendatei ist
|
|
<hostid>example.org.</hostid> der Ursprung, daher steht
|
|
<literal>www</literal> für
|
|
<hostid>www.example.org.</hostid></para>
|
|
|
|
<para>Eine Zonendatei hat folgenden Aufbau:</para>
|
|
|
|
<programlisting>recordname IN recordtype value</programlisting>
|
|
|
|
<indexterm>
|
|
<primary>DNS</primary>
|
|
<secondary>Einträge</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die am häufigsten verwendeten DNS-Einträge sind:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>SOA</term>
|
|
|
|
<listitem>
|
|
<para>Start der Zonenautorität</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>NS</term>
|
|
|
|
<listitem>
|
|
<para>Ein autoritativer Nameserver</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>A</term>
|
|
|
|
<listitem><para>Eine Rechneradresse</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>CNAME</term>
|
|
|
|
<listitem>
|
|
<para>Der kanonische Name eines Alias</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>MX</term>
|
|
|
|
<listitem><para>Mail Exchanger</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>PTR</term>
|
|
|
|
<listitem>
|
|
<para>Ein (bei Reverse-DNS verwendeter) Domain Name
|
|
Pointer</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<programlisting>example.org. IN SOA ns1.example.org. admin.example.org. (
|
|
5 ; Serial
|
|
10800 ; Refresh after 3 hours
|
|
3600 ; Retry after 1 hour
|
|
604800 ; Expire after 1 week
|
|
86400 ) ; Minimum TTL of 1 day</programlisting>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><hostid role="domainname">example.org.</hostid></term>
|
|
|
|
<listitem><para>Der Name der Domäne und damit der
|
|
Ursprung dieser Zonendatei.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><hostid role="fqdn">ns1.example.org.</hostid></term>
|
|
|
|
<listitem><para>Der primäre/autoritative Nameserver
|
|
dieser Zone.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>admin.example.org.</literal></term>
|
|
|
|
<listitem><para>Die für diese Zone verantwortliche
|
|
Person. Das Zeichen <quote>@</quote> wird dabei
|
|
ersetzt (<email>admin@example.org</email> wird also zu
|
|
<literal>admin.example.org</literal>).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>5</literal></term>
|
|
|
|
<listitem><para>Die Seriennummer der Datei. Sie muss
|
|
stets inkrementiert werden, wenn die Zonendatei
|
|
geändert wird. Viele Administratoren bevorzugen
|
|
ein <literal>JJJJMMTTRR</literal>-Format, um die
|
|
Seriennummer festzulegen.
|
|
<literal>2001041002</literal> steht also für
|
|
den 10.04.2001, die beiden letzten Stellen für die
|
|
zweite Modifikation der Zonendatei an diesem Tag. Die
|
|
Seriennummer ist von großer Bedeutung, da
|
|
Slaveserver daran eine aktualisierte Zonendatei erkennen
|
|
können.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<programlisting>@ IN NS ns1.example.org.</programlisting>
|
|
|
|
<para>Ein NS-Eintrag. Jeder Nameserver, der für eine Zone
|
|
verantwortlich ist, muss über einen solchen Eintrag
|
|
verfügen. Das Zeichen <literal>@</literal> steht in
|
|
unserem Beispiel für
|
|
<hostid role="domainname">example.org.</hostid>,
|
|
<literal>@</literal> verweist also auf den Ursprung.</para>
|
|
|
|
<programlisting>localhost IN A 127.0.0.1
|
|
ns1 IN A 3.2.1.2
|
|
ns2 IN A 3.2.1.3
|
|
mail IN A 3.2.1.10
|
|
@ IN A 3.2.1.30</programlisting>
|
|
|
|
<para>Der Eintrag <literal>A</literal> bezieht sich auf
|
|
Rechnernamen. <hostid role="fqdn">ns1.example.org</hostid>
|
|
würde also zu <hostid role="ipaddr">3.2.1.2</hostid>
|
|
aufgelöst werden. Da das (Ursprungs-)Symbol
|
|
<literal>@</literal> verwendet wird, wird
|
|
<hostid role="domainname">example.org</hostid> zu
|
|
<hostid role="ipaddr">3.2.1.30</hostid> aufgelöst.</para>
|
|
|
|
<programlisting>www IN CNAME @</programlisting>
|
|
|
|
<para>Der Eintrag für den kanonischen Namen wird dazu
|
|
verwendet, Aliase für einen Rechner zu vergeben. Im
|
|
Beispiel ist <hostid>www</hostid> ein Alias für den
|
|
Ursprungsrechner
|
|
(<hostid role="domainname">example.org</hostid> oder
|
|
<hostid role="ipaddr">3.2.1.30</hostid>). Durch die Option
|
|
CNAME können Aliasnamen vergeben werden. Ein Rechnername
|
|
kann aber auch abwechselnd verschiedenen Rechnern zugewiesen
|
|
werden.</para>
|
|
|
|
<indexterm>
|
|
<primary>MX-Eintrag</primary>
|
|
</indexterm>
|
|
|
|
<programlisting>@ IN MX 10 mail.example.org.</programlisting>
|
|
|
|
<para>Die Option MX legt fest, welcher Mailserver für
|
|
eintreffende Mails der Zone verantwortlich ist.
|
|
<hostid role="fqdn">mail.example.org</hostid> ist der
|
|
Rechnername des Mailservers, der eine Priorität von 10
|
|
hat.</para>
|
|
|
|
<para>Es können auch mehrere Mailserver mit verschiedener
|
|
Priorität vorhanden sein. Ein Mailserver, der eine Mail
|
|
an <hostid role="domainname">example.org</hostid> verschicken
|
|
will, verwendet zuerst den MX mit der höchsten
|
|
Priorität, danach den mit der nächsthöheren,
|
|
bis die E-Mail zugestellt werden kann.</para>
|
|
|
|
<para>Für (bei Reverse-DNS verwendete)
|
|
<literal>in-addr.arpa</literal>-Zonendateien wird das gleiche
|
|
Format verwendet. Der einzige Unterschied besteht in der
|
|
Verwendung der Option PTR an Stelle der Optionen A und
|
|
CNAME.</para>
|
|
|
|
<programlisting>$TTL 3600
|
|
|
|
1.2.3.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
|
|
5 ; Serial
|
|
10800 ; Refresh
|
|
3600 ; Retry
|
|
604800 ; Expire
|
|
3600 ) ; Minimum
|
|
|
|
@ IN NS ns1.example.org.
|
|
@ IN NS ns2.example.org.
|
|
|
|
2 IN PTR ns1.example.org.
|
|
3 IN PTR ns2.example.org.
|
|
10 IN PTR mail.example.org.
|
|
30 IN PTR example.org.</programlisting>
|
|
|
|
<para>Durch diese Datei werden den Rechnernamen der fiktiven
|
|
Domäne IP-Adressen zugewiesen.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Zwischenspeichernde (cachende) Nameserver</title>
|
|
|
|
<indexterm>
|
|
<primary>BIND</primary>
|
|
<secondary>Zwischenspeichernde Nameserver</secondary>
|
|
</indexterm>
|
|
|
|
<para>Ein cachender Nameserver ist für keine Zonen
|
|
verantwortlich. Er stellt lediglich eigene Anfragen und
|
|
speichert deren Ergebnisse ab. Um einen solchen Nameserver
|
|
einzurichten, gehen Sie wie gewohnt vor, allerdings definieren
|
|
Sie keine Zonen.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-named-sandbox">
|
|
<title><application>named</application> in einer Sandbox
|
|
ausführen</title>
|
|
|
|
<indexterm>
|
|
<primary>BIND</primary>
|
|
<secondary>Sandbox</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><command>chroot</command></primary>
|
|
</indexterm>
|
|
|
|
<para>Es ist möglich, &man.named.8; als nicht privilegierter
|
|
Benutzer in einer mit &man.chroot.8; definierten Sandbox
|
|
auszuführen. Dadurch hat der
|
|
<application>named</application>-Daemon keinen Zugriff auf
|
|
Verzeichnisse und Dateien außerhalb der Sandbox. Sollte
|
|
<application>named</application> kompromittiert werden,
|
|
lässt sich dadurch der mögliche Schaden begrenzen.
|
|
FreeBSD erzeugt dazu automatisch einen Benutzer und eine
|
|
Gruppe namens <groupname>bind</groupname>.</para>
|
|
|
|
<note>
|
|
<para>Manchmal wird auch empfohlen, statt mit
|
|
<command>chroot</command> das Wurzelverzeichnis für
|
|
<application>named</application> zu ändern,
|
|
<application>named</application> innerhalb eines &man.jail.8;s
|
|
auszuführen. Diese Situation wird hier jedoch nicht
|
|
beschrieben.</para>
|
|
</note>
|
|
|
|
<para>Da <application>named</application> keinen Zugriff auf
|
|
Dateien außerhalb der Sandbox (wie Systembibliotheken oder
|
|
Protokolldateien) hat, sind einige Vorbereitungen notwendig,
|
|
damit <application>named</application> korrekt funktioniert.
|
|
Im Folgenden wird angenommen, dass die Sandbox unter
|
|
<filename>/etc/namedb</filename> eingerichtet wird. Außerdem
|
|
befinden sich die Dateien in diesem Verzeichnis noch im
|
|
Originalzustand. Alle Schritte müssen als
|
|
<username>root</username> durchgeführt werden.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Erzeugen Sie alle Verzeichnisse, die
|
|
<application>named</application> benötigt:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /etc/namedb</userinput>
|
|
&prompt.root; <userinput>mkdir -p bin dev etc var/tmp var/run master slave</userinput>
|
|
&prompt.root; <userinput>chown bind:bind slave var/*</userinput><co id="chown-slave"></screen>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="chown-slave">
|
|
<para>Da <application>named</application> nur schreibend
|
|
auf diese Verzeichnisse zugreifen muss, werden auch
|
|
keine weiteren Rechte zugeteilt.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Erzeugen Sie die Basiszonen sowie die nötigen
|
|
Konfigurationsdateien:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cp /etc/localtime etc</userinput><co id="localtime">
|
|
&prompt.root; <userinput>mv named.conf etc && ln -sf etc/named.conf</userinput>
|
|
&prompt.root; <userinput>mv named.root master</userinput>
|
|
<!-- I don't like this next bit -->
|
|
&prompt.root; <userinput>sh make-localhost</userinput>
|
|
&prompt.root; <userinput>cat > master/named.localhost
|
|
$ORIGIN localhost.
|
|
$TTL 6h
|
|
@ IN SOA localhost. postmaster.localhost. (
|
|
1 ; serial
|
|
3600 ; refresh
|
|
1800 ; retry
|
|
604800 ; expiration
|
|
3600 ) ; minimum
|
|
IN NS localhost.
|
|
IN A 127.0.0.1
|
|
^D</userinput></screen>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="localtime">
|
|
<para>Dadurch ist es <application>named</application>
|
|
möglich, die korrekte Systemzeit an &man.syslogd.8;
|
|
weiterzugeben.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<indexterm><primary>syslog</primary></indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Logdateien</primary>
|
|
<secondary>named</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn Sie FreeBSD in einer Version vor 4.9-RELEASE
|
|
verwenden, erzeugen Sie eine statisch gelinkte Kopie von
|
|
<application>named-xfer</application> und kopieren diese
|
|
in Ihre Sandbox:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src/lib/libisc</userinput>
|
|
&prompt.root; <userinput>make cleandir && make cleandir && make depend && make all</userinput>
|
|
&prompt.root; <userinput>cd /usr/src/lib/libbind</userinput>
|
|
&prompt.root; <userinput>make cleandir && make cleandir && make depend && make all</userinput>
|
|
&prompt.root; <userinput>cd /usr/src/libexec/named-xfer</userinput>
|
|
&prompt.root; <userinput>make cleandir && make cleandir && make depend && make NOSHARED=yes all</userinput>
|
|
&prompt.root; <userinput>cp named-xfer /etc/namedb/bin && chmod 555 /etc/namedb/bin/named-xfer</userinput><co id="clean-cruft"></screen>
|
|
|
|
<para>Nachdem Sie ihre statische gelinkte Version von
|
|
<command>named-xfer</command> installiert haben,
|
|
müssen Sie etwas aufräumen, damit keine
|
|
veralteten Kopien von Bibliotheken oder Programmen in Ihrem
|
|
Quellbaum verbleiben:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src/lib/libisc</userinput>
|
|
&prompt.root; <userinput>make cleandir</userinput>
|
|
&prompt.root; <userinput>cd /usr/src/lib/libbind</userinput>
|
|
&prompt.root; <userinput>make cleandir</userinput>
|
|
&prompt.root; <userinput>cd /usr/src/libexec/named-xfer</userinput>
|
|
&prompt.root; <userinput>make cleandir</userinput></screen>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="clean-cruft">
|
|
<para>Dieser Schritt kann manchmal fehlschlagen. Wenn
|
|
dies passiert, machen Sie Folgendes:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src && make cleandir && make cleandir</userinput></screen>
|
|
|
|
<para>Danach löschen Sie
|
|
<filename>/usr/obj</filename> inklusive aller
|
|
Unterverzeichnisse:</para>
|
|
|
|
<screen>&prompt.root; <userinput>rm -fr /usr/obj && mkdir /usr/obj</userinput></screen>
|
|
|
|
<para>Dadurch entfernen Sie den ganzen
|
|
<quote>Müll</quote> aus Ihrem Quellbaum und die
|
|
fehlgeschlagenen Schritte sollten nun ebenfalls
|
|
funktionieren.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Wenn Sie &os; in der Version 4.9-RELEASE oder neuer
|
|
verwenden, wird die in <filename>/usr/libexec</filename>
|
|
vorhandene Kopie von <command>named-xfer</command>
|
|
automatisch statisch gelinkt und Sie können die Datei
|
|
einfach mit &man.cp.1; in Ihre Sandbox kopieren.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Erzeugen Sie ein <filename>dev/null</filename>, auf
|
|
das <application>named</application> lesend und schreibend
|
|
zugreifen kann:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /etc/namedb/dev && mknod null c 2 2</userinput>
|
|
&prompt.root; <userinput>chmod 666 null</userinput></screen>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Linken Sie <filename>/etc/namedb/var/run/ndc</filename>
|
|
symbolisch nach <filename>/var/run/ndc</filename>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ln -sf /etc/namedb/var/run/ndc /var/run/ndc</userinput></screen>
|
|
|
|
<note>
|
|
<para>Dadurch können Sie auf die Option
|
|
<option>-c</option> verzichten, wenn Sie &man.ndc.8;
|
|
aufrufen. Der Inhalt von <filename>/var/run</filename>
|
|
wird beim Systemstart automatisch gelöscht. Diese
|
|
Anweisung kann unter Nutzung der Option
|
|
<option>@reboot</option> in die
|
|
<filename>crontab</filename> von <username>root</username>
|
|
eingebaut werden. Lesen Sie dazu auch die Hilfeseite
|
|
&man.crontab.5;.</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<indexterm><primary>syslog</primary></indexterm>
|
|
<indexterm>
|
|
<primary>Logdateien</primary>
|
|
<secondary>named</secondary>
|
|
</indexterm>
|
|
|
|
<para>Weisen Sie &man.syslogd.8; an, einen zusätzlichen
|
|
<devicename>log</devicename>-Socket zu erzeugen, auf den
|
|
<application>named</application> Schreibzugriff hat. Dazu
|
|
hängen Sie in der Datei
|
|
<filename>/etc/rc.conf</filename> an den Eintrag
|
|
<varname>syslogd_flags</varname> die Option
|
|
<literal>-l /etc/namedb/dev/log</literal> an.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<indexterm><primary><command>chroot</command></primary></indexterm>
|
|
|
|
<para>Stellen Sie sicher, dass
|
|
<application>named</application> gestartet wird und sein
|
|
Wurzelverzeichnis mittels <command>chroot</command> in die
|
|
Sandbox setzt, indem Sie folgende Einträge in
|
|
<filename>/etc/rc.conf</filename> einfügen:</para>
|
|
|
|
<programlisting>named_enable="YES"
|
|
named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf"</programlisting>
|
|
|
|
<note>
|
|
<para>Beachten Sie, dass die Konfigurationsdatei
|
|
<replaceable>/etc/named.conf</replaceable> durch einen
|
|
absoluten Pfad (aber <emphasis>relativ</emphasis> zur
|
|
Sandbox) festgelegt wird. Bei der im obigen Beispiel
|
|
angesprochenen Datei handelt es sich also um
|
|
<filename>/etc/namedb/etc/named.conf</filename>.</para>
|
|
</note>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Danach bearbeiten Sie
|
|
<filename>/etc/namedb/etc/named.conf</filename>, damit
|
|
<application>named</application> weiß, welche Zonen geladen
|
|
werden müssen und wo sich diese befinden. Es folgt nun
|
|
ein kommentiertes Beispiel (alle nicht dokumentierten
|
|
Einträge gelten auch für einen DNS-Server, der nicht
|
|
in einer Sandbox läuft):</para>
|
|
|
|
<programlisting>options {
|
|
directory "/";<co id="directory">
|
|
named-xfer "/bin/named-xfer";<co id="named-xfer">
|
|
version ""; // Don't reveal BIND version
|
|
query-source address * port 53;
|
|
};
|
|
// ndc control socket
|
|
controls {
|
|
unix "/var/run/ndc" perm 0600 owner 0 group 0;
|
|
};
|
|
// Zones follow:
|
|
zone "localhost" IN {
|
|
type master;
|
|
file "master/named.localhost";<co id="master">
|
|
allow-transfer { localhost; };
|
|
notify no;
|
|
};
|
|
zone "0.0.127.in-addr.arpa" IN {
|
|
type master;
|
|
file "master/localhost.rev";
|
|
allow-transfer { localhost; };
|
|
notify no;
|
|
};
|
|
zone "." IN {
|
|
type hint;
|
|
file "master/named.root";
|
|
};
|
|
zone "private.example.net" in {
|
|
type master;
|
|
file "master/private.example.net.db";
|
|
allow-transfer { 192.168.10.0/24; };
|
|
};
|
|
zone "10.168.192.in-addr.arpa" in {
|
|
type slave;
|
|
masters { 192.168.10.2; };
|
|
file "slave/192.168.10.db";<co id="slave">
|
|
}; </programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="directory">
|
|
<para><literal>directory</literal> wird als
|
|
<filename>/</filename> festgelegt, da sich alle von
|
|
<application>named</application> benötigten Dateien in
|
|
diesem Verzeichnis befinden (analog zur
|
|
<filename>/etc/namedb</filename> eines
|
|
<quote>normalen</quote> Benutzers.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="named-xfer">
|
|
<para>Legt den vollständigen Pfad zur Binärdatei
|
|
<command>named-xfer</command> aus der Sicht von
|
|
<application>named</application> fest. Das ist nötig,
|
|
weil <application>named</application> per Voreinstellung
|
|
im Verzeichnis <filename>/usr/libexec</filename> nach
|
|
<command>named-xfer</command> sucht.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="master">
|
|
<para>Legt die Datei (relativ zum
|
|
<literal>directory</literal>-Statement) fest, in der
|
|
<application>named</application> die Zonendatei für
|
|
diese Zone findet.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="slave">
|
|
<para>Legt die Datei (relativ zum
|
|
<literal>directory</literal>-Statement) fest, in die
|
|
<application>named</application> eine Kopie der Zonendatei
|
|
dieser Zone schreibt, nachdem diese erfolgreich vom
|
|
Masterserver angefordert wurde. Aus diesem Grund musste in
|
|
den vorherigen Schritten auch <groupname>bind</groupname>
|
|
der Eigentümer des Verzeichnisses
|
|
<filename>slave</filename> sein.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Nachdem Sie diese Schritte erledigt haben, müssen Sie
|
|
entweder den Rechner oder &man.syslogd.8; neu starten. Danach
|
|
starten Sie &man.named.8; unter Verwendung der neuen, unter
|
|
<varname>syslogd_flags</varname> und
|
|
<varname>named_flags</varname> festgelegten Optionen. Sie
|
|
verwenden nun eine Sandboxversion von
|
|
<application>named</application>!</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Sicherheit</title>
|
|
|
|
<para>Obwohl BIND die am meisten verwendete (und kontrollierte)
|
|
Implementierung von DNS darstellt, werden dennoch manchmal neue
|
|
Sicherheitsprobleme entdeckt.</para>
|
|
|
|
<para>Es ist daher eine gute Idee, die Sicherheitshinweise von
|
|
<ulink url="http://www.cert.org/">CERT</ulink> zu lesen sowie
|
|
die Mailingliste &a.security-notifications; zu abonnieren, um
|
|
sich über Sicherheitsprobleme im Zusammenhang mit dem
|
|
Internet und FreeBSD zu informieren.</para>
|
|
|
|
<tip>
|
|
<para>Tritt ein Problem auf, kann es nie schaden, die
|
|
Quellen zu aktualisieren und <application>named</application>
|
|
neu zu kompilieren.</para>
|
|
</tip>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Weitere Informationsquellen</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Hilfeseiten zu BIND/<application>named</application>:
|
|
&man.ndc.8;, &man.named.8;, &man.named.conf.5;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="http://www.isc.org/products/BIND/">Offizielle ISC-Seite
|
|
zu BIND</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="http://www.nominum.com/getOpenSourceResource.php?id=6">
|
|
BIND FAQs</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://www.oreilly.com/catalog/dns4/">O'Reilly
|
|
DNS and BIND 4th Edition</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.isi.edu/in-notes/rfc1034.txt">RFC1034
|
|
- Domain Names - Concepts and Facilities</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<ulink url="ftp://ftp.isi.edu/in-notes/rfc1035.txt">RFC1035
|
|
- Domain Names - Implementation and Specification</ulink>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-bind9">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title><acronym>BIND</acronym>9 und &os;</title>
|
|
|
|
<!-- This section is here to get users up with BIND9 configurations! It
|
|
does not cover the terminology, theoretical discussion (why run a name
|
|
server) or the further reading which is still in the previous section.
|
|
I did things this way to avoid repetition of content and obviously we
|
|
cannot just remove the previous section since other supported releases
|
|
use it. When the previous section is removed then those comments
|
|
should be moved here. // Tom Rhodes -->
|
|
|
|
<indexterm><primary>bind9</primary>
|
|
<secondary>Konfiguration</secondary></indexterm>
|
|
|
|
<para>Mit &os; 5.3 wurde der <acronym>DNS</acronym>-Server
|
|
<acronym>BIND</acronym>9 in das Basissystem aufgenommen. Vorteile
|
|
der neuen Version sind die verbesserte Sicherheit, ein neues
|
|
Dateisystem sowie eine automatisierte Konfiguration von
|
|
&man.chroot.8;. Der erste Teil dieses Abschnitts beschreibt diese
|
|
Neuerungen inklusive ihrer Konfiguration, der zweite Teil
|
|
konzentriert sich auf den Umstieg auf &os; 5.3. Der
|
|
<acronym>BIND</acronym>-Server wird im Folgenden als &man.named.8;
|
|
bezeichnet. Die Grundlagen von <acronym>DNS</acronym> wurden
|
|
bereits im letzten Abschnitt beschrieben. Lesen Sie sich diesen
|
|
Abschnitt noch einmal durch, bevor Sie fortfahren.</para>
|
|
|
|
<para>Die Konfigurationsdateien für
|
|
<application>named</application> befinden sich unter
|
|
<filename class="directory">/var/named/etc/namedb/</filename> und
|
|
müssen von Ihnen angepasst werden, bevor sie verwendet werden
|
|
können. Ein Großteil der Änderungen betrifft
|
|
Dateien in diesem Verzeichnis.</para>
|
|
|
|
<sect2>
|
|
<title>Eine Master-Zone einrichten</title>
|
|
|
|
<para>Um eine Master-Zone einzurichten, wechseln Sie ins
|
|
Verzeichnis
|
|
<filename class="directory">/var/named/etc/namedb/</filename>
|
|
und geben den folgenden Befehl ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sh make-localhost</userinput></screen>
|
|
|
|
<para>Wenn alles klappt, wird die lokale reverse-DNS-Zonendatei
|
|
<filename>localhost.rev</filename>
|
|
(<filename>localhost-v6.rev</filename> bei Verwendung von
|
|
<acronym>IPv6</acronym>) im Verzeichnis
|
|
<filename class="directory">master</filename> angelegt. Da es
|
|
sich dabei um die Standardkonfigurationsdatei handelt, wird
|
|
diese automatisch in <filename>named.conf</filename>
|
|
eingebunden.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Eine Slave-Zone einrichten</title>
|
|
|
|
<para>Weitere Domains oder Subdomains werden konfiguriert, indem
|
|
man sie als Slave-Zonen einrichtet. In den meisten Fällen
|
|
kann die Datei <filename>master/localhost.rev</filename> einfach in das
|
|
Verzeichnis <filename class="directory">slave</filename> kopiert
|
|
und angepasst werden. Danach werden die Dateien in
|
|
<filename>named.conf</filename> eingebunden. Das folgende
|
|
Beispiel beschreibt die Konfiguration der Domain
|
|
<hostid role="domainname">example.com</hostid>:</para>
|
|
|
|
<programlisting>zone "example.com" {
|
|
type slave;
|
|
file "slave/example.com";
|
|
masters {
|
|
10.0.0.1;
|
|
};
|
|
};
|
|
|
|
zone "0.168.192.in-addr.arpa" {
|
|
type slave;
|
|
file "slave/0.168.192.in-addr.arpa";
|
|
masters {
|
|
10.0.0.1;
|
|
};
|
|
}; </programlisting>
|
|
|
|
<para>Beachten Sie, dass die Master-<acronym>IP</acronym>-Adresse
|
|
nur den primären Domainserver festlegt, von dem die Zonen
|
|
transferiert werden. Das heißt aber nicht, dass dieser
|
|
Server auch als <acronym>DNS</acronym>-Server arbeitet.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><acronym>BIND</acronym> automatisch starten</title>
|
|
|
|
<para>Um den <application>named</application>-Daemon beim
|
|
Systemstart automatisch zu starten, fügen Sie
|
|
folgende Zeile in <filename>rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>named_enable="YES"</programlisting>
|
|
|
|
<para>Obwohl es noch weitere Optionen gibt, sollten
|
|
Sie <application>named</application> bereits jetzt starten können.
|
|
Zusätzliche Konfigurationsoptionen werden in
|
|
&man.rc.conf.5; beschrieben. Wenn Sie <command>named</command>
|
|
nicht über die Datei <filename>rc.conf</filename> starten
|
|
wollen, können Sie auch den folgenden Befehl eingeben:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/named start</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><acronym>BIND</acronym>9 absichern</title>
|
|
|
|
<para>&os; führt <application>named</application> automatisch in
|
|
einer &man.chroot.8;-Umgebung (Sandbox) aus, es gibt aber
|
|
noch weitere Möglichkeiten, potentielle Angriffe auf Ihren
|
|
<acronym>DNS</acronym>-Server abzuwehren.</para>
|
|
|
|
<sect3>
|
|
<title>Zugriffskontrolllisten
|
|
(<foreignphrase>Access Control Lists</foreignphrase>)
|
|
verwenden</title>
|
|
|
|
<para>Durch Zugriffskontrolllisten können Sie die Abfrage
|
|
von Zoneninformationen einschränken. Dazu definieren Sie
|
|
das entsprechende Netzwerk im <literal>acl</literal>-Abschnitt
|
|
und fügen anschließend die
|
|
<acronym>IP</acronym>-Adressen in die Zonenkonfigurationsdatei
|
|
ein. Um den Zugriff auf Zoneninformationen zu erlauben,
|
|
fügen Sie Zeilen ähnlich den folgenden ein:</para>
|
|
|
|
<programlisting>acl "example.com" {
|
|
192.168.0.0/24;
|
|
};
|
|
|
|
zone "example.com" {
|
|
type slave;
|
|
file "slave/example.com";
|
|
masters {
|
|
10.0.0.1;
|
|
};
|
|
allow-query { example.com; };
|
|
};
|
|
|
|
zone "0.168.192.in-addr.arpa" {
|
|
type slave;
|
|
file "slave/0.168.192.in-addr.arpa";
|
|
masters {
|
|
10.0.0.1;
|
|
};
|
|
allow-query { example.com; };
|
|
}; </programlisting>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Die Ausgabe der Versionsnummer unterbinden</title>
|
|
|
|
<para>Die Abfrage der Versionsnummer des <acronym>DNS</acronym>-
|
|
Servers kann einem Angreifer den Zugriff auf das System
|
|
ermöglichen. Er ist dadurch in der Lage, gezielt nach
|
|
bekannten Sicherheitslücken dieser Version zu suchen und
|
|
diese auf Ihr System anzuwenden.</para>
|
|
|
|
<warning>
|
|
<para>Die Angabe einer falschen Versionsnummer behebt keine
|
|
Sicherheitslücken. Nur die Aktualisierung auf eine
|
|
Version, die nicht mehr angreifbar ist, schützt Ihren
|
|
Server.</para>
|
|
</warning>
|
|
|
|
<para>Dennoch ist es eine gute Idee, eine falsche Angabe im
|
|
Abschitt <literal>options</literal> der Datei
|
|
<filename>named.conf</filename> anzugeben:</para>
|
|
|
|
<programlisting>options {
|
|
directory "/etc/namedb";
|
|
pid-file "/var/run/named/pid";
|
|
dump-file "/var/dump/named_dump.db";
|
|
statistics-file "/var/stats/named.stats";
|
|
version "None of your business";
|
|
}; </programlisting>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-apache">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Der Apache HTTP-Server</title>
|
|
|
|
<indexterm>
|
|
<primary>Webserver</primary>
|
|
<secondary>konfigurieren</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm><primary>Apache</primary></indexterm>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<para>Einige der weltgrößten Internetauftritte laufen
|
|
unter &os;. Die Mehrzahl der Webserver im Internet nutzt
|
|
den <application>Apache</application> HTTP-Server. Die
|
|
Installationspakete für den
|
|
<application>Apache</application> sollten auf Ihrem
|
|
Installationsmedium vorhanden sein. Wenn Sie den
|
|
<application>Apache</application> noch nicht installiert haben,
|
|
können Sie dies jederzeit über den Port
|
|
<filename role="package">www/apache13</filename> oder
|
|
<filename role="package">www/apache20</filename> nachholen.</para>
|
|
|
|
<para>Nachdem der <application>Apache</application> erfolgreich
|
|
installiert wurde, muss er noch konfiguriert werden.</para>
|
|
|
|
<note><para>Dieser Abschnitt beschreibt die Version 1.3.X des
|
|
<application>Apache</application> HTTP-Servers, da diese Version
|
|
unter &os; am häufigsten verwendet wird.
|
|
<application>Apache</application> 2.X bringt zwar viele
|
|
Verbesserungen mit sich, wird hier aber nicht beschrieben.
|
|
Sollten Sie an <application>Apache</application> 2.X
|
|
interessiert sein, informieren Sie sich bitte auf
|
|
<ulink url="http://httpd.apache.org/"></ulink>.</para></note>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfiguration</title>
|
|
|
|
<indexterm><primary>Apache</primary>
|
|
<secondary>Konfigurationsdatei</secondary></indexterm>
|
|
|
|
<para>Der <application>Apache</application> HTTP-Server wird unter
|
|
&os; primär über die Datei
|
|
<filename>/usr/local/etc/apache/httpd.conf</filename>
|
|
konfiguriert. Bei dieser Datei handelt es sich um eine typische
|
|
&unix;-Konfigurationsdatei, in der Kommentarzeilen mit einem
|
|
<literal>#</literal>-Zeichen beginnen. Eine komplette
|
|
Beschreibung aller Optionen würde den Rahmen dieses
|
|
Handbuchs sprengen, daher beschreiben wir hier nur die am
|
|
häufigsten verwendeten Optionen.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>ServerRoot "/usr/local"</literal></term>
|
|
|
|
<listitem>
|
|
<para>Legt das Standardwurzelverzeichnis für die
|
|
<application>Apache</application>-Installation fest.
|
|
Binärdateien werden in die Verzeichnisse
|
|
<filename class="directory">bin</filename> und
|
|
<filename class="directory">sbin</filename> unterhalb des
|
|
Serverwurzelverzeichnisses installiert, während sich
|
|
Konfigurationsdateien im Verzeichnis
|
|
<filename class="directory">etc/apache</filename>
|
|
befinden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>ServerAdmin you@your.address</literal></term>
|
|
|
|
<listitem>
|
|
<para>Die E-Mail-Adresse, an die Mitteilungen über
|
|
Serverprobleme geschickt werden sollen. Diese Adresse
|
|
erscheint auf vom Server erzeugten Seiten, beispielsweise
|
|
auf Fehlerseiten.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>ServerName www.example.com</literal></term>
|
|
|
|
<listitem>
|
|
<para>Über die Option <literal>ServerName</literal>
|
|
können Sie einen Rechnernamen festlegen, den Ihr
|
|
Server an die Clients sendet, wenn sich dieser von
|
|
tatsächlichen Rechnernamen unterscheidet (sie
|
|
könnten etwa <hostid>www</hostid> statt des richtigen
|
|
Rechnernamens verwenden).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>DocumentRoot "/usr/local/www/data"</literal></term>
|
|
|
|
<listitem>
|
|
<para><literal>DocumentRoot</literal>: Das Verzeichnis, in
|
|
dem Sie Ihre Dokumente ablegen. In der Voreinstellung
|
|
befinden sich alle Seiten in diesem Verzeichnis, durch
|
|
symbolische Links oder Aliase lassen sich aber auch andere
|
|
Orte festlegen.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Es ist empfehlenswert, eine Sicherungskopie Ihrer
|
|
Konfigurationsdatei anzulegen, bevor Sie Änderungen
|
|
durchführen. Nachdem Sie die Konfiguration beendet
|
|
haben, können Sie den
|
|
<application>Apache</application> starten.</para>
|
|
|
|
<!-- sect3 for performance tuning directives? maxservers minservers -->
|
|
<!-- etc..?? -->
|
|
|
|
<!-- Advanced configuration section.
|
|
|
|
Performance tuning directives.
|
|
|
|
Log file format -->
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Den <application>Apache</application> betreiben</title>
|
|
|
|
<indexterm><primary>Apache</primary>
|
|
<secondary>Starten oder Beenden</secondary></indexterm>
|
|
|
|
<para>Der <application>Apache</application> wird, im Gegensatz zu
|
|
vielen anderen Netzwerkservern, nicht vom
|
|
<application>inetd</application>-Super-Server verwaltet, sondern
|
|
wird als eigenständiger Server betrieben, um die
|
|
Leistung für eintreffende HTTP-Anfragen von den Clients
|
|
(also von Internetbrowsern) zu verbessern. Gestartet, beendet
|
|
oder neu gestartet wird der Server über einen
|
|
Shellskript-Wrapper. Um den <application>Apache</application>
|
|
erstmals zu starten, geben Sie einfach Folgendes ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl start</userinput></screen>
|
|
|
|
<para>Wenn Sie den Server beenden wollen, geben Sie Folgendes ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl stop</userinput></screen>
|
|
|
|
<para>Wenn Sie die Konfigurationsdatei verändern, müssen
|
|
Sie den Server neu starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl restart</userinput></screen>
|
|
|
|
<para>Um den <application>Apache</application> ohne den Abbruch
|
|
bestehender Verbindungen neu zu starten, geben Sie Folgendes
|
|
ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl graceful</userinput></screen>
|
|
|
|
<para>Diese und weitere Optionen werden in
|
|
&man.apachectl.8; beschrieben.</para>
|
|
|
|
<para>Um den <application>Apache</application> beim Systemstart
|
|
zu starten, fügen Sie folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>apache_enable="YES"</programlisting>
|
|
|
|
<para>Wenn Sie während des Systemstarts weitere Parameter an
|
|
den
|
|
<application>Apache</application>-<command>httpd</command>-Daemon
|
|
übergeben wollen, können Sie diese durch eine
|
|
zusätzliche Zeile in <filename>rc.conf</filename>
|
|
angeben:</para>
|
|
|
|
<programlisting>apache_flags=""</programlisting>
|
|
|
|
<para>Nachdem der Webserver gestartet ist, können Sie sich
|
|
Ihre Internetseite ansehen, indem Sie in Ihren Browser die
|
|
Adresse <literal>http://localhost/</literal> eingeben. Die
|
|
vordefinierte Standardstartseite ist
|
|
<filename>/usr/local/www/data/index.html</filename>.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Virtual Hosting</title>
|
|
|
|
<para>Der <application>Apache</application> unterstützt zwei
|
|
Formen des <foreignphrase>Virtual Hostings</foreignphrase>. Die
|
|
erste Möglichkeit bezeichnet man als namenbasiertes
|
|
virtuelles Hosting. Dabei wird der HTTP/1.1-Header der Clients
|
|
dazu verwendet, den Rechnernamen zu bestimmen. Dadurch wird es
|
|
möglich, mehrere Domains unter der gleichen IP-Adresse zu
|
|
betreiben.</para>
|
|
|
|
<para>Damit der <application>Apache</application> namenbasierte
|
|
virtuelle Domains verwalten kann, fügen Sie die folgende
|
|
Zeile in <filename>httpd.conf</filename> ein:</para>
|
|
|
|
<programlisting>NameVirtualHost *</programlisting>
|
|
|
|
<para>Wenn Ihr Webserver
|
|
<hostid role="fqdn">www.domain.tld</hostid> heißt und Sie die
|
|
virtuelle Domain
|
|
<hostid role="fqdn">www.someotherdomain.tld</hostid> einrichten
|
|
wollen, ergänzen Sie <filename>httpd.conf</filename> um
|
|
folgende Einträge:</para>
|
|
|
|
<screen><VirtualHost *>
|
|
ServerName www.domain.tld
|
|
DocumentRoot /www/domain.tld
|
|
</VirtualHost>
|
|
|
|
<VirtualHost *>
|
|
ServerName www.someotherdomain.tld
|
|
DocumentRoot /www/someotherdomain.tld
|
|
</VirtualHost></screen>
|
|
|
|
<para>Ersetzen Sie dabei die Adressen sowie den Pfad zu den
|
|
Dokumenten durch Ihre eigenen Einstellungen.</para>
|
|
|
|
<para>Ausführliche Informationen zum Einrichten von
|
|
virtuellen Domains finden Sie in der offiziellen
|
|
<application>Apache</application>-Dokumentation unter
|
|
<ulink
|
|
url="http://httpd.apache.org/docs/vhosts/"></ulink>.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Häufig verwendete Apache-Module</title>
|
|
|
|
<indexterm><primary>Apache</primary>
|
|
<secondary>Module</secondary></indexterm>
|
|
|
|
<para>Es gibt viele verschiedene
|
|
<application>Apache</application>-Module, die den Server
|
|
um zusätzliche Funktionen erweitern. Die
|
|
FreeBSD-Ports-Sammlung ermöglicht es Ihnen, den
|
|
<application>Apache</application> gemeinsam mit einigen der
|
|
beliebtesten Zusatzmodule zu installieren.</para>
|
|
|
|
<sect3>
|
|
<title>mod_ssl</title>
|
|
|
|
<indexterm>
|
|
<primary>Webserver</primary>
|
|
<secondary>Verschlüsselung</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>SSL</primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Verschlüsselung</primary>
|
|
</indexterm>
|
|
|
|
<para>Das Modul <application>mod_ssl</application> verwendet die
|
|
OpenSSL-Bibliothek, um, unter Nutzung der Protokolle Secure
|
|
Sockets Layer (SSL v2/v3) sowie Transport Layer Security
|
|
(TLS v1) starke Verschlüsselung zu ermöglichen.
|
|
Durch dieses Modul können Sie ein signiertes Zertifikat
|
|
von einer Zertifizierungsstelle anfordern, damit Sie einen
|
|
sicheren Webserver unter &os; betreiben können.</para>
|
|
|
|
<para>Wenn Sie den <application>Apache</application> 1.3.X noch
|
|
nicht installiert haben, können Sie über den
|
|
Port <filename
|
|
role="package">www/apache13-modssl</filename> eine
|
|
<application>Apache</application>-Version installieren, in die
|
|
<application>mod_ssl</application> als Modul einkompiliert
|
|
wurde. Bevorzugen Sie den
|
|
<application>Apache</application> 2.X, installieren Sie
|
|
stattdessen den Port
|
|
<filename role="package">www/apache20</filename>, bei dem die
|
|
SSL-Unterstützung bereits in der Voreinstellung aktiviert
|
|
ist.</para>
|
|
|
|
<!-- XXX add more information about configuring mod_ssl here. -->
|
|
<!-- Generating keys, getting the key signed, setting up your secure -->
|
|
<!-- web server! -->
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Dynamische Webseiten mit Perl & PHP</title>
|
|
|
|
<para>In den vergangenen Jahren haben immer mehr Unternehmen
|
|
das Internet als Mittel für die Steigerung ihrer
|
|
Einnahmen sowie für die Erhöhung ihrer Reichweite
|
|
entdeckt. Dadurch stieg auch die Nachfrage nach interaktiven
|
|
Internetinhalten. Neben einigen Unternehmen, darunter
|
|
µsoft;, die dafür proprietäre Produkte
|
|
entwickelt haben, hat auch die Open Source Community auf
|
|
diesen Umstand reagiert und unter anderem mit
|
|
<application>mod_perl</application> und
|
|
<application>mod_php</application> Möglichkeiten zur
|
|
Generierung dynamischer Internetseiten geschaffen.</para>
|
|
|
|
<sect4>
|
|
<title>mod_perl</title>
|
|
|
|
<indexterm>
|
|
<primary>mod_perl</primary>
|
|
<secondary>Perl</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die Kombination <application>Apache</application>/Perl
|
|
vereinigt die Vorteile der Programmiersprache Perl und des
|
|
<application>Apache</application> HTTP-Servers. Durch
|
|
das Modul <application>mod_perl</application> ist es
|
|
möglich, vollständig in Perl geschriebene
|
|
<application>Apache</application>-Module zu erzeugen.
|
|
Da der Perl-Interpreter in den Server eingebettet wird,
|
|
müssen Sie weder einen externen Interpreter noch
|
|
Perl zusätzlich aufrufen.</para>
|
|
|
|
<para><application>mod_perl</application> ist in verschiedenen
|
|
Versionen erhältlich. Bevor Sie
|
|
<application>mod_perl</application> einsetzen,denken Sie
|
|
bitte daran, dass <application>mod_perl</application> 1.0
|
|
nur mit <application>Apache</application> 1.3 und
|
|
<application>mod_perl</application> 2.0 nur mit
|
|
<application>Apache</application> 2 zusammenarbeitet.
|
|
<application>mod_perl</application> 1.0 kann über
|
|
den Port <filename role="package">www/mod_perl</filename>,
|
|
eine statisch kompilierte Version hingegen über den
|
|
Port <filename role="package">www/apache13-modperl</filename>
|
|
installiert werden. Für die Installation von
|
|
<application>mod_perl</application> 2.0 schließlich
|
|
verwenden Sie den Port <filename
|
|
role="package">www/mod_perl2</filename>.</para>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<sect4info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect4info>
|
|
|
|
<title>mod_php</title>
|
|
|
|
<indexterm>
|
|
<primary>mod_php</primary>
|
|
<secondary>PHP</secondary>
|
|
</indexterm>
|
|
|
|
<para>Bei PHP, dem <quote>Hypertext Preprocessor</quote>,
|
|
handelt es sich um eine vielseitig verwendbare Skriptsprache,
|
|
die besonders für die Internetprogrammierung geeignet
|
|
ist. PHP kann in <acronym>HTML</acronym> eingebettet werden
|
|
und ähnelt von der Syntax her Sprachen wie C, &java; und
|
|
Perl. Das Hauptanliegen von PHP ist es, Internetprogrammierern
|
|
die rasche Erstellung von dynamisch erzeugten Internetseiten zu
|
|
ermöglichen.</para>
|
|
|
|
<para>Damit Ihr System <acronym>PHP</acronym>5 unterstützt,
|
|
müssen Sie als Erstes den <application>Apache</application>
|
|
Webserver über den Port
|
|
<filename role="package">www/mod_php5</filename>
|
|
installieren.</para>
|
|
|
|
<para>Dieser Port installiert und konfiguriert die Module, die
|
|
für die Unterstützung von dynamischen
|
|
<acronym>PHP</acronym>-Anwendungen benötigt werden.
|
|
Stellen Sie danach sicher, dass Ihre
|
|
<filename>/usr/local/etc/apache/httpd.conf</filename> die
|
|
folgenden Abschnitte enthält:</para>
|
|
|
|
<programlisting>LoadModule php5_module libexec/apache/libphp5.so</programlisting>
|
|
|
|
<programlisting>AddModule mod_php5.c
|
|
<IfModule mod_php5.c>
|
|
DirectoryIndex index.php index.html
|
|
</IfModule>
|
|
<IfModule mod_php5.c>
|
|
AddType application/x-httpd-php .php
|
|
AddType application/x-httpd-php-source .phps
|
|
</IfModule></programlisting>
|
|
|
|
<para>Nachdem dies erledigt ist, rufen Sie
|
|
<command>apachectl</command> auf, um das
|
|
<acronym>PHP</acronym>-Modul zu laden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
|
|
|
|
<para>Die <acronym>PHP</acronym>-Unterstützung von &os; ist
|
|
stark modular aufgebaut, daher verfügt eine
|
|
Basisinstallation nur über wenige Funktionen. Eine
|
|
Erweiterung um zusätzliche Funktionen ist allerdings sehr
|
|
einfach über den Port <filename
|
|
role="package">lang/php5-extensions</filename> möglich.
|
|
Der Port bietet Ihnen ein Auswahlmenü, über das Sie
|
|
verschiedene <acronym>PHP</acronym>-Erweiterungen installieren
|
|
können. Alternativ können Sie einzelne Erweiterungen
|
|
aber weiterhin direkt über den jeweiligen Port
|
|
installieren.</para>
|
|
|
|
<para>Um beispielsweise die Unterstützung des
|
|
Datenbankservers <application>MySQL</application> in
|
|
<acronym>PHP</acronym>5 zu aktivieren, installieren Sie
|
|
den Port <filename
|
|
role="package">databases/php5-mysql</filename>.</para>
|
|
|
|
<para>Nachdem Sie eine Erweiterung installiert haben,
|
|
müssen Sie den
|
|
<application>Apache</application>-Server neu starten, damit
|
|
die Erweiterung auch erkannt wird:</para>
|
|
|
|
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
|
|
|
|
<para>Ab nun wird <application>MySQL</application> von
|
|
<application>PHP</application> unterstützt.</para>
|
|
</sect4>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-ftp">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
<title>FTP – File Transfer Protocol</title>
|
|
|
|
<indexterm><primary>FTP-Server</primary></indexterm>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<para>Das File Transfer Protocol (FTP) ermöglicht
|
|
auf einfache Art und Weise den Dateiaustausch mit einem
|
|
<acronym role="File Transfer Protocol">FTP</acronym>-Server.
|
|
Der
|
|
<acronym role="File Transfer Protocol">FTP</acronym>-Server
|
|
<application>ftpd</application> ist bei &os; bereits im
|
|
Basisystem enthalten. Daher sind Konfiguration und Betrieb
|
|
eines
|
|
<acronym role="File Transfer Protocol">FTP</acronym>-Servers
|
|
unter FreeBSD relativ einfach.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfiguration</title>
|
|
|
|
<para>Der wichtigste Punkt ist hier die Entscheidung darüber,
|
|
welche Benutzer auf Ihren FTP-Server zugreifen dürfen.
|
|
Ein FreeBSD-System verfügt über diverse
|
|
Systembenutzerkonten, um einzelnen Daemonen den Zugriff auf
|
|
das System zu ermöglichen. Anonyme Benutzer sollten sich
|
|
allerdings nicht über diese Benutzerkonten anmelden
|
|
dürfen. Die Datei <filename>/etc/ftpusers</filename>
|
|
enthält alle Benutzer, die vom FTP-Zugriff ausgeschlossen
|
|
sind. In der Voreinstellung gilt dies auch die gerade
|
|
erwähnten Systembenutzerkonten. Sie können über
|
|
diese Datei weitere Benutzer vom FTP-Zugriff
|
|
ausschließen.</para>
|
|
|
|
<para>Sie können den Zugriff für einige Benutzer
|
|
einschränken, ohne FTP komplett zu verbieten. Dazu
|
|
passen Sie <filename>/etc/ftpchroot</filename> entsprechend an.
|
|
Diese Datei enthält Benutzer und Gruppen sowie die für
|
|
sie geltenden FTP-Einschränkungen und wird in
|
|
&man.ftpchroot.5; ausführlich beschrieben.</para>
|
|
|
|
<indexterm>
|
|
<primary>FTP</primary>
|
|
<secondary>anonymous</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn Sie einen anonymen FTP-Zugriff auf Ihren Server
|
|
ermöglichen wollen, müssen Sie den Benutzer
|
|
<username>ftp</username> auf Ihrem &os;-System anlegen.
|
|
Danach können sich Benutzer mit dem Benutzernamen
|
|
<username>ftp</username> oder <username>anonymous</username>
|
|
auf Ihrem FTP-Server anmelden. Das Passwort ist dabei
|
|
beliebig (allerdings wird dazu in der Regel eine E-Mail-Adresse
|
|
verwendet). Meldet sich ein anonymer Benutzer an, aktiviert
|
|
der FTP-Server &man.chroot.2;, um den Zugriff auf das
|
|
Heimatverzeichnis des Benutzers <username>ftp</username>
|
|
zu beschränken.</para>
|
|
|
|
<para>Es gibt zwei Textdateien, deren Inhalt Sie bei der Anmeldung
|
|
an Ihrem FTP-Server anzeigen lassen können. Der Inhalt von
|
|
<filename>/etc/ftpwelcome</filename> wird angezeigt, bevor der
|
|
Login-Prompt erscheint. Nach einer erfolgreichen Anmeldung wird
|
|
der Inhalt von <filename>/etc/ftpmotd</filename> angezeigt.
|
|
Beachten Sie aber, dass es dabei um einen Pfad relativ zur
|
|
Umgebung des anzumeldenden Benutzers handelt. Bei einer
|
|
anonymen Anmeldung würde also die Datei
|
|
<filename>~ftp/etc/ftpmotd</filename> angezeigt.</para>
|
|
|
|
<para>Nachdem Sie den FTP-Server konfiguriert haben, müssen
|
|
Sie Ihn in <filename>/etc/inetd.conf</filename> aktivieren.
|
|
Dazu müssen Sie lediglich das Kommentarsymbol
|
|
<quote>#</quote> am Beginn der bereits vorhandenen
|
|
<application>ftpd</application>-Zeile entfernen:</para>
|
|
|
|
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
|
|
|
|
<para>Nachdem Sie diese Änderung durchgeführt haben,
|
|
müssen Sie, wie in <xref linkend="network-inetd-reread">
|
|
beschrieben, die <application>inetd</application>-Konfiguration
|
|
neu einlesen.</para>
|
|
|
|
<para>Danach können Sie sich auf Ihrem FTP-Server anmelden:</para>
|
|
|
|
<screen>&prompt.user; <userinput>ftp localhost</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Wartung</title>
|
|
|
|
<indexterm><primary>syslog</primary></indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Logdateien</primary>
|
|
<secondary>FTP</secondary>
|
|
</indexterm>
|
|
|
|
<para>Der <application>ftpd</application>-Daemon verwendet
|
|
&man.syslog.3;, um Protokolldateien zu erstellen. In der
|
|
Voreinstellung werden alle FTP betreffenden Nachrichten
|
|
in die Datei <filename>/var/log/xferlog</filename>
|
|
geschrieben. Dies lässt sich aber durch das Einfügen
|
|
der folgenden Zeile in <filename>/etc/syslog.conf</filename>
|
|
ändern:</para>
|
|
|
|
<programlisting>ftp.info /var/log/xferlog</programlisting>
|
|
|
|
<indexterm>
|
|
<primary>FTP</primary>
|
|
<secondary>anonymous</secondary>
|
|
</indexterm>
|
|
|
|
<para>Beachten Sie, dass mit dem Betrieb eines anonymen
|
|
FTP-Servers verschiedene Sicherheitsrisiken verbunden sind.
|
|
Problematisch ist hier vor allem die Erlaubnis zum anonymen
|
|
Upload von Dateien. Dadurch könnte Ihr Server zur
|
|
Verbreitung von illegaler oder nicht lizensierter Software
|
|
oder noch Schlimmeren missbraucht werden. Wollen Sie
|
|
anonyme Uploads dennoch erlauben, sollten Sie die
|
|
Zugriffsrechte so setzen, dass solche Dateien erst nach Ihrer
|
|
Zustimmung von anderen Benutzern heruntergeladen werden
|
|
können.</para>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-samba">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Mit Samba einen Datei- und Druckserver für
|
|
µsoft.windows;-Clients einrichten</title>
|
|
|
|
<indexterm><primary>Samba-Server</primary></indexterm>
|
|
<indexterm><primary>Microsoft Windows</primary></indexterm>
|
|
<indexterm>
|
|
<primary>Dateiserver</primary>
|
|
<secondary>Windows-Clients</secondary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>Druckserver</primary>
|
|
<secondary>Windows-Clients</secondary>
|
|
</indexterm>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<para><application>Samba</application> ist ein beliebtes
|
|
Open Source-Softwarepaket, das es Ihnen ermöglicht,
|
|
einen Datei- und Druckserver für
|
|
µsoft.windows;-Clients einzurichten. Clients können
|
|
sich dadurch mit einem FreeBSD-System verbinden und dessen
|
|
Speicherplatz oder dessen Drucker verwenden. Dies genauso, als
|
|
wenn es sich um lokale Drucker oder Festplatten handeln
|
|
würde.</para>
|
|
|
|
<para><application>Samba</application> sollte als Softwarepaket
|
|
auf Ihren Installationsmedien vorhanden sein. Wenn Sie
|
|
<application>Samba</application> noch nicht installiert haben,
|
|
können Sie dies jederzeit über den Port oder das
|
|
Paket <filename role="package">net/samba3</filename>
|
|
nachholen.</para>
|
|
|
|
<!-- mention LDAP, Active Directory, WinBIND, ACL, Quotas, PAM, .. -->
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfiguration</title>
|
|
|
|
<para>Die Standardkonfigurationsdatei von
|
|
<application>Samba</application> heißt
|
|
<filename>/usr/local/etc/smb.conf.default</filename>. Diese
|
|
Datei muss nach <filename>/usr/local/etc/smb.conf</filename>
|
|
kopiert und angepasst werden, bevor
|
|
<application>Samba</application> verwendet werden kann.</para>
|
|
|
|
<para>Die Datei <filename>smb.conf</filename> enthält
|
|
Laufzeitinformationen für
|
|
<application>Samba</application>, beispielsweise
|
|
Druckerdefinitionen oder
|
|
<foreignphrase>filesystem shares</foreignphrase>, also Bereiche
|
|
des Dateisystems, die Sie mit &windows;-Clients teilen wollen.
|
|
Die Konfiguration der Datei <filename>smb.conf</filename>
|
|
erfolgt webbasiert über das im
|
|
<application>Samba</application>-Paket enthaltene Programm
|
|
<application>swat</application>.</para>
|
|
|
|
<sect3>
|
|
<title>Das Samba Web Administration Tool (SWAT) verwenden</title>
|
|
|
|
<para>Das
|
|
<foreignphrase>Samba Web Administration Tool</foreignphrase>
|
|
(SWAT) wird als Daemon von <application>inetd</application>
|
|
aktiviert. Daher müssen Sie den Kommentar vor der
|
|
folgenden Zeile in <filename>/etc/inetd.conf</filename>
|
|
entfernen, bevor Sie <application>swat</application> zur
|
|
Konfiguration von <application>Samba</application> verwenden
|
|
können:</para>
|
|
|
|
<programlisting>swat stream tcp nowait/400 root /usr/local/sbin/swat</programlisting>
|
|
|
|
<para>Wie bereits in <xref linkend="network-inetd-reread">
|
|
beschrieben, müssen Sie die
|
|
<application>inetd</application>-Konfiguration neu einlesen,
|
|
nachdem Sie diese Änderung durchgeführt haben.</para>
|
|
|
|
<para>Nachdem <application>swat</application> in der Datei
|
|
<filename>inetd.conf</filename> aktiviert wurde, rufen Sie
|
|
in Ihrem Internetbrowser die Adresse
|
|
<ulink url="http://localhost:901"></ulink> auf und melden sich
|
|
mit dem <username>root</username>-Benutzerkonto an.</para>
|
|
|
|
<!-- XXX screenshots go here, loader is creating them -->
|
|
|
|
<para>Nachdem Sie sich erfolgreich angemeldet haben, wird die
|
|
Hauptkonfigurationseite von <application>Samba</application>
|
|
geladen. Sie können nun die Dokumentation lesen, oder
|
|
durch einen Klick auf die
|
|
<guimenu>Globals</guimenu>-Karteikarte mit der Konfiguration
|
|
beginnen. Die Einstellungen, die Sie hier vornehmen
|
|
können, entsprechen denen des Abschnitts
|
|
<literal>[global]</literal> von
|
|
<filename>/usr/local/etc/smb.conf</filename>.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Globale Einstellungen</title>
|
|
|
|
<para>Unabhängig davon, ob Sie
|
|
<application>swat</application> verwenden, oder
|
|
<filename>/usr/local/etc/smb.conf</filename> direkt
|
|
editieren, sollten Sie zuerst folgende Einstellungen
|
|
anpassen:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>workgroup</literal></term>
|
|
|
|
<listitem>
|
|
<para>Der NT-Domänenname oder der Arbeitsgruppenname der
|
|
Rechner, die auf den Server Zugriff haben sollen.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>netbios name</literal></term>
|
|
<indexterm><primary>NetBIOS</primary></indexterm>
|
|
|
|
<listitem>
|
|
<para>Legt den NetBIOS-Namen fest, unter dem der
|
|
<application>Samba</application>-Server bekannt ist.
|
|
In der Regel handelt es sich dabei um den ersten
|
|
Teil des DNS-Namens des Servers.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>server string</literal></term>
|
|
|
|
<listitem>
|
|
<para>Legt die Beschreibung fest, die angezeigt werden
|
|
soll, wenn mit <command>net view</command> oder
|
|
über andere Netzwerkprogramme Informationen
|
|
über den Server angefordert werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Samba absichern</title>
|
|
|
|
<para>Zwei der wichtigsten Einstellungen in
|
|
<filename>/usr/local/etc/smb.conf</filename> betreffen
|
|
das zu verwendende Sicherheitsmodell sowie das
|
|
Backend-Passwortformat für die Benutzer der
|
|
Samba-Clients. Folgende Optionen sind dafür
|
|
verantwortlich:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>security</literal></term>
|
|
|
|
<listitem>
|
|
<para>Die häufigsten Optionen sind
|
|
<literal>security = share</literal> und
|
|
<literal>security = user</literal>. Wenn Ihre Clients
|
|
Benutzernamen verwenden, die den Benutzernamen auf Ihrem
|
|
&os;-Rechner entsprechen, dann sollten Sie die
|
|
Einstellung <foreignphrase>user level</foreignphrase>
|
|
verwenden. Dies ist auch die Standardeinstellung.
|
|
Allerdings ist es dazu erforderlich, dass sich die
|
|
Clients auf Ihrem Rechner anmelden, bevor sie auf
|
|
gemeinsame Ressourcen zugreifen können.</para>
|
|
|
|
<para>In der Einstellung
|
|
<foreignphrase>share level</foreignphrase> müssen
|
|
sich Clients nicht unter Verwendung eines gültigen
|
|
Logins auf Ihrem Rechner anmelden, bevor sie auf
|
|
gemeinsame Ressourcen zugreifen können. In
|
|
früheren <application>Samba</application>-Versionen
|
|
war dies die Standardeinstellung.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>passdb backend</literal></term>
|
|
|
|
<indexterm><primary>NIS+</primary></indexterm>
|
|
<indexterm><primary>LDAP</primary></indexterm>
|
|
<indexterm><primary>SQL database</primary></indexterm>
|
|
|
|
<listitem>
|
|
<para><application>Samba</application> erlaubt
|
|
verschiedene Backend-Authentifizierungsmodelle. Sie
|
|
können Clients durch LDAP, NIS+, eine SQL-Datenbank
|
|
oder eine Passwortdatei authentifizieren. In der
|
|
Voreinstellung wird <literal>smbpasswd</literal>
|
|
verwendet. Diese Methode wird im folgenden Abschnitt
|
|
näher beschrieben.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Wenn Sie <literal>smbpasswd</literal> verwenden, müssen
|
|
Sie die Datei <filename>/usr/local/private/smbpasswd</filename>
|
|
erzeugen, damit <application>Samba</application> in der Lage
|
|
ist, Clients zu authentifizieren. Wenn Sie allen auf Ihrem
|
|
&unix;-Rechner vorhandenen Benutzern den Zugriff von einem
|
|
&windows;-Client aus ermöglichen wollen, verwenden Sie den
|
|
folgenden Befehl:</para>
|
|
|
|
<screen>&prompt.root; <userinput>grep -v "^#" /etc/passwd | make_smbpasswd > /usr/local/private/smbpasswd</userinput>
|
|
&prompt.root; <userinput>chmod 600 /usr/local/private/smbpasswd</userinput></screen>
|
|
|
|
<para>Für ausführliche Informationen zur Konfiguration
|
|
von <application>Samba</application> sollten Sie die
|
|
mitinstallierte Dokumentation lesen. Sie sollten aber nach dem
|
|
Lesen dieses Abschnitts in der Lage sein,
|
|
<application>Samba</application> zu starten.</para>
|
|
</sect3>
|
|
|
|
</sect2>
|
|
<sect2>
|
|
<title><application>Samba</application> starten</title>
|
|
|
|
<para>Um <application>Samba</application> beim Systemstart zu
|
|
aktivieren, fügen Sie folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>samba_enable="YES"</programlisting>
|
|
|
|
<para>Danach können Sie <application>Samba</application>
|
|
jederzeit durch folgenden Befehl starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba.sh start</userinput>
|
|
Starting SAMBA: removing stale tdbs :
|
|
Starting nmbd.
|
|
Starting smbd.</screen>
|
|
|
|
<para><application>Samba</application> verwendet drei Daemonen.
|
|
Beachten Sie, dass sowohl <application>nmbd</application> als
|
|
auch <application>smbd</application> durch das Skript
|
|
<filename>samba.sh</filename> gestartet werden. Wenn Sie die
|
|
<foreignphrase>winbind name resolution services</foreignphrase>
|
|
in <filename>smb.conf</filename> aktiviert haben, wird
|
|
zusätzlich der <application>winbindd</application>-Daemon
|
|
gestartet.</para>
|
|
|
|
<para>Sie können <application>Samba</application> jederzeit
|
|
durch den folgenden Befehl beenden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba.sh stop</userinput></screen>
|
|
|
|
<para><application>Samba</application> ist ein komplexes
|
|
Softwarepaket mit umfassenden Funktionen, die eine weitreichende
|
|
Integration von µsoft.windows;-Netzwerken ermöglichen.
|
|
Für eine Beschreibung dieser Zusatzfunktionen sollten Sie
|
|
sich auf <ulink url="http://www.samba.org"></ulink> umsehen.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-ntp">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Hukins</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Die Uhrzeit mit NTP synchronisieren</title>
|
|
|
|
<indexterm><primary>NTP</primary></indexterm>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<para>Da die interne Uhrzeit eines Computers nie ganz exakt ist,
|
|
wurde mit NTP
|
|
(<foreignphrase>Network Time Protocol</foreignphrase>) eine
|
|
Möglichkeit geschaffen, die exakte Uhrzeit zu ermitteln
|
|
und festzulegen.</para>
|
|
|
|
<para>Viele Internetdienste sind von einer exakten Uhrzeit
|
|
abhängig. Ein Webserver könnte beispielsweise die
|
|
Anforderung erhalten, eine Datei zu versenden, wenn sich diese
|
|
in einer bestimmten Zeitspanne geändert hat. In einem
|
|
lokalen Netzwerk ist es unbedingt notwendig, dass Rechner, die
|
|
Dateien von einem gemeinsamen Dateiserver beziehen, ihre
|
|
Uhrzeit synchronisieren, damit die Zeitstempel der Dateien
|
|
konstistent bleiben. Dienste wie &man.cron.8; führen
|
|
Befehle zu einem bestimmten Zeitpunkt aus. Ist die Uhrzeit
|
|
nicht korrekt, kann dies zu Problemen führen.</para>
|
|
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>ntpd</secondary>
|
|
</indexterm>
|
|
|
|
<para>&os; verwendet den &man.ntpd.8;-
|
|
<acronym role="Network Time Protocol">NTP</acronym>-Server,
|
|
um die genaue Uhrzeit von anderen
|
|
<acronym role="Network Time Protocol">NTP</acronym>-Servern
|
|
abzufragen, die eigene Systemzeit zu setzen, oder um diese
|
|
anderen Rechnern anzubieten.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Einen passenden NTP-Server auswählen</title>
|
|
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>Serverwahl</secondary>
|
|
</indexterm>
|
|
|
|
<para>Um die Uhrzeit zu synchronisieren, müssen Sie sich mit
|
|
einem
|
|
<acronym role="Network Time Protocol">NTP</acronym>-Server
|
|
verbinden. Ihr Netzwerkadministrator oder Ihr Internetprovider
|
|
haben vielleicht schon einen NTP-Server eingerichtet. Lesen Sie
|
|
deren Dokumentation, um dies zu überprüfen. Es gibt
|
|
im Internet eine
|
|
<ulink url="http://ntp.isc.org/bin/view/Servers/WebHome">
|
|
Liste mit frei zugänglichen NTP-Servern</ulink>, aus der
|
|
Sie sich einen in Ihrer Nähe gelegenen Server
|
|
auswählen können. Beachten Sie aber auf jeden Fall
|
|
die Nutzungsbedingungen des entsprechenden Servers, und fragen
|
|
Sie um Erlaubnis, wenn dies nötig ist.</para>
|
|
|
|
<para>Die Auswahl von mehreren NTP-Servern kann sinnvoll sein,
|
|
wenn ein Server ausfällt oder falsche Zeiten liefert.
|
|
&man.ntpd.8; verwendet die Antworten anderer Server, um
|
|
zuverlässige Server zu bestimmen, die dann bevorzugt
|
|
abgefragt werden.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>NTP unter &os; einrichten</title>
|
|
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>Konfiguration</secondary>
|
|
</indexterm>
|
|
|
|
<sect3>
|
|
<title>NTP aktivieren</title>
|
|
|
|
<indexterm><primary>ntpdate</primary></indexterm>
|
|
|
|
<para>Wenn Sie Ihre Uhrzeit nur beim Systemstart
|
|
synchronisieren wollen, können Sie &man.ntpdate.8;
|
|
verwenden. Für Desktoprechner, die regelmäßig
|
|
neu gestartet werden und keine ständige Synchronisation
|
|
benötigen, ist dies akzeptabel. In allen anderen
|
|
Fällen sollten Sie jedoch &man.ntpd.8; verwenden.</para>
|
|
|
|
<para>Die Ausführung von &man.ntpdate.8; während des
|
|
Systemstarts ist aber auch für Rechner, die &man.ntpd.8;
|
|
verwenden, sinnvoll. &man.ntpd.8; passt die Systemzeit nur
|
|
bei größeren Abweichungen an, während
|
|
&man.ntpdate.8; die Zeit immer synchronisiert, egal wie
|
|
groß die Differenz zwischen Systemzeit und korrekter
|
|
Zeit ist.</para>
|
|
|
|
<para>Um &man.ntpdate.8; beim Systemstart zu aktivieren,
|
|
fügen Sie den Eintrag
|
|
<literal>ntpdate_enable="YES"</literal> in
|
|
<filename>/etc/rc.conf</filename> ein. Außerdem müssen
|
|
Sie alle Server, mit denen Sie sich synchronisieren wollen,
|
|
sowie alle an &man.ntpdate.8; zu übergebenden Optionen
|
|
in den <varname>ntpdate_flags</varname> angeben.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>ntp.conf</secondary>
|
|
</indexterm>
|
|
|
|
<title>NTP einrichten</title>
|
|
|
|
<para>Die Konfiguration von NTP erfolgt über die Datei
|
|
<filename>/etc/ntp.conf</filename>, und wird in der
|
|
Hilfeseite &man.ntp.conf.5; beschrieben. Dazu ein
|
|
einfaches Beispiel:</para>
|
|
|
|
<programlisting>server ntplocal.example.com prefer
|
|
server timeserver.example.org
|
|
server ntp2a.example.net
|
|
|
|
driftfile /var/db/ntp.drift</programlisting>
|
|
|
|
<para>Die Option <literal>server</literal> legt die zu
|
|
verwendenden Server fest, wobei jeder Server in einer eigenen
|
|
Zeile steht. Wenn ein Server mit der Option
|
|
<literal>prefer</literal> versehen ist, wie dies hier bei
|
|
<hostid role="fqdn">ntplocal.example.com</hostid> der Fall
|
|
ist, wird dieser Server bevorzugt verwendet. Eine Antwort von
|
|
einem bevorzugten Server wird nur dann verworfen, wenn sie
|
|
signifikant von denen anderer Server abweicht, ansonsten wird
|
|
sie ohne Abfrage weiterer Server verwendet. Die Option
|
|
<literal>prefer</literal> wird gewöhnlich nur für
|
|
sehr zuverlässige und genaue Server verwendet, die
|
|
über spezielle Hardware zur Zeitüberwachung
|
|
verfügen.</para>
|
|
|
|
<para>Die Option <literal>driftfile</literal> legt fest, in
|
|
welcher Datei die Abweichungen der Systemuhr protokolliert
|
|
werden. &man.ntpd.8; verwendet diese Datei, um die Systemzeit
|
|
automatisch anzupassen, selbst wenn kurzzeitig kein NTP-Server
|
|
zur Synchronisation verfügbar ist.</para>
|
|
|
|
<para>Weiterhin legt die Option <literal>driftfile</literal> fest,
|
|
wo Informationen über frühere Antworten des von
|
|
Ihnen verwendeten NTP-Servers gespeichert werden sollen.
|
|
Diese Datei enthält NTP-interne Informationen, sie sollte
|
|
daher von anderen Prozessen nicht verändert werden.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Den Zugang zu Ihrem NTP-Server beschränken</title>
|
|
|
|
<para>In der Voreinstellung ist Ihr NTP-Server für alle
|
|
Rechner im Internet erreichbar. Über die Option
|
|
<literal>restrict</literal> in der Datei
|
|
<filename>/etc/ntp.conf</filename> können Sie den
|
|
Zugang zu Ihrem Server beschränken.</para>
|
|
|
|
<para>Wenn Sie alle Rechner vom Zugriff auf Ihren NTP-Server
|
|
ausschließen wollen, fügen Sie folgende Zeile in
|
|
<filename>/etc/ntp.conf</filename> ein:</para>
|
|
|
|
<programlisting>restrict default ignore</programlisting>
|
|
|
|
<para>Wenn Sie nur Rechnern Ihres eigenen Netzwerks die
|
|
Synchronisation mit Ihrem NTP-Server erlauben, gleichzeitig
|
|
aber verhindern wollen, dass diese den NTP-Server
|
|
konfigurieren oder als Server für andere Rechner dienen
|
|
können, fügen Sie folgende Zeile ein:</para>
|
|
|
|
<programlisting>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap</programlisting>
|
|
|
|
<para>Bei <hostid role="ipaddr">192.168.1.0</hostid> handelt es
|
|
sich um einen Rechner Ihres Netzwerks.
|
|
<hostid role="netmask">255.255.255.0</hostid> ist die
|
|
Netzmaske Ihres Netzwerks.</para>
|
|
|
|
<para><filename>/etc/ntp.conf</filename> kann verschiedene
|
|
<literal>restrict</literal>-Optionen enthalten.
|
|
Weiteres erfahren Sie im Abschnitt
|
|
<literal>Access Control Support</literal> der
|
|
Hilfeseite &man.ntp.conf.5;.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Den NTP-Server starten</title>
|
|
|
|
<para>Damit der NTP-Server beim Systemstart automatisch gestartet
|
|
wird, fügen Sie den Eintrag
|
|
<literal>ntpd_enable="YES"</literal> in
|
|
<filename>/etc/rc.conf</filename> ein. Wenn Sie weitere
|
|
Argumente an &man.ntpd.8; übergeben wollen, passen Sie
|
|
die Option <varname>ntpd_flags</varname> in der Datei
|
|
<filename>/etc/rc.conf</filename> entsprechend an.</para>
|
|
|
|
<para>Um den NTP-Server ohne einen Systemneustart zu starten,
|
|
rufen Sie <command>ntpd</command> mit den unter
|
|
<varname>ntpd_flags</varname> in
|
|
<filename>/etc/rc.conf</filename> festgelegten Parametern auf.
|
|
Hierzu ein Beispiel:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ntpd -p /var/run/ntpd.pid</userinput></screen>
|
|
|
|
<note><para>Unter &os; 4.X
|
|
müssen Sie alle Vorkommen von <literal>ntpd</literal>
|
|
durch <literal>xntpd</literal> ersetzen.</para></note>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>ntpd mit einer Einwahlverbindung verwenden</title>
|
|
|
|
<para>&man.ntpd.8; benötigt keine ständige
|
|
Internetverbindung. Wenn Sie sich ins Internet einwählen,
|
|
ist es sinnvoll, zu verhindern, dass NTP-Verkehr eine Verbindung
|
|
aufbauen oder aufrechterhalten kann. Wenn Sie user-PPP
|
|
verwenden, können Sie dies in den
|
|
<literal>filter</literal>-Direktiven von
|
|
<filename>/etc/ppp/ppp.conf</filename> festlegen. Sehen Sie
|
|
sich dazu das folgende Beispiel ein:</para>
|
|
|
|
<programlisting>set filter dial 0 deny udp src eq 123
|
|
# Prevent NTP traffic from initiating dial out
|
|
set filter dial 1 permit 0 0
|
|
set filter alive 0 deny udp src eq 123
|
|
# Prevent incoming NTP traffic from keeping the connection open
|
|
set filter alive 1 deny udp dst eq 123
|
|
# Prevent outgoing NTP traffic from keeping the connection open
|
|
set filter alive 2 permit 0/0 0/0</programlisting>
|
|
|
|
<para>Weitere Informationen finden Sie im Abschnitt
|
|
<literal>PACKET FILTERING</literal> von &man.ppp.8; sowie in den
|
|
Beispielen unter <filename>/usr/share/examples/ppp/</filename>.</para>
|
|
|
|
<note><para>Einige Internetprovider blockieren Ports mit niedrigen
|
|
Nummern. In solchen Fällen funktioniert NTP leider
|
|
nicht, da Antworten eines NTP-Servers Ihren Rechner nicht
|
|
erreichen werden.</para></note>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Weitere Informationen</title>
|
|
|
|
<para>Weiterführende Dokumentation (im HTML-Format)
|
|
zum NTP-Server finden Sie unter
|
|
<filename>/usr/share/doc/ntp/</filename>.</para>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|
|
|
|
<!--
|
|
Local Variables:
|
|
mode: sgml
|
|
sgml-declaration: "../chapter.decl"
|
|
sgml-indent-data: t
|
|
sgml-omittag: nil
|
|
sgml-always-quote-attributes: t
|
|
sgml-parent-document: ("../book.sgml" "part" "chapter")
|
|
End:
|
|
-->
|