Only samba4 is available in ports now, switch to use samba_server for service start/stop.
4802 lines
177 KiB
XML
4802 lines
177 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD German Documentation Project
|
|
|
|
$FreeBSD$
|
|
$FreeBSDde: de-docproj/books/handbook/network-servers/chapter.xml,v 1.103 2011/12/24 15:51:18 bcr Exp $
|
|
basiert auf: r52015
|
|
-->
|
|
<chapter xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
|
xml:id="network-servers">
|
|
<!--
|
|
<info>
|
|
<authorgroup>
|
|
<author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname><contrib>Überarbeitet von </contrib></author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
|
|
<title>Netzwerkserver</title>
|
|
|
|
<sect1 xml:id="network-servers-synopsis">
|
|
<title>Übersicht</title>
|
|
|
|
<para>Dieses Kapitel beschreibt einige der häufiger verwendeten
|
|
Netzwerkdienste auf &unix;-Systemen. Dazu zählen
|
|
Installation und Konfiguration sowie Test und Wartung
|
|
verschiedener Netzwerkdienste. Zusätzlich sind im ganzen
|
|
Kapitel Beispielkonfigurationen als Referenz enthalten.</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 das
|
|
<foreignphrase>Network File System</foreignphrase>
|
|
(<acronym>NFS</acronym>) eingerichtet wird.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Einen
|
|
<foreignphrase>Network Information Server</foreignphrase>
|
|
(<acronym>NIS</acronym>) einrichten können, um damit
|
|
Benutzerkonten im Netzwerk zu verteilen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie Sie &os; einrichten, um als
|
|
<acronym>LDAP</acronym>-Server oder -Client zu
|
|
agieren.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Rechner durch Nutzung von <acronym>DHCP</acronym>
|
|
automatisch für ein Netzwerk konfigurieren können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>In der Lage sein, einen
|
|
<foreignphrase>Domain Name Server</foreignphrase>
|
|
(<acronym>DNS</acronym>) einzurichten.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Den <application>Apache</application>
|
|
<acronym>HTTP</acronym>-Server konfigurieren können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man einen
|
|
<foreignphrase>File Transfer Protocol</foreignphrase>
|
|
(<acronym>FTP</acronym>)-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 <acronym>NTP</acronym>-Protokolls
|
|
Datum und Uhrzeit synchronisieren sowie einen Zeitserver
|
|
installieren können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie <acronym>iSCSI</acronym> eingerichtet
|
|
wird.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Dieses Kapitel setzt folgende Grundkenntnisse voraus:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><filename>/etc/rc</filename>-Skripte.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Netzwerkterminologie</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Installation zusätzlicher Software von Drittanbietern
|
|
(<xref linkend="ports"/>).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-inetd">
|
|
<title>Der <application>inetd</application>
|
|
<quote>Super-Server</quote></title>
|
|
|
|
<!--
|
|
<info>
|
|
<authorgroup>
|
|
<author><personname><firstname>Chern</firstname><surname>Lee</surname></personname><contrib>Beigetragen von </contrib></author>
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author><personname><othername>&os; Documentation Project</othername></personname><contrib>Aktualisiert vom </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
|
|
<para>Der &man.inetd.8;-Daemon wird manchmal auch als
|
|
<quote>Internet Super-Server</quote> bezeichnet, weil er
|
|
Verbindungen für viele Dienste verwaltet. Anstatt mehrere
|
|
Anwendungen zu starten, muss nur der
|
|
<application>inetd</application>-Dienst gestartet werden.
|
|
Wenn eine Verbindung für einen Dienst eintrifft, der von
|
|
<application>inetd</application> verwaltet wird, 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 Einsatz von <application>inetd</application> 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 intern verwaltet. Dazu gehören
|
|
<application>chargen</application>,
|
|
<application>auth</application>,
|
|
<application>time</application>,
|
|
<application>echo</application>,
|
|
<application>discard</application> sowie
|
|
<application>daytime</application>.</para>
|
|
|
|
<para>Dieser Abschnitt beschreibt die Konfiguration von
|
|
<application>inetd</application>.</para>
|
|
|
|
<sect2 xml:id="network-inetd-conf">
|
|
<title>Konfigurationsdatei</title>
|
|
|
|
<para>Die Konfiguration von <application>inetd</application>
|
|
erfolgt über <filename>/etc/inetd.conf</filename> Jede Zeile
|
|
dieser Datei repräsentiert eine Anwendung, die von
|
|
<application>inetd</application> gestartet werden kann. In
|
|
der Voreinstellung beginnt jede Zeile mit einem Kommentar
|
|
(<literal>#</literal>), was bedeutet dass
|
|
<application>inetd</application> keine Verbindungen für
|
|
Anwendungen akzeptiert. Entfernen Sie den Kommentar am Anfang
|
|
der Zeile, damit <application>inetd</application> Verbindungen
|
|
für diese Anwendung entgegennimmt.</para>
|
|
|
|
<para>Nachdem Sie die Änderungen gespeichert haben, fügen Sie
|
|
folgende Zeile in <filename>/etc/rc.conf</filename> ein, damit
|
|
<application>inetd</application> bei Booten automatisch
|
|
gestartet wird:</para>
|
|
|
|
<programlisting>inetd_enable="YES"</programlisting>
|
|
|
|
<para>Starten Sie jetzt <application>inetd</application>, so
|
|
dass er Verbindungen für die von Ihnen konfigurierten Dienste
|
|
entgegennimmt:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service inetd start</userinput></screen>
|
|
|
|
<para>Sobald <application>inetd</application> gestartet ist,
|
|
muss der Dienst benachrichtigt werden, wenn eine Änderung in
|
|
<filename>/etc/inetd.conf</filename> gemacht wird:</para>
|
|
|
|
<example xml:id="network-inetd-reread">
|
|
<title>Die Konfigurationsdatei von
|
|
<application>inetd</application> neu einlesen</title>
|
|
|
|
<screen>&prompt.root; <userinput>service inetd reload</userinput></screen>
|
|
</example>
|
|
|
|
<para>Normalerweise müssen Sie lediglich den Kommentar vor der
|
|
Anwendung entfernen. In einigen Situationen kann es jedoch
|
|
sinnvoll sein, den Eintrag weiter zu bearbeiten.</para>
|
|
|
|
<para>Als Beispiel dient hier der Standardeintrag für
|
|
&man.ftpd.8; über IPv4:</para>
|
|
|
|
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
|
|
|
|
<para>Die sieben Spalten in diesem Eintrag haben folgende
|
|
Bedeutung:</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>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>service-name</term>
|
|
|
|
<listitem>
|
|
<para>Der Dienstname eines bestimmten Daemons. Er muss
|
|
einem in <filename>/etc/services</filename>
|
|
aufgelisteten Dienst entsprechen. Hier wird festgelegt,
|
|
auf welchen Port <application>inetd</application>
|
|
eingehende Verbindungen für diesen Dienst entgegennimmt.
|
|
Wenn ein neuer Dienst benutzt wird, muss er zuerst in
|
|
<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>. Nutzen Sie
|
|
<literal>stream</literal> für
|
|
<acronym>TCP</acronym>-Verbindungen und
|
|
<literal>dgram</literal> für
|
|
<acronym>UDP</acronym>-Dienste.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>protocol</term>
|
|
|
|
<listitem>
|
|
<para>Benutzen Sie eines der folgenden Protokolle:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Protokoll</entry>
|
|
|
|
<entry>Bedeutung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>tcp oder tcp4</entry>
|
|
|
|
<entry>TCP (IPv4)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>udp oder udp4</entry>
|
|
|
|
<entry><acronym>UDP</acronym> (IPv4)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>tcp6</entry>
|
|
|
|
<entry>TCP (IPv6)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>udp6</entry>
|
|
|
|
<entry><acronym>UDP</acronym> (IPv6)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>tcp46</entry>
|
|
|
|
<entry>TCP sowohl unter IPv4 als auch unter
|
|
IPv6</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>udp46</entry>
|
|
|
|
<entry><acronym>UDP</acronym> 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>In diesem Feld muss <option>wait</option> oder
|
|
<option>nowait</option> angegeben werden.
|
|
<option>max-child</option>,
|
|
<option>max-connections-per-ip-per-minute</option> sowie
|
|
<option>max-child-per-ip</option> sind optional.</para>
|
|
|
|
<para><option>wait|nowait</option> gibt an, ob der Dienst
|
|
seinen eigenen Socket verwalten kann oder nicht.
|
|
<option>dgram</option>-Sockets müssen
|
|
<option>wait</option> verwenden, während Daemonen mit
|
|
<option>stream</option>-Sockets, die normalerweise auch
|
|
aus mehreren Threads bestehen, <option>nowait</option>
|
|
verwenden sollten. <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, wird
|
|
der Wert <literal>/10</literal> hinter die Option
|
|
<option>nowait</option> gesetzt. Der Wert
|
|
<literal>/0</literal> gibt an, das es keine Beschränkung
|
|
gibt.</para>
|
|
|
|
<para><option>max-connections-per-ip-per-minute</option>
|
|
legt die maximale Anzahl von Verbindungsversuchen pro
|
|
Minute fest, die von einer bestimmten
|
|
<acronym>IP</acronym>-Adresse aus unternommen werden
|
|
können. Sobald das Limit erreicht ist, werden weitere
|
|
Verbindungen von dieser <acronym>IP</acronym>-Adresse
|
|
geblockt, bis die Minute vorüber ist. Ein Wert von
|
|
<literal>/10</literal> würde die maximale Anzahl der
|
|
Verindungsversuche einer bestimmten
|
|
<acronym>IP</acronym>-Adresse auf zehn Versuche in der
|
|
Minute beschränken. <option>max-child-per-ip</option>
|
|
legt fest, wie viele Child-Daemonen von einer bestimmten
|
|
<acronym>IP</acronym>-Adresse aus gestartet werden
|
|
können. Durch diese Optionen lassen sich
|
|
Ressourcenverbrauch sowie die Auswirkungen eines
|
|
<literal>Denial of Service (DoS)</literal>-Angriffs
|
|
begrenzen.</para>
|
|
|
|
<para>Ein Beispiel finden Sie in den Voreinstellungen für
|
|
&man.fingerd.8;:</para>
|
|
|
|
<programlisting>finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -k -s</programlisting>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>user</term>
|
|
|
|
<listitem>
|
|
<para>Der Benutzername, unter dem der jeweilige Daemon
|
|
laufen soll. Meistens laufen Daemonen als <systemitem
|
|
class="username">root</systemitem>, <systemitem
|
|
class="username">daemon</systemitem> oder <systemitem
|
|
class="username">nobody</systemitem>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>server-program</term>
|
|
|
|
<listitem>
|
|
<para>Der vollständige Pfad des Daemons. Wird der Daemon
|
|
von <application>inetd</application> intern
|
|
bereitgestellt, verwenden Sie
|
|
<option>internal</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>server-program-arguments</term>
|
|
|
|
<listitem>
|
|
<para>Dieser Eintrag legt die Argumente fest, die bei
|
|
der Aktivierung an den Daemon übergeben werden. Wenn es
|
|
sich beim Daemon um einen internen Dienst handelt,
|
|
verwenden Sie wiederum <option>internal</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 xml: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. In der Voreinstellung wird
|
|
<application>inetd</application> mit
|
|
<literal>-wW -C 60</literal> gestartet. Durch das Setzen
|
|
dieser Werte wird das TCP-Wrapping für alle
|
|
<application>inetd</application>-Dienste aktiviert.
|
|
Zudem wird verhindert, dass eine <acronym>IP</acronym>-Adresse
|
|
eine Dienst öfter als 60 Mal pro Minute anfordern kann.</para>
|
|
|
|
<para>Um die Voreinstellungen für
|
|
<application>inetd</application> zu ändern, fügen Sie einen
|
|
Eintrag für <literal>inetd_flags</literal> in
|
|
<filename>/etc/rc.conf</filename> hinzu. Wenn
|
|
<application>inetd</application> bereits ausgeführt wird,
|
|
starten Sie ihn mit <command>service inetd restart</command>
|
|
neu.</para>
|
|
|
|
<para>Die verfügbaren Optionen sind:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>-c maximum</term>
|
|
|
|
<listitem>
|
|
<para>Legt die maximale Anzahl von parallelen Aufrufen
|
|
eines Dienstes fest; in der Voreinstellung gibt es keine
|
|
Einschränkung. Diese Einstellung kann für jeden Dienst
|
|
durch Setzen des Parameters <option>max-child</option>
|
|
in <filename>/etc/inetd.conf</filename> festgelegt
|
|
werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>-C rate</term>
|
|
|
|
<listitem>
|
|
<para>Legt fest, wie oft ein Dienst von einer einzelnen
|
|
<acronym>IP</acronym>-Adresse in einer Minute aufgerufen
|
|
werden kann; in der Voreinstellung gibt es keine
|
|
Einschränkung. Dieser Wert kann für jeden Dienst durch
|
|
das Setzen des Parameters
|
|
<option>max-connections-per-ip-per-minute</option>
|
|
in <filename>/etc/inetd.conf</filename> 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
|
|
<literal>256</literal> Aktivierungen pro Minute. Ein
|
|
Wert von <literal>0</literal> 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 <acronym>IP</acronym>-Adresse aus
|
|
aktiviert werden kann; in der Voreinstellung gibt es
|
|
hier keine Beschränkung. Diese Einstellung kann für
|
|
jeden Dienst durch die Angabe von
|
|
<option>max-child-per-ip</option> in
|
|
<filename>/etc/inetd.conf</filename> angepasst
|
|
werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Es sind noch weitere Optionen verfügbar. Eine
|
|
vollständige Liste der Optionen finden Sie in
|
|
&man.inetd.8;.</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="network-inetd-security">
|
|
<title>Sicherheitsbedenken</title>
|
|
|
|
<para>Viele Daemonen, die von <application>inetd</application>
|
|
verwaltet werden, sind nicht auf Sicherheit bedacht. Einige
|
|
Damonen, wie beispielsweise
|
|
<application>fingerd</application>, liefern Informationen, die
|
|
für einen Angreifer nützlich sein könnten. Aktivieren Sie nur
|
|
erforderliche Dienste und überwachen Sie das System auf
|
|
übermäßige Verbindungsversuche.
|
|
<literal>max-connections-per-ip-per-minute</literal>,
|
|
<literal>max-child</literal> und
|
|
<literal>max-child-per-ip</literal> können verwendet werden,
|
|
um solche Angriffe zu begrenzen.</para>
|
|
|
|
<para><application>TCP-Wrapper</application> 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>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-nfs">
|
|
<info>
|
|
<title>Network File System (<acronym>NFS</acronym>)</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
</personname>
|
|
<contrib>Reorganisiert und erweitert von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Bill</firstname>
|
|
<surname>Swingle</surname>
|
|
</personname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
<indexterm><primary>NFS</primary></indexterm>
|
|
|
|
<para>&os; unterstützt das Netzwerkdateisystem
|
|
<acronym>NFS</acronym>, das es einem Server erlaubt, Dateien
|
|
und Verzeichnisse über ein Netzwerk mit Clients zu teilen. Mit
|
|
<acronym>NFS</acronym> können Benutzer und Programme auf Daten
|
|
entfernter Systeme zugreifen, und zwar so, als ob es sich
|
|
um lokal gespeicherte Daten handeln würde.</para>
|
|
|
|
<para>Die wichtigsten Vorteile von <acronym>NFS</acronym>
|
|
sind:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Daten, die sonst auf jeden Client dupliziert würden,
|
|
können an einem zentralen Ort aufbewahrt, und von den
|
|
Clients über das Netzwerk aufgerufen werden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Verschiedene Clients können auf ein gemeinsames
|
|
Verzeichnis <filename>/usr/ports/distfiles</filename>
|
|
zugreifen. Die gemeinsame Nutzung dieses Verzeichnisses
|
|
ermöglicht einen schnellen Zugriff auf die Quelldateien,
|
|
ohne sie auf jede Maschine zu kopieren zu müssen.</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. Dadurch steht den Benutzern immer das gleiche
|
|
Heimatverzeichnis zur Verfügung, unabhängig davon, an
|
|
welchem Client im Netzwerk sie sich anmelden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die Verwaltung der <acronym>NFS</acronym>-Exporte wird
|
|
vereinfacht. Zum Beispiel gibt es dann nur noch ein
|
|
Dateisystem, für das Sicherheits- oder Backup-Richtlinien
|
|
festgelegt werden müssen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wechselmedien können von anderen Maschinen im Netzwerk
|
|
verwendet werden. Dies reduziert die Anzahl von Geräten im
|
|
Netzwerk und bietet einen zentralen Ort für die Verwaltung.
|
|
Oft ist es einfacher, über ein zentrales Installationsmedium
|
|
Software auf mehreren Computern zu installieren.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para><acronym>NFS</acronym> besteht aus 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>
|
|
|
|
<para>Folgende Daemonen müssen auf dem Server ausgeführt
|
|
werden:</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>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 von
|
|
<command>nfsd</command>.</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 Einsatz von &man.nfsiod.8; ist nicht zwingend
|
|
erforderlich, kann aber die Leistung auf dem Client
|
|
verbessern.</para>
|
|
|
|
<sect2 xml:id="network-configuring-nfs">
|
|
<title>Konfiguration des Servers</title>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>einrichten</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die Dateisysteme, die der <acronym>NFS</acronym>-Server
|
|
exportieren soll, werden in <filename>/etc/exports</filename>
|
|
festgelegt. Jede Zeile in dieser Datei beschreibt ein zu
|
|
exportierendes Dateisystem, Clients, die darauf
|
|
Zugriff haben sowie alle Zugriffsoptionen. Die Optionen
|
|
eines auf einen anderen Rechner exportierten Dateisystems
|
|
müssen alle in einer Zeile stehen. Wird in einer Zeile kein
|
|
Rechner festgelegt, dürfen alle Clients im Netzwerk das
|
|
exportierte Dateisystem einhängen.</para>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>Export von Dateisystemen</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wie Dateisysteme exportiert werden, ist in der folgenden
|
|
<filename>/etc/exports</filename> zu sehen. Diese Beispiele
|
|
müssen natürlich an die Arbeitsumgebung und die
|
|
Netzwerkkonfiguration angepasst werden. Es existieren viele
|
|
verschiedene Optionen, allerdings werden hier nur wenige von
|
|
ihnen erwähnt. Eine vollständige Liste der Optionen finden
|
|
Sie in &man.exports.5;.</para>
|
|
|
|
<para>Dieses Beispiel exportiert <filename>/cdrom</filename> für
|
|
drei Clients, <replaceable>alpha</replaceable>,
|
|
<replaceable>bravo</replaceable> und
|
|
<replaceable>charlie</replaceable>:</para>
|
|
|
|
<programlisting>/cdrom -ro <replaceable>alpha</replaceable> <replaceable>bravo</replaceable> <replaceable>charlie</replaceable></programlisting>
|
|
|
|
<para>Die Option <option>-ro</option> kennzeichnet das
|
|
exportierte Dateisystem als schreibgeschützt. Dadurch sind
|
|
Clients nicht in der Lage, das exportierte Dateisystem zu
|
|
verändern. Dieses Beispiel geht davon aus, dass die Hostnamen
|
|
entweder über <acronym>DNS</acronym> oder über
|
|
<filename>/etc/hosts</filename> aufgelöst werden können.
|
|
Lesen Sie &man.hosts.5; falls das Netzwerk über keinen
|
|
<acronym>DNS</acronym>-Server verfügt.</para>
|
|
|
|
<para>Das nächste Beispiel exportiert <filename>/home</filename>
|
|
auf drei durch <acronym>IP</acronym>-Adressen bestimmte
|
|
Clients. Diese Einstellung kann für Netzwerke ohne
|
|
<acronym>DNS</acronym>-Server und
|
|
<filename>/etc/hosts</filename> nützlich sein. Die Option
|
|
<option>-alldirs</option> ermöglicht es, 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>/usr/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4</programlisting>
|
|
|
|
<para>Das nächste Beispiel exportiert <filename>/a</filename>,
|
|
damit Clients von verschiedenen Domänen auf das Dateisystem
|
|
zugreifen können. Die Option <option>-maproot=root</option>
|
|
erlaubt es dem Benutzer <systemitem
|
|
class="username">root</systemitem> des Clients, als
|
|
<systemitem class="username">root</systemitem> auf das
|
|
exportierte Dateisystem zu schreiben. Wenn diese Option nicht
|
|
gesetzt ist, wird der <systemitem class="username">
|
|
root</systemitem>-Benutzer des Clients dem <systemitem
|
|
class="username">nobody</systemitem>-Konto des Servers
|
|
zugeordnet und unterliegt somit den Zugriffsbeschränkungen
|
|
dieses Kontos.</para>
|
|
|
|
<programlisting>/a -maproot=root host.example.com box.example.org</programlisting>
|
|
|
|
<para>Ein Client kann für jedes Dateisystem nur einmal definiert
|
|
werden. Wenn beispielsweise <filename>/usr</filename> ein
|
|
gesondertes Dateisystem ist, dann wären die folgenden Einträge
|
|
falsch, da in beiden Einträgen der gleiche Rechner angegeben
|
|
wird:</para>
|
|
|
|
<programlisting>#Nicht erlaubt, wenn /usr ein einziges Dateisystem ist
|
|
/usr/src client
|
|
/usr/ports client</programlisting>
|
|
|
|
<para>Das richtige Format für eine solche Situation ist:</para>
|
|
|
|
<programlisting>/usr/src /usr/ports client</programlisting>
|
|
|
|
<para>Das Folgende ist ein Beispiel für eine gültige
|
|
Exportliste, in der <filename>/usr</filename> und
|
|
<filename>/exports</filename> lokale Dateisysteme sind:</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>Damit die vom <acronym>NFS</acronym>-Server benötigen
|
|
Prozesse beim Booten gestartet werden, fügen Sie folgende
|
|
Optionen in <filename>/etc/rc.conf</filename> hinzu:</para>
|
|
|
|
<programlisting>rpcbind_enable="YES"
|
|
nfs_server_enable="YES"
|
|
mountd_flags="-r"</programlisting>
|
|
|
|
<para>Der Server kann jetzt mit diesem Kommando gestartet
|
|
werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service nfsd start</userinput></screen>
|
|
|
|
<para>Wenn der <acronym>NFS</acronym>-Server startet, wird
|
|
auch <application>mountd</application> automatisch gestartet.
|
|
Allerdings liest <application>mountd</application>
|
|
<filename>/etc/exports</filename> nur, wenn der Server
|
|
gestartet wird. Um nachfolgende Änderungen an
|
|
<filename>/etc/exports</filename> wirksam werden zu lassen,
|
|
kann <application>mountd</application> angewiesen werden, die
|
|
Datei neu einzulesen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service mountd reload</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfiguration des Clients</title>
|
|
|
|
<para>Um den <acronym>NFS</acronym>-Client zu aktivieren, setzen
|
|
Sie folgende Option in <filename>/etc/rc.conf</filename> auf
|
|
jedem Client:</para>
|
|
|
|
<programlisting>nfs_client_enable="YES"</programlisting>
|
|
|
|
<para>Der Client ist nun in der Lage, ein entferntes Dateisystem
|
|
einzuhängen. In diesen Beispielen ist der Name des Servers
|
|
<systemitem>server</systemitem> und der Name des Clients
|
|
<systemitem>client</systemitem>. Fügen Sie folgenden Befehl
|
|
aus, um das Verzeichnis <filename>/home</filename> vom
|
|
<systemitem>server</systemitem> auf dem
|
|
<systemitem>client</systemitem> ins Verzeichnis
|
|
<filename>/mnt</filename> einzuhängen:</para>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>Dateisysteme einhängen</secondary>
|
|
</indexterm>
|
|
|
|
<screen>&prompt.root; <userinput>mount server:/home /mnt</userinput></screen>
|
|
|
|
<para>Die Dateien und Verzeichnisse in
|
|
<filename>/home</filename> stehen dem Rechner
|
|
<systemitem>client</systemitem> nun im Verzeichnis
|
|
<filename>/mnt</filename> zur Verfügung.</para>
|
|
|
|
<para>Um ein entferntes Dateisystem bei jedem Systemstart
|
|
automatisch einzuhängen, fügen Sie das Dateisystem in
|
|
<filename>/etc/fstab</filename> ein:</para>
|
|
|
|
<programlisting>server:/home /mnt nfs rw 0 0</programlisting>
|
|
|
|
<para>&man.fstab.5; enthält eine Beschreibung aller
|
|
Optionen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Dateien sperren
|
|
(<foreignphrase>Locking</foreignphrase>)</title>
|
|
|
|
<para>Einige Anwendungen erfordern die Sperrung von Dateien,
|
|
damit sie korrekt arbeiten. Um diese Sperre zu aktivieren,
|
|
müssen diese Zeilen in <filename>/etc/rc.conf</filename>
|
|
sowohl auf dem Client als auch auf dem Server hinzugefügt
|
|
werden:</para>
|
|
|
|
<programlisting>rpc_lockd_enable="YES"
|
|
rpc_statd_enable="YES"</programlisting>
|
|
|
|
<para>Danach starten Sie die beiden Anwendungen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service lockd start</userinput>
|
|
&prompt.root; <userinput>service statd start</userinput></screen>
|
|
|
|
<para>Wenn keine Dateisperren zwischen den
|
|
<acronym>NFS</acronym>-Clients und dem
|
|
<acronym>NFS</acronym>-Server benötigt werden, können Sie den
|
|
<acronym>NFS</acronym>-Client durch die Übergabe der
|
|
Option <option>-L</option> an <application>mount</application>
|
|
zu einer lokalen Sperrung von Dateien zwingen. Weitere
|
|
Details finden Sie in &man.mount.nfs.8;.</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="network-amd">
|
|
<info>
|
|
<title>Automatisches Einhängen mit &man.amd.8;</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Wylie</firstname>
|
|
<surname>Stilwell</surname>
|
|
</personname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Chern</firstname>
|
|
<surname>Lee</surname>
|
|
</personname>
|
|
<contrib>Überarbeitet von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
<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.</para>
|
|
|
|
<para>Dieser Damon ist eine Alternative zum dauerhaften
|
|
Einhängen von Dateisystemen in
|
|
<filename>/etc/fstab</filename>. In der Voreinstellung stellt
|
|
<application>amd</application> die Verzeichnisse
|
|
<filename>/host</filename> und <filename>/net</filename> als
|
|
<acronym>NFS</acronym>-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
|
|
<acronym>IP</acronym>-Adresse verwendet, während
|
|
<filename>/host</filename> zum Einhängen von exportierten
|
|
Dateisystemen eines durch seinen Namen festgelegten Rechners
|
|
dient. Ein Zugriff auf eine Datei in
|
|
<filename>/host/foobar/usr</filename> würde
|
|
<application>amd</application> veranlassen, das von
|
|
<systemitem>foobar</systemitem> exportierte Dateisystem
|
|
<filename>/usr</filename> einzuhängen.</para>
|
|
|
|
<example>
|
|
<title>Ein exportiertes Dateisystem mit
|
|
<application>amd</application> in den Verzeichnisbaum
|
|
einhängen</title>
|
|
|
|
<para><command>showmount -e</command> zeigt in diesem Beispiel
|
|
die exportierten Dateisysteme des
|
|
<acronym>NFS</acronym>-Servers
|
|
<systemitem>foobar</systemitem> an:</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>Die Ausgabe von <command>showmount</command> zeigt
|
|
<filename>/usr</filename> als exportiertes Dateisystem an.
|
|
Wenn man in das Verzeichnis
|
|
<filename>/host/foobar/usr</filename> wechselt, fängt
|
|
<application>amd</application> die Anfrage ab und versucht
|
|
den Rechnernamen <systemitem>foobar</systemitem> aufzulösen.
|
|
Wenn dies gelingt, wird <application>amd</application>
|
|
automatisch den gewünschten Export in den Verzeichnisbaum
|
|
einhängen.</para>
|
|
|
|
<para>Um <application>amd</application> beim Booten zu
|
|
aktivieren, fügen Sie folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>amd_enable="YES"</programlisting>
|
|
|
|
<para>Um <application>amd</application> direkt zu
|
|
starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service amd start</userinput></screen>
|
|
|
|
<para>Individuelle Optionen können über die Umgebungsvariable
|
|
<varname>amd_flags</varname> an <application>amd</application>
|
|
übergeben werden. In der Voreinstellung ist
|
|
<varname>amd_flags</varname> eingestellt auf:</para>
|
|
|
|
<programlisting>amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"</programlisting>
|
|
|
|
<para>Die Standardoptionen, mit denen exportierte Dateisysteme
|
|
in den Verzeichnisbaum eingehängt werden, werden in
|
|
<filename>/etc/amd.map</filename> festgelegt. Einige der
|
|
erweiterten Optionen von <application>amd</application>
|
|
werden in <filename>/etc/amd.conf</filename> definiert.</para>
|
|
|
|
<para>Weitere Informationen finden Sie in &man.amd.8; und
|
|
&man.amd.conf.5;.</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="network-autofs">
|
|
<title>Automatisches Einhängen mit &man.autofs.5;</title>
|
|
|
|
<note>
|
|
<para>&man.autofs.5; wird seit &os; 10.1-RELEASE
|
|
unterstützt. Um die Funktionalität des automatischen
|
|
Einhängens in älteren &os;-Versionen zu benutzen,
|
|
verwenden Sie stattdessen &man.amd.8;. In diesem Kapitel
|
|
wird nur das automatische Einhängen mit Hilfe von
|
|
&man.autofs.5; beschrieben.</para>
|
|
</note>
|
|
|
|
<indexterm><primary>autofs</primary></indexterm>
|
|
<indexterm>
|
|
<primary>Automounter Subsystem</primary>
|
|
</indexterm>
|
|
|
|
<para>&man.autofs.5; ist eine gebräuchliche Bezeichnung für
|
|
verschiedene Komponenten, welche es erlauben, lokale und
|
|
entfernte Dateisysteme automatisch einzuhängen, sobald auf
|
|
eine Datei oder ein Verzeichnis in diesem Dateisystem
|
|
zugegriffen wird. Es besteht aus einer Kernel-Komponente
|
|
&man.autofs.5; und mehreren Benutzerprogrammen:
|
|
&man.automount.8;, &man.automountd.8; und
|
|
&man.autounmountd.8;. &man.autofs.5; ist eine Alternative
|
|
für &man.amd.8; aus früheren &os;-Versionen. &man.amd.8;
|
|
steht nach wie vor zur Verfügung, da beide Programme ein
|
|
unterschiedliches Format verwenden. Das Format welches
|
|
&man.autofs.5; verwendet ist das gleiche wie bei anderen
|
|
SVR4 Automountern, beispielsweise denen aus &solaris;,
|
|
&macos; X und &linux;.</para>
|
|
|
|
<para>Das virtuelle &man.autofs.5;-Dateisystem wird von
|
|
&man.automount.8; in einen bestimmten Mountpunkt eingehängt.
|
|
Dies geschieht gewöhnlich während des Bootens.</para>
|
|
|
|
<para>Jedes Mal, wenn ein Prozess versucht auf eine Datei
|
|
unterhalb des &man.autofs.5;-Mountpunkts zuzugreifen, wird
|
|
der Kernel den &man.automountd.8;-Daemon benachrichtigen und
|
|
den aktuellen Prozess anhalten. Der &man.automountd.8;-Daemon
|
|
wird dann die Anfrage des Kernels bearbeiten und das
|
|
entsprechende Dateisystem einhängen. Anschließend wird der
|
|
Daemon den Kernel benachrichtigen, dass der angehaltene
|
|
Prozess wieder freigegeben werden kann. Der
|
|
&man.autounmountd.8;-Daemon hängt automatisch Dateisysteme
|
|
nach einiger Zeit ab, sofern sie nicht mehr verwendet
|
|
werden.</para>
|
|
|
|
<para>Die primäre Konfigurationsdatei von autofs ist
|
|
<filename>/etc/auto_master</filename>. Sie enthält die
|
|
einzelnen Zuordnungen zu den Mountpunkten. Eine Erklärung
|
|
zu <filename>auto_master</filename> und der Syntax für
|
|
die Zuordnungen finden Sie in &man.auto.master.5;.</para>
|
|
|
|
<para>Eine spezielle Automounter Zuordnung wird in
|
|
<filename>/net</filename> eingehängt. Wenn auf eine Datei in
|
|
diesem Verzeichnis zugegriffen wird, hängt &man.autofs.5;
|
|
einen bestimmten, entfernen Mountpunkt ein. Wenn
|
|
beispielsweise auf eine Datei unterhalb von
|
|
<filename>/net/foobar/usr</filename> zugegriffen werden soll,
|
|
würde &man.automountd.8; das exportierte Dateisystem
|
|
<filename>/usr</filename> von dem Rechner <systemitem
|
|
class="fqdomainname">foobar</systemitem> einhängen.</para>
|
|
|
|
<example>
|
|
<title>Ein exportiertes Dateisystem mit &man.autofs.5; in den
|
|
Verzeichnisbaum einhängen</title>
|
|
|
|
<para>In diesem Beispiel zeigt <command>showmount -e</command>
|
|
die exportierten Dateisysteme des
|
|
<acronym>NFS</acronym>-Servers <systemitem
|
|
class="fqdomainname">foobar</systemitem>:</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 /net/foobar/usr</userinput></screen>
|
|
</example>
|
|
|
|
<para>Die Ausgabe von <command>showmount</command> zeigt das
|
|
exportierte Dateisystem <filename>/usr</filename>. Wenn in
|
|
das Verzeichnis <filename>/host/foobar/usr</filename>
|
|
gewechselt wird, fängt &man.automountd.8; die Anforderung ab
|
|
und versucht, den Rechnernamen <systemitem
|
|
class="fqdomainname">foobar</systemitem> aufzulösen.
|
|
Gelingt dies, wird &man.automountd.8; automatisch das
|
|
exportierte Dateisystem einhängen.</para>
|
|
|
|
<para>Um &man.autofs.5; beim Booten zu aktivieren, fügen Sie
|
|
diese Zeile in <filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>autofs_enable="YES"</programlisting>
|
|
|
|
<para>Danach kann &man.autofs.5; gestartet werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service automount start</userinput>
|
|
&prompt.root; <userinput>service automountd start</userinput>
|
|
&prompt.root; <userinput>service autounmountd start</userinput></screen>
|
|
|
|
<para>Obwohl das Format von &man.autofs.5; das gleiche ist wie
|
|
in anderen Betriebssystemen, kann es wünschenswert sein,
|
|
Informationen von anderen Betriebssystemen zu Rate zu ziehen,
|
|
wie dieses <link
|
|
xlink:href="http://images.apple.com/business/docs/Autofs.pdf">Mac
|
|
OS X Dokument</link>.</para>
|
|
|
|
<para>Weitere Informationen finden Sie in den Manualpages
|
|
&man.automount.8;, &man.automountd.8;, &man.autounmountd.8;
|
|
und &man.auto.master.5;.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-nis">
|
|
<!--
|
|
<info>
|
|
<authorgroup>
|
|
<author><personname><firstname>Bill</firstname><surname>Swingle</surname></personname><contrib>Beigetragen von </contrib></author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author><personname><firstname>Eric</firstname><surname>Ogren</surname></personname><contrib>Erweitert von </contrib></author>
|
|
|
|
<author><personname><firstname>Udo</firstname><surname>Erdelhoff</surname></personname></author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
|
|
<title>Network Information System (<acronym>NIS</acronym>)</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>
|
|
|
|
<indexterm>
|
|
<primary>yellow pages</primary>
|
|
<see>NIS</see>
|
|
</indexterm>
|
|
|
|
<para>Das Network Information System (<acronym>NIS</acronym>)
|
|
wurde entwickelt, um &unix;-Systeme zentral verwalten zu
|
|
können. Dazu zählen beispielsweise &solaris;, HP-UX, &aix;,
|
|
&linux;, NetBSD, OpenBSD und &os;. <acronym>NIS</acronym> war
|
|
ursprünglich als <emphasis>Yellow Pages</emphasis> bekannt,
|
|
aus markenrechtlichen Gründen wurde der Name aber geändert.
|
|
Dies ist der Grund, warum <acronym>NIS</acronym>-Kommandos mit
|
|
<literal>yp</literal> beginnen.</para>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Domänen</secondary>
|
|
</indexterm>
|
|
|
|
<para>Bei <acronym>NIS</acronym> handelt es sich um ein
|
|
<acronym>RPC</acronym>-basiertes Client/Server-System. Eine
|
|
Gruppe von Rechnern greift dabei innerhalb einer
|
|
<acronym>NIS</acronym>-Domäne auf gemeinsame
|
|
Konfigurationsdateien zu. Dies erlaubt es einem
|
|
Systemadministrator, <acronym>NIS</acronym>-Clients mit
|
|
minimalem Aufwand einzurichten, sowie Änderungen an der
|
|
Systemkonfiguration von einem zentralen Ort aus
|
|
durchzuführen.</para>
|
|
|
|
<para>&os; verwendet die Version 2 des
|
|
<acronym>NIS</acronym>-Protokolls.</para>
|
|
|
|
<sect2>
|
|
<title><acronym>NIS</acronym>-Begriffe und -Prozesse</title>
|
|
|
|
<para>Tabelle 30.1 fasst die Begriffe und Anwenderprozesse
|
|
zusammen, die von <acronym>NIS</acronym> verwendet
|
|
werden:</para>
|
|
|
|
<indexterm>
|
|
<primary><application>rpcbind</application></primary>
|
|
</indexterm>
|
|
|
|
<table frame="none" pgwide="1">
|
|
<title><acronym>NIS</acronym> Begriffe</title>
|
|
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="3*"/>
|
|
|
|
<thead>
|
|
<row>
|
|
<entry>Begriff</entry>
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><acronym>NIS</acronym>-Domänenname</entry>
|
|
|
|
<entry><acronym>NIS</acronym>-Masterserver und Clients
|
|
benutzen einen gemeinsamen
|
|
<acronym>NIS</acronym>-Domänennamen. In der Regel hat
|
|
dieser Name nichts mit <acronym>DNS</acronym> zu
|
|
tun.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>&man.rpcbind.8;</entry>
|
|
|
|
<entry>Dieser Dienst aktiviert <acronym>RPC</acronym>
|
|
und muss gestartet sein, damit ein
|
|
<acronym>NIS</acronym>-Server oder -Client ausgeführt
|
|
werden kann.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>&man.ypbind.8;</entry>
|
|
|
|
<entry>Dieser Dienst <quote>bindet</quote> einen
|
|
<acronym>NIS</acronym>-Client an seinen
|
|
<acronym>NIS</acronym>-Server. Der Client bezieht den
|
|
<acronym>NIS</acronym>-Domänennamen vom System und
|
|
stellt über das <acronym>RPC</acronym>-Protokoll eine
|
|
Verbindung zum <acronym>NIS</acronym>-Server her.
|
|
<application>ypbind</application> ist der zentrale
|
|
Bestandteil der Client-Server-Kommunikation in einer
|
|
<acronym>NIS</acronym>-Umgebung. Wird der Dienst
|
|
auf einem Client beendet, ist dieser nicht mehr in der
|
|
Lage, auf den <acronym>NIS</acronym>-Server
|
|
zuzugreifen.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>&man.ypserv.8;</entry>
|
|
|
|
<entry>Dies ist der Prozess für den
|
|
<acronym>NIS</acronym>-Server. Wenn dieser Dienst
|
|
nicht mehr läuft, kann der Server nicht mehr auf
|
|
<acronym>NIS</acronym>-Anforderungen reagieren. Wenn
|
|
ein Slaveserver existiert, kann dieser als Ersatz
|
|
fungieren. Einige NIS-Systeme (allerdings nicht das
|
|
von &os;) versuchen allerdings erst gar nicht, sich
|
|
mit einem anderen Server zu verbinden, wenn der
|
|
Masterserver nicht mehr reagiert. Die einzige Lösung
|
|
besteht darin, den Serverprozess oder den
|
|
<application>ypbind</application>-Prozess auf dem
|
|
Client neu zu starten.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>&man.rpc.yppasswdd.8;</entry>
|
|
|
|
<entry>Dieser Prozess läuft nur auf dem
|
|
<acronym>NIS</acronym>-Masterserver. Es handelt sich
|
|
um einen Daemonprozess, der es
|
|
<acronym>NIS</acronym>-Clients ermöglicht, ihre
|
|
<acronym>NIS</acronym>-Passwörter zu ändern. Wenn
|
|
dieser Daemon nicht läuft, müssen sich die Benutzer am
|
|
<acronym>NIS</acronym>-Masterserver anmelden und ihre
|
|
Passwörter dort ändern.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
<!-- XXX Missing: rpc.ypxfrd (not important, though) May only run
|
|
on the master -->
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Arten von NIS-Rechnern</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Masterserver</secondary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Slaveserver</secondary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Client</secondary>
|
|
</indexterm>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><acronym>NIS</acronym>-Masterserver</para>
|
|
|
|
<para>Dieser Server dient als zentraler Speicherort für
|
|
Rechnerkonfigurationen. Zudem verwaltet er die
|
|
maßgebliche Kopie, der von den
|
|
<acronym>NIS</acronym>-Clients gemeinsam verwendeten
|
|
Dateien. <filename>passwd</filename>,
|
|
<filename>group</filename>, sowie verschiedene andere von
|
|
den Clients verwendete Dateien existieren auf dem
|
|
Masterserver. Obwohl ein Rechner auch für mehrere
|
|
<acronym>NIS</acronym>-Domänen als Masterserver fungieren
|
|
kann, wird diese Art von Konfiguration nicht behandelt, da
|
|
sich dieser Abschnitt auf eine relativ kleine
|
|
<acronym>NIS</acronym>-Umgebung konzentriert.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><acronym>NIS</acronym>-Slaveserver</para>
|
|
|
|
<para><acronym>NIS</acronym>-Slaveserver verwalten Kopien
|
|
der Daten des <acronym>NIS</acronym>-Masterservers um
|
|
Redundanz zu bieten. Zudem entlasten Slaveserver den
|
|
Masterserver: <acronym>NIS</acronym>-Clients verbinden
|
|
sich immer mit dem <acronym>NIS</acronym>-Server, welcher
|
|
zuerst reagiert. Dieser Server kann auch ein Slaveserver
|
|
sein.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><acronym>NIS</acronym>-Clients</para>
|
|
|
|
<para><acronym>NIS</acronym>-Clients identifizieren sich
|
|
gegenüber dem <acronym>NIS</acronym>-Server während der
|
|
Anmeldung.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Mit <acronym>NIS</acronym> 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 <acronym>NIS</acronym> 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
|
|
<acronym>NIS</acronym>-Server gestellt, an den der Client
|
|
gebunden ist.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Planung</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt eine einfache
|
|
<acronym>NIS</acronym>-Umgebung, welche aus 15 &os;-Maschinen
|
|
besteht, für die 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; wird ein neuer Benutzer
|
|
angelegt, so muss dies auf allen fünfzehn Rechnern manuell
|
|
erledigt werden.</para>
|
|
|
|
<para>In Zukunft soll die Konfiguration wie folgt
|
|
aussehen:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Rechnername</entry>
|
|
<entry><acronym>IP</acronym>-Adresse</entry>
|
|
<entry>Rechneraufgabe</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><systemitem>ellington</systemitem></entry>
|
|
<entry><systemitem
|
|
class="ipaddress">10.0.0.2</systemitem></entry>
|
|
<entry><acronym>NIS</acronym>-Master</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><systemitem>coltrane</systemitem></entry>
|
|
<entry><systemitem
|
|
class="ipaddress">10.0.0.3</systemitem></entry>
|
|
<entry><acronym>NIS</acronym>-Slave</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><systemitem>basie</systemitem></entry>
|
|
<entry><systemitem
|
|
class="ipaddress">10.0.0.4</systemitem></entry>
|
|
<entry>Workstation der Fakultät</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><systemitem>bird</systemitem></entry>
|
|
<entry><systemitem
|
|
class="ipaddress">10.0.0.5</systemitem></entry>
|
|
<entry>Clientrechner</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><systemitem>cli[1-11]</systemitem></entry>
|
|
<entry><systemitem
|
|
class="ipaddress">10.0.0.[6-17]</systemitem></entry>
|
|
<entry>Verschiedene andere Clients</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Wenn erstmalig ein NIS-Schema eingerichtet wird, sollte es
|
|
im Voraus sorgfältig geplant werden. Unabhängig von der Größe
|
|
des Netzwerks müssen einige Entscheidungen im Rahmen des
|
|
Planungsprozesses getroffen werden.</para>
|
|
|
|
<sect3>
|
|
<title>Einen <acronym>NIS</acronym>-Domänennamen
|
|
wählen</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Domänenname</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn ein Client Informationen anfordert, ist in dieser
|
|
Anforderung der Name der <acronym>NIS</acronym>-Domäne
|
|
enthalten. Dadurch weiß jeder Server im Netzwerk, auf
|
|
welche Anforderung er antworten muss. Stellen Sie sich
|
|
den <acronym>NIS</acronym>-Domänennamen als einen Namen
|
|
einer Gruppe von Rechnern vor.</para>
|
|
|
|
<para>Manchmal wird der Name der Internetdomäne auch für die
|
|
<acronym>NIS</acronym>-Domäne verwendet. Dies ist
|
|
allerdings nicht empfehlenswert, da es bei der Behebung von
|
|
Problemen verwirrend sein kann. Der Name der
|
|
<acronym>NIS</acronym>-Domäne sollte innerhalb des
|
|
Netzwerks eindeutig sein. Hilfreich ist es, wenn der Name
|
|
die Gruppe der in ihr zusammengefassten Rechner beschreibt.
|
|
Die Kunstabteilung von Acme Inc. hätte daher vielleicht die
|
|
<acronym>NIS</acronym>-Domäne <quote>acme-art</quote>. Für
|
|
dieses Beispiel wird der Name <literal>test-domain</literal>
|
|
verwendet.</para>
|
|
|
|
<para>Es gibt jedoch auch Betriebssysteme, die als
|
|
<acronym>NIS</acronym>-Domänennamen den Namen der
|
|
Internetdomäne verwenden. Wenn dies für einen oder
|
|
mehrere Rechner des Netzwerks zutrifft,
|
|
<emphasis>muss</emphasis> der Name der Internetdomäne als
|
|
<acronym>NIS</acronym>-Domänennamen verwendet werden.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Anforderungen an den Server</title>
|
|
|
|
<para>Bei der Wahl des <acronym>NIS</acronym>-Servers müssen
|
|
einige Dinge beachtet werden. Da die
|
|
<acronym>NIS</acronym>-Clients auf die Verfügbarkeit des
|
|
Servers angewiesen sind, sollten Sie einen Rechner wählen,
|
|
der nicht regelmäßig neu gestartet werden muss. Der
|
|
<acronym>NIS</acronym>-Server sollte idealerweise ein
|
|
alleinstehender Rechner sein, dessen einzige Aufgabe es
|
|
ist, als <acronym>NIS</acronym>-Server zu dienen. Wenn
|
|
das Netzwerk nicht zu stark ausgelastet ist, ist es auch
|
|
möglich, den <acronym>NIS</acronym>-Server als weiteren
|
|
Dienst auf einem anderen Rechner laufen zu lassen. Wenn
|
|
jedoch ein <acronym>NIS</acronym>-Server ausfällt, wirkt
|
|
sich dies negativ auf <emphasis>alle</emphasis>
|
|
<acronym>NIS</acronym>-Clients aus.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Einen <acronym>NIS</acronym>-Masterserver
|
|
konfigurieren</title>
|
|
|
|
<para>Die verbindlichen Kopien aller
|
|
<acronym>NIS</acronym>-Dateien befinden sich auf dem
|
|
Masterserver. Die Datenbanken, in denen die Informationen
|
|
gespeichert sind, bezeichnet man als
|
|
<acronym>NIS</acronym>-Maps. Unter &os; werden diese Maps
|
|
unter <filename>/var/yp/[domainname]</filename> gespeichert,
|
|
wobei <filename>[domainname]</filename> der Name der
|
|
<acronym>NIS</acronym>-Domäne ist. Da ein
|
|
<acronym>NIS</acronym>-Server mehrere Domänen verwalten
|
|
kann, 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
|
|
<acronym>NIS</acronym>-Maps.</para>
|
|
|
|
<para><acronym>NIS</acronym>-Master- und Slaveserver
|
|
verwenden &man.ypserv.8;, um <acronym>NIS</acronym>-Anfragen
|
|
zu bearbeiten. Dieser Daemon ist für eingehende Anfragen
|
|
der <acronym>NIS</acronym>-Clients verantwortlich. Er
|
|
ermittelt aus der angeforderten Domäne und Map einen Pfad zur
|
|
entsprechenden Datenbank und sendet die angeforderten Daten
|
|
von der Datenbank zum Client.</para>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Serverkonfiguration</secondary>
|
|
</indexterm>
|
|
|
|
<para>Abhängig von den Anforderungen ist die Einrichtung eines
|
|
<acronym>NIS</acronym>-Masterservers relativ einfach, da
|
|
<acronym>NIS</acronym> von &os; bereits in der
|
|
Standardkonfiguration unterstützt wird. Es kann durch
|
|
folgende Zeilen in <filename>/etc/rc.conf</filename> aktiviert
|
|
werden:</para>
|
|
|
|
<programlisting>nisdomainname="test-domain">>>>>>><co xml:id="network-nis-co-domainname" />
|
|
nis_server_enable="YES">>>>>>>>><co xml:id="network-nis-co-server" />
|
|
nis_yppasswdd_enable="YES">>>>>><co xml:id="network-nis-co-yppasswdd" /></programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="network-nis-co-domainname">
|
|
<para>Diese Zeile setzt den
|
|
<acronym>NIS</acronym>-Domänennamen auf
|
|
<literal>test-domain</literal>.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="network-nis-co-server">
|
|
<para>Dadurch werden die
|
|
<acronym>NIS</acronym>-Serverprozesse beim Systemstart
|
|
automatisch ausgeführt.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="network-nis-co-yppasswdd">
|
|
<para>Durch diese Zeile wird der
|
|
&man.rpc.yppasswdd.8;-Daemon aktiviert, der die
|
|
Änderung von <acronym>NIS</acronym>-Passwörtern von
|
|
einem Client aus ermöglicht.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Wird <application>ypserv</application> in einer
|
|
Multi-Serverdomäne verwendet, in der
|
|
<acronym>NIS</acronym>-Server gleichzeitig als
|
|
<acronym>NIS</acronym>-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>Server, die auch als Client arbeiten, können durch das
|
|
Hinzufügen der folgenden Zeilen in
|
|
<filename>/etc/rc.conf</filename> zu gezwungen werden, sich an
|
|
einen bestimmten Server zu binden:</para>
|
|
|
|
<programlisting>nis_client_enable="YES" # run client stuff as well
|
|
nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</replaceable>"</programlisting>
|
|
|
|
<para>Nachdem die Parameter konfiguriert wurden, muss noch
|
|
<command>/etc/netstart</command> ausgeführt werden, um alles
|
|
entsprechend den Vorgaben in <filename>/etc/rc.conf</filename>
|
|
einzurichten. Bevor die <acronym>NIS</acronym>-Maps
|
|
einrichtet werden können, muss der &man.ypserv.8;-Daemon
|
|
manuell gestartet werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service ypserv start</userinput></screen>
|
|
|
|
<sect3>
|
|
<title>Die <acronym>NIS</acronym>-Maps
|
|
initialisieren</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>maps</secondary>
|
|
</indexterm>
|
|
|
|
<para><acronym>NIS</acronym>-Maps Sie werden am
|
|
<acronym>NIS</acronym>-Masterserver aus den
|
|
Konfigurationsdateien unter <filename>/etc</filename>
|
|
erzeugt. Einzige Ausnahme:
|
|
<filename>/etc/master.passwd</filename>. Dies verhindert,
|
|
dass die Passwörter für <systemitem
|
|
class="username">root</systemitem>- oder andere
|
|
Administratorkonten an alle Server in der
|
|
<acronym>NIS</acronym>-Domäne verteilt werden. Deshalb
|
|
werden die primären Passwort-Dateien konfiguriert, bevor die
|
|
<acronym>NIS</acronym>-Maps initialisiert werden:</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>Es ist ratsam, alle Einträge für Systemkonten sowie
|
|
Benutzerkonten, die nicht an die
|
|
<acronym>NIS</acronym>-Clients weitergegeben werden sollen,
|
|
wie beispielsweise <systemitem
|
|
class="username">root</systemitem> und weitere
|
|
administrative Konten, zu entfernen.</para>
|
|
|
|
<note>
|
|
<para>Stellen Sie sicher, dass
|
|
<filename>/var/yp/master.passwd</filename> weder von der
|
|
Gruppe noch von der Welt gelesen werden kann, indem Sie
|
|
Zugriffsmodus auf <literal>600</literal>
|
|
einstellen.</para>
|
|
</note>
|
|
|
|
<para>Nun können die <acronym>NIS</acronym>-Maps
|
|
initialisiert werden. &os; verwendet dafür das Skript
|
|
&man.ypinit.8;. Geben Sie <option>-m</option> und den
|
|
<acronym>NIS</acronym>-Domänennamen an, wenn Sie
|
|
<acronym>NIS</acronym>-Maps für den Masterserver
|
|
erzeugen:</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 not, 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
|
|
<filename>/var/yp/Makefile.dist</filename>. Diese Datei
|
|
geht in der Voreinstellung davon aus, dass in einer
|
|
<acronym>NIS</acronym>-Umgebung mit nur einem Server
|
|
gearbeitet wird und dass alle Clients unter &os; laufen. Da
|
|
<literal>test-domain</literal> aber auch über einen
|
|
Slaveserver verfügt, muss
|
|
<filename>/var/yp/Makefile</filename> entsprechend angepasst
|
|
werden, sodass es mit einem Kommentar (<literal>#</literal>)
|
|
beginnt:</para>
|
|
|
|
<programlisting>NOPUSH = "True"</programlisting>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Neue Benutzer hinzufügen</title>
|
|
|
|
<para>Jedes Mal, wenn ein neuer Benutzer angelegt wird,
|
|
muss er am <acronym>NIS</acronym>-Masterserver hinzugefügt
|
|
und die <acronym>NIS</acronym>-Maps anschließend neu
|
|
erzeugt werden. Wird dieser Punkt vergessen, kann sich
|
|
der neue Benutzer <emphasis>nur</emphasis> am
|
|
<acronym>NIS</acronym>-Masterserver anmelden. Um
|
|
beispielsweise den neuen Benutzer <systemitem
|
|
class="username">jsmith</systemitem> zur Domäne
|
|
<literal>test-domain</literal> hinzufügen wollen, müssen
|
|
folgende Kommandos auf dem Masterserver ausgeführt
|
|
werden:</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> kann auch
|
|
<command>adduser jsmith</command> verwendet werden.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Einen <acronym>NIS</acronym>-Slaveserver
|
|
einrichten</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Slaveserver</secondary>
|
|
</indexterm>
|
|
|
|
<para>Um einen <acronym>NIS</acronym>-Slaveserver einzurichten,
|
|
melden Sie sich am Slaveserver an und bearbeiten Sie
|
|
<filename>/etc/rc.conf</filename> analog zum Masterserver.
|
|
Erzeugen Sie aber keine <acronym>NIS</acronym>-Maps, da diese
|
|
bereits auf dem Server vorhanden sind. Wenn
|
|
<command>ypinit</command> auf dem Slaveserver ausgeführt wird,
|
|
benutzen Sie <option>-s</option> (Slave) statt
|
|
<option>-m</option> (Master). Diese Option benötigt den Namen
|
|
des <acronym>NIS</acronym>-Masterservers und den Domänennamen,
|
|
wie in diesem Beispiel zu sehen:</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 not, 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.
|
|
Remember to update map ypservers on ellington.</screen>
|
|
|
|
<para>Hierbei wird auf dem Slaveserver ein Verzeichnis namens
|
|
<filename>/var/yp/test-domain</filename> erstellt, welches
|
|
Kopien der <acronym>NIS</acronym>-Masterserver-Maps enthält.
|
|
Durch hinzufügen der folgenden Zeilen in
|
|
<filename>/etc/crontab</filename> wird der Slaveserver
|
|
angewiesen, seine Maps mit den Maps des Masterservers zu
|
|
synchronisieren:</para>
|
|
|
|
<programlisting>20 * * * * root /usr/libexec/ypxfr passwd.byname
|
|
21 * * * * root /usr/libexec/ypxfr passwd.byuid</programlisting>
|
|
|
|
<para>Diese Einträge sind nicht zwingend notwendig, da der
|
|
Masterserver automatisch versucht, alle Änderungen seiner
|
|
<acronym>NIS</acronym>-Maps an seine Slaveserver
|
|
weiterzugeben. Da Passwortinformationen aber auch für nur vom
|
|
Slaveserver 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>Um die Konfiguration abzuschließen, führen Sie
|
|
<command>/etc/netstart</command> auf dem Slaveserver aus, um
|
|
die <acronym>NIS</acronym>-Dienste erneut zu starten.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Einen <acronym>NIS</acronym>-Client einrichten</title>
|
|
|
|
<para>Ein <acronym>NIS</acronym>-Client
|
|
<literal>bindet</literal> sich unter Verwendung von
|
|
<command>ypbind</command> an einen
|
|
<acronym>NIS</acronym>-Server. Dieser Daemon sendet
|
|
RPC-Anfragen auf dem lokalen Netzwerk. Diese Anfragen legen
|
|
den Namen der Domäne fest, die auf dem Client konfiguriert
|
|
ist. Wenn der Server der entsprechenden Domäne eine solche
|
|
Anforderung erhält, schickt er eine Antwort an
|
|
<command>ypbind</command>, das wiederum die Adresse des
|
|
Servers speichert. Wenn mehrere Server verfügbar sind,
|
|
verwendet der Client die erste erhaltene Adresse und richtet
|
|
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,
|
|
<acronym>RPC</acronym>s über das Netzwerk zu verteilen, um
|
|
einen anderen Server zu finden.</para>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Client konfigurieren</secondary>
|
|
</indexterm>
|
|
|
|
<para>Einen &os;-Rechner als <acronym>NIS</acronym>-Client
|
|
einrichten:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Fügen Sie folgende Zeilen in
|
|
<filename>/etc/rc.conf</filename> ein, um den
|
|
<acronym>NIS</acronym>-Domänennamen festzulegen, und
|
|
um &man.ypbind.8; 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
|
|
<acronym>NIS</acronym>-Servers zu importieren, löschen Sie
|
|
alle Benutzerkonten in
|
|
<filename>/etc/master.passwd</filename> mit
|
|
<command>vipw</command>. Denken Sie daran, zumindest ein
|
|
lokales Benutzerkonto zu behalten. Dieses Konto sollte
|
|
außerdem Mitglied der Gruppe <systemitem
|
|
class="groupname">wheel</systemitem> sein. Wenn es mit
|
|
<acronym>NIS</acronym> Probleme gibt, können Sie diesen
|
|
Zugang verwenden, um sich als Superuser anzumelden und das
|
|
Problem zu beheben. Bevor Sie die Änderungen speichern,
|
|
fügen Sie folgende Zeile am Ende der Datei hinzu:</para>
|
|
|
|
<programlisting>+:::::::::</programlisting>
|
|
|
|
<para>Diese Zeile legt für alle gültigen Benutzerkonten der
|
|
<acronym>NIS</acronym>-Server-Maps einen Zugang an. Es
|
|
gibt verschiedene Wege, den <acronym>NIS</acronym>-Client
|
|
durch Änderung dieser Zeile zu konfigurieren. Eine
|
|
Methode wird in <xref linkend="network-netgroups"/>
|
|
beschrieben. Weitere detaillierte Informationen finden
|
|
Sie im Buch <literal>Managing NFS and NIS</literal> vom
|
|
O'Reilly Verlag.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Um alle möglichen Gruppeneinträge vom
|
|
<acronym>NIS</acronym>-Server zu importieren, fügen Sie
|
|
folgende Zeile in <filename>/etc/group</filename>
|
|
ein:</para>
|
|
|
|
<programlisting>+:*::</programlisting>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>Um den <acronym>NIS</acronym>-Client direkt zu starten,
|
|
führen Sie als Superuser die folgenden Befehle aus:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/netstart</userinput>
|
|
&prompt.root; <userinput>service ypbind start</userinput></screen>
|
|
|
|
|
|
<para>Danach sollte bei der Eingabe von
|
|
<command>ypcat passwd</command> auf dem Client die
|
|
<literal>passwd-Map</literal> des
|
|
<acronym>NIS</acronym>-Servers angezeigt werden.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Sicherheit unter <acronym>NIS</acronym></title>
|
|
|
|
<para>Da <acronym>RPC</acronym> ein Broadcast-basierter Dienst
|
|
ist, kann jedes System innerhalb der Domäne mittels
|
|
<application>ypbind</application> den Inhalt der
|
|
<acronym>NIS</acronym>-Maps abrufen. Um nicht autorisierte
|
|
Transaktionen zu verhindern, unterstützt &man.ypserv.8; eine
|
|
Funktion namens <quote>securenets</quote>, durch die der
|
|
Zugriff auf bestimmte Rechner beschränkt werden kann. In der
|
|
Voreinstellung sind diese Informationen in
|
|
<filename>/var/yp/securenets</filename> gespeichert, es sei
|
|
denn, &man.ypserv.8; wurde mit der Option <option>-p</option>
|
|
und einem alternativen Pfad gestartet. Diese Datei enthält
|
|
Einträge, die aus einer Netzwerkadresse und einer Netzmaske
|
|
bestehen. Kommentarzeilen beginnen mit <quote>#</quote>.
|
|
<filename>/var/yp/securnets</filename> könnte beispielsweise
|
|
so aussehen:</para>
|
|
|
|
<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>securenets</filename> nicht existiert, erlaubt
|
|
<command>ypserv</command> Verbindungen von jedem
|
|
Rechner.</para>
|
|
|
|
<para><xref linkend="tcpwrappers"/> beschreibt eine alternative
|
|
Methode zur Zugriffskontrolle. Obwohl beide Methoden einige
|
|
Sicherheit gewähren, sind sie anfällig für
|
|
<quote><acronym>IP</acronym>-Spoofing</quote>-Angriffe. Der
|
|
<acronym>NIS</acronym>-Verkehr sollte daher von einer Firewall
|
|
blockiert werden.</para>
|
|
|
|
<para>Server, die <filename>securenets</filename> verwenden,
|
|
können Schwierigkeiten bei der Anmeldung von
|
|
<acronym>NIS</acronym>-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 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>securenets</filename>
|
|
umgehen.</para>
|
|
|
|
<indexterm>
|
|
<primary>TCP-Wrapper</primary>
|
|
</indexterm>
|
|
|
|
<para>Die Verwendung der <application>TCP-Wrapper</application>
|
|
verlangsamt die Reaktion des <acronym>NIS</acronym>-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
|
|
<acronym>NIS</acronym>-Server verfügen. Wenn ein oder mehrere
|
|
Clients dieses Problem aufweisen, sollten Sie die betreffenden
|
|
Clients in <acronym>NIS</acronym>-Slaveserver umwandeln, und
|
|
diese an sich selbst binden.</para>
|
|
|
|
<sect3>
|
|
<title>Bestimmte Benutzer an der Anmeldung hindern</title>
|
|
|
|
<para>In diesem Beispiel gibt es innerhalb der
|
|
<acronym>NIS</acronym>-Domäne den Rechner
|
|
<systemitem>basie</systemitem>, der nur für Mitarbeiter der
|
|
Fakultät bestimmt ist. Die <filename>passwd</filename>
|
|
Datenbank des <acronym>NIS</acronym>-Masterservers enthält
|
|
Benutzerkonten sowohl für Fakultätsmitarbeiter als auch für
|
|
Studenten. Dieser Abschnitt beschreibt, wie Sie den
|
|
Mitarbeitern der Fakultät die Anmeldung am System
|
|
ermöglichen, während den Studenten die Anmeldung verweigert
|
|
wird.</para>
|
|
|
|
<para>Es gibt eine Möglichkeit, bestimmte Benutzer an der
|
|
Anmeldung an einem bestimmten Rechner zu hindern, selbst
|
|
wenn diese in der <acronym>NIS</acronym>-Datenbank vorhanden
|
|
sind. Dazu kann mit <command>vipw</command> der Eintrag
|
|
<literal>-<replaceable>Benutzername</replaceable></literal>
|
|
und die richtige Anzahl von Doppelpunkten an das Ende von
|
|
<filename>/etc/master.passwd</filename> gesetzt werden,
|
|
wobei <replaceable>Benutzername</replaceable> der zu
|
|
blockierende Benutzername ist. Die Zeile mit dem geblockten
|
|
Benutzer muss dabei vor der <literal>+</literal> Zeile, für
|
|
zugelassene Benutzer stehen. In diesem Beispiel wird die
|
|
Anmeldung für den Benutzer <systemitem
|
|
class="username">bill</systemitem> am Rechner
|
|
<systemitem>basie</systemitem> blockiert:</para>
|
|
|
|
<screen>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>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="network-netgroups">
|
|
<!--
|
|
<info><title>Netzgruppen verwenden</title>
|
|
<authorgroup>
|
|
<author><personname><firstname>Udo</firstname><surname>Erdelhoff</surname></personname><contrib>Beigetragen von </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
|
|
<title>Netzgruppen verwenden</title>
|
|
|
|
<indexterm><primary>Netzgruppen</primary></indexterm>
|
|
|
|
<para>Bestimmten Benutzern die Anmeldung an einzelnen Systemen
|
|
zu verweigern, kann in großen Netzwerken schnell
|
|
unübersichtlich werden. Dadurch verlieren Sie den
|
|
Hauptvorteil von <acronym>NIS</acronym>: die
|
|
<emphasis>zentrale</emphasis> Verwaltung.</para>
|
|
|
|
<para>Netzgruppen wurden entwickelt, um große, komplexe
|
|
Netzwerke mit Hunderten Benutzern und Rechnern zu verwalten.
|
|
Ihre Aufgabe ist vergleichbar mit &unix; 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>Um das Beispiel in diesem Kapitel fortzuführen, wird die
|
|
<acronym>NIS</acronym>-Domäne um zusätzliche Benutzer und
|
|
Rechner erweitert:</para>
|
|
|
|
<table frame="none" pgwide="1">
|
|
<title>Zusätzliche Benutzer</title>
|
|
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Benutzername(n)</entry>
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><systemitem class="username">alpha</systemitem>,
|
|
<systemitem class="username">beta</systemitem></entry>
|
|
<entry>Mitarbeiter der IT-Abteilung</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><systemitem
|
|
class="username">charlie</systemitem>,
|
|
<systemitem
|
|
class="username">delta</systemitem></entry>
|
|
<entry>Lehrlinge der IT-Abteilung</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><systemitem class="username">echo</systemitem>,
|
|
<systemitem class="username">foxtrott</systemitem>,
|
|
<systemitem
|
|
class="username">golf</systemitem>, ...</entry>
|
|
<entry>Mitarbeiter</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><systemitem class="username">able</systemitem>,
|
|
<systemitem
|
|
class="username">baker</systemitem>, ...</entry>
|
|
<entry>Praktikanten</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<table frame="none" pgwide="1">
|
|
<title>Zusätzliche Rechner</title>
|
|
|
|
<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><systemitem>war</systemitem>,
|
|
<systemitem>death</systemitem>,
|
|
<systemitem>famine</systemitem>,
|
|
<systemitem>pollution</systemitem></entry>
|
|
<entry>Nur Mitarbeiter der IT-Abteilung dürfen sich an
|
|
diesen Rechnern anmelden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<!-- gluttony was omitted because it was too fat -->
|
|
<entry><systemitem>pride</systemitem>,
|
|
<systemitem>greed</systemitem>,
|
|
<systemitem>envy</systemitem>,
|
|
<systemitem>wrath</systemitem>,
|
|
<systemitem>lust</systemitem>,
|
|
<systemitem>sloth</systemitem></entry>
|
|
<entry>Nur Mitarbeiter und Lehrlinge der IT-Abteilung
|
|
dürfen sich auf diesen Rechnern anmelden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><systemitem>one</systemitem>,
|
|
<systemitem>two</systemitem>,
|
|
<systemitem>three</systemitem>,
|
|
<systemitem>four</systemitem>, ...</entry>
|
|
<entry>Gewöhnliche Arbeitsrechner für
|
|
Mitarbeiter.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><systemitem>trashcan</systemitem></entry>
|
|
<entry>Ein sehr alter Rechner ohne kritische Daten.
|
|
Sogar Praktikanten dürfen diesen Rechner
|
|
verwenden.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>Bei der Verwendung von Netzgruppen wird jeder Benutzer
|
|
einer oder mehreren Netzgruppen zugewiesen und die Anmeldung
|
|
wird dann für die Netzgruppe erlaubt oder verwehrt. Wenn ein
|
|
neuer Rechner hinzugefügt wird, müssen die
|
|
Zugangsbeschränkungen nur für die Netzgruppen festgelegt
|
|
werden. Wird ein neuer Benutzer angelegt, muss er einer oder
|
|
mehreren Netzgruppen zugewiesen werden. Wenn die Einrichtung
|
|
von <acronym>NIS</acronym> sorgfältig geplant wurde, muss nur
|
|
noch eine zentrale Konfigurationsdatei bearbeitet werden, um
|
|
den Zugriff auf bestimmte Rechner zu erlauben oder zu
|
|
verbieten.</para>
|
|
|
|
<para>Dieses Beispiel erstellt vier Netzgruppen:
|
|
IT-Mitarbeiter, IT-Lehrlinge, normale Mitarbeiter sowie
|
|
Praktikanten:</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>Jede Zeile konfiguriert eine Netzgruppe. Die erste Spalte
|
|
der Zeile bezeichnet den Namen der Netzgruppe. Die Einträge
|
|
in den Klammern stehen entweder für eine Gruppe von einem oder
|
|
mehreren Benutzern, oder für den Namen einer weiteren
|
|
Netzgruppe. Wenn ein Benutzer angegeben wird, haben die drei
|
|
Felder in der Klammer folgende Bedeutung:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Der Name des Rechner(s), auf dem die weiteren Felder
|
|
für den Benutzer gültig sind. Wird kein Rechnername
|
|
festgelegt, ist der Eintrag auf allen Rechnern
|
|
gültig.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Der Name des Benutzerkontos, der zu dieser Netzgruppe
|
|
gehört.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die <acronym>NIS</acronym>-Domäne für das
|
|
Benutzerkonto. Benutzerkonten können von anderen
|
|
<acronym>NIS</acronym>-Domänen in eine Netzgruppe
|
|
importiert werden.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>Wenn eine Gruppe mehrere Benutzer enthält, müssen diese
|
|
durch Leerzeichen getrennt werden. Darüber hinaus kann jedes
|
|
Feld Wildcards enthalten. Weitere Einzelheiten finden Sie in
|
|
&man.netgroup.5;.</para>
|
|
|
|
<indexterm><primary>Netzgruppen</primary></indexterm>
|
|
|
|
<para>Netzgruppennamen sollten nicht länger als 8 Zeichen sein.
|
|
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 <acronym>NIS</acronym>-Clients (dies gilt nicht für
|
|
&os;) können keine Netzgruppen mit mehr als 15 Einträgen
|
|
verwalten. Diese Grenze kann umgangen werden, indem mehrere
|
|
Subnetzgruppen mit weniger als fünfzehn Benutzern angelegt
|
|
werden und diese Subnetzgruppen wiederum in einer Netzgruppe
|
|
zusammengefasst wird, wie in diesem Beispiel zu sehen:</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>Wiederholen Sie diesen Vorgang, wenn mehr als 225 (15*15)
|
|
Benutzer in einer einzigen Netzgruppe existieren.</para>
|
|
|
|
<para>Die neue <acronym>NIS</acronym>-Map aktivieren und
|
|
verteilen:</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 der neuen <acronym>NIS</acronym>-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 rechnerspezifische
|
|
Netzgruppen erzeugt wurden. Der dritte Befehl gibt die
|
|
Netzgruppen nach Benutzern sortiert aus.</para>
|
|
|
|
<para>Wenn Sie einen Client einrichten, verwenden Sie
|
|
&man.vipw.8; um den Namen der Netzgruppe anzugeben. Ersetzen
|
|
Sie beispielsweise auf dem Server namens
|
|
<systemitem>war</systemitem> die folgende Zeile:</para>
|
|
|
|
<programlisting>+:::::::::</programlisting>
|
|
|
|
<para>durch</para>
|
|
|
|
<programlisting>+@IT_EMP:::::::::</programlisting>
|
|
|
|
<para>ersetzt werden.</para>
|
|
|
|
<para>Diese Zeile legt fest, dass nur noch Benutzer der
|
|
Netzgruppe <literal>IT_EMP</literal> in die Passwortdatenbank
|
|
dieses Systems importiert werden. Nur diese Benutzer dürfen
|
|
sich an diesem Server anmelden.</para>
|
|
|
|
<para>Diese Konfiguration gilt 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>Benutzer</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 alle Benutzereinträge importiert
|
|
werden, ohne ihnen jedoch zu erlauben, sich am Server
|
|
anzumelden. Dies kann durch das Hinzufügen einer zusätzlichen
|
|
Zeile erreicht werden:</para>
|
|
|
|
<programlisting>+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para>Diese Zeile weist den Client an, alle Einträge zu
|
|
importieren, aber die Shell in diesen Einträgen durch
|
|
<filename>/sbin/nologin</filename> zu ersetzen.</para>
|
|
|
|
<para>Stellen Sie sicher, dass die zusätzliche Zeile
|
|
<emphasis>nach</emphasis> der Zeile
|
|
<literal>+@IT_EMP:::::::::</literal> eingetragen ist.
|
|
Andernfalls haben alle via <acronym>NIS</acronym>
|
|
importierten Benutzerkonten <filename>/sbin/nologin</filename>
|
|
als Loginshell und niemand wird sich mehr am System anmelden
|
|
können.</para>
|
|
|
|
<para>Um die weniger wichtigen Server zu konfigurieren, ersetzen
|
|
Sie den alten Eintrag <literal>+:::::::::</literal> auf den
|
|
Servern mit diesen Zeilen:</para>
|
|
|
|
<programlisting>+@IT_EMP:::::::::
|
|
+@IT_APP:::::::::
|
|
+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para>Die entsprechenden Zeilen für Arbeitsplätze lauten:</para>
|
|
|
|
<programlisting>+@IT_EMP:::::::::
|
|
+@USERS:::::::::
|
|
+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para><acronym>NIS</acronym> ist in der Lage, Netzgruppen aus
|
|
anderen Netzgruppen zu bilden. Dies kann nützlich sein, wenn
|
|
sich die Firmenpolitik ändert. 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
|
|
Arbeitsplatzrechner. Jede dieser Netzgruppen enthält die
|
|
Netzgruppen, die sich auf diesen Rechnern anmelden dürfen.
|
|
Die Einträge der Netzgruppen in der <acronym>NIS</acronym>-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 Rechner in
|
|
Gruppen mit identischen Beschränkungen eingeteilt werden
|
|
können. Unglücklicherweise ist dies die Ausnahme und nicht
|
|
die Regel. Meistens wird die Möglichkeit zur
|
|
rechnerspezischen Zugangsbeschränkung benötigt.</para>
|
|
|
|
<para>Rechnerspezifische Netzgruppen sind eine weitere
|
|
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:</para>
|
|
|
|
<programlisting>+@<replaceable>BOXNAME</replaceable>:::::::::
|
|
+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para>Sobald dies für alle Rechner erledigt ist, müssen die
|
|
lokalen Versionen von <filename>/etc/master.passwd</filename>
|
|
nie mehr verändert werden. Alle weiteren Änderungen geschehen
|
|
über die <acronym>NIS</acronym>-Maps. Nachfolgend ein
|
|
Beispiel für eine mögliche Netzgruppen-Map:</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>Es ist nicht immer ratsam, rechnerbasierte Netzgruppen zu
|
|
verwenden. Wenn Dutzende oder Hunderte identische Rechner
|
|
eingerichtet werden müssen, sollten rollenbasierte Netzgruppen
|
|
verwendet werden, um die Größe der <acronym>NIS</acronym>-Maps
|
|
in Grenzen zu halten.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Passwortformate</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Passwortformate</secondary>
|
|
</indexterm>
|
|
|
|
<para>Alle Rechner innerhalb der <acronym>NIS</acronym>-Domäne
|
|
müssen für die Verschlüsselung von Passwörtern das gleiche
|
|
Format benutzen. Wenn Benutzer Schwierigkeiten bei der
|
|
Authentifizierung auf einem <acronym>NIS</acronym>-Client
|
|
haben, liegt dies möglicherweise an einem anderen
|
|
Passwort-Format. In einem heterogenen Netzwerk muss das
|
|
verwendete Format von allen Betriebssystemen unterstützt
|
|
werden, wobei <acronym>DES</acronym> der kleinste gemeinsame
|
|
Standard ist.</para>
|
|
|
|
<para>Welches Format die Server und Clients verwenden,
|
|
steht in <filename>/etc/login.conf</filename>:</para>
|
|
|
|
<programlisting>default:\
|
|
:passwd_format=des:\
|
|
:copyright=/etc/COPYRIGHT:\
|
|
[weitere Einträge]</programlisting>
|
|
|
|
<para>In diesem Beispiel verwendet das System das Format
|
|
<acronym>DES</acronym>. Weitere mögliche Werte sind unter
|
|
anderem <literal>blf</literal> und <literal>md5</literal> (mit
|
|
Blowfish und MD5 verschlüsselte Passwörter).</para>
|
|
|
|
<para>Wird auf einem Rechner das Format entsprechend der
|
|
<acronym>NIS</acronym>-Domäne geändert, muss anschließend die
|
|
Login-Capability Datenbank neu erstellt werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen>
|
|
|
|
<note>
|
|
<para>Das Format der schon bestehenden Passwörter wird erst
|
|
aktualisiert, wenn ein Benutzer sein Passwort ändert,
|
|
<emphasis>nachdem</emphasis> die Datenbank neu erstellt
|
|
wurde.</para>
|
|
</note>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-ldap">
|
|
<info>
|
|
<title>Lightweight Access Directory Protocol
|
|
(<acronym>LDAP</acronym>)</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
</personname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Björn</firstname>
|
|
<surname>Heidotting</surname>
|
|
</personname>
|
|
<contrib>Übersetzt von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
<indexterm><primary>LDAP</primary></indexterm>
|
|
|
|
<para>Das Lightweight Directory Access Protocol
|
|
(<acronym>LDAP</acronym>) ist ein Protokoll der
|
|
Anwendungsschicht, das verwendet wird um Objekte mithilfe eines
|
|
verteilten Verzeichnisdienstes abzurufen, zu verändern und zu
|
|
authentifizieren. Betrachten Sie es als ein Telefonbuch, das
|
|
homogene Informationen in mehreren hierarchischen Ebenen
|
|
speichert. Es wird in Active Directory und
|
|
<application>OpenLDAP</application>-Netzwerken eingesetzt, in
|
|
denen Benutzer unter Verwendung eines einzigen Kontos auf
|
|
diverse interne Informationen zugreifen. Beispielsweise kann
|
|
E-Mail-Authentifizierung, Abfrage von Kontaktinformationen
|
|
und Website-Authentifizierung über ein einzelnes Benutzerkonto
|
|
aus der Datenbank des <acronym>LDAP</acronym>-Servers
|
|
erfolgen.</para>
|
|
|
|
<para>Dieser Abschnitt enthält eine kompakte Anleitung, um einen
|
|
<acronym>LDAP</acronym>-Server auf einem &os;-System zu
|
|
konfigurieren. Es wird vorausgesetzt, dass der Administrator
|
|
bereits einen Plan erarbeitet hat, der verschiedene Punkte
|
|
umfasst, unter anderem die Art der zu speichernden
|
|
Informationen, für was die Informationen verwendet
|
|
werden, welche Benutzer Zugriff auf die Informationen haben und
|
|
wie die Informationen vor unbefugtem Zugriff geschützt
|
|
werden.</para>
|
|
|
|
<sect2>
|
|
<title><acronym>LDAP</acronym> Terminologie und Struktur</title>
|
|
|
|
<para><acronym>LDAP</acronym> verwendet mehrere Begriffe die
|
|
Sie verstehen sollten bevor Sie die Konfiguration beginnen.
|
|
Alle Verzeichniseinträge bestehen aus einer Gruppe von
|
|
<emphasis>Attributen</emphasis>. Jede Attributgruppe enthält
|
|
einen eindeutigen Bezeichner, der als
|
|
<foreignphrase>distinguished name</foreignphrase>
|
|
(<acronym>DN</acronym>) bekannt ist. Dieser setzt sich
|
|
normalerweise aus mehreren anderen Attributen, wie dem
|
|
<foreignphrase>Relative Distinguished Name</foreignphrase>
|
|
(<acronym>RDN</acronym>) zusammen. Wie bei Verzeichnissen
|
|
gibt es auch hier absolute und relative Pfade. Betrachten Sie
|
|
<acronym>DN</acronym> als absoluten Pfad und
|
|
<acronym>RDN</acronym> als relativen Pfad.</para>
|
|
|
|
<para>Beispielsweise könnte ein <acronym>LDAP</acronym>-Eintrag
|
|
wie folgt aussehen. Dieses Beispiel sucht nach dem Eintrag
|
|
für das angegebene Benutzerkonto (<literal>uid</literal>),
|
|
Organisationseinheit (<literal>ou</literal> und Organisation
|
|
(<literal>o</literal>):</para>
|
|
|
|
<screen>&prompt.user; <userinput>ldapsearch -xb "uid=<replaceable>trhodes</replaceable>,ou=<replaceable>users</replaceable>,o=<replaceable>example.com</replaceable>"</userinput>
|
|
# extended LDIF
|
|
|
|
#
|
|
# LDAPv3
|
|
# base <uid=trhodes,ou=users,o=example.com> with scope subtree
|
|
# filter: (objectclass=*)
|
|
# requesting: ALL
|
|
#
|
|
|
|
|
|
# trhodes, users, example.com
|
|
dn: uid=trhodes,ou=users,o=example.com
|
|
mail: trhodes@example.com
|
|
cn: Tom Rhodes
|
|
uid: trhodes
|
|
telephoneNumber: (123) 456-7890
|
|
|
|
# search result
|
|
search: 2
|
|
result: 0 Success
|
|
|
|
# numResponses: 2
|
|
# numEntries:1</screen>
|
|
|
|
<para>Die Einträge in diesem Beispiel zeigen die Werte für die
|
|
Attribute <literal>dn</literal>, <literal>mail</literal>,
|
|
<literal>cn</literal>, <literal>uid</literal> und
|
|
<literal>telephoneNumber</literal>. Das Attribut
|
|
<literal>cn</literal> ist der <acronym>RDN</acronym>.</para>
|
|
|
|
<para>Weitere Informationen über <acronym>LDAP</acronym> und
|
|
dessen Terminologie finden Sie unter <link
|
|
xlink:href="http://www.openldap.org/doc/admin24/intro.html">
|
|
http://www.openldap.org/doc/admin24/intro.html</link>.</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="ldap-config">
|
|
<title>Konfiguration eines
|
|
<acronym>LDAP</acronym>-Servers</title>
|
|
|
|
<indexterm><primary>LDAP Server</primary></indexterm>
|
|
|
|
<para>&os; integriert keinen <acronym>LDAP</acronym>-Server.
|
|
Beginnen Sie die Konfiguration durch die Installation des
|
|
Ports oder Pakets <package>net/openldap24-server</package>.
|
|
Da der Port viele konfigurierbare Optionen hat, ist es
|
|
empfehlenswert zu prüfen, ob die Installation des Pakets
|
|
ausreichend ist. Wenn Sie irgendwelche Optionen ändern
|
|
möchten, ist es besser den Port zu übersetzen. In den meisten
|
|
Fällen sollten die Standardwerte ausreichend sein. Wenn
|
|
Sie jedoch SQL-Unterstützung benötigen, muss diese Option
|
|
aktiviert und der Port nach den Anweisungen in <xref
|
|
linkend="ports-using"/> übersetzt werden.</para>
|
|
|
|
<para>Als nächstes muss ein Verzeichnis für Daten sowie ein
|
|
Verzeichnis für die Zertifikate erstellt werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mkdir /var/db/openldap-data</userinput>
|
|
&prompt.root; <userinput>mkdir /usr/local/etc/openldap/private</userinput></screen>
|
|
|
|
<para>Kopieren Sie die Konfigurationsdatei der Datenbank:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap-data/DB_CONFIG</userinput></screen>
|
|
|
|
<para>Im nächsten Schritt wird die Zertifizierungsstelle
|
|
konfiguriert. Die folgenden Befehle müssen in
|
|
<filename>/usr/local/etc/openldap/private</filename>
|
|
ausgeführt werden. Dies ist wichtig, da die
|
|
Dateiberechtigungen restriktiv gesetzt werden und Benutzer
|
|
keinen direkten Zugriff auf diese Daten haben sollten. Geben
|
|
Sie folgenden Befehl ein, um die Zertifizierungsstelle zu
|
|
erstellen und folgen Sie den Anweisungen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>openssl req -days <replaceable>365</replaceable> -nodes -new -x509 -keyout ca.key -out ../ca.crt</userinput></screen>
|
|
|
|
<para>Diese Einträge sind frei wählbar,
|
|
<emphasis>mit Ausnahme</emphasis> von
|
|
<emphasis>Common Name</emphasis>. Hier muss etwas anderes als
|
|
der Hostname des Systems eingetragen werden. Wenn ein
|
|
selbstsigniertes Zertifikat verwendet wird, stellen Sie dem
|
|
Hostnamen einfach das Präfix <literal>CA</literal> für die
|
|
Zertifizierungsstelle voran.</para>
|
|
|
|
<para>Die nächste Aufgabe besteht darin, einen
|
|
Zertifikatsregistrierungsanforderung (<acronym>CSR</acronym>)
|
|
sowie einen privaten Schlüssel zu erstellen. Geben Sie
|
|
folgenden Befehl ein und folgen Sie den Anweisungen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>openssl req -days <replaceable>365</replaceable> -nodes -new -keyout server.key -out server.csr</userinput></screen>
|
|
|
|
<para>Stellen Sie hierbei sicher, dass
|
|
<literal>Common Name</literal> richtig eingetragen wird.
|
|
Anschließend muss der Schlüssel signiert werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>openssl x509 -req -days <replaceable>365</replaceable> -in server.csr -out ../server.crt -CA ../ca.crt -CAkey ca.key -CAcreateserial</userinput></screen>
|
|
|
|
<para>Der letzte Schritt für die Erstellung der Zertifikate
|
|
besteht darin, die Client-Zertifikate zu erstellen und zu
|
|
signieren:</para>
|
|
|
|
<screen>&prompt.root; <userinput>openssl req -days <replaceable>365</replaceable> -nodes -new -keyout client.key -out client.csr</userinput>
|
|
&prompt.root; <userinput>openssl x509 -req -days 3650 -in client.csr -out ../client.crt -CAkey ca.key</userinput></screen>
|
|
|
|
<para>Achten Sie wieder auf das Attribut
|
|
<literal>Common name</literal>. Stellen Sie außerdem sicher,
|
|
dass bei diesem Verfahren acht (8) neue Dateien erzeugt worden
|
|
sind. Der nächste Schritt besteht darin,
|
|
<filename>/usr/local/etc/openldap/slapd.conf</filename> zu
|
|
editieren und folgende Optionen hinzuzufügen:</para>
|
|
|
|
<programlisting>TLSCipherSuite HIGH:MEDIUM:+SSLv3
|
|
TLSCertificateFile /usr/local/etc/openldap/server.crt
|
|
TLSCertificateKeyFile /usr/local/etc/openldap/private/server.key
|
|
TLSCACertificateFile /usr/local/etc/openldap/ca.crt</programlisting>
|
|
|
|
<para>Danach bearbeiten Sie
|
|
<filename>/usr/local/etc/openldap/ldap.conf</filename> und
|
|
fügen folgende Zeilen hinzu:</para>
|
|
|
|
<programlisting>TLS_CACERT /usr/local/etc/openldap/ca.crt
|
|
TLS_CIPHER_SUITE HIGH:MEDIUM:+SSLv3</programlisting>
|
|
|
|
<para>Kommentieren Sie die folgenden Einträge aus und setzen Sie
|
|
sie auf die gewünschten Werte: <option>BASE</option>,
|
|
<option>URI</option>, <option>SIZELIMIT</option> und
|
|
<option>TIMELIMIT</option>. Setzen Sie bei
|
|
<option>URI</option> <option>ldap://</option> und
|
|
<option>ldaps://</option> ein. Fügen Sie danach zwei Einträge
|
|
ein, die auf die Zertifizierungsstelle verweisen. Wenn Sie
|
|
fertig sind, sollten die Einträge wie folgt aussehen:</para>
|
|
|
|
<programlisting>BASE dc=example,dc=com
|
|
URI ldap:// ldaps://
|
|
|
|
SIZELIMIT 12
|
|
TIMELIMIT 15
|
|
|
|
TLS_CACERT /usr/local/etc/openldap/ca.crt
|
|
TLS_CIPHER_SUITE HIGH:MEDIUM:+SSLv3</programlisting>
|
|
|
|
<para>Anschließend sollte das Standardpasswort für den Server
|
|
geändert werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>slappasswd -h "{SHA}" >> /usr/local/etc/openldap/slapd.conf</userinput></screen>
|
|
|
|
<para>Dieser Befehl wird nach einem Passwort fragen und, wenn
|
|
der Prozess nicht fehlschlägt, ein Passwort-Hash an das
|
|
Ende von <filename>slapd.conf</filename> hinzufügen. Es
|
|
werden verschiedene Hash-Formate unterstützt. Weitere
|
|
Informationen hierzu finden Sie in der Manualpage von
|
|
<command>slappasswd</command>.</para>
|
|
|
|
<para>Als nächstes bearbeiten Sie
|
|
<filename>/usr/local/etc/openldap/slapd.conf</filename> und
|
|
fügen folgende Zeilen hinzu:</para>
|
|
|
|
<programlisting>password-hash {sha}
|
|
allow bind_v2</programlisting>
|
|
|
|
<para>Das Suffix in dieser Datei muss <option>BASE</option> aus
|
|
<filename>/usr/local/etc/openldap/ldap.conf</filename>
|
|
entsprechen. Zudem sollte die Option <option>rootdn</option>
|
|
ebenfalls gesetzt werden. Ein guter Wert ist beispielsweise
|
|
<option>cn=Manager</option>. Bevor die Datei gespeichert
|
|
wird, setzen Sie die Passwortausgabe von
|
|
<command>slappasswd</command> hinter die Option
|
|
<option>rootpw</option>. Das Endergebnis sollte in etwa wie
|
|
folgt aussehen:</para>
|
|
|
|
<programlisting>TLSCipherSuite HIGH:MEDIUM:+SSLv3
|
|
TLSCertificateFile /usr/local/etc/openldap/server.crt
|
|
TLSCertificateKeyFile /usr/local/etc/openldap/private/server.key
|
|
TLSCACertificateFile /usr/local/etc/openldap/ca.crt
|
|
rootpw {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=</programlisting>
|
|
|
|
<para>Aktivieren Sie abschließend
|
|
<application>OpenLDAP</application> in
|
|
<filename>/etc/rc.conf</filename> und setzen Sie die
|
|
<acronym>URI</acronym>:</para>
|
|
|
|
<programlisting>slapd_enable="YES"
|
|
slapd_flags="-4 -h ldaps:///"</programlisting>
|
|
|
|
<para>An dieser Stelle kann der Server gestartet und getestet
|
|
werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service slapd start</userinput></screen>
|
|
|
|
<para>Wenn alles richtig konfiguriert ist, sollte eine Suche im
|
|
Verzeichnis, wie in diesem Beispiel, eine erfolgreiche
|
|
Verbindung mit einer Antwort liefern:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ldapsearch -Z</userinput>
|
|
# extended LDIF
|
|
|
|
#
|
|
# LDAPv3
|
|
# base <dc=example,dc=com> (default) with scope subtree
|
|
# filter: (objectclass=*)
|
|
# requesting: ALL
|
|
|
|
# search result
|
|
search: 3
|
|
result: 32 No such object
|
|
|
|
# numResponses: 1</screen>
|
|
|
|
<note>
|
|
<para>Wenn der Befehl fehlschlägt, aber die Konfiguration
|
|
richtig aussieht, stoppen Sie den
|
|
<command>slapd</command>-Dienst. Starten Sie anschließend
|
|
den Dienst mit
|
|
<foreignphrase>Debugging</foreignphrase>-Optionen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service slapd stop</userinput>
|
|
&prompt.root; <userinput>/usr/local/libexec/slapd -d -1</userinput></screen>
|
|
</note>
|
|
|
|
<para>Sobald der Dienst antwortet, kann das Verzeichnis mit dem
|
|
Befehl <command>ldapadd</command> bestückt werden. In diesem
|
|
Beispiel gibt es eine Datei mit einer Liste von Benutzern, die
|
|
diesem Verzeichnis hinzugefügt werden. Die Einträge sollten
|
|
das folgende Format haben:</para>
|
|
|
|
<programlisting>dn: dc=<replaceable>example</replaceable>,dc=<replaceable>com</replaceable>
|
|
objectclass: dcObject
|
|
objectclass: organization
|
|
o: <replaceable>Example</replaceable>
|
|
dc: <replaceable>Example</replaceable>
|
|
|
|
dn: cn=<replaceable>Manager</replaceable>,dc=<replaceable>example</replaceable>,dc=<replaceable>com</replaceable>
|
|
objectclass: organizationalRole
|
|
cn: <replaceable>Manager</replaceable></programlisting>
|
|
|
|
<para>Um diese Datei zu importieren, geben Sie den Dateinamen
|
|
an. Bei dem folgenden Befehl werden Sie wieder zur Eingabe
|
|
des Passworts aufgefordert, das Sie zuvor eingegeben haben.
|
|
Die Ausgabe sollte wie folgt aussehen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ldapadd -Z -D "cn=<replaceable>Manager</replaceable>,dc=<replaceable>example</replaceable>,dc=<replaceable>com</replaceable>" -W -f <replaceable>import.ldif</replaceable></userinput>
|
|
Enter LDAP Password:
|
|
adding new entry "dc=example,dc=com"
|
|
|
|
adding new entry "cn=Manager,dc=example,dc=com"</screen>
|
|
|
|
<para>Stellen Sie mit einer Suche auf dem Server sicher, dass
|
|
die Daten importiert wurden. Nutzen Sie dazu
|
|
<command>ldapsearch</command>:</para>
|
|
|
|
<screen>&prompt.user; <userinput>ldapsearch -Z</userinput>
|
|
# extended LDIF
|
|
#
|
|
# LDAPv3
|
|
# base <dc=example,dc=com> (default) with scope subtree
|
|
# filter: (objectclass=*)
|
|
# requesting: ALL
|
|
#
|
|
|
|
# example.com
|
|
dn: dc=example,dc=com
|
|
objectClass: dcObject
|
|
objectClass: organization
|
|
o: Example
|
|
dc: Example
|
|
|
|
# Manager, example.com
|
|
dn: cn=Manager,dc=example,dc=com
|
|
objectClass: organizationalRole
|
|
cn: Manager
|
|
|
|
# search result
|
|
search: 3
|
|
result: 0 Success
|
|
|
|
# numResponses: 3
|
|
# numEntries: 2</screen>
|
|
|
|
<para>An dieser Stelle sollte der Server konfiguriert sein und
|
|
ordnungsgemäß funktionieren.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-dhcp">
|
|
<!--
|
|
<info>
|
|
<authorgroup>
|
|
<author><personname><firstname>Greg</firstname><surname>Sutter</surname></personname><contrib>Geschrieben von </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
<title>Dynamic Host Configuration Protocol
|
|
(<acronym>DHCP</acronym>)</title>
|
|
|
|
<indexterm>
|
|
<primary>Dynamic Host Configuration Protocol</primary>
|
|
<see><acronym>DHCP</acronym></see>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Internet Systems Consortium (ISC)</primary>
|
|
</indexterm>
|
|
|
|
<para>Das Dynamic Host Configuration Protocol
|
|
(<acronym>DHCP</acronym>) ermöglicht es einem System, sich mit
|
|
einem Netzwerk zu verbinden und die für die Kommunikation mit
|
|
diesem Netzwerk nötigen Informationen zu beziehen. &os;
|
|
verwendet den von OpenBSD stammenden
|
|
<command>dhclient</command>, um die Adressinformationen zu
|
|
beziehen. &os; installiert keinen
|
|
<acronym>DHCP</acronym>-Server, aber es stehen einige Server in
|
|
der &os; Ports-Sammlung zu Verfügung. Das
|
|
<acronym>DHCP</acronym>-Protokoll wird vollständig im <link
|
|
xlink:href="http://www.freesoft.org/CIE/RFC/2131/">
|
|
RFC 2131</link> beschrieben. Eine weitere, lehrreiche
|
|
Informationsquelle existiert unter <uri
|
|
xlink:href="http://www.isc.org/downloads/dhcp">
|
|
isc.org/downloads/dhcp/</uri>.</para>
|
|
|
|
<para>In diesem Abschnitt wird beschrieben, wie der integrierte
|
|
<acronym>DHCP</acronym>-Client verwendet wird. Anschließend
|
|
wird erklärt, wie ein <acronym>DHCP</acronym>-Server zu
|
|
installieren und konfigurieren ist.</para>
|
|
|
|
<note>
|
|
<para>Unter &os; wird das Gerät &man.bpf.4; für den
|
|
<acronym>DHCP</acronym>-Server und den
|
|
<acronym>DHCP</acronym>-Client benötigt. Das Gerät ist
|
|
bereits im <filename>GENERIC</filename>-Kernel enthalten.
|
|
Benutzer, die es vorziehen einen angepassten Kernel zu
|
|
erstellen, müssen dieses Gerät behalten, wenn
|
|
<acronym>DHCP</acronym> verwendet wird.</para>
|
|
|
|
<para>Es sei darauf hingewiesen, dass <filename>bpf</filename>
|
|
es priviligierten Benutzern ermöglicht einen Paket-Sniffer
|
|
auf dem System auszuführen.</para>
|
|
</note>
|
|
|
|
<sect2>
|
|
<title>Einen <acronym>DHCP</acronym>-Client
|
|
konfigurieren</title>
|
|
|
|
<para>Die Unterstützung für den <acronym>DHCP</acronym>-Client
|
|
ist im Installationsprogramm von &os; enthalten, sodass ein
|
|
neu installiertes System automatisch die Adressinformationen
|
|
des Netzwerks vom <acronym>DHCP</acronym>-Server
|
|
erhält. In <xref linkend="bsdinstall-post"/> finden Sie
|
|
Beispiele für eine Netzwerkkonfiguration.</para>
|
|
|
|
<indexterm><primary><acronym>UDP</acronym></primary></indexterm>
|
|
|
|
<para><command>dhclient</command> beginnt von einem
|
|
Clientrechner aus über den <acronym>UDP</acronym>-Port 68
|
|
Konfigurationsinformationen anzufordern. Der Server antwortet
|
|
auf dem <acronym>UDP</acronym>-Port 67, indem er dem Client
|
|
eine <acronym>IP</acronym>-Adresse zuweist und ihm weitere
|
|
relevante Informationen über das Netzwerk, wie Netzmasken,
|
|
Router und <acronym>DNS</acronym>-Server mitteilt. Diese
|
|
Informationen werden als
|
|
<foreignphrase>DHCP-Lease</foreignphrase> bezeichnet und sind
|
|
nur für bestimmte Zeit, die vom Administrator des
|
|
<acronym>DHCP</acronym>-Servers vorgegeben wird, gültig.
|
|
Dadurch fallen verwaiste <acronym>IP</acronym>-Adressen, deren
|
|
Clients nicht mehr mit dem Netzwerk verbunden sind,
|
|
automatisch an den Server zurück.
|
|
<acronym>DHCP</acronym>-Clients können sehr viele
|
|
Informationen von einem <acronym>DHCP</acronym>-Server
|
|
erhalten. Eine ausführliche Liste finden Sie in
|
|
&man.dhcp-options.5;.</para>
|
|
|
|
<para>Das Gerät <filename>bpf</filename> ist im
|
|
<filename>GENERIC</filename>-Kernel bereits enthalten. Für
|
|
die Nutzung von <acronym>DHCP</acronym> muss also kein
|
|
angepasster Kernel erzeugt werden. In einer angepassten
|
|
Kernelkonfigurationsdatei muss das Gerät enthalten sein, damit
|
|
<acronym>DHCP</acronym> ordnungsgemäß funktioniert.</para>
|
|
|
|
<para>Standardmässig läuft die
|
|
<acronym>DHCP</acronym>-Konfiguration bei &os; im Hintergrund
|
|
oder auch <firstterm>asynchron</firstterm>. Andere
|
|
Startskripte laufen weiter, während <acronym>DHCP</acronym>
|
|
fertig abgearbeitet wird, was den Systemstart
|
|
beschleunigt.</para>
|
|
|
|
<para><acronym>DHCP</acronym> im Hintergrund funktioniert gut,
|
|
wenn der <acronym>DHCP</acronym>-Server schnell auf Anfragen
|
|
der Clients antwortet. Jedoch kann <acronym>DHCP</acronym>
|
|
eine lange Zeit benötigen, um auf manchen Systemen fertig zu
|
|
werden. Falls Netzwerkdienste gestartet werden, bevor
|
|
<acronym>DHCP</acronym> die Informationen und Netzwerkadressen
|
|
gesetzt hat, werden diese fehlschlagen. Durch die Verwendung
|
|
von <acronym>DHCP</acronym> im
|
|
<firstterm>asynchronen</firstterm> Modus wird das Problem
|
|
verhindert, so dass die Startskripte pausiert werden, bis die
|
|
<acronym>DHCP</acronym>-Konfiguration abgeschlossen
|
|
ist.</para>
|
|
|
|
<para>Diese Zeile wird in <filename>/etc/rc.conf</filename>
|
|
verwendet, um den asynchronen Modus zu aktivieren:</para>
|
|
|
|
<programlisting>ifconfig_<replaceable>fxp0</replaceable>="DHCP"</programlisting>
|
|
|
|
<para>Die Zeile kann bereits vorhanden sein, wenn bei der
|
|
Installation des Systems <acronym>DHCP</acronym> konfiguriert
|
|
wurde. Ersetzen Sie <replaceable>fxp0</replaceable> durch die
|
|
entsprechende Schnittstelle. Die dynamische Konfiguration von
|
|
Netzwerkkarten wird in <xref
|
|
linkend="config-network-setup"/> beschrieben.</para>
|
|
|
|
<para>Um stattdessen den synchronen Modus zu verwenden, der
|
|
während des Systemstarts pausiert bis die
|
|
<acronym>DHCP</acronym>-Konfiguration abgeschlossen ist,
|
|
benutzen Sie <quote>SYNCDHCP</quote>:</para>
|
|
|
|
<programlisting>ifconfig_<replaceable>fxp0</replaceable>="SYNCDHCP"</programlisting>
|
|
|
|
<para>Es stehen weitere Optionen für den Client zur Verfügung.
|
|
Suchen Sie in &man.rc.conf.5; nach
|
|
<literal>dhclient</literal>, wenn Sie an Einzelheiten
|
|
interessiert sind.</para>
|
|
|
|
<indexterm>
|
|
<primary><acronym>DHCP</acronym></primary>
|
|
<secondary>Konfigurationsdateien</secondary>
|
|
</indexterm>
|
|
|
|
<para>Der <acronym>DHCP</acronym>-Client verwendet die folgenden
|
|
Dateien:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><filename>/etc/dhclient.conf</filename></para>
|
|
|
|
<para>Die Konfigurationsdatei von
|
|
<command>dhclient</command>. Diese Datei enthält
|
|
normalerweise nur Kommentare, da die Vorgabewerte zumeist
|
|
ausreichend sind. Diese Konfigurationsdatei wird in
|
|
&man.dhclient.conf.5; beschrieben.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/sbin/dhclient</filename></para>
|
|
|
|
<para>Weitere Informationen über dieses Kommando
|
|
finden Sie in &man.dhclient.8;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/sbin/dhclient-script</filename></para>
|
|
|
|
<para>Das &os;-spezifische Konfigurationsskript des
|
|
<acronym>DHCP</acronym>-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.<replaceable>interface</replaceable></filename></para>
|
|
|
|
<para>Der <acronym>DHCP</acronym>-Client verfügt über eine
|
|
Datenbank, die alle derzeit gültigen Leases enthält und
|
|
als Logdatei erzeugt wird. Diese Datei wird in
|
|
&man.dhclient.leases.5; beschrieben.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="network-dhcp-server">
|
|
<title>Einen <acronym>DHCP</acronym>-Server installieren und
|
|
einrichten</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt die Einrichtung eines
|
|
&os;-Systems als <acronym>DHCP</acronym>-Server. Dazu wird
|
|
die <acronym>DHCP</acronym>-Implementation von ISC (Internet
|
|
Systems Consortium) verwendet. Diese Implementation und die
|
|
Dokumentation können als Port oder Paket
|
|
<package>net/isc-dhcp43-server</package> installiert
|
|
werden.</para>
|
|
|
|
<indexterm>
|
|
<primary><acronym>DHCP</acronym></primary>
|
|
<secondary>Server</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><acronym>DHCP</acronym></primary>
|
|
<secondary>installieren</secondary>
|
|
</indexterm>
|
|
|
|
<para>Der Port <package>net/isc-dhcp43-server</package>
|
|
installiert eine Beispiel-Konfigurationsdatei. Kopieren Sie
|
|
<filename>/usr/local/etc/dhcpd.conf.example</filename> nach
|
|
<filename>/usr/local/etc/dhcpd.conf</filename> und nehmen Sie
|
|
die Änderungen an der neuen Datei vor.</para>
|
|
|
|
<indexterm>
|
|
<primary><acronym>DHCP</acronym></primary>
|
|
<secondary>dhcpd.conf</secondary>
|
|
</indexterm>
|
|
|
|
<para>Diese Konfigurationsdatei umfasst Deklarationen für
|
|
Subnetze und Rechner, die den <acronym>DHCP</acronym>-Cleints
|
|
zur Verfügung gestellt wird. Die folgenden Zeilen
|
|
konfigurieren Folgendes:</para>
|
|
|
|
<programlisting>option domain-name "example.org";<co xml:id="domain-name"/>
|
|
option domain-name-servers ns1.example.org;<co xml:id="domain-name-servers"/>
|
|
option subnet-mask 255.255.255.0;<co xml:id="subnet-mask"/>
|
|
|
|
default-lease-time 600;<co xml:id="default-lease-time"/>
|
|
max-lease-time 72400;<co xml:id="max-lease-time"/>
|
|
ddns-update-style none;<co xml:id="ddns-update-style"/>
|
|
|
|
subnet 10.254.239.0 netmask 255.255.255.224 {
|
|
range 10.254.239.10 10.254.239.20;<co xml:id="range"/>
|
|
option routers rtr-239-0-1.example.org;<co xml:id="routers"/>
|
|
}
|
|
|
|
host fantasia {
|
|
hardware ethernet 08:00:07:26:c0:a5;<co xml:id="hardware"/>
|
|
fixed-address fantasia.fugue.com;<co xml:id="fixed-address"/>
|
|
}</programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="domain-name">
|
|
<para>Diese Option beschreibt die Standardsuchdomäne, die
|
|
den Clients 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 <acronym>DNS</acronym>-Servern fest, die von den
|
|
Clients verwendet werden sollen. Die Server können über
|
|
den Namen (<acronym>FQDN</acronym>) oder die
|
|
<acronym>IP</acronym>-Adresse spezifiziert werden.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="subnet-mask">
|
|
<para>Die den Clients zugewiesene Subnetzmaske.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="default-lease-time">
|
|
<para>Die Voreinstellung für die Ablaufzeit des Lease in
|
|
Sekunden. Ein Client kann diesen Wert in der
|
|
Konfiguration überschreiben.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="max-lease-time">
|
|
<para>Die maximale Zeitdauer, für die der Server Leases
|
|
vergibt. Sollte ein Client eine längere Zeitspanne
|
|
anfordern, wird dennoch nur der Wert
|
|
<literal>max-lease-time</literal> zugewiesen.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="ddns-update-style">
|
|
<para>Die Voreinstellung <option>none</option> deaktiviert
|
|
dynamische <acronym>DNS</acronym>-Updates. Bei der
|
|
Einstellung <option>interim</option> aktualisiert der
|
|
<acronym>DHCP</acronym>-Server den
|
|
<acronym>DNS</acronym>-Server, wenn ein Lease vergeben
|
|
oder zurückgezogen wurde. Ändern Sie die Voreinstellung
|
|
nicht, wenn der Server so konfiguriert wurde, dynamische
|
|
<acronym>DNS</acronym>-Updates zu unterstützen.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="range">
|
|
<para>Diese Zeile erstellt einen Pool der verfügbaren
|
|
<acronym>IP</acronym>-Adressen, die für die Zuweisung der
|
|
<acronym>DHCP</acronym>-Clients reserviert sind. Der
|
|
Bereich muss für das angegebene Netz oder Subnetz aus der
|
|
vorherigen Zeile gültig sein.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="routers">
|
|
<para>Legt das Standard-Gateway für das Netz oder Subnetz
|
|
fest, das nach der öffnenden Klammer <literal>{</literal>
|
|
gültig ist.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="hardware">
|
|
<para>Bestimmt die Hardware-<acronym>MAC</acronym>-Adresse
|
|
eines Clients, durch die der
|
|
<acronym>DHCP</acronym>-Server den Client erkennt, der
|
|
eine Anforderung an ihn stellt.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="fixed-address">
|
|
<para>Einem Rechner soll immer die gleiche
|
|
<acronym>IP</acronym>-Adresse zugewiesen werden. Hier ist
|
|
auch ein Rechnername gültig, da der
|
|
<acronym>DHCP</acronym>-Server den Rechnernamen auflöst,
|
|
bevor er das Lease zuweist.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Die Konfigurationsdatei unterstützt viele weitere
|
|
Optionen. Lesen Sie &man.dhcpd.conf.5;, die mit dem Server
|
|
installiert wird, für Details und Beispiele.</para>
|
|
|
|
<para>Nachdem <filename>dhcpd.conf</filename> konfiguriert ist,
|
|
aktivieren Sie den <acronym>DHCP</acronym>-Server in
|
|
<filename>/etc/rc.conf</filename>:</para>
|
|
|
|
<programlisting>dhcpd_enable="YES"
|
|
dhcpd_ifaces="dc0"</programlisting>
|
|
|
|
<para>Dabei müssen Sie <literal>dc0</literal> durch die
|
|
Gerätedatei (mehrere Gerätedateien müssen durch Leerzeichen
|
|
getrennt werden) ersetzen, die der
|
|
<acronym>DHCP</acronym>-Server auf Anfragen von
|
|
<acronym>DHCP</acronym>-Clients hin überwachen soll.</para>
|
|
|
|
<para>Starten Sie den Server mit folgenden Befehl:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service isc-dhcpd start</userinput></screen>
|
|
|
|
<para>Künftige Änderungen an der Konfiguration des Servers
|
|
erfordern, dass der Dienst <command>dhcpd</command> gestoppt
|
|
und anschließend mit &man.service.8; gestartet wird.</para>
|
|
|
|
<indexterm>
|
|
<primary><acronym>DHCP</acronym></primary>
|
|
<secondary>Konfigurationsdateien</secondary>
|
|
</indexterm>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><filename>/usr/local/sbin/dhcpd</filename></para>
|
|
|
|
<para>Weitere Informationen zu
|
|
<application>dhcpd</application> finden Sie in
|
|
&man.dhcpd.8;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/usr/local/etc/dhcpd.conf</filename></para>
|
|
|
|
<para>Die Konfigurationsdatei des Servers muss alle
|
|
Informationen enthalten, die an die Clients weitergegeben
|
|
werden soll. Außerdem sind hier Informationen zur
|
|
Konfiguration des Servers enthalten. Diese
|
|
Konfigurationsdatei wird in &man.dhcpd.conf.5;
|
|
beschrieben.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/var/db/dhcpd.leases</filename></para>
|
|
|
|
<para>Der <acronym>DHCP</acronym>-Server hat eine Datenbank,
|
|
die alle vergebenen Leases enthält. Diese wird als
|
|
Logdatei erzeugt. &man.dhcpd.leases.5; enthält eine
|
|
ausführliche Beschreibung.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/usr/local/sbin/dhcrelay</filename></para>
|
|
|
|
<para>Dieser Daemon wird in komplexen Umgebungen verwendet,
|
|
in denen ein <acronym>DHCP</acronym>-Server eine Anfrage
|
|
eines Clients an einen <acronym>DHCP</acronym>-Server in
|
|
einem separaten Netzwerk weiterleitet. Wenn Sie diese
|
|
Funktion benötigen, müssen Sie
|
|
<package>net/isc-dhcp43-relay</package> installieren.
|
|
Weitere Informationen zu diesem Thema finden Sie in
|
|
&man.dhcrelay.8;.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-dns">
|
|
<!--
|
|
<info>
|
|
<authorgroup>
|
|
<author><personname><firstname>Chern</firstname><surname>Lee</surname></personname><contrib>Beigetragen von </contrib></author>
|
|
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname></author>
|
|
<author><personname><firstname>Daniel</firstname><surname>Gerzo</surname></personname></author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
<title>Domain Name System (<acronym>DNS</acronym>)</title>
|
|
|
|
<indexterm><primary>DNS</primary></indexterm>
|
|
|
|
<para><acronym>DNS</acronym> ist das für die Umwandlung von
|
|
Rechnernamen in <acronym>IP</acronym>-Adressen zuständige
|
|
Protokoll. Im Internet wird <acronym>DNS</acronym> durch ein
|
|
komplexes System von autoritativen Root-Nameservern, Top Level
|
|
Domain-Servern (<acronym>TLD</acronym>) sowie anderen
|
|
kleineren Nameservern verwaltet, die individuelle
|
|
Domaininformationen speichern und untereinander abgleichen.
|
|
Für einfache <acronym>DNS</acronym>-Anfragen wird auf dem
|
|
lokalen System kein Nameserver benötigt.</para>
|
|
|
|
<indexterm><primary>Resolver</primary></indexterm>
|
|
<indexterm>
|
|
<primary>Reverse-<acronym>DNS</acronym></primary>
|
|
</indexterm>
|
|
<indexterm><primary>Root-Zone</primary></indexterm>
|
|
|
|
<para>Die folgende Tabelle beschreibt einige mit
|
|
<acronym>DNS</acronym> verbundenen Begriffe:</para>
|
|
|
|
<table frame="none" pgwide="1">
|
|
<title><acronym>DNS</acronym>-Begriffe</title>
|
|
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="3*"/>
|
|
|
|
<thead>
|
|
<row>
|
|
<entry>Begriff</entry>
|
|
|
|
<entry>Bedeutung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>Forward-<acronym>DNS</acronym></entry>
|
|
|
|
<entry>Rechnernamen in <acronym>IP</acronym>-Adressen
|
|
umwandeln.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Origin (Ursprung)</entry>
|
|
|
|
<entry>Die in einer bestimmten Zonendatei beschriebene
|
|
Domäne.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Resolver</entry>
|
|
|
|
<entry>Ein Systemprozess, durch den ein Rechner
|
|
Zoneninformationen von einem Nameserver
|
|
anfordert.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Reverse-<acronym>DNS</acronym></entry>
|
|
|
|
<entry>die Umwandlung von <acronym>IP</acronym>-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 <acronym>DNS</acronym>, der von der gleichen
|
|
Autorität verwaltet wird.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<indexterm>
|
|
<primary>Zonen</primary>
|
|
<secondary>Beispiele</secondary>
|
|
</indexterm>
|
|
|
|
<para>Es folgen nun einige Zonenbeispiele:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Innerhalb der Dokumentation wird die Root-Zone in der
|
|
Regel mit <systemitem>.</systemitem> bezeichnet.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><systemitem>org.</systemitem> ist eine Top level Domain
|
|
(<acronym>TLD</acronym>) innerhalb der Root-Zone.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><systemitem
|
|
class="fqdomainname">example.org.</systemitem> ist eine
|
|
Zone innerhalb der
|
|
<systemitem>org.</systemitem>-<acronym>TLD</acronym>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><systemitem>1.168.192.in-addr.arpa.</systemitem> ist die
|
|
Zone mit allen <acronym>IP</acronym>-Adressen des Bereichs
|
|
<systemitem
|
|
class="fqdomainname">192.168.1.*</systemitem>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Wie man an diesen Beispielen erkennen kann, befindet sich
|
|
der spezifischere Teil eines Rechnernamens auf der linken Seite
|
|
der Adresse. <systemitem
|
|
class="fqdomainname">example.org.</systemitem> beschreibt
|
|
einen Rechner also genauer als <systemitem>org.</systemitem>,
|
|
während <systemitem>org.</systemitem> 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>
|
|
<title>Gründe für die Verwendung eines Nameservers</title>
|
|
|
|
<para>Es gibt zwei Arten von Nameservern: Autoritative
|
|
Nameserver sowie zwischenspeichernde (cachende, auch bekannt
|
|
als auflösende) Nameserver.</para>
|
|
|
|
<para>Ein autoritativer Nameserver ist notwendig, wenn</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Sie anderen verbindliche
|
|
<acronym>DNS</acronym>-Auskünfte erteilen wollen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>eine Domain, beispielsweise <systemitem
|
|
class="fqdomainname">example.org</systemitem>,
|
|
registriert wird, und den zu dieser Domain gehörenden
|
|
Rechnern <acronym>IP</acronym>-Adressen zugewiesen werden
|
|
müssen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>ein <acronym>IP</acronym>-Adressblock
|
|
reverse-<acronym>DNS</acronym>-Einträge benötigt, um
|
|
<acronym>IP</acronym>-Adressen in Rechnernamen auflösen zu
|
|
können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>ein Backup-Nameserver (auch Slaveserver genannt) oder
|
|
ein zweiter Nameserver auf Anfragen antworten soll.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Ein cachender Nameserver ist notwendig, weil</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>ein lokaler <acronym>DNS</acronym>-Server Daten
|
|
zwischenspeichern und daher schneller auf Anfragen
|
|
reagieren kann als ein entfernter Server.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Wird nach <systemitem
|
|
class="fqdomainname">www.FreeBSD.org</systemitem> gesucht,
|
|
leitet der Resolver diese Anfrage an den Nameserver des
|
|
<acronym>ISP</acronym>s weiter und nimmt danach das Ergebnis
|
|
der Abfrage entgegen. Existiert ein lokaler,
|
|
zwischenspeichernder <acronym>DNS</acronym>-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><acronym>DNS</acronym>-Server Konfiguration</title>
|
|
|
|
<para><application>Unbound</application> ist im Basissystem von
|
|
&os; enthalten. In der Voreinstellung bietet es nur die
|
|
<acronym>DNS</acronym>-Auflösung auf dem lokalen Rechner.
|
|
Obwohl das im Basissystem enthaltene
|
|
<application>Unbound</application> konfiguriert werden kann,
|
|
um Namensauflösung über den lokalen Rechner hinweg
|
|
bereitzustellen, ist es empfehlenswert für solche
|
|
Anforderungen <application>Unbound</application> aus der &os;
|
|
Ports-Sammlung zu installieren.</para>
|
|
|
|
<para>Um <application>Unbound</application> zu aktivieren, fügen
|
|
Sie folgende Zeile in <filename>/etc/rc.conf</filename>
|
|
ein:</para>
|
|
|
|
<programlisting>local_unbound_enable="YES"</programlisting>
|
|
|
|
<para>Alle vorhandenen Nameserver aus
|
|
<filename>/etc/resolv.conf</filename> werden als Forwarder
|
|
in der neuen <application>Unbound</application>-Konfiguration
|
|
benutzt.</para>
|
|
|
|
<note>
|
|
<para>Wenn einer der aufgeführten Nameserver kein
|
|
<acronym>DNSSEC</acronym> unterstützt, wird die lokale
|
|
<acronym>DNS</acronym>-Auflösung nicht funktionieren.
|
|
Testen Sie jeden Server und entfernen Sie die Server, die
|
|
den Test nicht bestehen. Das folgende Beispiel zeigt einen
|
|
<foreignphrase>Trust Tree</foreignphrase> beziehungsweise
|
|
einen Fehler für den Nameserver auf <systemitem
|
|
class="ipaddress">192.168.1.1</systemitem>:</para>
|
|
</note>
|
|
|
|
<screen>&prompt.root; <userinput>drill -S FreeBSD.org @<replaceable>192.168.1.1</replaceable></userinput></screen>
|
|
|
|
<para>Nachdem jeder Server für <acronym>DNSSEC</acronym>
|
|
konfiguriert ist, starten Sie
|
|
<application>Unbound</application>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service local_unbound onestart</userinput></screen>
|
|
|
|
<para>Dieses Kommando sorgt für die Aktualisierung von
|
|
<filename>/etc/resolv.conf</filename>, so dass Abfragen für
|
|
<acronym>DNSSEC</acronym> gesicherte Domains jetzt
|
|
funktionieren. Führen Sie folgenden Befehl aus, um den
|
|
<acronym>DNSSEC</acronym>
|
|
<foreignphrase>Trust Tree</foreignphrase> für
|
|
FreeBSD.org zu überprüfen:</para>
|
|
|
|
<screen>&prompt.user; <userinput>drill -S FreeBSD.org</userinput>
|
|
;; Number of trusted keys: 1
|
|
;; Chasing: freebsd.org. A
|
|
|
|
DNSSEC Trust tree:
|
|
freebsd.org. (A)
|
|
|---freebsd.org. (DNSKEY keytag: 36786 alg: 8 flags: 256)
|
|
|---freebsd.org. (DNSKEY keytag: 32659 alg: 8 flags: 257)
|
|
|---freebsd.org. (DS keytag: 32659 digest type: 2)
|
|
|---org. (DNSKEY keytag: 49587 alg: 7 flags: 256)
|
|
|---org. (DNSKEY keytag: 9795 alg: 7 flags: 257)
|
|
|---org. (DNSKEY keytag: 21366 alg: 7 flags: 257)
|
|
|---org. (DS keytag: 21366 digest type: 1)
|
|
| |---. (DNSKEY keytag: 40926 alg: 8 flags: 256)
|
|
| |---. (DNSKEY keytag: 19036 alg: 8 flags: 257)
|
|
|---org. (DS keytag: 21366 digest type: 2)
|
|
|---. (DNSKEY keytag: 40926 alg: 8 flags: 256)
|
|
|---. (DNSKEY keytag: 19036 alg: 8 flags: 257)
|
|
;; Chase successful</screen>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-apache">
|
|
<info>
|
|
<title>Apache HTTP-Server</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
</personname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
<indexterm>
|
|
<primary>Webserver</primary>
|
|
<secondary>konfigurieren</secondary>
|
|
</indexterm>
|
|
<indexterm><primary>Apache</primary></indexterm>
|
|
|
|
<para>Der Open Source
|
|
<application>Apache HTTP-Server</application> ist der am
|
|
weitesten verbreitete Webserver. Dieser Webserver ist nicht im
|
|
Basissystem von &os; enthalten, kann aber als Paket oder Port
|
|
<package>www/apache24</package> installiert werden.</para>
|
|
|
|
<para>Dieser Abschnitt beschreibt die Konfiguration der
|
|
Version 2.<replaceable>x</replaceable> des
|
|
<application>Apache HTTP-Server</application>. Weiterführende
|
|
Informationen und Konfigurationsanweisungen für
|
|
<application>Apache</application> 2.X finden Sie unter
|
|
<link xlink:href="http://httpd.apache.org/">
|
|
httpd.apache.org</link>.</para>
|
|
|
|
<sect2>
|
|
<title>Apache konfigurieren und starten</title>
|
|
|
|
<indexterm><primary>Apache</primary>
|
|
<secondary>Konfigurationsdatei</secondary></indexterm>
|
|
|
|
<para>Der <application>Apache HTTP-Server</application> wird
|
|
unter &os; primär in
|
|
<filename>/usr/local/etc/apache2<replaceable>x</replaceable>/httpd.conf</filename>
|
|
konfiguriert, wobei das <replaceable>x</replaceable> die
|
|
Versionsnummer darstellt. In dieser Textdatei leitet ein
|
|
<literal>#</literal> einen Kommentar ein. Die am häufigsten
|
|
verwendeten Optionen sind:</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>bin</filename> und
|
|
<filename>sbin</filename> unterhalb des
|
|
Serverwurzelverzeichnisses installiert, während sich
|
|
Konfigurationsdateien im Unterverzeichnis
|
|
<filename>etc/apache2<replaceable>x</replaceable></filename>
|
|
befinden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>ServerAdmin you@example.com</literal></term>
|
|
|
|
<listitem>
|
|
<para>Die E-Mail-Adresse, an die Mitteilungen über
|
|
Serverprobleme geschickt werden. Diese Adresse
|
|
erscheint auf vom Server erzeugten Seiten,
|
|
beispielsweise auf Fehlerseiten.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>ServerName www.example.com:80</literal></term>
|
|
|
|
<listitem>
|
|
<para>Erlaubt dem Administrator, einen Rechnernamen
|
|
festzulegen, den der Server an die Clients sendet.
|
|
Beispielsweise könnte <systemitem>www</systemitem> statt
|
|
des richtigen Rechnernamens verwendet werden. Wenn das
|
|
System keinen eingetragenen <acronym>DNS</acronym>-Namen
|
|
hat, kann stattdessen die <acronym>IP</acronym>-Adresse
|
|
eingetragen werden. Lauscht der Server auf einem
|
|
anderen Port, tauschen Sie die <literal>80</literal>
|
|
gegen eine entsprechende Portnummer.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>DocumentRoot "/usr/local/www/apache2<replaceable>x</replaceable>/data"</literal></term>
|
|
|
|
<listitem>
|
|
<para>Das Verzeichnis, in dem die Dokumente abgelegt sind.
|
|
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 der
|
|
<application>Apache</application>-Konfigurationsdatei
|
|
anzulegen, bevor Änderungen durchgeführt werden. Wenn die
|
|
Konfiguration von <application>Apache</application>
|
|
abgeschlossen ist, speichern Sie die Datei und überprüfen Sie
|
|
die Konfiguration mit <command>apachectl</command>. Der
|
|
Befehl <command>apachectl configtest</command> sollte
|
|
<literal>Syntax OK</literal> zurückgeben.</para>
|
|
|
|
<indexterm>
|
|
<primary>Apache</primary>
|
|
<secondary>Starten oder Beenden</secondary>
|
|
</indexterm>
|
|
|
|
<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<replaceable>24</replaceable>_enable="YES"</programlisting>
|
|
|
|
<para>Wenn Sie während des Systemstarts weitere Parameter an den
|
|
<application>Apache</application> übergeben wollen, können Sie
|
|
diese durch eine zusätzliche Zeile in
|
|
<filename>rc.conf</filename> angeben:</para>
|
|
|
|
<programlisting>apache<replaceable>24</replaceable>_flags=""</programlisting>
|
|
|
|
<para>Wenn <application>apachectl</application> keine
|
|
Konfigurationsfehler meldet, starten Sie
|
|
<command>httpd</command>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service apache<replaceable>24</replaceable> start</userinput></screen>
|
|
|
|
<para>Sie können den <command>httpd</command>-Dienst testen,
|
|
indem Sie
|
|
<literal>http://<replaceable>localhost</replaceable></literal>
|
|
in einen Browser eingeben, wobei Sie
|
|
<replaceable>localhost</replaceable> durch den
|
|
vollqualifizierten Domainnamen der Maschine ersetzen, auf dem
|
|
der <command>httpd</command> läuft. Die Standard Webseite,
|
|
die angezeigt wird, ist
|
|
<filename>/usr/local/www/apache<replaceable>24</replaceable>/data/index.html</filename>.</para>
|
|
|
|
<para>Die Konfiguration von <application>Apache</application>
|
|
kann bei nachfolgenden Änderungen an der Konfigurationsdatei
|
|
bei laufendem <command>httpd</command>, auf Fehler überprüft
|
|
werden. Geben Sie dazu folgendes Kommando ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service apache<replaceable>24</replaceable> configtest</userinput></screen>
|
|
|
|
<note>
|
|
<para>Es ist wichitg zu beachten, dass
|
|
<literal>configtest</literal> kein &man.rc.8;-Standard ist,
|
|
und somit nicht zwingend mit anderen
|
|
&man.rc.8;-Startskripten funktioniert.</para>
|
|
</note>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Virtual Hosting</title>
|
|
|
|
<para><foreignphrase>Virtual Hosting</foreignphrase> ermöglicht
|
|
es, mehrere Webseiten auf einem
|
|
<application>Apache</application>-Server laufen zu lassen.
|
|
Die virtuellen Hosts können <firstterm>IP-basiert</firstterm>
|
|
oder <firstterm>namensbasiert</firstterm> sein.
|
|
<acronym>IP</acronym>-basiertes virtual Hosting verwendet eine
|
|
<acronym>IP</acronym>-Adresse für jede Webseite. Beim
|
|
namensbasierten virtual Hosting wird der HTTP/1.1-Header der
|
|
Clients dazu verwendet, den Rechnernamen zu bestimmen.
|
|
Dadurch wird es möglich, mehrere Domains unter der gleichen
|
|
<acronym>IP</acronym>-Adresse zu betreiben.</para>
|
|
|
|
<para>Damit der <application>Apache</application> namenbasierte
|
|
virtuelle Domains verwalten kann, fügen Sie für jede Webseite
|
|
einen separaten <literal>VirtualHost</literal>-Block ein.
|
|
Wenn der Webserver beispielsweise <systemitem
|
|
class="fqdomainname">www.domain.tld</systemitem> heißt und
|
|
die virtuelle Domain <systemitem
|
|
class="fqdomainname">www.someotherdomain.tld</systemitem>
|
|
einrichtet werden soll, ergänzen Sie
|
|
<filename>httpd.conf</filename> um folgende Einträge:</para>
|
|
|
|
<programlisting><VirtualHost *>
|
|
ServerName <replaceable>www.domain.tld</replaceable>
|
|
DocumentRoot <replaceable>/www/domain.tld</replaceable>
|
|
</VirtualHost>
|
|
|
|
<VirtualHost *>
|
|
ServerName <replaceable>www.someotherdomain.tld</replaceable>
|
|
DocumentRoot <replaceable>/www/someotherdomain.tld</replaceable>
|
|
</VirtualHost></programlisting>
|
|
|
|
<para>Setzen Sie für jeden virtuellen Host die entsprechenden
|
|
Werte für <literal>ServerName</literal> und
|
|
<literal>DocumentRoot</literal>.</para>
|
|
|
|
<para>Ausführliche Informationen zum Einrichten von virtuellen
|
|
Hosts finden Sie in der offiziellen
|
|
<application>Apache</application>-Dokumentation unter <uri
|
|
xlink:href="http://httpd.apache.org/docs/vhosts/">
|
|
http://httpd.apache.org/docs/vhosts/</uri>.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Häufig verwendete Apache-Module</title>
|
|
|
|
<indexterm><primary>Apache</primary>
|
|
<secondary>Module</secondary></indexterm>
|
|
|
|
<para><application>Apache</application> verwendet Module, die
|
|
den Server um zusätzliche Funktionen erweitern. Eine
|
|
vollständige Auflistung der zur Verfügung stehenden Module
|
|
und Konfigurationsdetails finden Sie unter <uri
|
|
xlink:href="http://httpd.apache.org/docs/current/mod/">
|
|
http://httpd.apache.org/docs/current/mod/</uri>.</para>
|
|
|
|
<para>In &os; können einige Module mit dem Port
|
|
<package>www/apache24</package> kompiliert werden. Geben Sie
|
|
in <filename>/usr/ports/www/apache24</filename>
|
|
<command>make config</command> ein, um zu sehen, welche Module
|
|
zur Verfügung stehen und welche Module in der Voreinstellung
|
|
aktiviert sind. Wenn ein Modul nicht zusammen mit dem Port
|
|
kompiliert wird, bietet die Ports-Sammlung die Möglichkeit
|
|
viele Module zu installieren. Dieser Abschnitt beschreibt
|
|
drei der am häufigsten verwendeten Module.</para>
|
|
|
|
<sect3>
|
|
<title><filename>mod_ssl</filename></title>
|
|
|
|
<indexterm>
|
|
<primary>Webserver</primary>
|
|
<secondary>Verschlüsselung</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>SSL</primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Verschlüsselung</primary>
|
|
</indexterm>
|
|
|
|
<para>Das Modul <filename>mod_ssl</filename> verwendet die
|
|
<application>OpenSSL</application>-Bibliothek, um über die
|
|
Protokolle Secure Sockets Layer (<acronym>SSLv3</acronym>)
|
|
sowie Transport Layer Security (<acronym>TLSv1</acronym>)
|
|
eine starke Verschlüsselung zu ermöglichen. Mit diesem
|
|
Modul können Sie ein signiertes Zertifikat von einer
|
|
Zertifizierungsstelle anfordern, damit Sie einen sicheren
|
|
Webserver unter &os; betreiben können.</para>
|
|
|
|
<para>Unter &os; wird das Modul <filename>mod_ssl</filename>
|
|
standardmäßig im Port und auch im Paket aktiviert. Die
|
|
verfügbaren Konfigurationsanweisungen werden in <uri
|
|
xlink:href="http://httpd.apache.org/docs/current/mod/mod_ssl.html">
|
|
http://httpd.apache.org/docs/current/mod/mod_ssl.html</uri>
|
|
beschrieben.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><filename>mod_perl</filename></title>
|
|
|
|
<indexterm>
|
|
<primary>mod_perl</primary>
|
|
<secondary>Perl</secondary>
|
|
</indexterm>
|
|
|
|
<para>Das Modul <filename>mod_perl</filename> macht es
|
|
möglich, vollständig in <application>Perl</application>
|
|
geschriebene <application>Apache</application>-Module zu
|
|
erzeugen. Da der
|
|
<application>Perl</application>-Interpreter in den Server
|
|
eingebettet wird, muss weder ein externer Interpreter noch
|
|
<application>Perl</application> zusätzlich aufgerufen
|
|
werden.</para>
|
|
|
|
<para><filename>mod_perl</filename> wird über den Port
|
|
oder das Paket <package>www/mod_perl2</package> installiert.
|
|
Dokumentation für dieses Modul finden Sie unter <uri
|
|
xlink:href="http://perl.apache.org/docs/2.0/index.html">
|
|
http://perl.apache.org/docs/2.0/index.html</uri>.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<info>
|
|
<title><filename>mod_php</filename></title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
</personname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
<indexterm>
|
|
<primary>mod_php</primary>
|
|
<secondary>PHP</secondary>
|
|
</indexterm>
|
|
|
|
<para><firstterm>PHP: Hypertext Preprocessor</firstterm>
|
|
(<acronym>PHP</acronym>) ist eine vielseitig
|
|
verwendbare Skriptsprache, die besonders für die
|
|
Web-Entwicklung geeignet ist. <acronym>PHP</acronym> kann
|
|
in <acronym>HTML</acronym> eingebettet werden und ähnelt von
|
|
der Syntax her Sprachen wie <application>C</application>,
|
|
&java; und <application>Perl</application>. Das
|
|
Hauptanliegen von <acronym>PHP</acronym> ist es,
|
|
Web-Entwicklern die rasche Erstellung von dynamisch
|
|
erzeugten Internetseiten zu ermöglichen.</para>
|
|
|
|
<para>Damit der <application>Apache</application>-Webserver
|
|
<acronym>PHP</acronym>5 unterstützt, der Port oder das Paket
|
|
<package>lang/php56</package> installiert werden. Dies wird
|
|
die Module installieren und konfigurieren, die für die
|
|
Unterstützung von dynamischen
|
|
<acronym>PHP</acronym>-Anwendungen benötigt werden. Die
|
|
Installation wird automatisch folgende Zeilen in
|
|
<filename>/usr/local/etc/apache2<replaceable>4</replaceable>/httpd.conf</filename>
|
|
hinzufügen:</para>
|
|
|
|
<programlisting>LoadModule php5_module libexec/apache24/libphp5.so</programlisting>
|
|
|
|
<!--
|
|
I don't think this is still needed
|
|
<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>Danach 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
|
|
<package>www/mod_php56</package> verfügt nur über wenige
|
|
Funktionen. Zusätzliche Funktionen können mit dem Port
|
|
<package>lang/php56-extensions</package> installiert werden.
|
|
Der Port bietet ein Auswahlmenü, über das Sie
|
|
verschiedene <acronym>PHP</acronym>-Erweiterungen
|
|
installieren können.</para>
|
|
|
|
<para>Alternativ können einzelne Erweiterungen über den
|
|
jeweiligen Port installieren. Um beispielsweise die
|
|
Unterstützung des Datenbankservers
|
|
<application>MySQL</application> in <acronym>PHP</acronym>
|
|
zu aktivieren, installieren Sie den Port
|
|
<filename>databases/php56-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>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Dynamische Webseiten</title>
|
|
|
|
<indexterm>
|
|
<primary>Webserver</primary>
|
|
<secondary>dynamisch</secondary>
|
|
</indexterm>
|
|
|
|
<para>Neben <application>mod_perl</application> und
|
|
<application>mod_php</application> stehen noch weitere
|
|
Sprachen zur Erstellung von dynamischen Inhalten zur
|
|
Verfügung. Dazu gehören auch
|
|
<application>Django</application> und
|
|
<application>Ruby on Rails</application>.</para>
|
|
|
|
<sect3>
|
|
<title>Django</title>
|
|
|
|
<indexterm><primary>Python</primary></indexterm>
|
|
<indexterm><primary>Django</primary></indexterm>
|
|
|
|
<para>Bei <application>Django</application> handelt es
|
|
sich um ein unter der BSD-Lizenz verfügbares
|
|
Framework zur schnellen Erstellung von mächtigen
|
|
Internet-Applikationen. Es beinhaltet einen
|
|
objekt-relationalen Mapper (wodurch Datentypen als
|
|
<application>Phyton</application>-Objekte entwickelt werden
|
|
können) sowie eine <acronym>API</acronym> für den
|
|
dynamischen Datenbankzugriff auf diese Objekte, ohne dass
|
|
Entwickler jemals <acronym>SQL</acronym>-Code schreiben
|
|
müssen. Zusätzlich existiert ein umfangreiches
|
|
Template-System, wodurch die Programmlogik von der
|
|
<acronym>HTML</acronym>-Präsentation getrennt werden
|
|
kann.</para>
|
|
|
|
<para><application>Django</application> setzt das Modul
|
|
<application>mod_python</application> und eine
|
|
<acronym>SQL</acronym>-Datenbank voraus. In &os; wird
|
|
bei der Installation von <package>www/py-django</package>
|
|
automatisch <filename>mod_python</filename> installiert.
|
|
Als Datenbanken werden
|
|
<application>PostgreSQL</application>,
|
|
<application>MySQL</application> und
|
|
<application>SQLite</application> unterstützt, wobei
|
|
<application>SQLite</application> die Voreinstellung ist.
|
|
Wenn Sie die Datenbank ändern möchten, geben Sie in
|
|
<filename>/usr/ports/www/py-django</filename>
|
|
<command>make config</command> ein und installieren Sie den
|
|
Port neu.</para>
|
|
|
|
<para>Nachdem <application>Django</application> installiert
|
|
ist, benötigt die Anwendung ein Projektverzeichnis und die
|
|
<application>Apache</application>-Konfiguration, um den
|
|
eingebetteten <application>Python</application>-Interpreter
|
|
zu nutzen. Dieser Interpreter wird verwendet um die
|
|
Anwendung für spezifische <acronym>URL</acronym>s
|
|
der Seite aufrufen.</para>
|
|
|
|
<para>Damit <application>Apache</application> Anfragen für
|
|
bestimmte <acronym>URL</acronym>s an die Web-Applikation
|
|
übergeben kann, müssen Sie den vollständigen Pfad zum
|
|
Projektverzeichnis in <filename>httpd.conf</filename>
|
|
festlegen:</para>
|
|
|
|
<screen><Location "/">
|
|
SetHandler python-program
|
|
PythonPath "['<replaceable>/pfad/zu/den/django/paketen/</replaceable>'] + sys.path"
|
|
PythonHandler django.core.handlers.modpython
|
|
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
|
|
PythonAutoReload On
|
|
PythonDebug On
|
|
</Location></screen>
|
|
|
|
<para>Weitere Informationen zur Verwendung von
|
|
<application>Django</application> finden Sie unter <uri
|
|
xlink:href="https://docs.djangoproject.com/en/1.6/">
|
|
https://docs.djangoproject.com/en/1.6/</uri>.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Ruby on Rails</title>
|
|
|
|
<indexterm><primary>Ruby on Rails</primary></indexterm>
|
|
|
|
<para><application>Ruby on Rails</application> ist ein
|
|
weiteres, als Open Source verfügbares Webframework. Es
|
|
bietet einen kompletten Entwicklungsstack
|
|
und erlaubt es Webentwicklern, umfangreiche und mächtige
|
|
Applikationen in kurzer Zeit zu programmieren. Unter &os;
|
|
kann das Framework über den Port oder das Paket
|
|
<package>www/rubygem-rails</package> installiert
|
|
werden.</para>
|
|
|
|
<para>Weitere Informationen zur Verwendung von
|
|
<application>Ruby on Rails</application> finden Sie unter
|
|
<uri xlink:href="http://rubyonrails.org/documentation">
|
|
http://rubyonrails.org/documentation</uri>.</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-ftp">
|
|
<!--
|
|
<info>
|
|
<authorgroup>
|
|
<author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname><contrib>Beigetragen von </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
<title>File Transfer Protocol (<acronym>FTP</acronym>)</title>
|
|
|
|
<indexterm><primary>FTP-Server</primary></indexterm>
|
|
|
|
<para>Das File Transfer Protocol (<acronym>FTP</acronym>)
|
|
ermöglicht auf einfache Art und Weise den Dateiaustausch mit
|
|
einem <acronym>FTP</acronym>-Server. Der
|
|
<acronym>FTP</acronym>-Server <application>ftpd</application>
|
|
ist bei &os; bereits im Basisystem enthalten.</para>
|
|
|
|
<para>&os; verwendet mehrere Konfigurationsdateien, um den Zugriff
|
|
auf den <acronym>FTP</acronym> zu kontrollieren. Dieser
|
|
Abschnitt fasst diese Dateien zusammen. In &man.ftpd.8; finden
|
|
Sie weitere Inforamtionen über den integrierten
|
|
<acronym>FTP</acronym>-Server.</para>
|
|
|
|
<sect2>
|
|
<title>Konfiguration</title>
|
|
|
|
<para>Der wichtigste Punkt ist hier die Entscheidung darüber,
|
|
welche Benutzer auf den <acronym>FTP</acronym>-Server
|
|
zugreifen dürfen. Ein &os;-System verfügt über diverse
|
|
Systembenutzerkonten, die jedoch nicht auf den
|
|
<acronym>FTP</acronym>-Server zugreifen sollen. Die Datei
|
|
<filename>/etc/ftpusers</filename> enthält alle Benutzer, die
|
|
vom <acronym>FTP</acronym>-Zugriff ausgeschlossen sind. In
|
|
der Voreinstellung gilt dies auch die gerade erwähnten
|
|
Systembenutzerkonten. Sie können über diese Datei weitere
|
|
Benutzer vom <acronym>FTP</acronym>-Zugriff
|
|
ausschließen.</para>
|
|
|
|
<para>In einigen Fällen kann es wünschenswert sein, den Zugang
|
|
für manche Benutzer einzuschränken, ohne dabei
|
|
<acronym>FTP</acronym> komplett zu verbieten. Dazu passen Sie
|
|
<filename>/etc/ftpchroot</filename>, wie in &man.ftpchroot.5;
|
|
beschrieben, entsprechend an. Diese Datei enthält Benutzer
|
|
und Gruppen sowie die für sie geltenden Einschränkungen für
|
|
<acronym>FTP</acronym>.</para>
|
|
|
|
<indexterm>
|
|
<primary><acronym>FTP</acronym></primary>
|
|
<secondary>anonymous</secondary>
|
|
</indexterm>
|
|
|
|
<para>Um anonymen <acronym>FTP</acronym>-Zugriff auf dem Server
|
|
zu aktivieren, muss ein Benutzer <systemitem
|
|
class="username">ftp</systemitem> auf dem &os;-System
|
|
angelegt werden. Danach können sich Benutzer mit dem
|
|
Benutzernamen <systemitem class="username">ftp</systemitem>
|
|
oder <systemitem class="username">anonymous</systemitem> am
|
|
<acronym>FTP</acronym>-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 <acronym>FTP</acronym>-Server
|
|
&man.chroot.2;, um den Zugriff auf das Heimatverzeichnis des
|
|
Benutzers <systemitem class="username">ftp</systemitem> zu
|
|
beschränken.</para>
|
|
|
|
<para>Es gibt zwei Textdateien, deren Inhalt den
|
|
<acronym>FTP</acronym>-Clients bei der Anmeldung angezeigt
|
|
wird. 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 der Inhalt von
|
|
<filename>~ftp/etc/ftpmotd</filename> angezeigt.</para>
|
|
|
|
<para>Sobald der <acronym>FTP</acronym>-Server konfiguriert ist,
|
|
setzen Sie die entsprechende Variable in
|
|
<filename>/etc/rc.conf</filename>, damit der Dienst beim
|
|
Booten gestartet wird:</para>
|
|
|
|
<programlisting>ftpd_enable="YES"</programlisting>
|
|
|
|
<para>Starten Sie den Dienst:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service ftpd start</userinput></screen>
|
|
|
|
<para>Testen Sie die Verbindung zum
|
|
<acronym>FTP</acronym>-Server, indem Sie folgendes
|
|
eingeben:</para>
|
|
|
|
<screen>&prompt.user; <userinput>ftp localhost</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Wartung</title>
|
|
|
|
<indexterm><primary>syslog</primary></indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Logdateien</primary>
|
|
<secondary><acronym>FTP</acronym></secondary>
|
|
</indexterm>
|
|
|
|
<para>Der <application>ftpd</application>-Daemon verwendet
|
|
&man.syslog.3;, um Protokolldateien zu erstellen. In der
|
|
Voreinstellung werden alle <acronym>FTP</acronym> betreffenden
|
|
Nachrichten nach
|
|
<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><acronym>FTP</acronym></primary>
|
|
<secondary>anonymous</secondary>
|
|
</indexterm>
|
|
|
|
<note>
|
|
<para>Beachten Sie, dass mit dem Betrieb eines anonymen
|
|
<acronym>FTP</acronym>-Servers verschiedene
|
|
Sicherheitsrisiken verbunden sind. Problematisch ist hier
|
|
vor allem die Erlaubnis zum anonymen Upload von Dateien.
|
|
Dadurch könnte der Server zur Verbreitung von illegaler oder
|
|
nicht lizensierter Software oder noch Schlimmeren
|
|
missbraucht werden. Wenn anonyme
|
|
<acronym>FTP</acronym>-Uploads dennoch erforderlich sind,
|
|
sollten Sie die Zugriffsrechte so setzen, dass solche
|
|
Dateien erst nach Zustimmung eines Administrators von
|
|
anderen Benutzern heruntergeladen werden können.</para>
|
|
</note>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-samba">
|
|
<!--
|
|
<info>
|
|
<authorgroup>
|
|
<author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname><contrib>Beigetragen von </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
<title>Datei- und Druckserver für
|
|
µsoft.windows;-Clients (Samba)</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>
|
|
|
|
<para><application>Samba</application> ist ein beliebtes
|
|
Open Source Softwarepaket, das Datei- und Druckdienste über
|
|
das <acronym>SMB/CIFS</acronym>-Protokoll zur Verfügung
|
|
stellt. Dieses Protokoll ist in µsoft.windows;-Systemen
|
|
enthalten und kann über die Installation der
|
|
<application>Samba</application>-Client-Bibliotheken in andere
|
|
Betriebssysteme integriert werden. Das Protokoll ermöglicht
|
|
es Clients auf freigegebene Daten und Drucker zuzugreifen, so
|
|
als ob es sich um lokale Drucker und Festplatten handeln
|
|
würde.</para>
|
|
|
|
<para>Unter &os; können die
|
|
<application>Samba</application>-Client-Bibliotheken über den
|
|
Port oder das Paket <package>net/samba-smbclient</package>
|
|
installiert werden. Der Client ermöglicht es einem
|
|
&os;-System auf <acronym>SMB/CIFS</acronym>-Freigaben in einem
|
|
µsoft.windows;-Netzwerk zuzugreifen.</para>
|
|
|
|
<para>Ein &os;-System kann auch als
|
|
<application>Samba</application>-Server agieren, wenn Sie den
|
|
Port oder das Paket <package>net/samba46</package>
|
|
installieren. Dies erlaubt es dem Administrator
|
|
<acronym>SMB/CIFS</acronym>-Freigaben auf dem &os;-System
|
|
einzurichten, auf welche dann Clients mit µsoft.windows;
|
|
oder den <application>Samba</application>-Client-Bibliotheken
|
|
zugreifen können.</para>
|
|
|
|
<sect2>
|
|
<title>Konfiguration des Servers</title>
|
|
|
|
<para><application>Samba</application> wird in
|
|
<filename>/usr/local/etc/smb4.conf</filename> konfiguriert.
|
|
Diese Datei muss erstellt werden, bevor
|
|
<application>Samba</application> benutzt werden kann.</para>
|
|
|
|
<para>Eine einfache <filename>smb4.conf</filename>, wie hier
|
|
gezeigt, stellt den Zugriff auf Verzeichnisse und Drucker für
|
|
&windows;-Clients in einer Arbeitsgruppe (engl.
|
|
<foreignphrase>Workgroup</foreignphrase>) zur Verfügung. In
|
|
aufwendigeren Installationen, in denen <acronym>LDAP</acronym>
|
|
oder Active Directory zum Einsatz kommt, ist es einfacher die
|
|
<filename>smb4.conf</filename> mit dem Werkzeug
|
|
&man.samba-tool.8; zu erstellen.</para>
|
|
|
|
<programlisting>[global]
|
|
workgroup = WORKGROUP
|
|
server string = Samba Server Version %v
|
|
netbios name = ExampleMachine
|
|
wins support = Yes
|
|
security = user
|
|
passdb backend = tdbsam
|
|
|
|
# Example: share /usr/src accessible only to 'developer' user
|
|
[src]
|
|
path = /usr/src
|
|
valid users = developer
|
|
writable = yes
|
|
browsable = yes
|
|
read only = no
|
|
guest ok = no
|
|
public = no
|
|
create mask = 0666
|
|
directory mask = 0755</programlisting>
|
|
|
|
<sect3>
|
|
<title>Globale Einstellungen</title>
|
|
|
|
<para>Einstellungen für das Netzwerk werden in
|
|
<filename>/usr/local/etc/smb4.conf</filename>
|
|
definiert:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>workgroup</literal></term>
|
|
|
|
<listitem>
|
|
<para>Der Name der Arbeitsgruppe.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>netbios name</literal></term>
|
|
|
|
<listitem>
|
|
<indexterm><primary>NetBIOS</primary></indexterm>
|
|
|
|
<para>Der NetBIOS-Namen fest, unter dem der
|
|
<application>Samba</application>-Server bekannt ist.
|
|
In der Regel handelt es sich dabei um den ersten
|
|
Teil des <acronym>DNS</acronym>-Namens des
|
|
Servers.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>server string</literal></term>
|
|
|
|
<listitem>
|
|
<para>Legt die Beschreibung fest, die angezeigt wird,
|
|
wenn mit <command>net view</command> oder anderen
|
|
Netzwerkprogrammen Informationen über den Server
|
|
angefordert werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>wins support</literal></term>
|
|
|
|
<listitem>
|
|
<para>Legt fest, ob <application>Samba</application> als
|
|
<acronym>WINS</acronym>-Server fungieren soll.
|
|
Aktivieren Sie die Unterstützung für
|
|
<acronym>WINS</acronym> auf maximal einem Server im
|
|
Netzwerk.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Samba absichern</title>
|
|
|
|
<para>Die wichtigsten Einstellungen in
|
|
<filename>/usr/local/etc/smb4.conf</filename> betreffen
|
|
das zu verwendende Sicherheitsmodell sowie das
|
|
Backend-Passwortformat. Die folgenden Direktiven steuern
|
|
diese Optionen:</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 die Clients
|
|
Benutzernamen verwenden, die den Benutzernamen auf dem
|
|
&os;-Rechner entsprechen, dann sollte die Einstellung
|
|
<literal>user level</literal> verwendet werden. Dies
|
|
ist die Standardeinstellung. Allerdings ist es dazu
|
|
erforderlich, dass sich die Clients auf dem Rechner
|
|
anmelden, bevor sie auf gemeinsame Ressourcen
|
|
zugreifen können.</para>
|
|
|
|
<para>In der Einstellung <literal>share level</literal>
|
|
müssen sich Clients nicht unter Verwendung eines
|
|
gültigen Logins auf dem 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>
|
|
|
|
<listitem>
|
|
<indexterm><primary>NIS+</primary></indexterm>
|
|
<indexterm><primary>LDAP</primary></indexterm>
|
|
<indexterm><primary>SQL database</primary></indexterm>
|
|
|
|
<para><application>Samba</application> erlaubt
|
|
verschiedene Backend-Authentifizierungsmodelle.
|
|
Clients können sich durch LDAP, NIS+, eine
|
|
SQL-Datenbank oder eine Passwortdatei
|
|
authentifizieren. Die empfohlene
|
|
Authentifizierungsmethode, <literal>tdbsam</literal>,
|
|
ist ideal für einfache Netzwerke und wird hier
|
|
vorgestellt. Für größere oder komplexere Netzwerke
|
|
wird <literal>ldapsam</literal> empfohlen.
|
|
<literal>smbpasswd</literal> war der frühere Standard
|
|
und gilt mittlerweile als veraltet.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><application>Samba</application> Benutzer</title>
|
|
|
|
<para>Damit &windows;-Clients auf die Freigaben zugreifen
|
|
können, müssen die &os;-Benutzerkonten in der
|
|
<literal>SambaSAMAccount</literal>-Datenbank zugeordnet
|
|
werden. Für bereits vorhandene Benutzerkonten kann dazu
|
|
&man.pdbedit.8; benutzt werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pdbedit -a <replaceable>username</replaceable></userinput></screen>
|
|
|
|
<para>Dieser Abschnitt beschreibt lediglich die am häufigsten
|
|
verwendeten Einstellungen. Ausführliche Informationen zur
|
|
Konfiguration von <application>Samba</application> finden
|
|
Sie im <link
|
|
xlink:href="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/">
|
|
Official Samba HOWTO</link>.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><application>Samba</application> starten</title>
|
|
|
|
<para>Damit <application>Samba</application> beim Systemstart
|
|
automatisch aktiviert wird, fügen Sie die folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>samba_server_enable="YES"</programlisting>
|
|
|
|
<para>Jetzt kann <application>Samba</application> direkt
|
|
gestartet werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service samba_server start</userinput>
|
|
Performing sanity check on Samba configuration: OK
|
|
Starting nmbd.
|
|
Starting smbd.</screen>
|
|
|
|
<para><application>Samba</application> verwendet drei Daemonen.
|
|
Sowohl <application>nmbd</application> als auch
|
|
<application>smbd</application> werden durch
|
|
<varname>samba_enable</varname> gestartet. Wenn eine
|
|
Namensauflösung über <foreignphrase>winbind</foreignphrase>
|
|
benötigt wird, setzen Sie zusätzlich:</para>
|
|
|
|
<programlisting>winbindd_enable="YES"</programlisting>
|
|
|
|
<para><application>Samba</application> kann jederzeit
|
|
durch folgenden Befehl beendet werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service samba_server 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 <uri
|
|
xlink:href="http://www.samba.org">http://www.samba.org</uri>
|
|
umsehen.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-ntp">
|
|
<!--
|
|
<info>
|
|
<authorgroup>
|
|
<author><personname><firstname>Tom</firstname><surname>Hukins</surname></personname><contrib>Beigetragen von </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
<title>Die Uhrzeit mit NTP synchronisieren</title>
|
|
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>ntpd</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die interne Uhrzeit eines Computers ist nie ganz exakt.
|
|
Dies ist problematisch, da viele Dienste darauf angewiesen
|
|
sind, dass die Computer im Netzwerk die exakte Uhrzeit
|
|
übermitteln. Die exakte Uhrzeit ist auch erforderlich um
|
|
sicherzustellen, dass die Zeitstempel der Dateien konsistent
|
|
bleiben. Das
|
|
<foreignphrase>Network Time Protocol</foreignphrase>
|
|
(<acronym>NTP</acronym>) bietet die Möglichkeit, die exakte
|
|
Uhrzeit in einem Netzwerk zur Verfügung zu stellen.</para>
|
|
|
|
<para>Mit &man.ntpd.8; enthält &os; ein Werkzeug, das andere
|
|
<acronym>NTP</acronym>-Server abfragen kann um die Uhrzeit
|
|
auf diesem Computer zu synchronisieren, oder um selbst die
|
|
Uhrzeit für andere Computer im Netzwerk bereitzustellen. Die
|
|
Server, die abgefragt werden, können lokal oder von einem
|
|
<acronym>ISP</acronym> zur Verfügung gestellt werden. Darüber
|
|
hinaus gibt es eine <link
|
|
xlink:href="http://support.ntp.org/bin/view/Servers/WebHome">
|
|
Liste von öffentlich zugänglichen
|
|
<acronym>NTP</acronym>-Servern</link>. Falls Sie sich für
|
|
einen solchen öffentlichen Server entscheiden, wählen Sie
|
|
einen nahegelegenen Server und prüfen Sie die
|
|
Nutzungsbedingungen.</para>
|
|
|
|
<para>Die Auswahl von mehreren <acronym>NTP</acronym>-Servern
|
|
wird empfohlen, falls sich ein Server nicht erreichbar ist
|
|
oder sich als unzuverlässig herausstellt.
|
|
<application>ntpd</application> verwendet die Antworten
|
|
anderer Server, um zuverlässige Server zu bestimmen, die dann
|
|
bevorzugt abgefragt werden.</para>
|
|
|
|
<para>Dieser Abschnitt beschreibt die Konfiguration von
|
|
<application>ntpd</application> unter &os;. Zusätzliche
|
|
Dokumentation im HTML-Format finden Sie in
|
|
<filename>/usr/share/doc/ntp/</filename>.</para>
|
|
|
|
<sect2>
|
|
<title><acronym>NTP</acronym> konfigurieren</title>
|
|
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>ntp.conf</secondary>
|
|
</indexterm>
|
|
|
|
<para>&os; enthält mit <application>ntpd</application> ein
|
|
Werkzeug, das zur Synchronisation der Uhrzeit verwendet werden
|
|
kann. Um <application>ntpd</application> beim Booten zu
|
|
aktivieren, fügen Sie den Eintrag
|
|
<literal>ntpd_enable="YES"</literal> in
|
|
<filename>/etc/rc.conf</filename> ein. Zusätzliche Variablen
|
|
können ebenfalls in <filename>/etc/rc.conf</filename> gesetzt
|
|
werden. Weitere Details finden Sie in &man.rc.conf.5; und
|
|
&man.ntpd.8;.</para>
|
|
|
|
<para>Das Programm liest <filename>/etc/ntp.conf</filename>
|
|
um herauszufinden, welche <acronym>NTP</acronym>-Server
|
|
abgefragt werden müssen. Hier ist ein einfaches Beispiel
|
|
einer <filename>/etc/ntp.conf</filename>:</para>
|
|
|
|
<example>
|
|
<title>Beispiel einer
|
|
<filename>/etc/ntp.conf</filename></title>
|
|
|
|
<programlisting>server ntplocal.example.com prefer
|
|
server timeserver.example.org
|
|
server ntp2a.example.net
|
|
|
|
driftfile /var/db/ntp.drift</programlisting>
|
|
</example>
|
|
|
|
<para>Das Format dieser Datei wird in &man.ntp.conf.5;
|
|
beschrieben. 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, wird dieser Server
|
|
bevorzugt verwendet. Eine Antwort von einem bevorzugten
|
|
Server wird verworfen, wenn sie signifikant von den Antworten
|
|
anderer Server abweicht, ansonsten wird sie akzeptiert. Die
|
|
Option <literal>prefer</literal> sollte nur für sehr
|
|
zuverlässige und genaue <acronym>NTP</acronym>-Server
|
|
verwendet werden, die über eine 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. <application>ntpd</application> verwendet diese
|
|
Datei, um die Systemzeit automatisch anzupassen, selbst wenn
|
|
kurzzeitig kein <acronym>NTP</acronym>-Server zur
|
|
Synchronisation verfügbar ist. Weiterhin werden in dieser
|
|
Datei Informationen über frühere Anworten von
|
|
<acronym>NTP</acronym>-Server. Da diese Datei interne
|
|
Informationen für <acronym>NTP</acronym> enthält, sollte sie
|
|
nicht verändert werden.</para>
|
|
|
|
<para>In der Voreinstellung ist der
|
|
<acronym>NTP</acronym>-Server für alle Rechner im Netzwerk
|
|
erreichbar. Die Option <literal>restrict</literal> in
|
|
<filename>/etc/ntp.conf</filename> steuert, welche Rechner
|
|
auf den Server zugreifen können. Wenn Sie beispielsweise
|
|
alle Rechner vom Zugriff auf den
|
|
<acronym>NTP</acronym>-Server ausschließen wollen, fügen Sie
|
|
folgende Zeile in <filename>/etc/ntp.conf</filename>
|
|
ein:</para>
|
|
|
|
<programlisting>restrict default ignore</programlisting>
|
|
|
|
<note>
|
|
<para>Dieser Eintrag verhindert auch den Zugriff von anderen
|
|
<acronym>NTP</acronym>-Servern. Besteht die
|
|
Notwendigkeit, sich mit einem externen
|
|
<acronym>NTP</acronym>-Server zu synchronisieren, muss
|
|
dieser Server explizit zugelassen werden. Weitere
|
|
Informationen finden Sie in &man.ntp.conf.5;.</para>
|
|
</note>
|
|
|
|
<para>Wenn Sie nur Rechnern innerhalb des Netzwerks die
|
|
Synchronisation mit dem Server erlauben, gleichzeitig
|
|
aber verhindern wollen, dass diese den 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><systemitem class="ipaddress">192.168.1.0</systemitem>
|
|
ist die lokale Adresse des Netzwerks, <systemitem
|
|
class="netmask">255.255.255.0</systemitem> ist die Netzmaske
|
|
des Netzwerks.</para>
|
|
|
|
<para>Es werden mehrere <literal>restict</literal>-Einträge
|
|
untstützt. Weitere Details finden Sie im Abschnitt
|
|
<literal>Access Control Support</literal> von
|
|
&man.ntp.conf.5;.</para>
|
|
|
|
<para>Sobald <literal>ntpd_enable="YES"</literal> in
|
|
<filename>/etc/rc.conf</filename> hinzugefügt wurde,
|
|
kann <application>ntpd</application> direkt
|
|
gestartet werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service ntpd start</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><acronym>NTP</acronym> mit einer
|
|
<acronym>PPP</acronym>-Verbindung verwenden</title>
|
|
|
|
<para><application>ntpd</application> benötigt keine ständige
|
|
Internetverbindung. Wenn Sie sich über eine
|
|
<acronym>PPP</acronym>-Verbindung ins Internet einwählen,
|
|
sollten Sie verhindern, dass <acronym>NTP</acronym>-Verkehr
|
|
eine Verbindung aufbauen oder aufrechterhalten kann. Dies
|
|
kann in den <literal>filter</literal>-Direktiven von
|
|
<filename>/etc/ppp/ppp.conf</filename> festgelegt werden.
|
|
Ein Beispiel:</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 den Rechner nicht
|
|
erreichen werden.</para>
|
|
</note>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="network-iscsi">
|
|
<!--
|
|
<info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Edward Tomasz</firstname>
|
|
<surname>Napierala</surname>
|
|
</author>
|
|
</authorgroup>
|
|
</info>
|
|
-->
|
|
|
|
<title>iSCSI Initiator und Target Konfiguration</title>
|
|
|
|
<para><acronym>iSCSI</acronym> bietet die Möglichkeit,
|
|
Speicherkapazitäten über ein Netzwerk zu teilen. Im Gegensatz
|
|
zu <acronym>NFS</acronym>, das auf Dateisystemebene arbeitet,
|
|
funktioniert <acronym>iSCSI</acronym> auf
|
|
Blockgerätebene.</para>
|
|
|
|
<para>In der <acronym>iSCSI</acronym>-Terminologie wird das
|
|
System, das den Speicherplatz zur Verfügung stellt, als
|
|
<emphasis>Target</emphasis> bezeichnet. Der Speicherplatz
|
|
selbst kann aus einer physischen Festplatte bestehen, oder auch
|
|
aus einem Bereich, der mehrere Festplatten, oder nur Teile einer
|
|
Festplatte, repräsentiert. Wenn beispielsweise die
|
|
Festplatte(n) mit <acronym>ZFS</acronym> formatiert ist, kann
|
|
ein <acronym>zvol</acronym> erstellt werden, welches dann als
|
|
<acronym>iSCSI</acronym>-Speicher verwendet werden kann.</para>
|
|
|
|
<para>Die Clients, die auf den <acronym>iSCSI</acronym>-Speicher
|
|
zugreifen, werden <emphasis>Initiator</emphasis> genannt. Ihnen
|
|
steht der verfügbare Speicher als rohe, nicht formatierte
|
|
Festplatte, die auch als <acronym>LUN</acronym> bezeichnet wird,
|
|
zur Verfügung. Die Gerätedateien für die Festplatten erscheinen
|
|
in <filename>/dev/</filename> und müssen separat formatiert und
|
|
eingehangen werden.</para>
|
|
|
|
<para>&os; enthält einen nativen,
|
|
kernelbasierten <acronym>iSCSI</acronym>
|
|
<emphasis>Target</emphasis> und <emphasis>Initiator</emphasis>.
|
|
Dieser Abschnitt beschreibt, wie ein &os;-System als Target oder
|
|
Initiator konfiguriert wird.</para>
|
|
|
|
<sect2 xml:id="network-iscsi-target">
|
|
<title>Ein <acronym>iSCSI</acronym>-Target konfigurieren</title>
|
|
|
|
<para>Um ein <acronym>iSCSI</acronym>-Target zu konfigurieren,
|
|
erstellen Sie die Konfigurationsdatei
|
|
<filename>/etc/ctl.conf</filename> und fügen Sie eine Zeile
|
|
in <filename>/etc/rc.conf</filename> hinzu, um
|
|
sicherzustellen, dass &man.ctld.8; automatisch beim Booten
|
|
gestartet wird. Starten Sie dann den Daemon.</para>
|
|
|
|
<para>Das folgende Beispiel zeigt eine einfache
|
|
<filename>/etc/ctl.conf</filename>. Eine vollständige
|
|
Beschreibung dieser Datei und der verfügbaren Optionen finden
|
|
Sie in &man.ctl.conf.5;.</para>
|
|
|
|
<programlisting>portal-group pg0 {
|
|
discovery-auth-group no-authentication
|
|
listen 0.0.0.0
|
|
listen [::]
|
|
}
|
|
|
|
target iqn.2012-06.com.example:target0 {
|
|
auth-group no-authentication
|
|
portal-group pg0
|
|
|
|
lun 0 {
|
|
path /data/target0-0
|
|
size 4G
|
|
}
|
|
}</programlisting>
|
|
|
|
<para>Der erste Eintrag definiert die Portalgruppe
|
|
<literal>pg0</literal>. Portalgruppen legen fest, auf welchen
|
|
Netzwerk-Adressen der &man.ctld.8;-Daemon Verbindungen
|
|
entgegennehmen wird. Der Eintrag
|
|
<literal>discovery-auth-group no-authentication</literal>
|
|
zeigt an, dass jeder Initiator
|
|
<acronym>iSCSI</acronym>-Targets suchen darf, ohne sich
|
|
authentifizieren zu müssen. Die dritte und vierte Zeilen
|
|
konfigurieren &man.ctld.8; so, dass er auf allen
|
|
<acronym>IPv4</acronym>- (<literal>listen 0.0.0.0</literal>)
|
|
und <acronym>IPv6</acronym>-Adressen
|
|
(<literal>listen [::]</literal>) auf dem Standard-Port 3260
|
|
lauscht.</para>
|
|
|
|
|
|
<para>Es ist nicht zwingend notwendig eine Portalgruppe zu
|
|
definieren, da es bereits eine integrierte Portalgruppe namens
|
|
<literal>default</literal> gibt. In diesem Fall ist der
|
|
Unterschied zwischen <literal>default</literal> und
|
|
<literal>pg0</literal> der, dass bei
|
|
<literal>default</literal> eine Authentifizierung nötig ist,
|
|
während bei <literal>pg0</literal> die Suche nach Targets
|
|
immer erlaubt ist.</para>
|
|
|
|
<para>Der zweite Eintrag definiert ein einzelnes Target. Ein
|
|
Target hat zwei mögliche Bedeutungen: eine Maschine die
|
|
<acronym>iSCSI</acronym> bereitstellt, oder eine Gruppe von
|
|
<acronym>LUN</acronym>s. Dieses Beispiel verwendet die
|
|
letztere Bedeutung, wobei
|
|
<literal>iqn.2012-06.com.example:target0</literal> der Name
|
|
des Targets ist. Dieser Name ist nur für Testzwecke geeignet.
|
|
Für den tatsächlichen Gebrauch ändern Sie
|
|
<literal>com.example</literal> auf einen echten, rückwärts
|
|
geschriebenen Domainnamen. <literal>2012-06</literal> steht
|
|
für das Jahr und den Monat, an dem die Domain erworben
|
|
wurde. <literal>target0</literal> darf einen beliebigen
|
|
Wert haben und in der Konfigurationsdatei darf eine beliebige
|
|
Anzahl von Targets definiert werden.</para>
|
|
|
|
<para>Der Eintrag
|
|
<literal>auth-group no-authentication</literal> erlaubt es
|
|
allen Initiatoren sich mit dem angegebenen Target zu verbinden
|
|
und <literal>portal-group pg0</literal> macht das Target über
|
|
die Portalgruppe <literal>pg0</literal> erreichbar.</para>
|
|
|
|
<para>Die nächste Sektion definiert die <acronym>LUN</acronym>.
|
|
Jede <acronym>LUN</acronym> wird dem Initiator als separate
|
|
Platte präsentiert. Für jedes Target können mehrere
|
|
<acronym>LUN</acronym>s definiert werden. Jede
|
|
<acronym>LUN</acronym> wird über eine Nummer identifiziert,
|
|
wobei <acronym>LUN</acronym> 0 verpflichtend ist. Die Zeile
|
|
mit dem Pfad <literal>path /data/target0-0</literal> definiert
|
|
den absoluten Pfad zu der Datei oder des zvols für die
|
|
<acronym>LUN</acronym>. Der Pfad muss vorhanden sein, bevor
|
|
&man.ctld.8; gestartet wird. Die zweite Zeile ist optional
|
|
und gibt die Größe der <acronym>LUN</acronym> an. Als
|
|
nächstes fügen Sie folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein, um &man.ctld.8;
|
|
automatisch beim Booten zu starten:</para>
|
|
|
|
<programlisting>ctld_enable="YES"</programlisting>
|
|
|
|
<para>Um &man.ctld.8; jetzt zu starten, geben Sie dieses
|
|
Kommando ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service ctld start</userinput></screen>
|
|
|
|
<para>Der &man.ctld.8;-Daemon liest beim Start
|
|
<filename>/etc/ctl.conf</filename>. Wenn diese Datei nach dem
|
|
Starten des Daemons bearbeitet wird, verwenden Sie folgenden
|
|
Befehl, damit die Änderungen sofort wirksam werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service ctld reload</userinput></screen>
|
|
|
|
<sect3>
|
|
<title>Authentifizierung</title>
|
|
|
|
<para>Die vorherigen Beispiele sind grundsätzlich unsicher, da
|
|
keine Authentifizierung verwendet wird und jedermann vollen
|
|
Zugriff auf alle Targets hat. Um für den Zugriff auf die
|
|
Targets einen Benutzernamen und ein Passwort vorauszusetzen,
|
|
ändern Sie die Konfigurationsdatei wie folgt:</para>
|
|
|
|
<programlisting>auth-group ag0 {
|
|
chap username1 secretsecret
|
|
chap username2 anothersecret
|
|
}
|
|
|
|
portal-group pg0 {
|
|
discovery-auth-group no-authentication
|
|
listen 0.0.0.0
|
|
listen [::]
|
|
}
|
|
|
|
target iqn.2012-06.com.example:target0 {
|
|
auth-group ag0
|
|
portal-group pg0
|
|
lun 0 {
|
|
path /data/target0-0
|
|
size 4G
|
|
}
|
|
}</programlisting>
|
|
|
|
<para>Die Sektion <literal>auth-group</literal> definiert die
|
|
Benutzernamen und Passwörter. Um sich mit
|
|
<literal>iqn.2012-06.com.example:target0</literal> zu
|
|
verbinden, muss ein Initiator zuerst einen Benutzernamen
|
|
und ein Passwort angeben. Eine Suche nach Targets wird
|
|
jedoch immer noch ohne Authentifizierung gestattet. Um
|
|
eine Authentifizierung zu erfordern, setzen Sie
|
|
<literal>discovery-auth-group</literal> auf eine definierte
|
|
<literal>auth-group</literal> anstelle von
|
|
<literal>no-autentication</literal>.</para>
|
|
|
|
<para>In der Regel wird für jeden Initiator ein einzelnes
|
|
Target exportiert. In diesem Beispiel wird der Benutzername
|
|
und das Passwort direkt im Target-Eintrag festgelegt:</para>
|
|
|
|
<programlisting>target iqn.2012-06.com.example:target0 {
|
|
portal-group pg0
|
|
chap username1 secretsecret
|
|
|
|
lun 0 {
|
|
path /data/target0-0
|
|
size 4G
|
|
}
|
|
}</programlisting>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="network-iscsi-initiator">
|
|
<title>Einen <acronym>iSCSI</acronym>-Initiator
|
|
konfigurieren</title>
|
|
|
|
<note>
|
|
<para>Der in dieser Sektion beschriebene
|
|
<acronym>iSCSI</acronym>-Initiator wird seit &os;
|
|
10.0-RELEASE unterstützt. Lesen Sie &man.iscontrol.8;, wenn
|
|
Sie den <acronym>iSCSI</acronym>-Initiator mit älteren
|
|
Versionen benutzen möchten.</para>
|
|
</note>
|
|
|
|
<para>Um den Initiator zu verwenden, muss zunächst ein
|
|
<acronym>iSCSI</acronym>-Daemon gestartet sein. Der
|
|
Daemon des Initiators benötigt keine Konfigurationsdatei. Um
|
|
den Daemon automatisch beim Booten zu starten, fügen Sie
|
|
folgende Zeile in <filename>/etc/rc.conf</filename>
|
|
ein:</para>
|
|
|
|
<programlisting>iscsid_enable="YES"</programlisting>
|
|
|
|
<para>Um &man.iscsid.8; jetzt zu starten, geben Sie dieses
|
|
Kommando ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>service iscsid start</userinput></screen>
|
|
|
|
<para>Die Verbindung mit einem Target kann mit, oder ohne eine
|
|
Konfigurationsdatei <filename>/etc/iscsi.conf</filename>
|
|
durchgeführt werden. Dieser Abschnitt beschreibt beide
|
|
Möglichkeiten.</para>
|
|
|
|
<sect3>
|
|
<title>Verbindung zu einem Target herstellen - ohne
|
|
Konfigurationsdatei</title>
|
|
|
|
<para>Um einen Initiator mit einem Target zu verbinden, geben
|
|
Sie die <acronym>IP</acronym>-Adresse des Portals und den
|
|
Namen des Ziels an:</para>
|
|
|
|
<screen>&prompt.root; <userinput>iscsictl -A -p <replaceable>10.10.10.10</replaceable> -t <replaceable>iqn.2012-06.com.example:target0</replaceable></userinput></screen>
|
|
|
|
<para>Um zu überprüfen, ob die Verbindung gelungen ist, rufen
|
|
Sie <command>iscsictl</command> ohne Argumente auf. Die
|
|
Ausgabe sollte in etwa wie folgt aussehen:</para>
|
|
|
|
<programlisting>Target name Target portal State
|
|
iqn.2012-06.com.example:target0 10.10.10.10 Connected: da0</programlisting>
|
|
|
|
<para>In diesem Beispiel wurde die
|
|
<acronym>iSCSI</acronym>-Sitzung mit der
|
|
<acronym>LUN</acronym> <filename>/dev/da0</filename>
|
|
erfolgreich hergestellt. Wenn das Target
|
|
<literal>iqn.2012-06.com.example:target0</literal> mehr als
|
|
nur eine <acronym>LUN</acronym> exportiert, werden mehrere
|
|
Gerätedateien in der Ausgabe angezeigt:</para>
|
|
|
|
<screen>Connected: da0 da1 da2.</screen>
|
|
|
|
<para>Alle Fehler werden auf die Ausgabe und in die
|
|
Systemprotokolle geschrieben. Diese Meldung deutet
|
|
beispielsweise darauf hin, dass der &man.iscsid.8;-Daemon
|
|
nicht ausgeführt wird:</para>
|
|
|
|
<programlisting>Target name Target portal State
|
|
iqn.2012-06.com.example:target0 10.10.10.10 Waiting for iscsid(8)</programlisting>
|
|
|
|
<para>Die folgende Meldung deutet auf ein Netzwerkproblem hin,
|
|
zum Beispiel eine falsche <acronym>IP</acronym>-Adresse oder
|
|
einen falschen Port:</para>
|
|
|
|
<programlisting>Target name Target portal State
|
|
iqn.2012-06.com.example:target0 10.10.10.11 Connection refused</programlisting>
|
|
|
|
<para>Diese Meldung bedeutet, dass der Name des Targets falsch
|
|
angegeben wurde:</para>
|
|
|
|
<programlisting>Target name Target portal State
|
|
iqn.2012-06.com.example:target0 10.10.10.10 Not found</programlisting>
|
|
|
|
<para>Diese Meldung bedeutet, dass das Target eine
|
|
Authentifizierung erfordert:</para>
|
|
|
|
<programlisting>Target name Target portal State
|
|
iqn.2012-06.com.example:target0 10.10.10.10 Authentication failed</programlisting>
|
|
|
|
<para>Verwenden Sie diese Syntax, um einen
|
|
<acronym>CHAP</acronym>-Benutzernamen und ein Passwort
|
|
anzugeben:</para>
|
|
|
|
<screen>&prompt.root; <userinput>iscsictl -A -p <replaceable>10.10.10.10</replaceable> -t <replaceable>iqn.2012-06.com.example:target0</replaceable> -u <replaceable>user</replaceable> -s <replaceable>secretsecret</replaceable></userinput></screen>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Verbindung mit einem Target herstellen - mit
|
|
Konfigurationsdatei</title>
|
|
|
|
<para>Wenn Sie für die Verbindung eine Konfigurationsdatei
|
|
verwenden möchten, erstellen Sie
|
|
<filename>/etc/iscsi.conf</filename> mit etwa folgendem
|
|
Inhalt:</para>
|
|
|
|
<programlisting>t0 {
|
|
TargetAddress = 10.10.10.10
|
|
TargetName = iqn.2012-06.com.example:target0
|
|
AuthMethod = CHAP
|
|
chapIName = user
|
|
chapSecret = secretsecret
|
|
}</programlisting>
|
|
|
|
<para><literal>t0</literal> gibt den Namen der Sektion in der
|
|
Konfigurationsdatei an. Diser Name wird vom Initiator
|
|
benutzt, um zu bestimmen, welche Konfiguration verwendet
|
|
werden soll. Die anderen Einträge legen die Parameter fest,
|
|
die während der Verbindung verwendet werden.
|
|
<literal>TargetAddress</literal> und
|
|
<literal>TargetName</literal> müssen angegeben werden,
|
|
die restlichen sind optional. In diesen Beispiel wird
|
|
der <acronym>CHAP</acronym>-Benuztername und das Passwort
|
|
angegeben.</para>
|
|
|
|
<para>Um sich mit einem bestimmten Target zu verbinden, geben
|
|
Sie dessen Namen an:</para>
|
|
|
|
<screen>&prompt.root; <userinput>iscsictl -An <replaceable>t0</replaceable></userinput></screen>
|
|
|
|
<para>Um sich stattdessen mit allen definierten Targets aus
|
|
der Konfigurationsdatei zu verbinden, verwenden Sie:</para>
|
|
|
|
<screen>&prompt.root; <userinput>iscsictl -Aa</userinput></screen>
|
|
|
|
<para>Damit sich der Initiator automatisch mit allen Targets
|
|
aus <filename>/etc/iscsi.conf</filename> verbindet, fügen
|
|
Sie folgendes in <filename>/etc/rc.conf</filename>
|
|
hinzu:</para>
|
|
|
|
<programlisting>iscsictl_enable="YES"
|
|
iscsictl_flags="-Aa"</programlisting>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|