Index: head/de_DE.ISO8859-1/books/handbook/book.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/book.xml (revision 50863)
+++ head/de_DE.ISO8859-1/books/handbook/book.xml (revision 50864)
@@ -1,320 +1,320 @@
%chapters;
%txtfiles;
]>
&os; HandbuchThe FreeBSD German Documentation Project
- $FreeBSD$
+ $FreeBSD$
- $FreeBSD$
+ $FreeBSD$1995199619971998199920002001200220032004200520062007200820092010201120122013201420152016The FreeBSD German Documentation Project
&legalnotice;
&tm-attrib.freebsd;
&tm-attrib.3com;
&tm-attrib.3ware;
&tm-attrib.arm;
&tm-attrib.adaptec;
&tm-attrib.adobe;
&tm-attrib.apple;
&tm-attrib.corel;
&tm-attrib.google;
&tm-attrib.heidelberger;
&tm-attrib.ibm;
&tm-attrib.ieee;
&tm-attrib.intel;
&tm-attrib.intuit;
&tm-attrib.linux;
&tm-attrib.lsilogic;
&tm-attrib.microsoft;
&tm-attrib.opengroup;
&tm-attrib.oracle;
&tm-attrib.powerquest;
&tm-attrib.realnetworks;
&tm-attrib.redhat;
&tm-attrib.sun;
&tm-attrib.symantec;
&tm-attrib.themathworks;
&tm-attrib.thomson;
&tm-attrib.vmware;
&tm-attrib.wolframresearch;
&tm-attrib.xfree86;
&tm-attrib.xiph;
&tm-attrib.general;
Willkommen bei &os;! Dieses Handbuch beschreibt die
Installation und den täglichen Umgang mit
&os; &rel.current;-RELEASE und
&os; &rel2.current;-RELEASE und
&os; &rel3.current;-RELEASE. Das
Handbuch ist das Ergebnis einer fortlaufenden Arbeit vieler
Einzelpersonen. Dies kann dazu führen, dass einige Abschnitte
nicht aktuell sind. Bei Unklarheiten empfiehlt es sich daher
stets, die
englische Originalversion des Handbuchs zu
lesen.Wenn Sie bei der Übersetzung des Handbuchs mithelfen
möchten, senden Sie bitte eine E-Mail an die Mailingliste
&a.de.translators;.Die aktuelle Version des Handbuchs ist immer auf dem &os;-Webserver
verfügbar und kann in verschiedenen Formaten und in
komprimierter Form vom &os;
FTP-Server oder einem der vielen Spiegel herunter geladen werden
(ältere Versionen finden Sie hingegen unter https://docs.FreeBSD.org/doc/).
Vielleicht möchten Sie das Handbuch aber auch durchsuchen.
&chap.preface;
Erste SchritteDieser Teil des Handbuchs richtet sich an Benutzer
und Administratoren für die &os; neu ist. Diese
Kapitelenthalten eine Einführung in &os;,geleitet den Leser durch den
Installationsprozess,erklärt die Grundlagen von &unix; Systemen,demonstriert, wie die Fülle der erhältlichen
Anwendungen Dritter installiert werden undführt den Leser in X, der Benutzeroberfläche
von &unix; Systemen ein. Es wird gezeigt, wie ein
Desktop konfiguriert wird, um effektiver arbeiten
zu können.Referenzen auf weiter vorne liegende Textteile wurden auf
ein Minimum beschränkt, so dass dieser Abschnitt ohne viel
Blättern durchgearbeitet werden kann.
&chap.introduction;
&chap.bsdinstall;
&chap.basics;
&chap.ports;
&chap.x11;
Oft benutzte FunktionenNach den Grundlagen beschäftigt sich das
Handbuch mit oft benutzten Funktionen von
&os;. Die Kapitel behandeln die nachstehenden
Themen:Beliebte und nützliche Werkzeuge wie Browser,
Büroanwendungen und Programme zum Anzeigen von
Dokumenten.Multimedia-Werkzeuge für &os;.Erstellung eines angepassten &os;-Kernels,
um zusätzliche Funktionen zu aktivieren.Ausführliche Beschreibung des Drucksystems,
sowohl für direkt angeschlossene Drucker als
auch für Netzwerkdrucker.Ausführung von Linux-Anwendungen auf einem
&os;-System.Damit Sie einige Kapitel verstehen, sollten Sie vorher
andere Kapitel gelesen haben. Die Übersicht zu jedem
Kapitel zählt die Voraussetzungen für das
erolgreiche Durcharbeiten des Kapitels auf.
&chap.desktop;
&chap.multimedia;
&chap.kernelconfig;
&chap.printing;
&chap.linuxemu;
SystemadministrationDie restlichen Kapitel behandeln alle Aspekte der &os;
Systemadministration. Am Anfang jedes Kapitels finden Sie
eine Zusammenfassung, die beschreibt, was Sie nach dem
Durcharbeiten des Kapitels gelernt haben. Weiterhin werden
die Voraussetzungen beschrieben, die für das Durcharbeiten des
Kapitels erforderlich sind.Diese Kapitel sollten Sie lesen, wenn Sie die
Informationen darin benötigen. Sie brauchen Sie nicht in
einer bestimmten Reihenfolge zu lesen, noch müssen Sie die
Kapitel lesen, bevor Sie anfangen, &os; zu benutzen.
&chap.config;
&chap.boot;
&chap.security;
&chap.jails;
&chap.mac;
&chap.audit;
&chap.disks;
&chap.geom;
&chap.zfs;
&chap.filesystems;
&chap.virtualization;
&chap.l10n;
&chap.cutting-edge;
&chap.dtrace;
Netzwerke&os; ist eins der meist benutzten Betriebssysteme
für leistungsfähige Netzwerkserver. Die
Kapitel in diesem Teil behandeln die nachstehenden
Themen:Serielle DatenübertragungPPP und PPP over
EthernetElektronische Post (E-Mail)Den Betrieb von NetzwerkdienstenFirewallsWeiterführende NetzwerkthemenDiese Kapitel sollten Sie lesen, wenn Sie die
Informationen darin benötigen. Sie brauchen die Kapitel nicht
in einer bestimmten Reihenfolge zu lesen, noch müssen Sie die
Kapitel lesen, bevor Sie anfangen, &os; in einer
Netzwerkumgebung zu benutzen.
&chap.serialcomms;
&chap.ppp-and-slip;
&chap.mail;
&chap.network-servers;
&chap.firewalls;
&chap.advanced-networking;
Anhang
&chap.mirrors;
&chap.bibliography;
&chap.eresources;
&chap.pgpkeys;
&chap.freebsd-glossary;
&chap.index;
&chap.colophon;
Index: head/de_DE.ISO8859-1/books/handbook/config/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/config/chapter.xml (revision 50863)
+++ head/de_DE.ISO8859-1/books/handbook/config/chapter.xml (revision 50864)
@@ -1,3833 +1,3833 @@
Konfiguration und TuningChernLeeGeschrieben von MikeSmithNach einem Tutorium von MattDillonBasiert ebenfalls auf tuning(7) von MartinHeinenÜbersetzt von ÜbersichtSystem-KonfigurationSystem-OptimierungDie richtige Systemkonfiguration ist einer der wichtigsten
Aspekte unter &os;. Dieses Kapitel beschreibt die
Konfiguration von &os; sowie Maßnahmen zur Leistungssteigerung
von &os;-Systemen.Nachdem Sie dieses Kapitel durchgearbeitet haben,
werden Sie Folgendes wissen:Die Grundlagen der Konfiguration von
rc.conf und die Skripte zum Starten
von Anwendungen in
/usr/local/etc/rc.d.Wie Sie Netzwerkkarten konfigurieren und testen.Wie Sie virtuelle Hosts und Netzwerkgeräte
konfigurieren.Wie Sie die verschiedenen Konfigurationsdateien
in /etc benutzen.Wie Sie mit &os; mit &man.sysctl.8;-Variablen
einstellen können.Wie Sie die Platten-Performance einstellen und
Kernel-Parameter modifizieren können.Bevor Sie dieses Kapitel lesen, sollten Siedie Grundlagen von &unix; und
&os; () verstehen.Damit vertraut sein, wie Sie einen Kernel konfigurieren
und kompilieren ().Start von DienstenTomRhodesBeigetragen von DiensteViele Benutzer installieren Software Dritter auf &os;
mithilfe der Ports-Sammlung. Häufig soll die
Software bei einem Systemstart mitgestartet werden.
Beispielsweise sollen die Dienste
mail/postfix oder
www/apache22 nach
einem Systemstart laufen. Dieser Abschnitt stellt
die Startprozeduren für Software Dritter vor.Unter &os; werden die meisten der im System enthaltenen
Dienste wie &man.cron.8; mithilfe von Systemskripten
gestartet.Dienste über das rc.d-System
startenMit rc.d lässt sich der Start
von Anwendungen besser steuern und es sind mehr Funktionen
verfügbar. Mit den in
besprochenen Schlüsselwörtern können
Anwendungen in einer bestimmten Reihenfolge gestartet werden
und Optionen können in rc.conf statt fest
im Startskript der Anwendung festgelegt werden. Ein einfaches
Startskript sieht wie folgt aus:#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# KEYWORD: shutdown
. /etc/rc.subr
name=utility
rcvar=utility_enable
command="/usr/local/sbin/utility"
load_rc_config $name
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
# SET THEM IN THE /etc/rc.conf FILE
#
utility_enable=${utility_enable-"NO"}
pidfile=${utility_pidfile-"/var/run/utility.pid"}
run_rc_command "$1"Dieses Skript stellt sicher, dass
utility nach den
DAEMON-Pseudodiensten gestartet wird.
Es stellt auch eine Methode bereit, die
Prozess-ID (PID)
der Anwendung in einer Datei zu speichern.In /etc/rc.conf könnte für diese
Anwendung die folgende Zeile stehen:utility_enable="YES"Die Methode erleichtert den Umgang mit
Kommandozeilenargumenten, bindet Funktionen aus
/etc/rc.subr ein, ist kompatibel
zu &man.rcorder.8; und lässt sich über
rc.conf leichter konfigurieren.Andere Arten, um Dienste zu startenAndere Dienste können über &man.inetd.8; gestartet werden.
Die Konfiguration von &man.inetd.8; wird in ausführlich beschrieben.Systemdienste können auch mit &man.cron.8; gestartet
werden. Dieser Ansatz hat einige Vorteile; nicht zuletzt,
weil &man.cron.8; die Prozesse unter dem Eigentümer der
crontab startet, ist es möglich, dass
Dienste von normalen Benutzern gestartet und gepflegt werden
können.Für die Zeitangabe in &man.cron.8; kann
@reboot eingesetzt werden. Damit wird das
Kommando gestartet, wenn &man.cron.8; kurz nach dem Systemboot
gestartet wird.&man.cron.8; konfigurierenTomRhodesBeigetragen von cronkonfigurierenEin sehr nützliches Werkzeug von &os; ist
cron. Dieses Programm läuft im
Hintergrund und überprüft fortlaufend
/etc/crontab und
/var/cron/tabs. In diesen Dateien wird
festgelegt, welche Programme zu welchem Zeitpunkt von
cron ausgeführt werden sollen.
Jede Zeile in diesen Dateien definiert eine auszuführende
Aufgabe, die auch als Cronjob bezeichnet
wird.Das Werkzeug verwendet zwei verschiedene
Konfigurationsdateien: die System-crontab, welche nicht
verändert werden sollte und die Benutzer-crontabs, die nach
Bedarf erstellt und geändert werden können. Das Format, dass
von diesen beiden Dateien verwendet wird, ist in &man.crontab.5;
dokumentiert. Das Format der System-crontab in
/etc/crontab enthält das Feld
who, das in der Benutzer-crontab nicht
existiert. Dieses Feld gibt den Benutzer an, mit dem die
Aufgabe ausgeführt wird. Die Aufgaben in den Benutzer-crontabs
laufen unter dem Benutzer, der die crontab erstellt hat.Benutzer-crontabs erlauben es den Benutzern, ihre eigenen
Aufgaben zu planen. Der Benutzer root kann auch seine eigene
Benutzer-crontab haben, um Aufgaben zu planen, die nicht in der
System-crontab existieren.Hier ist ein Beispieleintrag aus der
System-crontab, /etc/crontab:
- # /etc/crontab - root's crontab for FreeBSD
+ # /etc/crontab - root's crontab for FreeBSD
#
#$FreeBSD$
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
#
#
#minute hour mday month wday who command
#
*/5 * * * * root /usr/libexec/atrun Das Zeichen # am Zeilenanfang leitet
einen Kommentar
ein. Benutzen Sie Kommentare, um die Funktion eines
Eintrags zu erläutern. Kommentare müssen in einer extra
Zeile stehen. Sie können nicht in derselben Zeile wie ein
Kommando stehen, da sie sonst Teil des Kommandos wären.
Leerzeilen in dieser Datei werden ignoriert.Umgebungsvariablen werden mit dem Gleichheits-Zeichen
(=) festgelegt. Im Beispiel werden
die Variablen SHELL, PATH
und HOME definiert. Wenn die Variable
SHELL nicht definiert wird, benutzt
cron die Bourne Shell.
Wird die Variable PATH nicht gesetzt,
müssen alle Pfadangaben absolut sein, da es keinen
Vorgabewert für PATH gibt.In dieser Zeile werden sieben Felder der System-crontab
beschrieben: minute,
hour, mday,
month, wday,
who und command. Das
Feld minute legt die Minute fest in der
die Aufgabe ausgeführt wird, das Feld
hour die Stunde, das Feld
mday den Tag des Monats. Im Feld
month wird der Monat und im Feld
wday der Wochentag festgelegt. Alle
Felder müssen numerische Werte enthalten und die Zeitangaben
sind im 24-Stunden-Format. Das Zeichen *
repräsentiert dabei alle möglichen Werte für dieses Feld.
Das Feld who gibt es nur in der
System-crontab und gibt den Account an, unter dem das
Kommando laufen soll. Im letzten Feld wird schließlich das
auszuführende Kommando angegeben.Diese Zeile definiert die Werte für den Cronjob. Die
Zeichenfolge */5 gefolgt von mehreren
*-Zeichen bedeutet, dass
/usr/libexec/atrun von root alle fünf Minuten
aufgerufen wird.Bei den Kommandos können beliebig viele Optionen
angegeben werden. Wenn das Kommando zu lang ist und
auf der nächsten Zeile fortgesetzt werden soll,
muss am Ende der Zeile das Fortsetzungszeichen
(\) angegeben werden.Eine Benutzer-crontab erstellenRufen Sie crontab im Editor-Modus auf,
um eine Benutzer-crontab zu erstellen:&prompt.user; crontab -eDies wird die crontab des Benutzers mit dem
voreingestellten Editor öffnen. Wenn der Benutzer diesen
Befehl zum ersten Mal ausführt, wird eine leere Datei
geöffnet. Nachdem der Benutzer eine crontab erstellt hat,
wird die Datei mit diesem Kommando zur Bearbeitung
geöffnet.Es empfiehlt sich, die folgenden Zeilen an den Anfang der
crontab-Datei hinzuzufügen, um die Umgebungsvariablen zu
setzen und die einzelnen Felder zu beschreiben:SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# Order of crontab fields
# minute hour mday month wday commandFügen Sie dann für jedes Kommando oder Skript eine Zeile
hinzu, mit der Angabe wann das Kommando ausgeführt werden
soll. In diesem Beispiel wird ein Bourne Shell Skript täglich
um 14:00 Uhr ausgeführt. Da der Pfad zum Skript nicht in
PATH enthalten ist, wird der vollständige
Pfad zum Skript angegeben:0 14 * * * /usr/home/dru/bin/mycustomscript.shBevor Sie ein eigenes Skript verwenden, stellen Sie
sicher, dass es ausführbar ist und dass es mit den wenigen
Umgebungsvariablen von cron
funktioniert. Um die Umgebung nachzubilden, die der obige
cron-Eintrag bei der Ausführung
verwenden würde, benutzen Sie dieses Kommando:&prompt.user; env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/dru LOGNAME=dru/usr/home/dru/bin/mycustomscript.shDie Umgebung von cron wird in
&man.crontab.5; beschrieben. Es ist wichtig, dass
sichergestellt wird, dass die Skripte in der Umgebung von
cron korrekt arbeiten, besonders
wenn Befehle enthalten sind, welche Dateien mit Wildcards
löschen.Wenn Sie mit der Bearbeitung der crontab fertig sind,
speichern Sie die Datei. Sie wird automatisch installiert
und cron wird die darin enthalten
Cronjobs zu den angegebenen Zeiten ausführen. Um die Cronjobs
in einer crontab aufzulisten, verwenden Sie diesen
Befehl:&prompt.user; crontab -l
0 14 * * * /usr/home/dru/bin/mycustomscript.shUm alle Cronjobs einer Benutzer-crontab zu löschen,
verwenden Sie diesen Befehl:&prompt.user; crontab -r
remove crontab for dru? yDienste unter &os; verwaltenTomRhodesBeigetragen von &os; verwendet die vom &man.rc.8;-System bereit gestellten
Startskripten beim Systemstart und für die Verwaltung von
Diensten. Die Skripte sind in /etc/rc.d
abgelegt und bieten grundlegende Dienste an, die über die
Optionen , und
des &man.service.8; Kommandos
kontrolliert werden können. Beispielsweise kann &man.sshd.8;
mit dem nachstehenden Kommando neu gestartet werden:&prompt.root; service sshd restartAnalog können Sie andere Dienste starten und stoppen.
Normalerweise werden die Dienste beim Systemstart über
Einträge in der Datei &man.rc.conf.5; automatisch gestartet.
&man.natd.8; wird zum Beispiel mit dem folgenden
Eintrag in /etc/rc.conf aktiviert:natd_enable="YES"Wenn dort bereits die Zeile
existiert, ändern Sie
in . Die
&man.rc.8;-Skripten starten, wie unten beschrieben, auch
abhängige Dienste.Da das &man.rc.8;-System primär
zum automatischen Starten und Stoppen von Systemdiensten
dient, funktionieren die Optionen ,
und nur,
wenn die entsprechenden Variablen in
/etc/rc.conf gesetzt sind. Beispielsweise
funktioniert sshd restart nur dann, wenn in
/etc/rc.conf die Variable
sshd_enable auf gesetzt
wurde. Wenn Sie die Optionen ,
oder
unabhängig von den Einstellungen in
/etc/rc.conf benutzen wollen,
müssen Sie den Optionen mit dem Präfix
one verwenden. Um beispielsweise
sshd unabhängig von den
Einstellungen in /etc/rc.conf neu
zu starten, benutzen Sie das nachstehende Kommando:&prompt.root; service sshd onerestartOb ein Dienst in /etc/rc.conf
aktiviert ist, können Sie herausfinden, indem
Sie das entsprechende &man.rc.8;-Skript
mit der Option aufrufen. Dieses Beispiel
prüft, ob der sshd-Dienst in
/etc/rc.conf aktiviert ist:&prompt.root; service sshd rcvar
# sshd
#
sshd_enable="YES"
# (default: "")Die Zeile # sshd wird von dem Kommando
ausgegeben; sie kennzeichnet nicht die Eingabeaufforderung von
root.Ob ein Dienst läuft, kann mit
abgefragt werden. Das folgende
Kommando überprüft, ob sshd
auch wirklich gestartet wurde:&prompt.root; service sshd status
sshd is running as pid 433.Einige Dienste können über die Option
neu initialisiert werden. Dazu wird
dem Dienst über ein Signal mitgeteilt,
dass er seine Konfigurationsdateien neu einlesen soll.
Oft wird dazu das Signal SIGHUP
verwendet. Beachten Sie aber, dass nicht alle Dienste diese
Option unterstützen.Die meisten Systemdienste werden beim Systemstart vom
&man.rc.8;-System gestartet. Zum Beispiel aktiviert das Skript
/etc/rc.d/bgfsck die Prüfung von
Dateisystemen im Hintergrund. Das Skript gibt die folgende
Meldung aus, wenn es gestartet wird:Starting background file system checks in 60 seconds.Dieses Skript wird während des Systemstarts ausgeführt und
führt eine Überprüfung der Dateisysteme im Hintergrund
durch.Viele Systemdienste hängen von anderen Diensten
ab. &man.yp.8; und andere RPC-basierende Systeme hängen
beispielsweise von dem rpcbind-Dienst
ab. Im Kopf der Startskripten befinden sich
die Informationen über Abhängigkeiten von anderen
Diensten und weitere Metadaten. Mithilfe dieser Daten
bestimmt das Programm &man.rcorder.8; beim Systemstart die
Startreihenfolge der Dienste.Folgende Schlüsselwörter müssen im Kopf aller Startskripten
verwendet werden, da sie von &man.rc.subr.8; zum
Aktivieren des Startskripts benötigt
werden:PROVIDE: Gibt die Namen der Dienste
an, die mit dieser Datei zur Verfügung gestellt
werden.Die folgenden Schlüsselwörter können im Kopf
des Startskripts angegeben werden. Sie sind zwar nicht
unbedingt notwendig, sind aber hilfreich beim Umgang mit
&man.rcorder.8;:REQUIRE: Gibt die Namen der Dienste
an, von denen dieser Dienst abhängt. Ein Skript, das dieses
Schlüsselwort enthält wird nach den
angegebenen Diensten ausgeführt.BEFORE: Zählt Dienste auf,
die auf diesen Dienst angewiesen sind. Ein Skript, dass
dieses Schlüsselwort enthält wird vor
den angegebenen Diensten ausgeführt.Durch das Verwenden dieser Schlüsselwörter kann
ein Administrator die Startreihenfolge von Systemdiensten
feingranuliert steuern, ohne mit den
Schwierigkeiten des runlevel-Systems
anderer &unix; Systeme kämpfen zu müssen.Weitere Informationen über das
&man.rc.8;-System finden Sie in &man.rc.8; und
&man.rc.subr.8;. Wenn Sie eigene
rc.d-Skripte schreiben wollen, sollten Sie
diesen Artikel lesen.Systemspezifische Konfigurationrc-Dateienrc.confInformationen zur Systemkonfiguration sind hauptsächlich
in /etc/rc.conf, die meist beim Start
des Systems verwendet wird, abgelegt. Sie enthält die
Konfigurationen für die
rc* Dateien.In rc.conf werden die Vorgabewerte
aus /etc/defaults/rc.conf überschrieben.
Die Vorgabedatei sollte nicht editiert werden. Stattdessen
sollten alle systemspezifischen Änderungen in
rc.conf vorgenommen werden.Um den administrativen Aufwand gering zu halten,
existieren in geclusterten Anwendungen mehrere Strategien,
globale Konfigurationen von systemspezifischen Konfigurationen
zu trennen. Der empfohlene Weg hält die globale Konfiguration
in einer separaten Datei z.B.
/etc/rc.conf.local. Zum Beispiel
so:/etc/rc.conf:sshd_enable="YES"
keyrate="fast"
defaultrouter="10.1.1.254"/etc/rc.conf.local:hostname="node1.example.org"
ifconfig_fxp0="inet 10.1.1.1/8"/etc/rc.conf kann dann auf jedes
System mit rsync oder
puppet verteilt werden,
während /etc/rc.conf.local dabei
systemspezifisch bleibt.Bei einem Upgrade des Systems wird
/etc/rc.conf nicht überschrieben, so dass
die Systemkonfiguration erhalten bleibt./etc/rc.conf und
/etc/rc.conf.local werden von
&man.sh.1; gelesen. Dies erlaubt es dem
Systemadministrator, komplexe Konfigurationsszenarien zu
erstellen. Lesen Sie &man.rc.conf.5;, um weitere
Informationen zu diesem Thema zu erhalten.Einrichten von NetzwerkkartenMarcFonvieilleBeigetragen von NetzwerkkarteneinrichtenDie Konfiguration einer Netzwerkkarte gehört zu
den alltäglichen Aufgaben eines &os; Administrators.Bestimmen des richtigen TreibersNetzwerkkartenTreiberErmitteln Sie zunächst das Modell der Netzwerkkarte und
den darin verwendeten Chip. &os; unterstützt eine Vielzahl
von Netzwerkkarten. Prüfen Sie die
Hardware-Kompatibilitätsliste für das &os; Release, um zu
sehen ob die Karte unterstützt wird.Wenn die Karte unterstützt wird, müssen Sie den Treiber
für die Karte bestimmen.
/usr/src/sys/conf/NOTES und
/usr/src/sys/arch/conf/NOTES
enthalten eine Liste der verfügbaren Treiber mit Informationen
zu den unterstützten Chipsätzen. Wenn Sie sich nicht
sicher sind, ob Sie den richtigen Treiber ausgewählt haben,
lesen Sie die Hilfeseite des Treibers. Sie enthält weitere
Informationen über die unterstützten Geräte und bekannte
Einschränkungen des Treibers.Die Treiber für gebräuchliche Netzwerkkarten sind schon im
GENERIC-Kernel enthalten, so dass die
Karte während des Systemstarts erkannt werden sollte. Die
Systemmeldungen können Sie sich mit
more /var/run/dmesg.boot ansehen. Mit der
Leertaste können Sie durch den Text blättern. In diesem
Beispiel findet das System zwei Karten, die den
&man.dc.4;-Treiber benutzen:dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 at device 11.0 on pci0
miibus0: <MII bus> on dc0
bmtphy0: <BCM5201 10/100baseTX PHY> PHY 1 on miibus0
bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc0: Ethernet address: 00:a0:cc:da:da:da
dc0: [ITHREAD]
dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 at device 12.0 on pci0
miibus1: <MII bus> on dc1
bmtphy1: <BCM5201 10/100baseTX PHY> PHY 1 on miibus1
bmtphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc1: Ethernet address: 00:a0:cc:da:da:db
dc1: [ITHREAD]Ist der Treiber für die Netzwerkkarte nicht
in GENERIC enthalten, muss zunächst
ein Treiber geladen werden, um die Karte konfigurieren und
benutzen zu können. Dafür gibt es zwei Methoden:Am einfachsten ist es, das Kernelmodul für
die Karte mit &man.kldload.8; zu laden. Um den Treiber
automatisch beim Systemstart zu laden, fügen Sie die
entsprechende Zeile in
/boot/loader.conf ein. Es gibt nicht
für alle Karten Kernelmodule.Alternativ kann der Treiber für die Karte fest in den
Kernel eingebunden werden. Lesen Sie dazu
/usr/src/sys/conf/NOTES,
/usr/src/sys/arch/conf/NOTES
und die Hilfeseite des Treibers, den Sie in den Kernel
einbinden möchten, an. Die Übersetzung des Kernels
wird in beschrieben. Wenn
die Karte während des Systemstarts vom Kernel erkannt
wurde, muss der Kernel nicht neu übersetzt werden.&windows;-NDIS-Treiber
einsetzenNDISNDISulator&windows;-Treiberµsoft.windows;GerätetreiberKLD
(kernel loadable object)Leider stellen nach wie vor viele Unternehmen die
Spezifikationen ihrer Treiber der Open Source Gemeinde
nicht zur Verfügung, weil sie diese Informationen
als Geschäftsgeheimnisse betrachten. Daher haben die
Entwickler von &os; und anderen Betriebssystemen nur
zwei Möglichkeiten. Entweder versuchen sie in einem
aufwändigen Prozess den Treiber durch
Reverse Engineering
nachzubauen, oder sie versuchen, die vorhandenen
Binärtreiber der µsoft.windows;-Plattform zu
verwenden.&os; bietet native Unterstützung für die
Network Driver Interface
Specification (NDIS).
&man.ndisgen.8; wird benutzt, um einen &windowsxp;-Treiber
in ein Format zu konvertieren, das von &os; verwendet werden
kann. Da der &man.ndis.4;-Treiber einen
&windowsxp;-Binärtreiber nutzt, kann er nur auf &i386;- und
amd64-Systemen verwendet werden. Unterstützt werden
PCI, CardBus, PCMCIA
und USB-Geräte.Um den NDISulator zu verwenden, benötigen Sie drei
Dinge:Die &os; KernelquellenDen &windowsxp;-Binärtreiber mit der Erweiterung
.SYSDie Konfigurationsdatei des &windowsxp;-Treibers
mit der Erweiterung .INFLaden Sie die .SYS- und
.INF-Dateien für die Karte. Diese
befinden sich meistens auf einer beigelegten CD-ROM, oder
können von der Internetseite des Herstellers
heruntergeladen werden. In den folgenden Beispielen werden
die Dateien W32DRIVER.SYS und
W32DRIVER.INF verwendet.Die Architektur des Treibers muss zur jeweiligen
Version von &os; passen. Benutzen Sie einen &windows;
32-bit Treiber für &os;/i386. Für &os;/amd64 wird ein
&windows; 64-bit Treiber benötigt.Als Nächstes kompilieren Sie den binären Treiber, um ein
Kernelmodul zu erzeugen. Dazu rufen Sie als
root
&man.ndisgen.8; auf:&prompt.root; ndisgen /path/to/W32DRIVER.INF/path/to/W32DRIVER.SYSDieses Kommando arbeitet interaktiv, benötigt es weitere
Informationen, so fragt es Sie danach. Das Ergebnis ist ein
neu erzeugtes Kernelmodul im aktuellen Verzeichnis.
Benutzen Sie &man.kldload.8; um das neue Modul zu
laden:&prompt.root; kldload ./W32DRIVER.koNeben dem erzeugten Kernelmodul müssen auch die
Kernelmodule ndis.ko und
if_ndis.ko geladen werden. Dies
passiert automatisch, wenn Sie ein von &man.ndis.4;
abhängiges Modul laden. Andernfalls können die Module mit
den folgenden Kommandos manuell geladen werden:&prompt.root; kldload ndis
&prompt.root; kldload if_ndisDer erste Befehl lädt den &man.ndis.4;-Miniport-Treiber,
der zweite das tatsächliche Netzwerkgerät.Überprüfen Sie die Ausgabe von &man.dmesg.8;
auf eventuelle Fehler während des Ladevorgangs. Gab es
dabei keine Probleme, sollte die Ausgabe wie folgt
aussehen:ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
ndis0: NDIS API version: 5.0
ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5
ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54MbpsAb jetzt kann das Gerät ndis0 wie
jede andere Netzwerkkarte konfiguriert werden.Um die &man.ndis.4;-Module automatisch beim Systemstart
zu laden, kopieren Sie das erzeugte Modul
W32DRIVER_SYS.ko nach
/boot/modules. Danach fügen Sie die
folgende Zeile in /boot/loader.conf
ein:W32DRIVER_SYS_load="YES"Konfiguration von NetzwerkkartenNetzwerkkarteneinrichtenNachdem der richtige Treiber für die Karte geladen ist,
muss die Karte konfiguriert werden. Unter Umständen ist
die Karte schon während der Installation mit
&man.bsdinstall.8; konfiguriert worden.Das nachstehende Kommando zeigt die Konfiguration der
Netzwerkkarten an:&prompt.user; ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
ether 00:a0:cc:da:da:da
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
dc1: flags=8802<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
ether 00:a0:cc:da:da:db
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
media: Ethernet 10baseT/UTP
status: no carrier
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
nd6 options=3<PERFORMNUD,ACCEPT_RTADV>Im Beispiel werden Informationen zu den folgenden Geräten
angezeigt:dc0: Der erste
Ethernet-Adapter.dc1: Der zweite
Ethernet-Adapter.lo0: Das Loopback-Gerät.Der Name der Netzwerkkarte wird aus dem Namen des Treibers
und einer Zahl zusammengesetzt. Die Zahl gibt die Reihenfolge
an, in der die Geräte beim Systemstart erkannt wurden. Die
dritte Karte, die den &man.sis.4; Treiber benutzt, würde
beispielsweise sis2 heißen.Der Adapter dc0 aus dem Beispiel ist
aktiv. Sie erkennen das an den folgenden Hinweisen:UP bedeutet, dass die Karte
konfiguriert und aktiv ist.Der Karte wurde die Internet-Adresse
(inet)
192.168.1.3
zugewiesen.Die Subnetzmaske ist richtig
(0xffffff00
entspricht 255.255.255.0).Die Broadcast-Adresse
192.168.1.255
ist richtig.Die MAC-Adresse der Karte (ether)
lautet
00:a0:cc:da:da:da.Die automatische Medienerkennung ist aktiviert
(media: Ethernet autoselect (100baseTX
<full-duplex>)). Der Adapter
dc1 benutzt das Medium
10baseT/UTP. Weitere Informationen
über die einstellbaren Medien entnehmen
Sie der Hilfeseite des Treibers.Der Verbindungsstatus (status) ist
active, das heißt es wurde ein
Trägersignal entdeckt. Für dc1 wird
status: no carrier angezeigt. Das ist
normal, wenn kein Kabel an der Karte angeschlossen
ist.Wäre die Karte nicht konfiguriert, würde die Ausgabe
von &man.ifconfig.8; so aussehen:dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
ether 00:a0:cc:da:da:da
media: Ethernet autoselect (100baseTX <full-duplex>)
status: activeDie Karte muss als Benutzer root konfiguriert werden. Die
Konfiguration kann auf der Kommandozeile mit &man.ifconfig.8;
erfolgen. Allerdings gehen diese Informationen bei einem
Neustart verloren. Tragen Sie stattdessen die Konfiguration
in /etc/rc.conf ein. Wenn es im
LAN einen DHCP-Server
gibt, fügen Sie einfach folgende Zeile hinzu:ifconfig_dc0="DHCP"Ersetzen Sie >dc0 durch die
richtigen Werte für das System.Nachdem Sie die Zeile hinzugefügt haben, folgen Sie den
Anweisungen in .Wenn das Netzwerk während der Installation konfiguriert
wurde, existieren vielleicht schon Einträge für die
Netzwerkkarte(n). Überprüfen Sie
/etc/rc.conf bevor Sie weitere Zeilen
hinzufügen.Falls kein DHCP-Server zur Verfügung
steht, müssen die Netzwerkkarten manuell konfiguriert werden.
Fügen Sie für jede Karte im System eine Zeile hinzu, wie in
diesem Beispiel zu sehen:ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"Ersetzen Sie dc0 und
dc1 und die
IP-Adressen durch die richtigen Werte für
das System. Die Manualpages des Treibers, &man.ifconfig.8;
und &man.rc.conf.5; enthalten weitere Einzelheiten über
verfügbare Optionen und die Syntax von
/etc/rc.conf.Wenn das Netzwerk kein DNS benutzt,
können Sie in /etc/hosts die Namen und
IP-Adressen der Rechner des
LANs eintragen. Weitere Informationen
entnehmen Sie &man.hosts.5; und
/usr/share/examples/etc/hosts.Falls kein DHCP-Server zur Verfügung
steht, Sie aber Zugang zum Internet benötigen, müssen Sie
das Standard-Gateway und die Nameserver manuell
konfigurieren:&prompt.root; echo 'defaultrouter="Ihr_Default_Gateway"' >> /etc/rc.conf
&prompt.root; echo 'nameserver Ihr_DNS_Server' >> /etc/resolv.confTest und FehlersucheNachdem die notwendigen Änderungen in
/etc/rc.conf gespeichert wurden, kann das
System neu gestartet werden, um die Konfiguration zu testen
und zu überprüfen, ob das System ohne Fehler neu gestartet
wurde. Alternativ können Sie mit folgenden Befehl die
Netzwerkeinstellungen neu initialisieren:&prompt.root; service netif restartFalls in /etc/rc.conf ein
Default-Gateway definiert wurde, müssen Sie auch den
folgenden Befehl ausführen:&prompt.root; service routing restartWenn das System gestartet ist, sollten Sie die
Netzwerkkarten testen.Test der Ethernet-KarteNetzwerkkartentestenUm zu prüfen, ob die Ethernet-Karte richtig konfiguriert
ist, testen Sie zunächst mit &man.ping.8; den Adapter selbst
und sprechen Sie dann eine andere Maschine im
LAN an.Zuerst, der Test des Adapters:&prompt.user; ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms
--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms&prompt.user; ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms
--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 msUm die Namensauflösung zu testen, verwenden Sie den
Namen der Maschine anstelle der
IP-Adresse. Wenn kein
DNS-Server im Netzwerk vorhanden ist,
muss /etc/hosts entsprechend
eingerichtet sein. Fügen Sie dazu die Namen und
IP-Adressen der Rechner im
LAN in /etc/hosts
hinzu, falls sie nicht bereits vorhanden sind. Weitere
Informationen finden Sie in &man.hosts.5; und
/usr/share/examples/etc/hosts.FehlersucheNetzwerkkartenFehlersucheFehler zu beheben, ist immer sehr mühsam.
Indem Sie die einfachen Sachen zuerst prüfen,
erleichtern Sie sich die Aufgabe. Steckt das Netzwerkkabel?
Sind die Netzwerkdienste richtig konfiguriert? Funktioniert
die Firewall? Wird die Netzwerkkarte von &os;
unterstützt? Lesen Sie immer die Hardware-Informationen
des Releases, bevor Sie einen Fehlerbericht einsenden.
Aktualisieren Sie die &os;-Version auf die neueste -STABLE
Version. Suchen Sie in den Archiven der Mailinglisten
und im Internet nach bekannten Lösungen.Wenn die Karte funktioniert, die Verbindungen aber
zu langsam sind, sollten Sie &man.tuning.7; lesen. Prüfen
Sie auch die Netzwerkkonfiguration, da falsche Einstellungen
die Ursache für langsame Verbindungen sein können.Wenn Sie viele device timeout
Meldungen in den Systemprotokollen finden, prüfen
Sie, dass es keinen Konflikt zwischen der Netzwerkkarte
und anderen Geräten des Systems gibt.
Überprüfen Sie nochmals die Verkabelung.
Unter Umständen benötigen Sie eine andere
Netzwerkkarte.Bei watchdog timeout
Fehlermeldungen, kontrollieren Sie zuerst die Verkabelung.
Überprüfen Sie dann, ob der
PCI-Steckplatz der
Karte Bus Mastering unterstützt. Auf einigen
älteren Motherboards ist das nur für einen
Steckplatz (meistens Steckplatz 0) der Fall. Lesen Sie
in der Dokumentation der Karte und des Motherboards
nach, ob das vielleicht die Ursache des Problems sein
könnte.Die Meldung No route to host
erscheint, wenn das System ein Paket nicht zustellen
kann. Das kann vorkommen weil beispielsweise keine
Default-Route gesetzt wurde oder das Netzwerkkabel
nicht richtig steckt. Schauen Sie in der Ausgabe
von netstat -rn nach, ob eine
gültige Route zu dem Zielsystem existiert. Wenn nicht,
lesen Sie .Die Meldung ping: sendto: Permission
denied wird oft von einer falsch
konfigurierten Firewall verursacht. Wenn keine Regeln
definiert wurden, blockiert eine aktivierte Firewall alle
Pakete, selbst einfache &man.ping.8;-Pakete.
Weitere Informationen erhalten Sie
in .Falls die Leistung der Karte schlecht ist, setzen
Sie die Medienerkennung von autoselect
(automatisch) auf das richtige Medium. In vielen Fällen
löst diese Maßnahme Leistungsprobleme. Wenn
nicht, prüfen Sie nochmal die Netzwerkeinstellungen
und lesen Sie &man.tuning.7;.Virtual Hostsvirtual hostsIP-AliaseEin gebräuchlicher Zweck von &os; ist das
virtuelle Hosting, bei dem ein Server im Netzwerk wie
mehrere Server aussieht. Dies wird dadurch erreicht,
dass einem Netzwerkinterface mehrere Netzwerk-Adressen
zugewiesen werden.Ein Netzwerkinterface hat eine echte
Adresse und kann beliebig viele alias Adressen
haben. Die Aliase werden durch entsprechende alias Einträge
in /etc/rc.conf festgelegt, wie in diesem
Beispiel zu sehen ist:ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"Beachten Sie, dass die Alias-Einträge mit
alias0 anfangen
müssen und weiter hochgezählt werden, das heißt
alias1, alias2, und so
weiter. Die Konfiguration der Aliase hört bei der ersten
fehlenden Zahl auf.Die Berechnung der Alias-Netzwerkmasken ist wichtig. Für
jedes Interface muss es eine Adresse geben, die die
Netzwerkmaske des Netzwerkes richtig beschreibt. Alle anderen
Adressen in diesem Netzwerk haben dann eine Netzwerkmaske, die
mit 1 gefüllt ist, also 255.255.255.255 oder hexadezimal
0xffffffff.Als Beispiel betrachten wir den Fall, in dem
fxp0 mit zwei Netzwerken verbunden
ist: dem Netzwerk
10.1.1.0 mit der
Netzwerkmaske
255.255.255.0 und dem
Netzwerk 202.0.75.16
mit der Netzwerkmaske
255.255.255.240. Das
System soll die Adressen
10.1.1.1 bis
10.1.1.5 und
202.0.75.17 bis
202.0.75.20 belegen.
Nur die erste Adresse in einem Netzwerk sollte die richtige
Netzwerkmaske haben. Alle anderen Adressen
(10.1.1.2 bis
10.1.1.5 und
202.0.75.18 bis
202.0.75.20) müssen
die Maske
255.255.255.255 erhalten.Die folgenden Einträge in
/etc/rc.conf konfigurieren den Adapter
entsprechend dem Beispiel:ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"Dies kann mit einer durch Leerzeichen getrennten Liste
von IP-Adressbereichen auch einfacher
ausgedrückt werden. Die erste Adresse hat wieder die angegebene
Netzwerkmaske und die zusätzlichen Adressen haben die
Netzwerkmaske 255.255.255.255.ifconfig_fxp0_aliases="inet 10.1.1.1-5/24 inet 202.0.75.17-20/28"Konfiguration der SystemprotokollierungNiclasZeisingBeigetragen von system loggingsyslog&man.syslogd.8;Die Aufzeichnung und Kontrolle von Log-Meldungen ist ein
wichtiger Aspekt der Systemadministration. Die Informationen
werden nicht nur verwendet um Hard- und Softwarefehler ausfindig
zu machen, auch zur Überwachung der Sicherheit und der Reaktion
bei einem Zwischenfall spielen diese Aufzeichnungen eine
wichtige Rolle. Die meisten Systemdienste und Anwendungen
erzeugen Log-Meldungen.&os; stellt mit syslogd ein
Werkzeug zur Verwaltung von Protokollen bereit. In der
Voreinstellung wird syslogd beim
Booten automatisch gestartet. Dieses Verhalten wird über die
Variable syslogd_enable in
/etc/rc.conf gesteuert. Dazu gibt es noch
zahlreiche Argumente, die in der Variable
syslogd_flags in
/etc/rc.conf gesetzt werden können. Lesen
Sie &man.syslogd.8; für weitere Informationen über die
verfügbaren Argumente.Dieser Abschnitt beschreibt die Konfiguration und Verwendung
des &os; Protokollservers, und diskutiert auch die Log-Rotation
und das Management von Logdateien.Konfiguration der lokalen Protokollierungsyslog.confDie Konfigurationsdatei
/etc/syslog.conf steuert, was
syslogd mit Log-Meldungen macht,
sobald sie empfangen werden. Es gibt verschiedene Parameter,
die das Verhalten bei eingehenden Ereignissen kontrollieren.
facility beschreibt das
Subsystem, welches das Ereignis generiert hat. Beispielsweise
der Kernel, oder ein Daemon.
level hingegen beschreibt den
Schweregrad des aufgetretenen Ereignisses. Dies macht es
möglich, Meldungen in verschiedenen Logdateien zu
protokollieren, oder Meldungen zu verwerfen, je nach
Konfiguration von facility und
level. Ebenfalls besteht die
Möglichkeit auf Meldungen zu reagieren, die von einer
bestimmten Anwendung stammen, oder von einem
spezifischen Host erzeugt wurden.Die Konfigurationsdatei von &man.syslogd.8; enthält für
jede Aktion eine Zeile. Die Syntax besteht aus einem
Auswahlfeld, gefolgt von einem Aktionsfeld. Die Syntax für
das Auswahlfeld ist facility.level.
Dies entspricht Log-Meldungen von
facility mit einem Level von
level oder höher. Um noch präziser
festzulegen was protokolliert wird, kann dem Level optional
ein Vergleichsflag vorangestellt werden. Mehrere Auswahlen
können, durch Semikolon (;) getrennt, für
die gleiche Aktion verwendet werden. *
wählt dabei alles aus. Das Aktionsfeld definiert, wohin die
Log-Meldungen gesendet werden, beispielsweise in eine Datei
oder zu einem entfernten Log-Server. Als Beispiel dient hier
/etc/syslog.conf aus &os;:
- # $&os;$
+ # $&os;$
#
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you$
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
auth.info;authpriv.info /var/log/auth.log
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
ftp.info /var/log/xferlog
cron.* /var/log/cron
!-devd
*.=debug /var/log/debug.log
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
#*.* /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.* @loghost
# uncomment these if you're running inn
# news.crit /var/log/news/news.crit
# news.err /var/log/news/news.err
# news.notice /var/log/news/news.notice
# Uncomment this if you wish to see messages produced by devd
# !devd
# *.>=info
!ppp
*.* /var/log/ppp.log
!*In diesem Beispiel:Zeile 8 selektiert alle Meldungen vom Level
err, sowie
kern.warning,
auth.notice und
mail.crit und schickt diese zur Konsole
(/dev/console).Zeile 12 selektiert alle Meldungen von
mail ab dem Level
info oder höher und schreibt diese in
/var/log/maillog.Zeile 17 benutzt ein Vergleichsflag
(=), um nur Meldungen vom Level
debug zu selektieren und schreibt
diese in /var/log/debug.log.Zeile 33 zeigt ein Beispiel für die Nutzung einer
Programmspezifikation. Die
nachfolgenden Regeln sind dann nur für Programme gültig,
welche der Programmspezifikation stehen. In diesem Fall
werden alle Meldungen von ppp
(und keinem anderen Programm) in
/var/log/ppp.log geschrieben.Die verfügbaren level,
beginnend mit den höchst kritischen, hin zu den weniger
kritischen, sind:
emerg, alert,
crit, err,
warning, notice,
info und
debug.Die facilities, in
beliebiger Reihenfolge, sind: auth,
authpriv, console,
cron, daemon,
ftp, kern,
lpr, mail,
mark, news,
security, syslog,
user, uucp, sowie
local0 bis local7.
Beachten Sie, dass andere Betriebssysteme hiervon abweichende
facilities haben
können.Um alle Meldungen vom Level notice und
höher in /var/log/daemon.log zu
protokollieren, fügen Sie folgenden Eintrag hinzu:daemon.notice /var/log/daemon.logFür weitere Informationen zu verschiedenen Level und
faclilities, lesen Sie
&man.syslog.3; und &man.syslogd.8;. Weitere Informationen
zu /etc/syslog.conf, dessen Syntax und
erweiterten Anwendungsbeispielen, finden Sie in
&man.syslog.conf.5;.Management und Rotation von Logdateiennewsyslognewsyslog.conflog rotationlog managementLogdateien können schnell wachsen und viel Speicherplatz
belegen, was es schwieriger macht, nützliche Informationen
zu finden. Log-Management versucht,
diesen Effekt zu mildern. &os; verwendet
newsyslog für die Verwaltung von
Logdateien. Dieses in &os; integrierte Programm
rotiert und komprimiert in regelmäßigen Abständen Logdateien.
Optional kann es auch fehlende Logdateien erstellen und
Programme benachrichtigen, wenn Logdateien verschoben wurden.
Die Logdateien können von syslogd
oder einem anderen Programm generiert werden. Obwohl
newsyslog normalerweise von
&man.cron.8; aufgerufen wird, ist es kein Systemdämon. In der
Standardkonfiguration wird dieser Job jede Stunde
ausgeführt.Um zu wissen, welche Maßnahmen zu ergreifen sind, liest
newsyslog seine Konfigurationsdatei
/etc/newsyslog.conf. Diese
Konfigurationsdatei enthält eine Zeile für jede Datei, die von
newsyslog verwaltet wird. Jede
Zeile enthält Informationen über den Besitzer der Datei, die
Dateiberechtigungen, wann die Datei rotiert wird, optionale
Flags, welche die Log-Rotation
beeinflussen (bspw. Komprimierung) und Programme, denen ein
Signal geschickt wird, wenn Logdateien rotiert werden. Hier
folgt die Standardkonfiguration in &os;:
- # configuration file for newsyslog
+ # configuration file for newsyslog
# $&os;$
#
# Entries which do not specify the '/pid_file' field will cause the
# syslogd process to be signalled when that log file is rotated. This
# action is only appropriate for log files which are written to by the
# syslogd process (ie, files listed in /etc/syslog.conf). If there
# is no process which needs to be signalled when a given log file is
# rotated, then the entry for that file should include the 'N' flag.
#
# The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'.
#
# Note: some sites will want to select more restrictive protections than the
# defaults. In particular, it may be desirable to switch many of the 644
# entries to 640 or 600. For example, some sites will consider the
# contents of maillog, messages, and lpd-errs to be confidential. In the
# future, these defaults may change to more conservative ones.
#
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/all.log 600 7 * @T00 J
/var/log/amd.log 644 7 100 * J
/var/log/auth.log 600 7 100 @0101T JC
/var/log/console.log 600 5 100 * J
/var/log/cron 600 3 100 * JC
/var/log/daily.log 640 7 * @T00 JN
/var/log/debug.log 600 7 100 * JC
/var/log/kerberos.log 600 7 100 * J
/var/log/lpd-errs 644 7 100 * JC
/var/log/maillog 640 7 * @T00 JC
/var/log/messages 644 5 100 @0101T JC
/var/log/monthly.log 640 12 * $M1D0 JN
/var/log/pflog 600 3 100 * JB /var/run/pflogd.pid
/var/log/ppp.log root:network 640 3 100 * JC
/var/log/devd.log 644 3 100 * JC
/var/log/security 600 10 100 * JC
/var/log/sendmail.st 640 10 * 168 B
/var/log/utx.log 644 3 * @01T05 B
/var/log/weekly.log 640 5 1 $W6D0 JN
/var/log/xferlog 600 7 100 * JCJede Zeile beginnt mit dem Namen der Protokolldatei, die
rotiert werden soll, optional gefolgt von Besitzer und Gruppe
für rotierende, als auch für neu erstellte Dateien. Das Feld
mode definiert die Zugriffsrechte der
Datei. count gibt an, wie viele rotierte
Dateien aufbewahrt werden sollen. Anhand der
size- und
when-Flags
erkennt newsyslog, wann die Datei
rotiert werden muss. Eine Logdatei wird rotiert, wenn ihre
Größe den Wert von size überschreitet, oder
wenn die Zeit im when-Feld abgelaufen ist.
Ein * bedeutet, dass dieses Feld ignoriert
wird. Das flags-Feld gibt
newsyslog weitere Instruktionen,
zum Beispiel wie eine Datei zu rotieren ist, oder eine Datei
zu erstellen falls diese nicht existiert. Die letzten beiden
Felder sind optional und bestimmen die
PID-Datei und wann die Datei rotiert
wird.Weitere Informationen zu allen Feldern, gültigen
Flags und wie Sie die
Rotationszeit angeben können, finden Sie in
&man.newsyslog.conf.5;. Denken Sie daran, dass
newsyslog von &man.cron.8;
aufgerufen wird und somit Dateien auch nur dann rotiert, wenn
es von &man.cron.8; aufgerufen wird, und nicht
häufiger.Protokollierung von anderen HostsTomRhodesBeigetragen von BenedictReuschlingÜbersetzt von Die Überwachung der Protokolldateien kann bei steigender
Anzahl von Rechnern sehr unhandlich werden. Eine zentrale
Protokollierung kann manche administrativen Belastungen bei
der Verwaltung von Protokolldateien reduzieren.Die Aggregation, Zusammenführung und Rotation von
Protokolldateien kann in &os; mit
syslogd und
newsyslog konfiguriert werden. In
der folgenden Beispielkonfiguration sammelt Host
A, genannt logserv.example.com,
Protokollinformationen für das lokale Netzwerk. Host
B, genannt logclient.example.com wird
seine Protokollinformationen an den Server
weiterleiten.Konfiguration des ProtokollserversEin Protokollserver ist ein System, welches
Protokollinformationen von anderen Hosts akzeptiert. Bevor
Sie diesen Server konfigurieren, prüfen Sie
folgendes:Falls eine Firewall zwischen dem
Protokollserver und den -Clients steht, muss das
Regelwerk der Firewall UDP auf Port
514 sowohl auf Client- als auch auf Serverseite
freigegeben werden.Der syslogd-Server und alle
Clientrechner müssen gültige Einträge für sowohl
Vorwärts- als auch Umkehr-DNS
besitzen. Falls im Netzwerk kein
DNS-Server vorhanden ist, muss auf
jedem System die Datei /etc/hosts
mit den richtigen Einträgen gepflegt werden. Eine
funktionierende Namensauflösung ist zwingend
erforderlich, ansonsten würde der Server die
Protokollnachrichten ablehnen.Bearbeiten Sie /etc/syslog.conf auf
dem Server. Tragen Sie den Namen des Clients ein, den
Verbindungsweg und den Namen der Protokolldatei. Dieses
Beispiel verwendet den Rechnernamen
B, alle Verbindungswege, und die
Protokolle werden in
/var/log/logclient.log
gespeichert.Einfache Server Konfiguration+logclient.example.com
*.* /var/log/logclient.logFügen Sie für jeden Client zwei Zeilen hinzu, falls Sie
mehrere Clients in diese Datei aufnehmen. Weitere
Informationen über die verfügbaren Verbindungswege finden
Sie in &man.syslog.conf.5;.Konfigurieren Sie als nächstes
/etc/rc.conf:syslogd_enable="YES"
syslogd_flags="-a logclient.example.com -v -v"Der erste Eintrag startet syslogd
während des Bootens. Der zweite Eintrag erlaubt es, Daten
von dem spezifizierten Client auf diesem Server zu
akzeptieren. Die Verwendung von
erhöht die Anzahl von Protokollnachrichten. Dies ist
hilfreich für die Feineinstellung der Verbindungswege, da
Administratoren auf diese Weise erkennen, welche Arten von
Nachrichten von welchen Verbindungswegen protokolliert
werden.Mehrere -Optionen können angegeben
werden, um die Protokollierung von mehreren Clients zu
erlauben. IP-Adressen und ganze
Netzblöcke können ebenfalls spezifiziert werden. Eine
vollständige Liste der Optionen finden Sie in
&man.syslogd.8;.Zum Schluss muss die Protokolldatei erstellt
werden:&prompt.root; touch /var/log/logclient.logZu diesem Zeitpunkt sollte syslogd
neu gestartet und überprüft werden:&prompt.root; service syslogd restart
&prompt.root; pgrep syslogWenn eine PID zurückgegeben wird,
wurde der Server erfolgreich neu gestartet und die
Clientkonfiguration kann beginnen. Wenn der Server nicht
neu gestartet wurde, suchen Sie in
/var/log/messages nach dem
Fehler.Konfiguration des ProtokollclientsEin Protokollclient sendet Protokollinformationen
an einen Protokollserver. Zusätzlich behält er eine
lokale Kopie seiner eigenen Protokolle.Sobald der Server konfiguriert ist, bearbeiten Sie
/etc/rc.conf auf dem Client:syslogd_enable="YES"
syslogd_flags="-s -v -v"Der erste Eintrag aktiviert den
syslogd-Dienst während des Systemstarts.
Der zweite Eintrag erhöht die Anzahl der
Protokollnachrichten. Die Option
verhindert, dass dieser Client Protokolle von anderen
Hosts akzeptiert.Als nächstes muss der Protokollserver in der
/etc/syslog.conf des Clients
eingetragen werden. In diesem Beispiel wird das
@-Symbol benutzt, um sämtliche
Protokolldaten an einen bestimmten Server zu senden:*.* @logserv.example.comNachdem die Änderungs gespeichert wurden, muss
syslogd neu gestartet werden, damit die
Änderungen wirksam werden:&prompt.root; service syslogd restartUm zu testen, ob Protokollnachrichten über das Netzwerk
gesendet werden, kann &man.logger.1; auf dem Client benutzt
werden, um eine Nachricht an
syslogd zu schicken:&prompt.root; logger "Test message from logclient"Diese Nachricht sollte jetzt sowohl in
/var/log/messages auf dem Client, als
auch in /var/log/logclient.log auf dem
Server vorhanden sein.Fehlerbehebung beim ProtokollserverWenn der Server keine Nachrichten empfängt, ist die
Ursache wahrscheinlich ein Netzwerkproblem, ein Problem bei
der Namensauflösung oder ein Tippfehler in einer
Konfigurationsdatei. Um die Ursache zu isolieren, müssen
Sie sicherstellen, dass sich Server und Client über den in
/etc/rc.conf konfigurierten Hostnamen
mit ping erreichen lässt. Falls dies
nicht gelingt sollten Sie die Netzwerkverkabelung
überprüfen, außerdem Firewallregeln sowie die Einträge für
Hosts im DNS und
/etc/hosts. Überprüfen Sie diese Dinge
auf dem Server und dem Client, bis der
ping von beiden Hosts erfolgreich
ist.Wenn sich die Hosts gegenseitig mit
ping erreichen können, der Server aber
immer noch keine Nachrichten empfängt, können Sie
vorübergehend die Ausführlichkeit der Protokollierung
erhöhen, um die Ursache für das Problem weiter einzugrenzen.
In dem folgenden Beispiel ist auf dem Server die Datei
/var/log/logclient.log leer und in der
Datei /var/log/messages auf dem Client
ist keine Ursache für das Problem erkennbar. Um nun die
Ausführlichkeit der Protokollierung zu erhöhen, passen Sie
auf dem Server den Eintrag syslogd_flags
an. Anschließend starten Sie den Dienst neu:syslogd_flags="-d -a logclient.example.com -v -v"&prompt.root; service syslogd restartInformationen wie diese werden sofort nach dem Neustart
auf der Konsole erscheinen:logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
syslogd: restarted
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
Logging to FILE /var/log/messages
syslogd: kernel boot file is /boot/kernel/kernel
cvthname(192.168.1.10)
validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
rejected in rule 0 due to name mismatch.In diesem Beispiel werden die Nachrichten aufgrund eines
fehlerhaften Namens abgewiesen. Der Hostname sollte
logclient und nicht
logclien sein. Beheben Sie den
Tippfehler, starten Sie den Dienst neu und überprüfen Sie
das Ergebnis:&prompt.root; service syslogd restart
logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
syslogd: restarted
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
syslogd: kernel boot file is /boot/kernel/kernel
logmsg: pri 166, flags 17, from logserv.example.com,
msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2
cvthname(192.168.1.10)
validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
accepted in rule 0.
logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2
Logging to FILE /var/log/logclient.log
Logging to FILE /var/log/messagesZu diesem Zeitpunkt werden die Nachrichten korrekt
empfangen und in die richtige Datei geschrieben.SicherheitsbedenkenWie mit jedem Netzwerkdienst, müssen
Sicherheitsanforderungen in Betracht gezogen werden, bevor
ein Protokollserver eingesetzt wird. Manchmal enthalten
Protokolldateien sensitive Daten über aktivierte Dienste auf
dem lokalen Rechner, Benutzerkonten und Konfigurationsdaten.
Daten, die vom Client an den Server geschickt werden, sind
weder verschlüsselt noch mit einem Passwort geschützt. Wenn
ein Bedarf für Verschlüsselung besteht, ist es möglich
security/stunnel zu verwenden, welches
die Protokolldateien über einen verschlüsselten Tunnel
versendet.Lokale Sicherheit ist ebenfalls ein Thema.
Protokolldateien sind während der Verwendung oder nach ihrer
Rotation nicht verschlüsselt. Lokale Benutzer versuchen
vielleicht, auf diese Dateien zuzugreifen, um zusätzliche
Einsichten in die Systemkonfiguration zu erlangen. Es ist
absolut notwendig, die richtigen Berechtigungen auf diesen
Dateien zu setzen. Das Werkzeug
newsyslog unterstützt
das Setzen von Berechtigungen auf gerade erstellte oder
rotierte Protokolldateien. Protokolldateien mit
Zugriffsmodus 600 sollten verhindern,
dass lokale Benutzer darin herumschnüffeln. Zusätzliche
Informationen finden Sie in &man.newsyslog.conf.5;.Konfigurationsdateien/etc LayoutKonfigurationsdateien finden sich in einigen
Verzeichnissen unter anderem in:/etcEnthält generelle systemspezifische
Konfigurationsinformationen./etc/defaultsDefault Versionen der
Konfigurationsdateien./etc/mailEnthält die &man.sendmail.8; Konfiguration
und weitere MTA
Konfigurationsdateien./etc/pppHier findet sich die Konfiguration für
die User- und Kernel-ppp Programme./etc/namedbDas Vorgabeverzeichnis, in dem Daten von
&man.named.8; gehalten werden. Normalerweise
werden hier named.conf und
Zonendaten abgelegt./usr/local/etcInstallierte Anwendungen legen hier ihre
Konfigurationsdateien ab. Dieses Verzeichnis kann
Unterverzeichnisse für bestimmte Anwendungen
enthalten./usr/local/etc/rc.d&man.rc.8;-Skripten installierter
Anwendungen./var/dbAutomatisch generierte systemspezifische
Datenbanken, wie die Paket-Datenbank oder die
&man.locate.1;-Datenbank.HostnamenhostnameDNS/etc/resolv.confresolv.confWie ein &os;-System auf das
Internet Domain Name System
(DNS) zugreift, wird in
/etc/resolv.conf festgelegt.Die gebräuchlichsten Einträge in
/etc/resolv.conf sind:nameserverDie IP-Adresse eines Nameservers, den
der Resolver abfragen soll. Bis zu drei Server
werden in der Reihenfolge, in der sie aufgezählt
sind, abgefragt.searchSuchliste mit Domain-Namen zum Auflösen von
Hostnamen. Die Liste wird normalerweise durch den
Domain-Teil des lokalen Hostnamens
festgelegt.domainDer lokale Domain-Name.Beispiel für eine typische
/etc/resolv.conf:search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30Nur eine der Anweisungen search
oder domain sollte benutzt
werden.Wenn Sie DHCP benutzen, überschreibt
&man.dhclient.8; für gewöhnlich
/etc/resolv.conf mit den Informationen
vom DHCP-Server./etc/hostshosts/etc/hosts ist eine einfache
textbasierte Datenbank. Zusammen mit DNS
und NIS stellt sie eine Abbildung
zwischen Namen und IP-Adressen zur
Verfügung. Anstatt &man.named.8; zu konfigurieren, können
hier lokale Rechner, die über ein LAN
verbunden sind, eingetragen werden. Lokale Einträge für
gebräuchliche Internet-Adressen in
/etc/hosts verhindern die Abfrage eines
externen Servers und beschleunigen die
Namensauflösung.
- # $FreeBSD$
+ # $FreeBSD$
#
#
# Host Database
#
# This file should contain the addresses and aliases for local hosts that
# share this file. Replace 'my.domain' below with the domainname of your
# machine.
#
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
::1 localhost localhost.my.domain
127.0.0.1 localhost localhost.my.domain
#
# Imaginary network.
#10.0.0.2 myname.my.domain myname
#10.0.0.3 myfriend.my.domain myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
# 10.0.0.0 - 10.255.255.255
# 172.16.0.0 - 172.31.255.255
# 192.168.0.0 - 192.168.255.255
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers. Do not try to invent your own network
# numbers but instead get one from your network provider (if any) or
# from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.)
#/etc/hosts hat das folgende
Format:[Internet Adresse] [Offizieller Hostname] [Alias1] [Alias2] ...Zum Beispiel:10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2Weitere Informationen entnehmen Sie bitte
&man.hosts.5;.Einstellungen mit &man.sysctl.8;sysctlEinstellungenmit sysctlMit &man.sysctl.8; können Sie Änderungen an
einem laufenden &os;-System vornehmen. Unter anderem
können Optionen des TCP/IP-Stacks oder des
virtuellen Speichermanagements verändert werden. Unter
der Hand eines erfahrenen Systemadministrators kann dies
die Systemperformance erheblich verbessern. Über 500
Variablen können mit &man.sysctl.8; gelesen und gesetzt
werden.Der Hauptzweck von &man.sysctl.8; besteht darin,
Systemeinstellungen zu lesen und zu verändern.Alle auslesbaren Variablen werden wie folgt
angezeigt:&prompt.user; sysctl -aUm eine spezielle Variable zu lesen, geben Sie den Namen
an:&prompt.user; sysctl kern.maxproc
kern.maxproc: 1044Um eine Variable zu setzen, benutzen Sie die Syntax
Variable=
Wert:&prompt.root; sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000Mit sysctl können Strings, Zahlen oder Boolean-Werte gesetzt
werden. Bei Boolean-Werten steht 1
für wahr und 0 für falsch.Um die Variablen automatisch während des Systemstarts zu
setzen, fügen Sie sie in /etc/sysctl.conf
ein. Weitere Informationen finden Sie in der Hilfeseite
&man.sysctl.conf.5; und in .sysctl.confsysctl.confsysctl/etc/sysctl.conf sieht ähnlich
wie /etc/rc.conf aus. Werte werden
in der Form Variable=Wert gesetzt.
Die angegebenen Werte werden gesetzt, nachdem sich das
System bereits im Mehrbenutzermodus befindet. Allerdings
lassen sich im Mehrbenutzermodus nicht alle Werte
setzen.Um das Protokollieren von fatalen Signalen abzustellen
und Benutzer daran zu hindern, von anderen Benutzern
gestartete Prozesse zu sehen, können Sie in
/etc/sysctl.conf die folgenden
Variablen setzen:# Do not log fatal signal exits (e.g. sig 11)
kern.logsigexit=0
# Prevent users from seeing information about processes that
# are being run under another UID.
security.bsd.see_other_uids=0Schreibgeschützte VariablenTomRhodesContributed by Wenn schreibgeschützte &man.sysctl.8;-Variablen verändert
werden, ist ein Neustart des Systems erforderlich.Beispielsweise hat &man.cardbus.4; auf einigen Laptops
Schwierigkeiten, Speicherbereiche zu erkennen. Es treten
dann Fehlermeldungen wie die folgende auf:cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12Um dieses Problem zu lösen, muss eine
schreibgeschützte &man.sysctl.8;-Variable verändert werden.
Fügen Sie
in /boot/loader.conf hinzu und starten
Sie das System neu. Danach sollte &man.cardbus.4; fehlerfrei
funktionieren.Tuning von LaufwerkenDer folgende Abschnitt beschreibt die verschiedenen
Methoden zur Feinabstimmung der Laufwerke. Oft sind mechanische
Teile in Laufwerken, wie SCSI-Laufwerke,
verbaut. Diese können einen Flaschenhals bei der Gesamtleistung
des Systems darstellen. Sie können zwar auch ein Laufwerk ohne
mechanische Teile einbauen, wie z.B. ein
Solid-State-Drive, aber Laufwerke
mit mechanischen Teilen werden auch in naher Zukunft nicht vom
Markt verschwinden. Bei der Feinabstimmung ist es ratsam, die
Funktionen von &man.iostat.8; zu verwenden, um verschiedene
Änderungen zu testen und um nützliche
IO-Informationen des Systems zu
erhalten.Sysctl Variablenvfs.vmiodirenablevfs.vmiodirenableDie &man.sysctl.8;-Variable
vfs.vmiodirenable besitzt in der
Voreinstellung den Wert 1. Die Variable
kann auf den Wert 0 (deaktiviert) oder
1 (aktiviert) gesetzt werden. Sie
steuert, wie Verzeichnisse vom System zwischengespeichert
werden. Die meisten Verzeichnisse sind klein und benutzen
nur ein einzelnes Fragment, typischerweise 1 kB, im
Dateisystem und 512 Bytes im Buffer-Cache. Ist
die Variable deaktiviert, wird der Buffer-Cache nur
eine limitierte Anzahl Verzeichnisse zwischenspeichern, auch
wenn das System über sehr viel Speicher verfügt.
Ist die Variable aktiviert, kann der Buffer-Cache
den VM-Page-Cache benutzen, um
Verzeichnisse zwischenzuspeichern. Der ganze Speicher steht
damit zum Zwischenspeichern von Verzeichnissen zur
Verfügung. Der Nachteil bei dieser Vorgehensweise ist, dass
zum Zwischenspeichern eines Verzeichnisses mindestens eine
physikalische Seite im Speicher, die normalerweise 4 kB
groß ist, anstelle von 512 Bytes gebraucht wird. Es
wird empfohlen, diese Option aktiviert zu lassen, wenn Sie
Dienste zur Verfügung stellen, die viele Dateien
manipulieren. Beispiele für solche Dienste sind Web-Caches,
große Mail-Systeme oder Netnews. Die aktivierte
Variable vermindert, trotz des verschwendeten Speichers,
in aller Regel nicht die Leistung des Systems, obwohl Sie
das nachprüfen sollten.vfs.write_behindvfs.write_behindIn der Voreinstellung besitzt die
&man.sysctl.8;-Variable vfs.write_behind
den Wert 1 (aktiviert). Mit dieser
Einstellung schreibt das Dateisystem anfallende vollständige
Cluster, die besonders beim sequentiellen Schreiben großer
Dateien auftreten, direkt auf das Medium aus. Dies
verhindert, dass sich im Buffer-Cache veränderte Puffer
(dirty buffers) ansammeln,
die die I/O-Verarbeitung nicht mehr beschleunigen würden.
Unter bestimmten Umständen blockiert diese Funktion
allerdings Prozesse. Setzen Sie in diesem Fall die Variable
vfs.write_behind auf den Wert
0.vfs.hirunningspacevfs.hirunningspaceDie &man.sysctl.8;-Variable
vfs.hirunningspace bestimmt systemweit
die Menge ausstehender Schreiboperationen, die dem
Platten-Controller zu jedem beliebigen Zeitpunkt übergeben
werden können. Normalerweise können Sie den Vorgabewert
verwenden. Auf Systemen mit vielen Platten kann der Wert
aber auf 4 bis 5 Megabyte erhöht
werden. Ein zu hoher Wert (größer als der
Schreib-Schwellwert des Buffer-Caches) kann zu
Leistungsverlusten führen. Setzen Sie den Wert daher nicht
zu hoch! Hohe Werte können auch Leseoperationen verzögern,
die gleichzeitig mit Schreiboperationen ausgeführt
werden.Es gibt weitere &man.sysctl.8;-Variablen, mit denen Sie
den Buffer-Cache und den VM-Page-Cache
beeinflussen können. Es wird nicht empfohlen, diese
Variablen zu verändern, da das VM-System
den virtuellen Speicher selbst sehr gut verwaltet.vm.swap_idle_enabledvm.swap_idle_enabledDie &man.sysctl.8;-Variable
vm.swap_idle_enabled ist für große
Mehrbenutzer-Systeme gedacht, auf denen sich viele Benutzer
an- und abmelden und auf denen es viele Prozesse im Leerlauf
(idle) gibt. Solche Systeme
fragen kontinuierlich freien Speicher an. Wenn Sie die
Variable vm.swap_idle_enabled aktivieren,
können Sie die Auslagerungs-Hysterese von Seiten mit
den Variablen vm.swap_idle_threshold1 und
vm.swap_idle_threshold2 einstellen. Die
Schwellwerte beider Variablen geben die Zeit in Sekunden an,
in denen sich ein Prozess im Leerlauf befinden muss. Wenn
die Werte so eingestellt sind, dass Seiten früher als nach
dem normalen Algorithmus ausgelagert werden, verschafft das
dem Auslagerungs-Prozess mehr Luft. Aktivieren Sie diese
Funktion nur, wenn Sie sie wirklich benötigen: Die
Speicherseiten werden eher früher als später ausgelagert.
Der Platz im Swap-Bereich wird dadurch schneller verbraucht
und die Plattenaktivitäten steigen an. Auf kleinen
Systemen hat diese Funktion spürbare Auswirkungen. Auf
großen Systemen, die sowieso schon Seiten auslagern müssen,
können ganze Prozesse leichter in den Speicher geladen oder
ausgelagert werden.hw.ata.wchw.ata.wcObwohl das Abstellen des
IDE-Schreib-Zwischenspeichers die
Bandbreite zum Schreiben auf die
IDE-Festplatte verringert, kann es aus
Gründen der Datenkonsistenz als notwendig angesehen werden.
Das Problem ist, dass IDE-Platten keine
zuverlässige Aussage über das Ende eines Schreibvorgangs
treffen. Wenn der Schreib-Zwischenspeicher aktiviert ist,
werden die Daten nicht in der Reihenfolge ihres Eintreffens
geschrieben. Es kann sogar passieren, dass das Schreiben
mancher Blöcke im Fall von starker Plattenaktivität auf
unbefristete Zeit verzögert wird. Ein Absturz oder
Stromausfall zu dieser Zeit kann die Dateisysteme erheblich
beschädigen. Sie sollten den Wert der
&man.sysctl.8;-Variable hw.ata.wc auf dem
System überprüfen. Wenn der Schreib-Zwischenspeicher
abgestellt ist, können Sie ihn beim Systemstart aktivieren,
indem Sie die Variable in
/boot/loader.conf auf den Wert
1 setzen.Weitere Informationen finden Sie in &man.ata.4;.SCSI_DELAY
(kern.cam.scsi_delay)kern.cam.scsi_delayKerneloptionenSCSI DELAYMit der Kerneloption SCSI_DELAY kann
die Dauer des Systemstarts verringert werden. Der
Vorgabewert ist recht hoch und er verzögert den Systemstart
um 15 oder mehr Sekunden. Normalerweise
kann dieser Wert, insbesondere mit modernen Laufwerken, mit
der &man.sysctl.8;-Variable
kern.cam.scsi_delay auf
5 Sekunden heruntergesetzt werden. Die
Variable sowie die Kerneloption verwenden für die Zeitangabe
Millisekunden und nicht
Sekunden.Soft UpdatesSoft Updates&man.tunefs.8;Mit &man.tunefs.8; lassen sich Feineinstellungen an
Dateisystemen vornehmen. Das Programm hat verschiedene
Optionen. Soft Updates werden wie folgt ein- und
ausgeschaltet:&prompt.root; tunefs -n enable /filesystem
&prompt.root; tunefs -n disable /filesystemEin eingehängtes Dateisystem kann nicht mit &man.tunefs.8;
modifiziert werden. Soft Updates werden am besten im
Single-User Modus aktiviert, bevor Partitionen eingehangen
sind.Durch Einsatz eines Zwischenspeichers wird die Performance
im Bereich der Metadaten, vorwiegend beim Anlegen und Löschen
von Dateien, gesteigert. Es wird empfohlen, Soft Updates auf
allen UFS-Dateisystemen zu aktivieren.
Allerdings sollten Sie sich über die zwei Nachteile von Soft
Updates bewusst sein: Erstens garantieren Soft Updates zwar
die Konsistenz der Daten im Fall eines Absturzes, aber es kann
passieren, dass das Dateisystem über mehrere Sekunden oder gar
eine Minute nicht synchronisiert wurde. Nicht geschriebene
Daten gehen dann vielleicht verloren. Zweitens verzögern Soft
Updates die Freigabe von Datenblöcken. Eine größere
Aktualisierung eines fast vollen Dateisystems, wie dem
Root-Dateisystem, z.B. während eines
make installworld, kann das Dateisystem
vollaufen lassen. Dadurch würde die Aktualisierung
fehlschlagen.Details über Soft UpdatesSoft UpdatesDetailsBei einem Metadaten-Update werden die Inodes und
Verzeichniseinträge aktualisiert auf die Platte
zurückgeschrieben. Es gibt zwei klassische Ansätze, um die
Metadaten des Dateisystems auf die Platte zu
schreiben.Das historisch übliche Verfahren waren synchrone
Updates der Metadaten, d. h. wenn eine Änderung an
einem Verzeichnis nötig war, wurde anschließend
gewartet, bis diese Änderung tatsächlich auf die
Platte zurückgeschrieben worden war. Der
Inhalt der Dateien wurde im
Buffer Cache zwischengespeichert und
später asynchron auf die Platte geschrieben.
Der Vorteil dieser Implementierung ist, dass sie
sicher funktioniert. Wenn während eines Updates ein
Ausfall erfolgt, haben die Metadaten immer einen
konsistenten Zustand. Eine Datei ist entweder komplett
angelegt oder gar nicht. Wenn die Datenblöcke einer
Datei im Fall eines Absturzes noch nicht den Weg aus dem
Buffer Cache auf die Platte gefunden haben,
kann &man.fsck.8; das Dateisystem reparieren, indem es die
Dateilänge einfach auf 0 setzt. Außerdem
ist die Implementierung einfach und überschaubar. Der
Nachteil ist, dass Änderungen der Metadaten sehr
langsam vor sich gehen. Ein rm -r
beispielsweise fasst alle Dateien eines Verzeichnisses
der Reihe nach an, aber jede dieser Änderungen am
Verzeichnis (Löschen einer Datei) wird einzeln synchron
auf die Platte geschrieben. Gleiches beim Auspacken
großer Hierarchien mit tar -x.Der zweite Ansatz sind asynchrone Metadaten-Updates.
Das ist der Standard, wenn
UFS-Dateisysteme mit
mount -o async eingehängt werden. Man
schickt die Updates der Metadaten einfach auch noch
über den Buffer Cache, sie werden also
zwischen die Updates der normalen Daten eingeschoben.
Vorteil ist, dass man nun nicht mehr auf jeden Update
warten muss, Operationen, die zahlreiche Metadaten
ändern, werden also viel schneller. Auch
hier ist die Implementierung sehr einfach und wenig
anfällig für Fehler. Nachteil ist, dass
keinerlei Konsistenz des Dateisystems mehr gesichert ist.
Wenn mitten in einer Operation, die viele Metadaten
ändert, ein Ausfall erfolgt (Stromausfall, drücken
des Reset-Schalters), dann ist das Dateisystem
anschließend in einem unbestimmten Zustand. Niemand
kann genau sagen, was noch geschrieben worden ist und was
nicht mehr; die Datenblöcke einer Datei können
schon auf der Platte stehen, während die inode Tabelle
oder das zugehörige Verzeichnis nicht mehr aktualisiert
worden ist. Man kann praktisch kein &man.fsck.8;
mehr implementieren, das diesen Zustand
wieder reparieren kann, da die dazu nötigen
Informationen einfach auf der Platte fehlen. Wenn ein
Dateisystem irreparabel beschädigt wurde, hat man nur noch
die Möglichkeit es neu zu erzeugen und die Daten vom Backup
zurückspielen.Der Ausweg aus diesem Dilemma ist ein
dirty region logging, was auch als
Journalling bezeichnet wird. Man
schreibt die Metadaten-Updates zwar synchron, aber nur in
einen kleinen Plattenbereich, die
logging area. Von da aus werden sie
dann asynchron auf ihre eigentlichen Bereiche verteilt. Da
die logging area ein kleines
zusammenhängendes Stückchen ist, haben die
Schreibköpfe der Platte bei massiven Operationen auf
Metadaten keine allzu großen Wege zurückzulegen,
so dass alles ein ganzes Stück schneller geht als
bei klassischen synchronen Updates. Die Komplexität
der Implementierung hält sich ebenfalls in Grenzen,
somit auch die Anfälligkeit für Fehler. Als
Nachteil ergibt sich, dass Metadaten zweimal auf die
Platte geschrieben werden müssen (einmal in die
logging area, einmal an die richtige
Stelle), so dass das im Falle regulärer
Arbeit (also keine gehäuften Metadatenoperationen) eine
Pessimisierung des Falls der synchronen
Updates eintritt, es wird alles langsamer. Dafür hat man
als Vorteil, dass im Falle eines Absturzes der
konsistente Zustand dadurch erzielbar ist, dass die
angefangenen Operationen aus dem dirty region
log entweder zu Ende ausgeführt oder
komplett verworfen werden, wodurch das Dateisystem schnell
wieder zur Verfügung steht.Die Lösung von Kirk McKusick, dem Schöpfer von
Berkeley FFS, waren
Soft Updates: die
notwendigen Updates der Metadaten werden im Speicher
gehalten und dann sortiert auf die Platte geschrieben
(ordered metadata updates). Dadurch hat man
den Effekt, dass im Falle massiver
Metadaten-Änderungen spätere Operationen die
vorhergehenden, noch nicht auf die Platte geschriebenen
Updates desselben Elements im Speicher
einholen. Alle Operationen, auf ein
Verzeichnis beispielsweise, werden also in der Regel noch im
Speicher abgewickelt, bevor der Update überhaupt auf
die Platte geschrieben wird (die dazugehörigen
Datenblöcke werden natürlich auch so sortiert,
dass sie nicht vor ihren Metadaten auf der Platte
sind). Im Fall eines Absturzes hat man ein implizites
log rewind: alle Operationen, die noch nicht
den Weg auf die Platte gefunden haben, sehen danach so aus,
als hätten sie nie stattgefunden. Man hat so also den
konsistenten Zustand von ca. 30 bis 60 Sekunden früher
sichergestellt. Der verwendete Algorithmus garantiert
dabei, dass alle tatsächlich benutzten Ressourcen
auch in den entsprechenden Bitmaps (Block- und inode
Tabellen) als belegt markiert sind. Der einzige Fehler, der
auftreten kann, ist, dass Ressourcen noch als
belegt markiert sind, die tatsächlich
frei sind. &man.fsck.8; erkennt dies und
korrigiert diese nicht mehr belegten Ressourcen. Die
Notwendigkeit eines Dateisystem-Checks darf aus diesem
Grunde auch ignoriert und das Dateisystem mittels
mount -f zwangsweise eingebunden werden.
Um noch allozierte Ressourcen freizugeben muss
später ein &man.fsck.8; nachgeholt werden. Das ist
dann auch die Idee des background fsck:
beim Starten des Systems wird lediglich ein
Schnappschuss des Dateisystems
gemacht, mit dem &man.fsck.8; dann später arbeiten
kann. Alle Dateisysteme dürfen unsauber
eingebunden werden und das System kann sofort in den
Multiuser-Modus gehen. Danach wird ein
Hintergrund-&man.fsck.8; für die Dateisysteme gestartet, die
dies benötigen, um möglicherweise irrtümlich belegte
Ressourcen freizugeben. Dateisysteme ohne
Soft Updates benötigen natürlich immer
noch den üblichen Vordergrund-&man.fsck.8;, bevor sie
eingebunden werden können.Der Vorteil ist, dass die Metadaten-Operationen
beinahe so schnell ablaufen wie im asynchronen Fall, also
auch schneller als beim logging, das
die Metadaten immer zweimal schreiben muss. Als Nachteil
stehen dem die Komplexität des Codes, ein erhöhter
Speicherverbrauch und einige spezielle Eigenheiten entgegen.
Nach einem Absturz ist ein etwas älterer
Stand auf der Platte – statt einer leeren, aber
bereits angelegten Datei, wie nach einem herkömmlichen
&man.fsck.8; Lauf, ist auf einem Dateisystem mit
Soft Updates keine Spur der
entsprechenden Datei mehr zu sehen, da weder die Metadaten
noch der Dateiinhalt je auf die Platte geschrieben wurden.
Weiterhin kann der Platz nach einem &man.rm.1;
nicht sofort wieder als verfügbar markiert werden,
sondern erst dann, wenn der Update auch auf die Platte
vermittelt worden ist. Dies kann besonders dann Probleme
bereiten, wenn große Datenmengen in einem Dateisystem
installiert werden, das nicht genügend Platz hat, um alle
Dateien zweimal unterzubringen.Einstellungen von Kernel LimitsEinstellungenvon Kernel LimitsDatei und Prozeß Limitskern.maxfileskern.maxfilesAbhängig von den Anforderungen an das System kann die
&man.sysctl.8;-Variable kern.maxfiles
erhöht oder gesenkt werden. Die Variable legt die maximale
Anzahl von Dateideskriptoren auf dem System fest. Wenn die
Dateideskriptoren aufgebraucht sind, werden Sie die Meldung
file: table is full wiederholt im
Puffer für Systemmeldungen sehen. Den Inhalt des Puffers
können Sie sich mit &man.dmesg.8; anzeigen lassen.Jede offene Datei, jedes Socket und jede FIFO verbraucht
einen Dateideskriptor. Auf dicken
Produktionsservern können leicht Tausende Dateideskriptoren
benötigt werden, abhängig von der Art und Anzahl der
gleichzeitig laufenden Dienste.In älteren &os;-Versionen wurde die Voreinstellung
von kern.maxfile aus der
Kernelkonfigurationsoption maxusers
bestimmt. kern.maxfiles wächst
proportional mit dem Wert von maxusers.
Wenn Sie einen angepassten Kernel kompilieren, empfiehlt es
sich diese Option entsprechend der maximalen Benutzerzahl
des Systems einzustellen. Obwohl auf einer
Produktionsmaschine vielleicht nicht 256 Benutzer
gleichzeitig angemeldet sind, können die benötigten
Ressourcen ähnlich hoch wie bei einem großen Webserver
sein.Die nur lesbare &man.sysctl.8;-Variable
kern.maxusers wird beim Systemstart
automatisch aus dem zur Verfügung stehenden Hauptspeicher
bestimmt. Im laufenden Betrieb kann dieser Wert aus
kern.maxusers ermittelt werden. Einige
Systeme benötigen für diese Variable einen anderen Wert,
wobei 64, 128 und
256 gewöhnliche Werte darstellen.
Es wird nicht empfohlen, die Anzahl der Dateideskriptoren
auf einen Wert größer 256 zu setzen, es
sei denn, Sie benötigen wirklich eine riesige Anzahl von
ihnen. Viele der von kern.maxusers auf
einen Standardwert gesetzten Parameter können beim
Systemstart oder im laufenden Betrieb in
/boot/loader.conf angepasst werden.
In &man.loader.conf.5; und
/boot/defaults/loader.conf finden Sie
weitere Details und Hinweise.Ältere &os;-Versionen setzen diesen Wert selbst, wenn
Sie in der Konfigurationsdatei den Wert 0Der verwendete Algorithmus setzt
maxusers auf die Speichergröße des
Systems. Der minimale Wert beträgt dabei
32, das Maximum ist
384.
angeben. Wenn Sie den Wert selbst bestimmen wollen,
sollten Sie maxusers mindestens auf
4 setzen. Dies gilt insbesondere dann,
wenn Sie beabsichtigen, &xorg; zu
benutzen oder Software zu kompilieren. Der wichtigste Wert,
der durch maxusers bestimmt wird, die
maximale Anzahl an Prozessen ist, die auf
20 + 16 * maxusers gesetzt wird. Wird
maxusers auf 1 setzen,
können gleichzeitig nur 36 Prozesse
laufen, von denen ungefähr 18 schon beim
Booten des Systems gestartet werden. Dazu kommen nochmals
etwa 15 Prozesse beim Start von
&xorg;. Selbst eine einfache
Aufgabe wie das Lesen einer Manualpage benötigt neun
Prozesse zum Filtern, Dekomprimieren und Betrachten der
Datei. Für die meisten Benutzer sollte es ausreichen,
maxusers auf 64 zu
setzen, womit 1044 gleichzeitige Prozesse
zur Verfügung stehen. Wenn Sie allerdings den Fehler
proc table full beim Start eines
Programms oder auf einem Server mit einer großen
Benutzerzahl sehen, dann sollten Sie den Wert nochmals
erhöhen und den Kernel neu bauen.Die Anzahl der Benutzer, die sich auf einem
Rechner anmelden kann, wird durch
maxusersnicht
begrenzt. Der Wert dieser Variablen legt neben der
möglichen Anzahl der Prozesse eines Benutzers weitere
sinnvolle Größen für bestimmte Systemtabellen fest.kern.ipc.soacceptqueuekern.ipc.soacceptqueueDie &man.sysctl.8;-Variable
kern.ipc.soacceptqueue beschränkt die
Größe der Warteschlange
(Listen-Queue) für neue
TCP-Verbindungen. Der Vorgabewert von
128 ist normalerweise zu klein, um neue
Verbindungen auf einem stark ausgelasteten Webserver
zuverlässig zu handhaben. Auf solchen Servern sollte
der Wert auf 1024 oder höher gesetzt
werden. Dienste wie &man.sendmail.8; oder
Apache können die Größe
der Queue selbst einschränken. Oft gibt es die
Möglichkeit, die Größe der Listen-Queue in
einer Konfigurationsdatei einzustellen. Eine große
Listen-Queue übersteht vielleicht auch einen
Denial of Service Angriff (DoS).Netzwerk LimitsDie Kerneloption NMBCLUSTERS schreibt
die Anzahl der Netzwerkpuffer (Mbufs) fest, die das System
besitzt. Eine zu geringe Anzahl Mbufs auf einem Server mit
viel Netzwerkverkehr verringert die Leistung von &os;. Jeder
Mbuf-Cluster nimmt ungefähr 2 kB Speicher in Anspruch, so
dass ein Wert von 1024 insgesamt
2 Megabyte Speicher für Netzwerkpuffer im System
reserviert. Wie viele Cluster benötigt werden, lässt sich
durch eine einfache Berechnung herausfinden. Ein Webserver,
der maximal 1000 gleichzeitige Verbindungen
servieren soll, wobei jede der Verbindungen einen 6 kB
großen Sendepuffer und einen 16 kB großen Empfangspuffer
benötigt, braucht ungefähr 32 MB Speicher für
Netzwerkpuffer. Als Daumenregel verdoppeln Sie diese Zahl, so
dass sich für NMBCLUSTERS der Wert
2x32 MB / 2 kB=
64 MB / 2 kB=
32768 ergibt. Für Maschinen mit viel
Speicher werden Werte zwischen 4096 und
32768 empfohlen. Unter keinen Umständen
sollten Sie diesen Wert willkürlich erhöhen, da dies zu einem
Absturz beim Systemstart führen kann. Verwenden Sie
&man.netstat.1; mit um den Gebrauch der
Netzwerkpuffer zu kontrollieren.Die Netzwerkpuffer können beim Systemstart mit der
Loader-Variablen kern.ipc.nmbclusters
eingestellt werden. Nur auf älteren &os;-Systemen
müssen Sie die Kerneloption NMBCLUSTERS
verwenden.Die Anzahl der &man.sendfile.2; Puffer muss auf
ausgelasteten Servern, die den Systemaufruf &man.sendfile.2;
oft verwenden, vielleicht erhöht werden. Dazu können Sie die
Kerneloption NSFBUFS verwenden oder die
Anzahl der Puffer in /boot/loader.conf
(siehe &man.loader.8;) setzen. Die Puffer sollten erhöht
werden, wenn Sie Prozesse im Zustand sfbufa
sehen. Die schreibgeschützte &man.sysctl.8;-Variable
kern.ipc.nsfbufs zeigt die Anzahl
eingerichteten Puffer im Kernel. Der Wert dieser Variablen
wird normalerweise von kern.maxusers
bestimmt. Manchmal muss die Pufferanzahl jedoch manuell
eingestellt werden.Auch wenn ein Socket nicht blockierend angelegt wurde,
kann der Aufruf von &man.sendfile.2; blockieren, um auf
freie struct sf_buf Puffer zu
warten.net.inet.ip.portrange.*net.inet.ip.portrange.*Die &man.sysctl.8;-Variable
net.inet.ip.portrange.* legt die
Portnummern für TCP- und
UDP-Sockets fest. Es gibt drei
Bereiche: den niedrigen Bereich, den normalen Bereich und
den hohen Bereich. Die meisten Netzprogramme benutzen den
normalen Bereich. Dieser Bereich umfasst in der
Voreinstellung die Portnummern 1024 bis
5000 und wird durch die Variablen
net.inet.ip.portrange.first und
net.inet.ip.portrange.last
festgelegt. Die festgelegten Bereiche für Portnummern
werden von ausgehenden Verbindungen benutzt. Unter
bestimmten Umständen, beispielsweise auf stark ausgelasteten
Proxy-Servern, sind alle Portnummern für ausgehende
Verbindungen belegt. Bereiche
für Portnummern spielen auf Servern keine Rolle, die
hauptsächlich eingehende Verbindungen verarbeiten (wie ein
normaler Webserver) oder nur eine begrenzte Anzahl
ausgehender Verbindungen öffnen (beispielsweise ein
Mail-Relay). Wenn keine freien Portnummern mehr vorhanden
sind, sollte die Variable
net.inet.ip.portrange.last langsam
erhöht werden. Ein Wert von 10000,
20000 oder 30000 ist
angemessen. Beachten Sie auch eine vorhandene Firewall,
wenn Sie die Bereiche für Portnummern ändern. Einige
Firewalls sperren große Bereiche (normalerweise aus den
kleinen Portnummern) und erwarten, dass hohe Portnummern für
ausgehende Verbindungen verwendet werden. Daher kann es
erforderlich sein, den Wert von
net.inet.ip.portrange.first zu
erhöhen.TCP Bandwidth Delay Product
BegrenzungTCP Bandwidth Delay Product
Begrenzungnet.inet.tcp.inflight.enableDie TCP Bandwidth Delay Product
Begrenzung wird aktiviert, indem die &man.sysctl.8;-Variable
net.inet.tcp.inflight.enable auf den
Wert 1 gesetzt wird. Das System wird
dadurch angewiesen, für jede Verbindung, das Produkt aus der
Übertragungsrate und der Verzögerungszeit zu bestimmen.
Dieses Produkt begrenzt die Datenmenge, die für einen
optimalen Durchsatz zwischengespeichert werden muss.Diese Begrenzung ist nützlich, wenn Sie Daten
über Verbindungen mit einem hohen Produkt aus
Übertragungsrate und Verzögerungszeit wie Modems,
Gigabit-Ethernet oder schnellen WANs, zur
Verfügung stellen. Insbesondere wirkt sich die Begrenzung
aus, wenn die Verbindung die Option
Window-scaling verwendet oder
große Sende-Fenster
(send window) benutzt.
Schalten Sie die Debug-Meldungen aus, wenn Sie die
Begrenzung aktiviert haben. Dazu setzen Sie die Variable
net.inet.tcp.inflight.debug auf
0. Auf Produktions-Systemen sollten Sie
zudem die Variable
net.inet.tcp.inflight.min mindestens auf
den Wert 6144 setzen. Allerdings kann
ein zu hoher Wert, abhängig von der Verbindung, die
Begrenzungsfunktion unwirksam machen. Die Begrenzung
reduziert die Datenmenge in den Queues von Routern und
Switches, sowie die Datenmenge in der Queue der lokalen
Netzwerkkarte. Die Verzögerungszeit
(Round Trip Time) für
interaktive Anwendungen sinkt, da weniger Pakete
zwischengespeichert werden. Dies gilt besonders für
Verbindungen über langsame Modems. Die Begrenzung
wirkt sich allerdings nur auf das Versenden von Daten aus
(Uploads, Server). Auf den Empfang von Daten (Downloads)
hat die Begrenzung keine Auswirkungen.Die Variable
net.inet.tcp.inflight.stab sollte
nicht angepasst werden. Der
Vorgabewert der Variablen beträgt 20,
das heißt es werden maximal zwei Pakete zu dem Produkt
aus Übertragungsrate und Verzögerungszeit addiert.
Dies stabilisiert den Algorithmus und verbessert die
Reaktionszeit auf Veränderungen. Bei langsamen
Verbindungen können sich aber die Laufzeiten der Pakete
erhöhen (ohne diesen Algorithmus wären sie allerdings noch
höher). In solchen Fällen können Sie versuchen, den Wert
der Variablen auf 15,
10 oder 5
herabzusetzen. Gleichzeitig müssen Sie vielleicht auch
net.inet.tcp.inflight.min auf einen
kleineren Wert (beispielsweise 3500)
setzen. Ändern Sie diese Variablen nur ab, wenn Sie
keine anderen Möglichkeiten mehr haben.Virtueller Speicher (Virtual
Memory)kern.maxvnodesEin vnode ist die interne Darstellung einer Datei oder
eines Verzeichnisses. Die Erhöhung der Anzahl der für das
Betriebssystem verfügbaren vnodes verringert also die
Schreib- und Lesezugriffe auf der Festplatte. vnodes
werden im Normalfall vom Betriebssystem automatisch vergeben
und müssen nicht manuell angepasst werden. In einigen
Fällen stellt der Zugriff auf eine Platte allerdings einen
Flaschenhals dar, daher sollten Sie in diesem Fall die
Anzahl der möglichen vnodes erhöhen, um dieses Problem zu
beheben. Beachten Sie dabei aber die Größe des inaktiven
und freien Hauptspeichers.Um die Anzahl der derzeit verwendeten vnodes zu sehen,
geben Sie Folgendes ein:&prompt.root; sysctl vfs.numvnodes
vfs.numvnodes: 91349Die maximal mögliche Anzahl der vnodes erhalten Sie
durch die Eingabe von:&prompt.root; sysctl kern.maxvnodes
kern.maxvnodes: 100000Wenn sich die Anzahl der genutzten vnodes dem maximal
möglichen Wert nähert, sollten Sie den Wert
kern.maxvnodes zuerst um etwa
1000 erhöhen. Beobachten Sie danach die
Anzahl der vom System genutzten
vfs.numvnodes. Nähert sich der Wert
wiederum dem definierten Maximum, müssen Sie
kern.maxvnodes nochmals erhöhen. Sie
sollten nun eine Änderung des Speicherverbrauches über
&man.top.1; registrieren können und über mehr aktiven
Speicher verfügen.Hinzufügen von Swap-BereichenManchmal benötigt ein System mehr Swap-Bereiche. Dieser
Abschnitt beschreibt zwei Methoden, um Swap-Bereiche
hinzuzufügen: auf einer bestehenden Partition oder auf einem
neuen Laufwerk, und das Hinzufügen einer Swap-Datei auf einer
existierenden Partition.Für Informationen zur Verschlüsselung von
Swap-Partitionen, zu den dabei möglichen Optionen sowie
zu den Gründen für eine Verschlüsselung des
Auslagerungsspeichers lesen Sie
.Swap auf einer neuen Festplatte oder einer existierenden
PartitionDas Hinzufügen einer neuen Festplatte für den Swap-Bereich
bietet eine bessere Leistung, als die Verwendung
einer Partition auf einem vorhandenem Laufwerk. Die
Einrichtung von Partitionen und Laufwerken wird in
beschrieben.
diskutiert Aspekte über
die Anordnung und Größe von Swap-Bereichen.Benutzen Sie swapon um eine
Swap-Partition zum System hinzuzufügen. Zum Beispiel:&prompt.root; swapon /dev/ada1s1bSie können jede Partition verwenden, sofern sie nicht
schon eingehangen ist. Das gilt auch dann, wenn die
Partition bereits Daten enthält. Wird
swapon auf
einer Partition ausgeführt die Daten enthält, werden
die vorhandenen Daten überschrieben und sind unweigerlich
verloren. Stellen Sie sicher, dass die Partition, die Sie
als Swap-Bereich hinzufügen möchten, wirklich die gewünschte
Partition ist, bevor Sie swapon
ausführen.Um diese Swap-Partition automatisch beim Systemstart
hinzuzufügen, fügen Sie einen Eintrag in
/etc/fstab hinzu:/dev/ada1s1b none swap sw 0 0Die einzelnen Einträge von /etc/fstab
werden in &man.fstab.5; erläutert. Weitere Informationen zu
swapon finden Sie in &man.swapon.8;.Swap-Dateien erstellenAnstatt eine Partition zu verwenden, erstellen diese
Beispiele eine 64 MB große Swap-Datei mit dem Namen
/usr/swap0.Die Verwendung von Swap-Dateien macht es erforderlich,
dass das Modul &man.md.4; entweder im Kernel vorhanden oder
geladen wird, bevor Swap aktiviert ist. enthält Informationen zum Bau eines
angepassten Kernels.Erstellen einer Swap-Datei unter
&os; 10.X und neuerErstellen Sie die Swap-Datei:&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64Setzen Sie die richtigen Berechtigungen für die neue
Datei:&prompt.root; chmod 0600 /usr/swap0Fügen Sie einen Eintrag in
/etc/fstab hinzu:md99 none swap sw,file=/usr/swap0,late 0 0Das &man.md.4; Gerät md99 wird
verwendet, damit die niedrigeren Gerätenummer für die
interaktive Benutzung frei bleiben.Der Swap-Speicher wird nun automatisch beim
Systemstart hinzugefügt. Benutzen Sie &man.swapon.8; um
den Swap-Speicher direkt zu aktivieren:&prompt.root; swapon -aLErstellen einer Swap-Datei unter
&os; 9.X und älterErstellen Sie die Swap-Datei
/usr/swap0:&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64Setzen Sie die richtigen Berechtigungen für die neue
Datei:&prompt.root; chmod 0600 /usr/swap0Aktivieren Sie die Swap-Datei in
/etc/rc.conf:swapfile="/usr/swap0" # Set to name of swap fileUm die Swap-Datei sofort zu aktivieren,
spezifizieren Sie ein speicherbasiertes Laufwerk.
enthält weitere
Informationen.&prompt.root; mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0Energie- und RessourcenverwaltungHitenPandyaVerfasst von TomRhodesEs ist wichtig, Hardware effizient einzusetzen. Energie-
und Ressourcenverwaltung ermöglicht es dem System auf
verschiedene Ereignisse, beispielsweise einen unerwarteten
Temperaturanstieg, reagieren zu können. Eine frühe
Spezifikation für die Energieverwaltung war das
Advanced Power Management
(APM). APM steuert den
Energieverbrauch eines Systems auf Basis der Systemaktivität.
Ursprünglich konnten Stromverbrauch und Wärmeabgabe eines
Systems nur schlecht von Betriebssystemen gesteuert werden.
Die Hardware wurde vom BIOS gesteuert, was
die Kontrolle der Energieverwaltung für den Anwender erschwerte.
Das APM-BIOS wird von dem
Hersteller des Systems zur Verfügung gestellt und ist auf die
spezielle Hardware angepasst. Der
APM-Treiber des Betriebssystems greift auf
das
APM Software Interface
zu, das den Energieverbrauch regelt.APM hat hauptsächlich vier Probleme.
Erstens läuft die Energieverwaltung unabhängig vom
Betriebssystem in einem herstellerspezifischen
BIOS. Beispielsweise kann das
APM-BIOS die Festplatten
nach einer konfigurierbaren Zeit ohne die Zustimmung des
Betriebssystems herunterfahren. Zweitens befindet sich die
ganze APM-Logik im BIOS;
das Betriebssystem hat gar keine
APM-Komponenten. Bei Problemen mit dem
APM-BIOS muss das
Flash-ROM aktualisiert werden. Diese Prozedur ist gefährlich,
da sie im Fehlerfall das System unbrauchbar machen kann. Zum
Dritten ist APM eine Technik, die
herstellerspezifisch ist und nicht koordiniert wird. Fehler im
BIOS eines Herstellers werden nicht unbedingt
im BIOS anderer Hersteller korrigiert. Das
letzte Problem ist, dass im
APM-BIOS nicht genügend
Platz vorhanden ist, um eine durchdachte oder eine auf den Zweck
der Maschine zugeschnittene Energieverwaltung zu
implementieren.Das Plug and Play BIOS
(PNPBIOS) war in vielen
Situationen ebenfalls unzureichend. Das
PNPBIOS verwendet eine 16-Bit-Technik. Damit
das Betriebssystem das PNPBIOS ansprechen
kann, muss es in einer 16-Bit-Emulation laufen. &os; stellt
einen APM-Treiber zur Verfügung, welcher für
Systeme benutzt werden sollte, die vor dem Jahr 2000 hergestellt
wurden. Der Treiber wird in &man.apm.4; beschrieben.ACPIAPMDer Nachfolger von APM ist das
Advanced Configuration and Power Interface
(ACPI). ACPI ist ein
Standard verschiedener Hersteller, welcher die Verwaltung von
Hardware und Energiesparfunktionen festlegt. Die
ACPI-Funktionen, die mehr Kontrolle und
Flexibilität bieten, können vom Betriebssystem gesteuert
werden.Dieser Abschnitt zeigt die Konfiguration von
ACPI unter &os;. Zudem werden einige Tipps
zur Fehlersuche vorgestellt und wie Sie Problemberichte
einreichen können, sodass Entwickler
ACPI-Probleme erfassen und beheben
können.Konfiguration des ACPIDer &man.acpi.4;-Treiber wird standardmäßig beim
Systemstart vom &man.loader.8; geladen und sollte daher
nicht fest in den Kernel eingebunden
werden. Der Treiber kann im laufenden Betrieb nicht entfernt
werden, da er zur Kommunikation mit der Hardware verwendet
wird. Falls jedoch Probleme auftreten, kann
ACPI auch komplett deaktiviert werden.
Dazu muss hint.acpi.0.disabled="1" in
/boot/loader.conf gesetzt und
anschließend das System neu gestartet werden. Alternativ
können Sie diese Variable auch am &man.loader.8;-Prompt
eingeben, wie in
beschrieben.ACPI und APM
können nicht zusammen verwendet werden. Das zuletzt
geladene Modul beendet sich, sobald es bemerkt, dass das
andere Modul geladen ist.Mit acpiconf können Sie das System in
einen Ruhemodus (sleep mode)
versetzen. Es gibt verschiedene Modi
(von 1 bis 5), die Sie
auf der Kommandozeile mit angeben können.
Für die meisten Anwender sind die Modi 1
und 3 völlig ausreichend. Der Modus
5 schaltet das System
aus (Soft-off) und entspricht
dem Befehl halt -p.Verschiedene Optionen können mit sysctl
gesetzt werden. Lesen Sie dazu &man.acpi.4; sowie
&man.acpiconf.8;.Häufige ProblemeACPIACPI gibt es in allen modernen Rechnern
der ia32- (x86), ia64- (Itanium) und amd64-
(AMD) Architektur.
Der vollständige Standard bietet Funktionen zur Steuerung und
Verwaltung der CPU-Leistung, der
Stromversorgung, von Wärmebereichen, Batterien, eingebetteten
Controllern und Bussen. Auf den meisten Systemen wird nicht
der vollständige Standard implementiert. Arbeitsplatzrechner
besitzen meist nur Funktionen zur Verwaltung der Busse,
während Notebooks Funktionen zur Temperaturkontrolle und
Ruhezustände besitzen.Ein ACPI konformes System besitzt
verschiedene Komponenten. Die BIOS- und
Chipsatz-Hersteller stellen mehrere statische Tabellen bereit,
zum Beispiel die
Fixed-ACPI-Description-Table
(FADT). Die Tabellen enthalten
beispielsweise die mit SMP-Systemen
benutzte APIC-Map, Konfigurationsregister
und einfache Konfigurationen. Zusätzlich gibt es die
Differentiated-System-Description-Table
(DSDT), die Bytecode enthält. Die Tabelle
ordnet Geräte und Methoden in einem baumartigen Namensraum
an.Ein ACPI-Treiber muss die statischen
Tabellen einlesen, einen Interpreter für den Bytecode
bereitstellen und die Gerätetreiber im Kernel so
modifizieren, dass sie mit dem
ACPI-Subsystem kommunizieren. Für &os;,
&linux; und NetBSD hat &intel; den Interpreter
ACPI-CA, zur Verfügung gestellt. Der
Quelltext zu ACPI-CA befindet sich im
Verzeichnis src/sys/contrib/dev/acpica.
Die Schnittstelle von ACPI-CA zu &os;
befindet sich unter
src/sys/dev/acpica/Osd. Treiber, die
verschiedene ACPI-Geräte implementieren,
befinden sich im Verzeichnis
src/sys/dev/acpica.ACPIProbleme mitDamit ACPI richtig funktioniert,
müssen alle Teile funktionieren. Im Folgenden
finden Sie eine Liste mit Problemen und möglichen
Abhilfen oder Korrekturen. Die Liste ist nach
der Häufigkeit, mit der die Probleme auftreten,
sortiert. Wenn eine Korrektur das Problem nicht
behebt, finden Sie in
Anweisungen, wie Sie einen Problembericht einreichen
können.MausproblemeEs kann vorkommen, dass die Maus nicht mehr
funktioniert, wenn Sie nach einem Suspend weiterarbeiten
wollen. Ist dies bei Ihnen der Fall, reicht es meistens
aus, den Eintrag
hint.psm.0.flags="0x3000" in
/boot/loader.conf aufzunehmen.Suspend/ResumeACPI kennt drei
Suspend-to-RAM-Zustände
(STR),
S1-S3 sowie einen
Suspend-to-Disk-Zustand (STD)
S4. STD kann auf zwei
Arten implementiert werden:
S4BIOS und
S4OS. Im ersten Fall
wird der Suspend-to-Disk-Zustand durch das
BIOS hergestellt im zweiten Fall alleine
durch das Betriebssystem. Der Zustand S5
wird Soft off genannt. In diesem Zustand
befindet sich ein Rechner, wenn die Stromversorgung
angeschlossen ist, der Rechner aber nicht hochgefahren
ist.Benutzen Sie sysctl hw.acpi um die
Suspend-Zustände zu ermitteln. Diese Beispielausgabe stammt
von einem Thinkpad:hw.acpi.supported_sleep_state: S3 S4 S5
hw.acpi.s4bios: 0Diese Ausgabe besagt, dass mit dem Befehl
acpiconf -s die Zustände
S3, S4
und S5 eingestellt werden können.
Hätte den Wert
1, gäbe es den Zustand
S4BIOS anstelle
von S4.Wenn Sie die Suspend- und Resume-Funktionen
testen, fangen Sie mit dem S1-Zustand
an, wenn er angeboten wird. Dieser Zustand wird
am ehesten funktionieren, da der Zustand wenig
Treiber-Unterstützung benötigt. Der Zustand
S2 ist ähnlich wie
S1, allerdings hat ihn noch niemand
implementiert. Als nächstes sollten Sie den
Zustand S3 ausprobieren. Dies
ist der tiefste STR-Schlafzustand.
Dieser Zustand ist auf massive Treiber-Unterstützung
angewiesen, um die Geräte wieder richtig zu
initialisieren.Ein häufiges Problem mit Suspend/Resume ist,
dass viele Gerätetreiber ihre Firmware, Register
und Gerätespeicher nicht korrekt speichern,
wiederherstellen und/oder reinitialisieren. Um dieses
Problem zu lösen, sollten Sie zuerst die
folgenden Befehle ausführen:&prompt.root; sysctl debug.bootverbose=1
&prompt.root; sysctl debug.acpi.suspend_bounce=1
&prompt.root; acpiconf -s 3Dieser Test emuliert einen Suspend/Resume-Zyklus für
alle Geräte (ohne dass diese dabei wirklich in den Status
S3 wechseln). In vielen Fällen
reicht dies bereits aus, um Probleme (beispielsweise
verlorener Firmware-Status, Timeouts, hängende Geräte)
zu entdecken. Beachten Sie dabei, dass das Gerät bei
diesem Test nicht wirklich in den Status
S3 wechseln. Es kann also vorkommen,
dass manche Geräte weiterhin mit Strom versorgt werden (dies
wäre bei einem wirklichen Wechsel in den Status
S3 NICHT möglich.
Andere Geräte werden normal weiterarbeiten, weil sie
über keine Suspend/Resume-Funktionen verfügen.Schwierigere Fälle können den Einsatz
zusätzlicher Hardware (beispielsweise serielle
Ports/Kabel für die Verbindung über eine
serielle Konsole oder Firewire-Ports/Kabel für
&man.dcons.4;) sowie Kenntnisse im Bereich
Kerneldebugging erforderlich machen.Um das Problem einzugrenzen, entladen Sie soviele
Treiber wie möglich. Wenn das funktioniert, laden Sie einen
Treiber nach dem anderen, bis der Fehler wieder auftritt.
Typischerweise verursachen binäre Treiber wie
nvidia.ko, Grafiktreiber und
USB-Treiber die meisten Fehler,
hingegen laufen Ethernet-Treiber für gewöhnlich
sehr zuverlässig. Wenn ein Treiber
zuverlässig geladen und entfernt werden kann,
können Sie den Vorgang automatisieren, indem
Sie die entsprechenden Kommandos in
/etc/rc.suspend und
/etc/rc.resume einfügen.
In den Dateien finden Sie ein deaktiviertes Beispiel,
das einen Treiber lädt und wieder entfernt.
Ist die Bildschirmanzeige bei der Wiederaufnahme
des Betriebs gestört, setzen Sie die
Variable auf
1. Versuchen Sie auch, die Variable
auf kürzere
Zeitspannen zu setzen.Die Suspend- und Resume-Funktionen können
Sie auch auf einer neuen &linux;-Distribution
mit ACPI testen. Wenn es mit
&linux; funktioniert, liegt das Problem wahrscheinlich
bei einem &os;-Treiber. Es hilft uns, das Problem
zu lösen, wenn Sie feststellen können, welcher
Treiber das Problem verursacht. Beachten Sie bitte,
dass die ACPI-Entwickler normalerweise
keine anderen Treiber pflegen (beispielsweise Sound- oder
ATA-Treiber). Es ist wohl das beste,
die Ergebnisse der Fehlersuche an die Mailingliste
&a.current.name; und den Entwickler des Treibers
zu schicken. Erfahrene Benutzer können versuchen, den
Fehler in der Resume-Funktion zu finden, indem
sie einige &man.printf.3;-Anweisungen in den Code
des fehlerhaften Treibers einfügen.Schließlich können Sie ACPI
noch abschalten und stattdessen APM
verwenden. Wenn die Suspend- und Resume-Funktionen mit
APM funktionieren, sollten Sie
besser APM verwenden
(insbesondere mit alter Hardware von vor dem Jahr 2000).
Die Hersteller benötigten einige Zeit, um
ACPI korrekt zu implementieren, daher
gibt es mit älterer Hardware oft
ACPI-Probleme.SystemhängerDie meisten Systemhänger entstehen durch verlorene
Interrupts oder einen Interrupt-Sturm.
Probleme werden verursacht durch die Art, in der das
BIOS Interrupts vor dem Systemstart
konfiguriert, durch eine fehlerhafte
APIC-Tabelle und durch die
Zustellung des System-Control-Interrupts
(SCI).Interrupt-SturmAnhand der Ausgabe des Befehls
vmstat -i können Sie verlorene
Interrupts von einem Interrupt-Sturm unterscheiden.
Untersuchen Sie die Ausgabezeile, die
acpi0 enthält. Ein Interrupt-Sturm liegt
vor, wenn der Zähler öfter als ein paar Mal pro Sekunde
hochgezählt wird. Wenn sich das System aufgehangen hat,
versuchen Sie mit der Tastenkombination
CtrlAltEsc in den Debugger DDB
zu gelangen. Geben Sie dort den Befehl
show interrupts ein.APICdeaktivierenWenn Sie Interrupt-Probleme haben, ist es vorerst
wohl am besten, APIC zu deaktivieren.
Tragen Sie dazu die Zeile
hint.apic.0.disabled="1" in
/boot/loader.conf ein.Abstürze (Panics)Panics werden so
schnell wie möglich behoben; mit ACPI
kommt es aber selten dazu. Zuerst sollten Sie
die Panic reproduzieren und dann versuchen einen
backtrace (eine
Rückverfolgung der Funktionsaufrufe) zu erstellen.
Richten Sie dazu den DDB über
die serielle Schnittstelle (siehe
) oder eine gesonderte
&man.dump.8;-Partition ein. In DDB
können Sie den backtrace
mit dem Kommando tr erstellen.
Falls Sie den backtrace
vom Bildschirm abschreiben müssen, schreiben
Sie bitte mindestens die fünf ersten und die
fünf letzten Zeile der Ausgabe auf.Versuchen Sie anschließend, das Problem
durch einen Neustart ohne ACPI
zu beseitigen. Wenn das funktioniert hat, können
Sie versuchen, das verantwortliche
ACPI-Subsystem durch Setzen der
Variablen
herauszufinden. Die Hilfeseite &man.acpi.4; enthält
dazu einige Beispiele.Nach einem Suspend oder einem Stopp startet
das System wiederSetzen Sie zuerst
in
/boot/loader.conf. Damit wird
verhindert, dass ACPI während des
Systemabschlusses die Bearbeitung verschiedener Ereignisse
deaktiviert. Auf manchen Systemen muss die Variable den
Wert 1 besitzen (die Voreinstellung).
Normalerweise wird der unerwünschte Neustart des Systems
durch Setzen dieser Variablen behoben.BIOS mit fehlerhaftem BytecodeACPIASLEinige BIOS-Hersteller liefern einen
fehlerhaften Bytecode aus. Dies erkennen Sie an
Kernelmeldungen wie diesen:ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\
(Node 0xc3f6d160), AE_NOT_FOUNDOft können Sie das Problem dadurch lösen, dass Sie eine
aktuelle BIOS-Version einspielen. Die
meisten Meldungen auf der Konsole sind harmlos, wenn aber
beispielsweise der Batteriestatus falsch angezeigt wird,
können Sie in den Meldungen nach Problemen suchen.Die voreingestellte ASL
überschreibenDer BIOS-Bytecode, bekannt als
ACPI Maschine Language
(AML) wird aus der Sprache namens
ACPI Source Language
(ASL) übersetzt. Die
AML ist in einer Tabelle, bekannt als
Differentiated System Description Table
(DSDT), abgelegt.ACPIASLEs ist das Ziel von &os;, dass
ACPI ohne Eingriffe des Benutzers
läuft. Zurzeit werden allerdings noch Abhilfen für Fehler
der BIOS-Hersteller entwickelt.
Der µsoft;-Interpreter (acpi.sys
und acpiec.sys) prüft die
ASL nicht streng gegen den Standard.
Daher reparieren BIOS-Hersteller,
die ACPI nur unter &windows; testen,
ihre ASL nicht. Die &os; Entwickler
hoffen, dass sie das vom Standard abweichende Verhalten des
µsoft;-Interpreters dokumentieren und in &os; replizieren
können. Dadurch müssen Benutzer ihre
ASL nicht selbst reparieren.Um bei der Fehlersuche zu helfen und das Problem
möglicherweise zu beheben, kann eine Kopie der
ASL gemacht werden. Dazu nutzen Sie
acpidump zusammen mit ,
um den Inhalt der Tabelle anzuzeigen und ,
um die AML zu zerlegen:&prompt.root; acpidump -td > my.aslEinige AMLs gehen davon aus, dass
der Anwender eine &windows;-Versionen benutzt. Versuchen
Sie das Betriebssystem, das Sie in der ASL
finden, in /boot/loader.conf anzugeben:
hw.acpi.osname="Windows 2009".Manche Abhilfen erfordern eine Anpassung von
my.asl. Wenn diese Datei bearbeitet
wird, erstellen Sie die neue ASL mit dem
folgenden Befehl. Warnung können meistens ignoriert werden,
aber Fehler verhindern die ordnungsgemäße Funktion von
ACPI.&prompt.root; iasl -f my.aslDie Option erzwingt das Erstellen der
AML auch dann, wenn während der Übersetzung
Fehler auftreten. Einige Fehler, wie fehlende
Return-Anweisungen, werden automatisch vom &os; Interpreter
umgangen.Die voreingestellte Ausgabedatei von
iasl ist DSDT.aml.
Wenn Sie diese Datei anstelle der fehlerhaften Kopie des
BIOS laden wollen, editieren Sie
/boot/loader.conf wie folgt:acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/DSDT.aml"Stellen Sie bitte sicher, dass sich
DSDT.aml in
/boot befindet und starten Sie das
System neu. Wenn dadurch das Problem behoben wird, schicken
Sie einen &man.diff.1; der alten und der neuen
ASL an &a.acpi.name;, damit die
Entwickler das Problem in acpica
umgehen können.Abrufen und Einreichen von Informationen zur
FehlersucheNateLawsonGeschrieben von PeterSchultzMit Beiträgen von TomRhodesACPIProbleme mitACPIFehlersucheDer ACPI-Treiber besitzt
flexible Möglichkeiten zur Fehlersuche. Sie
können sowohl die zu untersuchenden Subsysteme
als auch die zu erzeugenden Ausgaben festlegen. Die zu
untersuchenden Subsysteme werden als layer
angegeben und in Komponenten
(ACPI_ALL_COMPONENTS) und
ACPI-Hardware
(ACPI_ALL_DRIVERS) aufgeteilt.
Welche Meldungen ausgegeben werden, wird über
level gesteuert. Die Level reichen von von
ACPI_LV_ERROR (es werden nur Fehler
ausgegeben) bis zu ACPI_LV_VERBOSE (alles
wird ausgegeben). Das Level ist eine Bitmaske, sodass
verschiedene Stufen auf einmal (durch Leerzeichen getrennt)
angegeben werden können. Die erzeugte Ausgabemenge passt
vielleicht nicht in den Konsolenpuffer. In diesem Fall sollte
die Ausgabe mithilfe einer seriellen Konsole gesichert werden.
Die möglichen Werte für layers und
level werden in &man.acpi.4;
beschrieben.Die Ausgaben zur Fehlersuche sind in der Voreinstellung
nicht aktiviert. Wenn ACPI im Kernel
enthalten ist, fügen Sie options ACPI_DEBUG
zur Kernelkonfigurationsdatei hinzu. Sie können die
Ausgaben zur Fehlersuche global aktivieren, indem Sie in der
Datei /etc/make.conf die Zeile
ACPI_DEBUG=1 einfügen. Das Modul
acpi.ko können Sie wie folgt
neu übersetzen:&prompt.root; cd /sys/modules/acpi/acpi && make clean && make ACPI_DEBUG=1Kopieren Sie anschließend
acpi.ko ins Verzeichnis
/boot/kernel.
In /boot/loader.conf stellen Sie
level und layer ein. Das
folgende Beispiel aktiviert die Ausgabe von Fehlern für
alle ACPI-Komponenten und alle
Hardwaretreiber:debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
debug.acpi.level="ACPI_LV_ERROR"Wenn ein Problem durch ein bestimmtes Ereignis,
beispielsweise den Start nach einem Ruhezustand, hervorgerufen
wird, können Sie die Einstellungen für
level und layer auch mit dem
Kommando sysctl vornehmen. In diesem
Fall müssen Sie /boot/loader.conf
nicht editieren. Auf der Kommandozeile geben Sie über
sysctl dieselben Variablennamen wie in
/boot/loader.conf an.ACPIProbleme mitSobald Sie die Fehlerinformationen gesammelt haben,
schicken Sie diese an &a.acpi.name;, sodass die Betreuer des
&os;-ACPI-Subsystems diese Informationen
zur Analyse und für die Entwicklung einer Lösung verwenden
können.Bevor Sie einen Fehlerbericht an diese Mailingliste
einreichen, stellen Sie bitte sicher, dass das
BIOS und die Firmware des Controllers
aktuell sind.Wenn Sie einen Fehlerbericht einsenden, fügen Sie bitte
die folgenden Informationen ein:Beschreiben Sie den Fehler und alle Umstände,
unter denen der Fehler auftritt. Geben Sie
ebenfalls den Typ und das Modell Ihres Systems
an. Wenn Sie einen neuen Fehler entdeckt haben,
versuchen Sie möglichst genau zu beschreiben,
wann der Fehler das erste Mal aufgetreten ist.Die Ausgabe von dmesg nach der
Eingabe von boot -v.
Geben Sie auch alle Fehlermeldungen an, die erscheinen,
wenn Sie den Fehler provozieren.Die Ausgabe von dmesg nach der
Eingabe von boot -v und mit
deaktiviertem ACPI, wenn das Problem
ohne ACPI nicht auftritt.Die Ausgabe von sysctl hw.acpi.
Dieses Kommando zeigt die vom System unterstützten
ACPI-Funktionen an.Die URL, unter der die
ASL liegt. Schicken Sie
bitte nicht die
ASL an die Mailingliste, da die
ASL sehr groß sein kann. Eine Kopie
der ASL erstellen Sie mit dem
nachstehenden Befehl:&prompt.root; acpidump -td > name-system.aslSetzen Sie für name
den Namen des Kontos und für
system den Hersteller und
das Modell des Systems ein. Zum Beispiel:
njl-FooCo6000.asl.Obwohl die meisten Entwickler die Mailingliste
&a.current.name; lesen, sollten Sie Fehlerberichte an
die Liste &a.acpi.name; schicken. Seien Sie bitte
geduldig; wir haben alle Arbeit außerhalb des Projekts.
Wenn der Fehler nicht offensichtlich ist, bitten
wir Sie vielleicht, einen offiziellen Fehlerbericht
(PR) mit &man.send-pr.1; einzusenden.
Geben Sie im Fehlerbericht bitte dieselben Informationen
wie oben an. Mithilfe der PRs
verfolgen und lösen wir Probleme. Senden Sie
bitte keinen PR ein, ohne vorher
den Fehlerbericht an die Liste &a.acpi.name; zu senden.
Es kann sein, dass der Fehler schon von
jemand anderem gemeldet wurde.ReferenzenWeitere Informationen über ACPI finden
Sie hier:Die ACPI 2.0 Spezifikation (http://acpi.info/spec.htm)&man.acpi.4;, &man.acpi.thermal.4;, &man.acpidump.8;,
&man.iasl.8; und &man.acpidb.8;
Index: head/de_DE.ISO8859-1/books/handbook/disks/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/disks/chapter.xml (revision 50863)
+++ head/de_DE.ISO8859-1/books/handbook/disks/chapter.xml (revision 50864)
@@ -1,4096 +1,4096 @@
SpeichermedienBerndWarkenÜbersetzt von MartinHeinenÜbersichtDieses Kapitel behandelt die Benutzung von Laufwerken unter
&os;. Hierzu zählen SCSI- und
IDE-Geräte, CD- und
DVD-Medien, speicherbasierte Laufwerke und
USB-Geräte.Nachdem Sie dieses Kapitel gelesen haben, werden Sie
Folgendes wissen:Wie Sie zusätzliche Laufwerke zu einem &os;-System
hinzufügen.Wie Sie unter &os; die Partition einer Festplatte
vergrößern.Wie Sie &os; zur Verwendung von
USB-Speichermedien konfigurieren.Wie Sie CD- und
DVD-Medien unter &os; benutzen.Wie Sie die unter &os; erhältlichen Backup-Programme
benutzen.Wie Sie RAM-Disks einrichten.Was Dateisystem-Schnappschüsse sind und wie sie
effizient eingesetzt werden.Wie Sie mit Quotas die Benutzung von Laufwerken
einschränken.Wie Sie Festplatten und Swap verschlüsseln, um Daten
vor Angreifern zu schützen.Wie Sie ein hochverfügbares Speichernetzwerk
konfigurieren.Bevor Sie dieses Kapitel lesen,sollten Sie wissen, wie Sie einen
neuen &os;-Kernel konfigurieren
und installieren.Hinzufügen von LaufwerkenDavidO'BrianIm Original von LaufwerkehinzufügenDieser Abschnitt beschreibt, wie Sie ein neues
SATA-Laufwerk zu einer Maschine
hinzufügen, die momentan nur ein Laufwerk hat. Dazu schalten
Sie zuerst den Rechner aus und installieren das Laufwerk
entsprechend der Anleitungen Ihres Rechners, Ihres Controllers
und des Laufwerkherstellers. Starten Sie das System neu und
melden Sie sich als Benutzer
root an.Kontrollieren Sie /var/run/dmesg.boot,
um sicherzustellen, dass das neue Laufwerk gefunden wurde. In
diesem Beispiel erscheint das neu hinzugefügte
SATA-Laufwerk als
ada1.PartitionengpartIn diesem Beispiel wird eine einzige große Partition auf der
Festplatte erstellt. Verwendet wird das
GPT-Partitionsschema, welches
gegenüber dem älteren und weniger vielseitigen
MBR-Schema bevorzug wird.Wenn die hinzugefügte Festplatte nicht leer ist, können
alte Partitionsinformationen mit
gpart delete entfernt werden. Details
finden Sie in &man.gpart.8;.Zuerst wird das Partitionsschema erstellt und dann eine
einzelne Partition angefügt. Zur Verbesserung der Leistung auf
neueren Festplatten mit größeren Blockgrößen, wird die
Partition an einer Megabyte-Grenze ausgerichtet:&prompt.root; gpart create -s GPT ada1
&prompt.root; gpart add -t freebsd-ufs -a 1M ada1Je nach Anwendung kann es wünschenswert sein, mehrere
kleinere Partitionen zu haben. In &man.gpart.8; finden Sie
Optionen zum Erstellen von kleineren Partitionen.Informationen über die Partitionen der Festplatte werden mit
gpart show angezeigt:&prompt.user; gpart show ada1
=> 34 1465146988 ada1 GPT (699G)
34 2014 - free - (1.0M)
2048 1465143296 1 freebsd-ufs (699G)
1465145344 1678 - free - (839K)Ein Dateisystem wird in der neuen Partition erstellt:&prompt.root; newfs -U /dev/ada1p1Ein leeres Verzeichnis wird als Mountpunkt erstellt, also
ein Speicherort für die Montage der neuen Festplatte im
originalen Dateisystem:&prompt.root; mkdir /newdiskAbschließend wird ein Eintrag in
/etc/fstab hinzugefügt, damit die neue
Festplatte automatisch beim Start eingehängt wird:/dev/ada1p1 /newdisk ufs rw 2 2Die neue Festplatte kann manuell montiert werden, ohne das
System neu zu starten:&prompt.root; mount /newdiskPartitionen vergrößernAllanJudeBeigetragen von BjörnHeidottingÜbersetzt von PartitionenvergrößernDie Kapazität einer Festplatte kann sich ohne Änderungen
an bereits vorhandenen Daten erhöhen. Dies geschieht
üblicherweise mit virtuellen Maschinen, wenn sich herausstellt,
dass die virtuelle Festplatte zu klein ist und vergrößert werden
soll. Zuweilen wird auch ein Abbild einer Platte auf einen
USB-Stick geschrieben, ohne dabei die volle
Kapazität zu nutzen. Dieser Abschnitt beschreibt, wie man
Platten vergrößert, bzw. erweitert, um die
Vorteile der erhöhten Kapazität zu nutzen.Überprüfen Sie /var/run/dmesg.boot, um
den Gerätenamen der Festplatte zu bestimmen, die vergrößert
werden soll. In diesem Beispiel gibt es nur eine
SATA-Festplatte im System, so dass die Platte
als ada0 angezeigt wird.PartitionengpartUm die aktuelle Konfiguration der Partitionen auf der
Festplatte anzuzeigen:&prompt.root; gpart show ada0
=> 34 83886013 ada0 GPT (48G) [CORRUPT]
34 128 1 freebsd-boot (64k)
162 79691648 2 freebsd-ufs (38G)
79691810 4194236 3 freebsd-swap (2G)
83886046 1 - free - (512B)Wenn die Festplatte mit dem
GPT-Partitionsschema formatiert
wurde kann es vorkommen, dass sie als
corrupted angezeigt wird, weil sich die
Sicherung der GPT-Partitionstabellen nicht
mehr am Ende des Laufwerks befinden. Reparieren Sie in so
einem Fall die Partitionstabelle mit
gpart:&prompt.root; gpart recover ada0
ada0 recoveredNun steht der zusätzliche Speicherplatz zur Verfügung und
kann verwendet werden, um eine neue Partition anzulegen oder
eine bestehende Partition zu erweitern:&prompt.root; gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 79691648 2 freebsd-ufs (38G)
79691810 4194236 3 freebsd-swap (2G)
83886046 18513921 - free - (8.8G)Partitionen können nur auf zusammenhängenden, freien
Speicherplatz vergrößert werden. In diesem Beispiel wird die
letzte Partition der Platte als Swap-Speicher genutzt, aber die
zweite Partition ist die, dessen Größe verändert werden soll.
Weil der Swap-Speicher nur temporäre Daten enthält, kann er
gefahrlos ausgehangen, gelöscht und nachdem die Partition
vergrößert wurde, neu erstellt werden.&prompt.root; swapoff /dev/ada0p3
&prompt.root; gpart delete -i 3ada0
ada0p3 deleted
&prompt.root; gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 79691648 2 freebsd-ufs (38G)
79691810 22708157 - free - (10G)Es besteht die Gefahr von Datenverlust, wenn die
Partitionstabelle eines eingehangenen Dateisystems verändert
wird. Es empfiehlt sich daher, die folgenden Schritte auf
einem ausgehangenen Dateisystem durchzuführen, während die
Umsetzung über eine Live-CD-ROM oder
von einem USB-Gerät erfolgt. Wenn es
jedoch absolut notwendig ist, kann ein eingehangenes
Dateisystem auch vergrößert werden, nachdem die
Sicherheitsfunktionen von GEOM deaktiviert wurden:&prompt.root; sysctl kern.geom.debugflags=16Vergrößern Sie die Partition und lassen Sie Platz, um die
Swap-Partition in der gewünschten Größe neu erstellen zu können.
Dies ändert nur die Größe der Partition. Das Dateisystem
innerhalb der Partition wird in einem separaten Schritt
erweitert.&prompt.root; gpart resize -i 2 -a 4k -s 47Gada0
ada0p2 resized
&prompt.root; gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 98566144 2 freebsd-ufs (47G)
98566306 3833661 - free - (1.8G)Erstellen Sie die Swap-Partition neu:&prompt.root; gpart add -t freebsd-swap -a 4k ada0
ada0p3 added
&prompt.root; gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 98566144 2 freebsd-ufs (47G)
98566306 3833661 3 freebsd-swap (1.8G)
&prompt.root; swapon /dev/ada0p3Erweitern Sie das UFS-Dateisystem, um die
Kapazität der vergrößerten Partition zu nutzen:Ab &os; 10.0-RELEASE ist es möglich, ein eingehangenes
Dateisystem zu erweitern. Bei älteren Versionen muss das
Dateisystem zuvor ausgehangen werden.&prompt.root; growfs /dev/ada0p2
Device is mounted read-write; resizing will result in temporary write suspension for /.
It's strongly recommended to make a backup before growing the file system.
OK to grow file system on /dev/ada0p2, mounted on /, from 38GB to 47GB? [Yes/No] Yes
super-block backups (for fsck -b #) at:
80781312, 82063552, 83345792, 84628032, 85910272, 87192512, 88474752,
89756992, 91039232, 92321472, 93603712, 94885952, 96168192, 97450432Sowohl die Partition als auch das Dateisystem wurden jetzt
vergrößert, um den neu zur Verfügung stehenden Speicherplatz zu
nutzen.USB SpeichermedienMarcFonvieilleBeigetragen von USBSpeichermedienDer Universal Serial Bus (USB) wird
von vielen externen Speichern benutzt: Festplatten,
USB-Thumbdrives sowie von
CD- und DVD-Brennern.
&os; bietet Unterstützung für Geräte mit USB
1.x, 2.0 und 3.0.Die Unterstützung für USB 3.0 ist mit
einiger Hardware, einschließlich Haswell (Lynx Point)
Chipsätzen, nicht kompatibel. Wenn &os; beim Booten mit dem
Fehler failed with error 19 abbricht,
müssen Sie xHCI/USB3 im BIOS
deaktivieren.Unterstützung für USB-Massenspeicher ist
im GENERIC-Kernel enthalten. Für einen
angepassten Kernel müssen die nachstehenden Zeilen in der
Kernelkonfigurationsdatei enthalten sein:device scbus # SCSI bus (required for ATA/SCSI)
device da # Direct Access (disks)
device pass # Passthrough device (direct ATA/SCSI access)
device uhci # provides USB 1.x support
device ohci # provides USB 1.x support
device ehci # provides USB 2.0 support
device xhci # provides USB 3.0 support
device usb # USB Bus (required)
device umass # Disks/Mass storage - Requires scbus and da
device cd # needed for CD and DVD burners&os; benutzt den &man.umass.4;-Treiber, der das
SCSI-Subsystem verwendet um auf
USB-Geräte zuzugreifen. Da alle
USB-Geräte vom System als
SCSI-Geräte erkannt werden, dürfen Sie
nicht
in die Kernelkonfigurationsdatei aufnehmen, wenn es sich bei
dem Gerät um einen CD- oder
DVD-Brenner handelt.Der übrige Abschnitt beschreibt, wie Sie überprüfen können
ob ein USB-Gerät von &os; erkannt wird und
wie Sie das Gerät so konfigurieren, dass es verwendet werden
kann.Konfiguration von GerätenUm die USB-Konfiguration zu testen,
schließen Sie das USB-Gerät an.
Verwenden Sie dmesg um zu überprüfen, ob
das Gerät in den Systemmeldungen erscheint. Dies sollte in
etwa so aussehen:umass0: <STECH Simple Drive, class 0/0, rev 2.00/1.04, addr 3> on usbus0
umass0: SCSI over Bulk-Only; quirks = 0x0100
umass0:4:0:-1: Attached to scbus4
da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
da0: <STECH Simple Drive 1.04> Fixed Direct Access SCSI-4 device
da0: Serial Number WD-WXE508CAN263
da0: 40.000MB/s transfers
da0: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da0: quirks=0x2<NO_6_BYTE>Fabrikat, Gerätedatei (da0),
Geschwindigkeit und Kapazität werden je nach Gerät
unterschiedlich sein.Da ein USB-Gerät als
SCSI-Gerät erkannt wird, kann
camcontrol benutzt werden, um die mit dem
System verbundenen USB-Massenspeicher
anzuzeigen:&prompt.root; camcontrol devlist
<STECH Simple Drive 1.04> at scbus4 target 0 lun 0 (pass3,da0)Alternativ kann usbconfig benutzt
werden, um die Geräte aufzulisten. Weitere Informationen zu
diesem Kommando finden Sie in &man.usbconfig.8;.&prompt.root; usbconfig
ugen0.3: <Simple Drive STECH> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)Wenn das Gerät noch nicht formatiert ist, finden Sie in
Informationen, wie Sie
USB-Laufwerke formatieren und Partitionen
einrichten. Wenn das Laufwerk bereits ein Dateisystem
enthält, kann es von root nach den Anweisungen in
eingehängt werden.Aus Sicherheitsgründen sollten Sie Benutzern, denen Sie
nicht vertrauen, das Einhängen (z.B. durch die unten
beschriebene Aktivierung von
vfs.usermount) beliebiger Medien
verbieten. Die meisten Dateisysteme wurden nicht
entwickelt, um sich vor böswilligen Geräten zu
schützen.Um auch normalen Anwendern das Einhängen des Laufwerks zu
gestatten, könnten Sie beispielsweise mit &man.pw.8; alle
potentiellen Benutzer dieser Gerätedateien in die Gruppe
operator aufnehmen.
Außerdem muss sichergestellt werden, dass operator
Schreib- und Lesezugriff auf diese Gerätedateien haben.
Hierfür werden die folgenden Zeilen in
/etc/devfs.rules hinzugefügt:[localrules=5]
add path 'da*' mode 0660 group operatorVerfügt das System über interne
SCSI-Laufwerke, so verändern Sie die
zweite Zeile wie folgt:add path 'da[3-9]*' mode 0660 group operatorDies wird die ersten drei
SCSI-Laufwerke (da0
bis da2) davon ausschließen, in die
Gruppe operator
aufgenommen zu werden. Ersetzen Sie 3
durch die Anzahl der SCSI-Laufwerke.
Weitere Informationen zu dieser Datei finden Sie in
&man.devfs.rules.5;.Aktivieren Sie nun die Regeln
in /etc/rc.conf:devfs_system_ruleset="localrules"Als nächstes müssen Sie das System anweisen, auch
normalen Benutzern das mounten von Dateisystemen zu erlauben,
indem Sie die folgende Zeile in
/etc/sysctl.conf hinzufügen:vfs.usermount=1Da diese Einstellung erst nach einem Neustart wirksam
wird, können Sie diese Variable mit sysctl
auch direkt setzen:&prompt.root; sysctl vfs.usermount=1
vfs.usermount: 0 -> 1Zuletzt müssen Sie noch ein Verzeichnis anlegen, in
das das USB-Laufwerk eingehängt werden
soll. Dieses Verzeichnis muss dem Benutzer gehören, der das
USB-Laufwerk in den Verzeichnisbaum
einhängen will. Dazu legen Sie als root ein
Unterverzeichnis
/mnt/username
an, wobei Sie username
durch den Login des jeweiligen Benutzers sowie
usergroup durch die primäre
Gruppe des Benutzers ersetzen:&prompt.root; mkdir /mnt/username
&prompt.root; chown username:usergroup /mnt/usernameWenn Sie nun beispielsweise einen
USB-Stick
anschließen, wird automatisch die Gerätedatei
/dev/da0s1 erzeugt. Ist das Gerät mit
einem FAT-Dateisystem formatiert, kann es
der Benutzer mit dem folgenden Befehl in den Verzeichnisbaum
einhängen:&prompt.user; mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/usernameBevor das Gerät entfernt werden kann,
muss es abgehängt werden:&prompt.root; umount /mnt/usernameNach Entfernen des Geräts stehen in den Systemmeldungen
Einträge, ähnlich der folgenden:umass0: at uhub3, port 2, addr 3 (disconnected)
da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
da0: <STECH Simple Drive 1.04> s/n WD-WXE508CAN263 detached
(da0:umass-sim0:0:0:0): Periph destroyedAutomatisches Einhängen von Wechselmedien&man.autofs.5; unterstützt das automatische Einhängen
von Wechselmedien beginnend mit
&os; 10.2-RELEASE.Damit USB-Geräte automatisch
eingehängt werden, muss der Kommentar für folgende Zeile in
/etc/auto_master entfernt werden:/media -media -nosuidAnschließend fügen Sie folgende Zeilen in
/etc/devd.conf hinzu:notify 100 {
match "system" "GEOM";
match "subsystem" "DEV";
action "/usr/sbin/automount -c";
};Falls &man.autofs.5; und &man.devd.8; bereits
ausgeführt werden, müssen Sie die Konfiguration neu
einlesen:&prompt.root; service automount reload
&prompt.root; service devd restart&man.autofs.5; wird beim Booten automatisch gestartet,
wenn Sie folgende Zeile in /etc/rc.conf
hinzufügen:autofs_enable="YES"Damit &man.autofs.5; funktioniert, muss &man.devd.8;
aktiviert sein, was aber in der Voreinstellung der Fall
ist.Starten Sie jetzt die Dienste:&prompt.root; service automount start
&prompt.root; service automountd start
&prompt.root; service autounmountd start
&prompt.root; service devd startJedes Dateisystem, das automatisch eingehängt werden kann,
erscheint als ein Verzeichnis unterhalb von
media. Das Verzeichnis wird nach dem
Dateisystemlabel benannt, bzw. nach dem Gerätenamen, falls
kein Label existiert.Das Dateisystem wird transparent beim ersten Zugriff in
den Verzeichnisbaum eingehängt und auch nach gewisser Zeit der
Inaktivität wieder ausgehängt. Laufwerke können auch manuell
ausgehängt werden:&prompt.root; automount -fuDiese Methode wird in der Regel bei Speicherkarten und
USB-Sticks verwendet. Sie funktioniert
aber mit allen Blockgeräten, einschließlich optischen
Laufwerken und
iSCSI-LUNs.USB-MassenspeicherDer &man.cfumass.4;-Treiber ist ein
USB Geräte-Modus-Treiber und steht mit
&os; 12.0 zur Verfügung.Auf
USB-OTG-kompatibler
Hardware, wie in eingebetteten Systemen, kann der &os;
USB-Stack im Geräte-Modus laufen. Der
Geräte-Modus ermöglicht es dem Rechner, verschiedene Arten von
USB-Geräteklassen zu präsentieren,
einschließlich serieller Schnittstellen, Netzwerkadapter und
Massenspeicher. Ein USB-Host,
beispielsweise ein Laptop oder Desktop-Rechner, kann darauf
wie auf ein physikalisches USB-Gerät
zugreifen.Je nach angeschlossener Hardware, ermöglicht das
&man.usb.template.4; Kernelmodul es dem
USB-Stack, automatisch zwischen Host- und
Geräteseite umzuschalten. Das Anschließen eines
USB-Gerätes an den
USB-OTG-Port bewirkt,
dass &os; in den Geräte-Modus wechselt.Was &os; dem USB-Host präsentiert,
hängt von der sysctl-Variablen
hw.usb.template ab. Eine Liste der
verfügbaren Werte finden Sie in &man.usb.template.4;. Damit
der Host die geänderte Konfiguration erkennt, muss entweder
das Gerät getrennt und wieder angeschlossen, oder der
USB-Bus neu gescannt werden. Wenn auf dem
Host &os; läuft, können Sie &man.usbconfig.8;
reset benutzen. Dieser Befehl muss nach
dem Laden von usb_template.ko erfolgen,
falls der USB-Host bereits am
USB-OTG-Port
angeschlossen war.Die sysctl-Variable hw.usb.template ist
in der Voreinstellung auf 0 gesetzt, so dass &os; als
USB-Massenspeicher funktioniert. Dazu
müssen die beiden Kernelmodule &man.usb.template.4; und
&man.cfumass.4; geladen sein. &man.cfumass.4; ist die
Schnittstelle zum CTL-Subsystem, die auch für
iSCSI- und Fibre Channel-Targets
benutzt wird. Auf der Host-Seite können
USB-Massenspeicher nur auf eine einzelne
LUN (LUN 0)
zugreifen.USB-Massenspeicher benötigen keinen
aktiven &man.ctld.8;-Daemon, obwohl er bei Bedarf verwendet
werden kann. Dies unterscheidet sich von
iSCSI. So gibt es zwei Möglichkeiten,
ein Target zu konfigurieren: &man.ctladm.8; und &man.ctld.8;.
Beide erfordern, dass das cfumass.ko
Kernelmodul geladen ist. Das Modul kann wie folgt geladen
werden:&prompt.root; kldload cfumassWenn cfumass.ko nicht im Kernel
enthalten ist, kann das Modul beim Booten über
/boot/loader.conf geladen werden:cfumass_load="YES"Eine LUN kann auch ohne den
&man.ctld.8;-Daemon erstellt werden:&prompt.root; ctladm create -b block -o file=/data/target0Damit wird dem USB der Inhalt des
Abbilds /data/target0 als
LUN präsentiert. Die Datei muss vor dem
Ausführen des Befehls vorhanden sein. Um die
LUN beim Systemstart zu konfigurieren,
fügen Sie den Befehl in /etc/rc.local
hinzu.&man.ctld.8; kann ebenfalls verwendet werden, um
LUNs zu verwalten. Erstellen Sie
/etc/ctl.conf und fügen Sie eine Zeile in
/etc/rc.conf hinzu, um sicherzustellen,
dass &man.ctld.8; beim Booten automatisch gestartet wird.
Danach starten Sie den Daemon.Dies ist ein Beispiel für eine einfache
/etc/ctl.conf Konfigurationsdatei.
&man.ctl.conf.5; enthält eine ausführliche Beschreibung der
einzelnen Optionen.target naa.50015178f369f092 {
lun 0 {
path /data/target0
size 4G
}
}Dieses Beispiel erstellt ein Target mit einer einzigen
LUN.
naa.50015178f369f092 ist eine Gerätekennung
aus 32 zufälligen, hexadezimalen Ziffern. Die
path-Zeile definiert den vollständigen Pfad
einer Datei oder eines zvols, welche als Backend für die
LUN benutzt wird. Die Konfigurationsdatei
muss vor dem Start von &man.ctld.8; existieren. Die zweite
Zeile ist optional und gibt die Größe der
LUN an.Fügen Sie folgende Zeile in
/etc/rc.conf hinzu, um den
&man.ctld.8;-Daemon beim Booten zu starten:ctld_enable="YES"Um &man.ctld.8; zu starten, führen Sie dieses Kommando
aus:&prompt.root; service ctld startBeim Start liest der &man.ctld.8;-Daemon
/etc/ctl.conf ein. Wenn diese Datei nach
dem Start des Daemons bearbeitet wird, können Sie sie erneut
einlesen, damit die Änderungen direkt wirksam sind:&prompt.root; service ctld reloadErstellen und Verwenden
von CDsMikeMeyerBeigesteuert von CD-ROMsbrennenCDs besitzen einige Eigenschaften, die
sie von konventionellen Laufwerken unterscheiden. Sie wurden
so entworfen, dass sie ununterbrochen, ohne Verzögerungen
durch Kopfbewegungen zwischen den Spuren, gelesen werden
können. CDs besitzen Spuren, aber damit
ist der Teil Daten gemeint, der ununterbrochen gelesen wird,
und nicht eine physikalische Eigenschaft der
CD. Das ISO
9660-Dateisystem wurde entworfen, um mit diesen Unterschieden
umzugehen.ISO 9660DateisystemeISO 9660CD-BrennerATAPIDie &os; Ports-Sammlung bietet einige Werkzeuge zum
Brennen und Kopieren von Audio- und
Daten-CDs. Dieses Kapitel beschreibt die
Verwendung von mehreren Kommandozeilen-Werkzeugen. Wenn Sie
eine graphische Oberfläche zum Brennen von
CDs benutzen, können Sie
sysutils/xcdroast oder
sysutils/k3b installieren.Unterstützte GeräteMarcFonvielleBeigetragen von CD-BrennerATAPI/CAM TreiberDer GENERIC-Kernel enthält
Unterstützung für SCSI,
USB und ATAPI
CD Lesegeräte und Brenner. Wird ein
angepasster Kernel erstellt, unterscheiden sich die Optionen
für die Kernelkonfigurationsdatei je nach Art des
Geräts.Für einen SCSI-Brenner müssen
folgende Optionen vorhanden sein:device scbus # SCSI bus (required for ATA/SCSI)
device da # Direct Access (disks)
device pass # Passthrough device (direct ATA/SCSI access)
device cd # needed for CD and DVD burnersFür einen USB-Brenner müssen folgende
Optionen vorhanden sein:device scbus # SCSI bus (required for ATA/SCSI)
device da # Direct Access (disks)
device pass # Passthrough device (direct ATA/SCSI access)
device cd> # needed for CD and DVD burners
device uhci # provides USB 1.x support
device ohci # provides USB 1.x support
device ehci # provides USB 2.0 support
device xhci # provides USB 3.0 support
device usb # USB Bus (required)
device umass # Disks/Mass storage - Requires scbus and daFür einen ATAPI-Brenner müssen
folgende Optionen vorhanden sein:device ata # Legacy ATA/SATA controllers
device scbus # SCSI bus (required for ATA/SCSI)
device pass # Passthrough device (direct ATA/SCSI access)
device cd # needed for CD and DVD burnersUnter &os; Versionen kleiner 10.x wird auch diese
Option in der Kernelkonfigurationsdatei benötigt, falls
der Brenner ein ATAPI-Gerät ist:device atapicamAlternativ kann folgende Zeile in
/boot/loader.conf hinzugefügt werden,
um den Treiber beim Booten automatisch zu laden:atapicam_load="YES"Hierzu ist ein Neustart des Systems erforderlich, da
dieser Treiber nur beim Booten geladen werden kann.Mit dmesg können Sie prüfen, ob das
Gerät von &os; erkannt wurde. Unter &os; Versionen kleiner
10.x lautet der Gerätename acd0
anstelle von cd0.&prompt.user; dmesg | grep cd
cd0 at ahcich1 bus 0 scbus1 target 0 lun 0
cd0: <HL-DT-ST DVDRAM GU70N LT20> Removable CD-ROM SCSI-0 device
cd0: Serial Number M3OD3S34152
cd0: 150.000MB/s transfers (SATA 1.x, UDMA6, ATAPI 12bytes, PIO 8192bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closedEine CD brennenUnter &os; kann cdrecord zum Brennen
von CDs benutzt werden. Dieses Programm
wird aus dem Port oder Paket
sysutils/cdrecord installiert.Obwohl cdrecord viele Optionen besitzt,
ist die grundlegende Benutzung sehr einfach. Geben Sie den
Namen der zu brennenden ISO-Datei an. Wenn das System über
mehrere Brenner verfügt, müssen Sie auch den Namen des
Gerätes angeben:&prompt.root; cdrecord dev=deviceimagefile.isoBenutzen Sie um den Gerätenamen
des Brenners zu bestimmen. Die Ausgabe könnte wie folgt
aussehen:CD-ROMbrennen&prompt.root; cdrecord -scanbus
ProDVD-ProBD-Clone 3.00 (amd64-unknown-freebsd10.0) Copyright (C) 1995-2010 Jörg Schilling
Using libscg version 'schily-0.9'
scsibus0:
0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk
0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk
0,2,0 2) *
0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk
0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) *
1,1,0 101) *
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM
1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner
1,7,0 107) *Benutzen Sie die drei durch Kommas separierten Zahlen, die
für den CD-Brenner angegeben sind, als
Argument für . Im Beispiel ist das
Yamaha-Gerät 1,5,0, so dass die passende
Eingabe ist. Einfachere Wege das
Argument anzugeben, sowie Informationen über Audiospuren und
das Einstellen der Geschwindigkeit, sind in der Manualpage von
cdrecord beschrieben.Alternativ können Sie den folgenden Befehl ausführen, um
die Geräteadresse des Brenners zu ermitteln:&prompt.root; camcontrol devlist
<MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (cd0,pass0)Verwenden Sie die numerischen Werte für
scbus, target und
lun. Für dieses Beispiel wäre
1,0,0 als Gerätename zu verwenden.Daten auf ISO-Dateisystem
schreibenDie Datendateien müssen vorbereitet sein, bevor sie auf
eine CD gebrannt werden. In &os; wird
mkisofs vom Paket oder Port
sysutils/cdrtools installiert. Dieses
Programm kann aus einem &unix; Verzeichnisbaum ein
ISO 9660-Dateisystem erzeugen. Im
einfachsten Fall müssen Sie lediglich den Namen der zu
erzeugenden ISO-Datei und den Pfad zu den
Dateien angeben, die auf dem ISO
9660-Dateisystem platziert werden:&prompt.root; mkisofs -o imagefile.iso/path/to/treeDateisystemeISO 9660Bei diesem Kommando werden die Dateinamen auf Namen
abgebildet, die den Restriktionen des ISO
9660-Dateisystem entsprechen. Dateien, die diesem Standard
nicht entsprechen bleiben unberücksichtigt.DateisystemeJolietEs gibt einige Optionen, um die Beschränkungen dieses
Standards zu überwinden. Die unter &unix; Systemen üblichen
Rock-Ridge-Erweiterungen werden durch
aktiviert und aktiviert die von
µsoft; Systemen benutzten Joliet-Erweiterungen.Für CDs, die nur auf &os;-Systemen
verwendet werden sollen, kann genutzt
werden, um alle Beschränkungen für Dateinamen aufzuheben.
Zusammen mit wird ein Abbild des
Dateisystems, identisch zu angegebenen &os;-Dateibaum
erstellt, selbst wenn dies den ISO 9660
Standard verletzt.CD-ROMbootbare erstellenDie letzte übliche Option ist .
Sie wird benutzt, um den Ort eines Bootimages einer
El Torito bootbaren CD
anzugeben. Das Argument zu dieser Option ist der Pfad zu
einem Bootimage ausgehend von der Wurzel des Baumes, der auf
die CD geschrieben werden soll. In der
Voreinstellung erzeugt mkisofs ein
ISO-Image im
Diskettenemulations-Modus. Dabei muss das
Image genau 1200, 1440 oder 2880 KB groß sein. Einige
Bootloader, darunter der auf den &os; Installationsmedien
verwendete, kennen keinen Emulationsmodus. Daher sollte in
diesen Fällen verwendet werden.
Wenn /tmp/myboot ein bootbares
&os;-System enthält, dessen Bootimage sich in
/tmp/myboot/boot/cdboot befindet, dann
würde folgendes Kommando
/tmp/bootable.iso erstellen:&prompt.root; mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/mybootDas resultierende ISO-Abbild kann als
speicherbasiertes Laufwerk eingehängt werden:&prompt.root; mdconfig -a -t vnode -f /tmp/bootable.iso -u 0
&prompt.root; mount -t cd9660 /dev/md0 /mntJetzt können Sie überprüfen, dass
/mnt und /tmp/myboot
identisch sind.Sie können das Verhalten von mkisofs
mit einer Vielzahl von Optionen beeinflussen. Details dazu
entnehmen Sie bitte &man.mkisofs.8;.Es ist möglich eine Daten-CD in eine
Datei zu kopieren, die einem Image entspricht, das mit
mkisofs erstellt wurde. Verwenden Sie
dazu dd mit dem Gerätenamen als
Eingabedatei und den Namen der ISO als
Ausgabedatei:&prompt.root; dd if=/dev/cd0 of=file.iso bs=2048Das resultierende Abbild kann auf eine
CD gebrannt werden, wie in beschrieben.Einhängen von Daten-CDsSobald ein Abbild auf eine CD gebrannt
wurde, kann es durch Angabe des Dateisystemtyp, des
CD-Laufwerks und des Mountpunktes
eingehangen werden:&prompt.root; mount -t cd9660 /dev/cd0/mntDa mount davon ausgeht, dass ein
Dateisystem vom Typ ufs ist, würde die
Fehlermeldung Incorrect super block
erscheinen, wenn Sie beim Einhängen einer
Daten-CD auf die Angabe
-t cd9660 verzichten.Auf diese Weise können Daten-CDs
von jedem Hersteller verwendet werden. Es kann allerdings zu
Problemen mit CDs kommen, die verschiedene
ISO 9660-Erweiterungen benutzen. So
speichern Joliet-CDs alle Dateinamen unter
Verwendung von zwei Byte langen Unicode-Zeichen. Tauchen
statt bestimmter Zeichen nur Fragezeichen auf, so
muss über die Option der benötigte
Zeichensatz angegeben werden. Weitere Informationen zu
diesem Problem finden Sie in &man.mount.cd9660.8;.Damit der Kernel diese Zeichenkonvertierung (festgelegt
durch die Option ) erkennt, müssen Sie
das Kernelmodul cd9660_iconv.ko laden.
Dazu fügen Sie folgende Zeile in
loader.conf ein:cd9660_iconv_load="YES"Danach müssen Sie allerdings Ihr System neu starten.
Alternativ können Sie das Kernelmodul auch direkt
über kldload laden.Manchmal werden Sie die Meldung
Device not configured erhalten, wenn
Sie versuchen, eine Daten-CD einzuhängen.
Für gewöhnlich liegt das daran, dass das Laufwerk keine
CD erkannt hat, oder dass das Laufwerk
auf dem Bus nicht erkannt wird. Es kann einige Sekunden
dauern, bevor das Laufwerk die CD erkennt.
Seien Sie also geduldig.Manchmal wird ein
SCSI-CD nicht
erkannt, weil es keine Zeit hatte, auf das Zurücksetzen des
Busses zu antworten. Um dieses Problem zu lösen, fügen Sie
die folgende Zeile in die Kernelkonfiguration ein und
erstellen Sie einen angepassten Kernel nach den Anweisungen in
:options SCSI_DELAY=15000Die Zeile bewirkt, dass nach dem Zurücksetzen des
SCSI-Busses beim Booten 15 Sekunden
gewartet wird, um dem
CD-Laufwerk genügend Zeit zu geben,
darauf zu antworten.Es ist möglich eine Datei auch direkt auf eine
CD zu brennen, ohne vorher auf ihr ein
ISO 9660-Dateisystem einzurichten. Man
sagt auch, Daten werden roh auf die CD
gebrannt. Einige Leute nutzen dies, um Datensicherungen
durchzuführen.Eine auf diese Weise gefertigte
Daten-CD kann nicht in das Dateisystem
eingehangen werden. Um auf die Daten einer solchen
CD zuzugreifen, müssen die Daten vom
rohen Gerät gelesen werden. Beispielsweise würde dieser
Befehl eine komprimierte tar-Datei auf dem zweiten
CD-Laufwerk in das aktuelle Verzeichnis
extrahieren:&prompt.root; tar xzvf /dev/cd1Um eine Daten-CD in das System
einzuhängen, müssen die Daten mit mkisofs
geschrieben werden.Kopieren von Audio-CDsUm eine Kopie einer Audio-CD zu
erstellen, kopieren Sie die Stücke der CD
in einzelne Dateien und brennen diese Dateien dann auf eine
leere CD. beschreibt, wie eine
Audio-CD kopiert und gebrannt wird. Wenn
die Version älter als &os; 10.0 ist und ein
ATAPI-Gerät verwendet wird, muss zunächst
das Modul nach den Anweisungen in
geladen werden.Eine Audio-CD kopierenDer Port oder das Paket
sysutils/cdrtools installiert
cdda2wav. Mit diesem Kommando können
Audiodaten in das aktuelle Verzeichnis extrahiert werden,
wobei jede Datei in eine separate
WAV-Datei geschrieben wird:&prompt.user; cdda2wav -vall -B -OwavWenn das System nur über ein
CD-Laufwerk verfügt, muss der
Gerätename nicht angegeben werden. Lesen Sie die
Manualpage von cdda2wav für
Anweisungen, wie ein Gerät spezifiziert wird und weitere
verfügbare Optionen für dieses Kommando.Die erzeugten .wav Dateien
schreiben Sie mit cdrecord auf eine
leere CD:&prompt.user; cdrecord -v dev=2,0 -dao -useinfo *.wavDas Argument von gibt das
verwendete Gerät an, das wie in
ermittelt werden kann.DVDs benutzenMarcFonvieilleBeigetragen von AndyPolyakovMit Beiträgen von DVDbrennenNach der CD ist die
DVD die nächste Generation optischer
Speichermedien. Auf einer DVD können
mehr Daten als auf einer CD gespeichert
werden. DVDs werden als Standardmedium für
Videos verwendet.Für beschreibbare DVDs existieren fünf
Medienformate:DVD-R: Dies war das erste verfügbare Format. Das
Format wurde vom
DVD-Forum festgelegt. Die Medien sind nur einmal
beschreibbar.DVD-RW: Dies ist die
wiederbeschreibbare Version des DVD-R Standards. Eine
DVD-RW kann ungefähr
1000 Mal beschrieben werden.DVD-RAM: Dies ist ein
wiederbeschreibbares Format, das wie ein Wechsellaufwerk
betrachtet werden kann. Allerdings sind die Medien nicht
kompatibel zu den meisten
DVD-ROM-Laufwerken und
DVD-Video-Spielern, da das
DVD-RAM-Format nur von wenigen Brennern
unterstützt wird. Informationen zur Nutzung von
DVD-RAM finden Sie in
.DVD+RW: Ist ein
wiederbeschreibbares Format, das von der
DVD+RW Alliance festgelegt
wurde. Eine DVD+RW kann ungefähr
1000 Mal beschrieben werden.DVD+R: Dieses Format ist die nur einmal beschreibbare
Variante des DVD+RW Formats.Auf einer einfach beschichteten DVD
können 4.700.000.000 Bytes gespeichert werden. Das
sind 4,38 GB oder 4485 MB (1 Kilobyte
sind 1024 Bytes).Die physischen Medien sind unabhängig von der Anwendung.
Ein DVD-Video ist eine spezielle Anordnung von Dateien, die
auf irgendein Medium, beispielsweise DVD-R, DVD+R oder
DVD-RW geschrieben werden kann. Bevor Sie
ein Medium auswählen, müssen Sie sicherstellen, dass der
Brenner und der DVD-Spieler mit dem Medium umgehen
können.KonfigurationBenutzen Sie &man.growisofs.1;, um DVDs
zu beschreiben. Das Kommando ist Bestandteil von
sysutils/dvd+rw-tools, und kann mit allen
DVD-Medien umgehen.Diese Werkzeuge verwenden das
SCSI-Subsystem, um auf die Geräte
zuzugreifen. Daher muss ATAPI/CAM-Unterstützung
geladen, oder statisch in den Kernel kompiliert werden.
Sollte der Brenner jedoch die
USB-Schnittstelle nutzen, wird diese
Unterstützung nicht benötigt. Weitere Informationen zur
Konfiguration von USB-Geräten finden Sie in
.Für ATAPI-Geräte müssen ebenfalls
DMA-Zugriffe aktiviert werden. Dazu wird die folgende Zeile
in /boot/loader.conf eingefügt:hw.ata.atapi_dma="1"Bevor Sie dvd+rw-tools
benutzen, lesen Sie bitte die
Hardware-Informationen auf der Seite Hardware
Compatibility Notes.Für eine grafische Oberfläche sollten Sie sich
sysutils/k3b ansehen, das eine
benutzerfreundliche Schnittstelle zu &man.growisofs.1; und
vielen anderen Werkzeugen bietet.Daten-DVDs brennen&man.growisofs.1; erstellt mit dem Programm
mkisofs das Dateisystem
und brennt anschließend die DVD. Vor dem
Brennen braucht daher kein Abbild der Daten erstellt zu
werden.Wenn Sie von den Daten im Verzeichnis
/path/to/data eine
DVD+R oder eine DVD-R brennen wollen, benutzen Sie
das nachstehende Kommando:&prompt.root; growisofs -dvd-compat -Z /dev/cd0 -J -R /path/to/dataIn diesem Beispiel wird an
&man.mkisofs.8; durchgereicht und dient zum Erstellen
des Dateisystems (hier: ein ISO-9660-Dateisystem mit
Joliet- und Rock-Ridge-Erweiterungen). Weiteres
entnehmen Sie bitte der Hilfeseite &man.mkisofs.8;.Die Option wird für die erste
Aufnahme einer Single- oder Multisession benötigt. Ersetzen
Sie /dev/cd0 mit dem Gerätenamen
des DVD-Gerätes. Die Nutzung von
schließt das Medium, weitere
Daten können danach nicht mehr angehängt werden. Dies sollte
auch eine bessere Kompatibilität mit anderen
DVD-ROM-Laufwerken bieten.Um ein vorher erstelltes Abbild der Daten zu brennen,
beispielsweise imagefile.iso,
verwenden Sie:&prompt.root; growisofs -dvd-compat -Z /dev/cd0=imagefile.isoDie Schreibgeschwindigkeit hängt von den
verwendeten Medium sowie dem verwendeten Gerät ab
und sollte automatisch gesetzt werden. Um die
Schreibgeschwindigkeit vorzugeben, verwenden Sie
. Beispiele finden Sie in
&man.growisofs.1;.Um größere Dateien als 4.38GB zu unterstützen, ist es
notwendig ein UDF/ISO-9660 Hybrid-Dateisystem zu erstellen.
Dieses Dateisystem muss mit zusätzlichen Parametern
bei &man.mkisofs.8; und
allen relevanten Programmen, wie beispielsweise
&man.growisofs.1;) erzeugt werden. Dies ist nur notwendig,
wenn Sie ein ISO-Image erstellen oder direkt auf eine DVD
schreiben wollen. DVDs, die in dieser Weise hergestellt
worden sind, müssen als UDF-Dateisystem mit
&man.mount.udf.8; eingehangen werden. Sie sind nur auf
Betriebssystemen, die UDF unterstützen brauchbar, ansonsten
sieht es so aus, als ob sie kaputte Dateien enthalten
würden.Um diese Art von ISO-Datei zu erstellen:&prompt.user; mkisofs -R -J -udf -iso-level 3 -o imagefile.iso/path/to/dataUm Daten direkt auf eine DVD zu brennen, geben Sie den
folgenden Befehl ein:&prompt.root; growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /path/to/dataWenn ein ISO-Abbild bereits große Dateien enthält, sind
keine weiteren Optionen für &man.growisofs.1; notwendig, um
das Abbild auf die DVD zu brennen.Achten Sie darauf, eine aktuelle Version von
sysutils/cdrtools zu verwenden, welche
&man.mkisofs.8; enthält, da ältere Versionen keinen Support
für große Dateien enthalten. Falls die neueste Version
nicht funktioniert, installieren Sie
sysutils/cdrtools-devel und lesen Sie
&man.mkisofs.8;.DVD-Videos brennenDVDDVD-VideoEin DVD-Video ist eine spezielle Anordnung von Dateien,
die auf den ISO-9660 und den micro-UDF (M-UDF) Spezifikationen
beruht. Da DVD-Video auf eine bestimmte Datei-Hierarchie
angewiesen ist, müssen DVDs mit speziellen
Programmen wie multimedia/dvdauthor
erstellt werden.Ist bereits ein Abbild des Dateisystems eines
DVD-Videos vorhanden, kann es auf die gleiche Weise wie jedes
andere Abbild gebrannt werden. Wenn
dvdauthor verwendet wurde, um die
DVD zu erstellen und die Resultate in
/path/to/video liegen, kann das folgende
Kommando verwendet werden, um ein DVD-Video zu brennen:&prompt.root; growisofs -Z /dev/cd0 -dvd-video /path/to/video wird an &man.mkisofs.8;
weitergereicht, um die Datei-Hierarchie für ein DVD-Video zu
erstellen. Weiterhin bewirkt diese Option, dass
&man.growisofs.1; mit aufgerufen
wird.DVD+RW-Medien benutzenDVDDVD+RWIm Gegensatz zu CD-RW-Medien müssen
DVD+RW-Medien
erst formatiert werden, bevor sie benutzt werden können.
Es wird empfohlen &man.growisofs.1;
einzusetzen, da das Programm Medien automatisch formatiert,
wenn es erforderlich ist. Es ist jedoch möglich, auch
dvd+rw-format zu nutzen, um die
DVD+RW zu formatieren:&prompt.root; dvd+rw-format /dev/cd0Dieser Vorgang muss nur einmal durchgeführt werden.
Denken Sie daran, dass nur neue DVD+RWs formatiert werden
müssen. Anschließend können DVD+RWs, wie
gewohnt gebrannt werden.Wenn Sie auf einer DVD+RW ein neues
Dateisystem erstellen wollen, brauchen Sie die
DVD+RW vorher nicht zu
löschen. Überschreiben Sie einfach das vorige Dateisystem
indem Sie eine neue Session anlegen:&prompt.root; growisofs -Z /dev/cd0 -J -R /path/to/newdataDas DVD+RW-Format erlaubt es, Daten an
eine vorherige Aufnahme anzuhängen. Dazu wird eine neue
Session mit der schon bestehenden zusammengeführt.
Es wird keine Multi-Session geschrieben, sondern
&man.growisofs.1; vergrößert
das ISO-9660-Dateisystem auf dem Medium.Das folgende Kommando fügt weitere Daten zu
einer vorher erstellten DVD+RW
hinzu:&prompt.root; growisofs -M /dev/cd0 -J -R /path/to/nextdataWenn Sie eine DVD+RW erweitern,
verwenden Sie dieselben &man.mkisofs.8;-Optionen wie beim
Erstellen der DVD+RW.Verwenden Sie , um bessere
Kompatibilität mit DVD-ROM-Laufwerken zu
gewährleisten. Zu einem DVD+RW-Medium
können Sie mit dieser Option auch weiterhin Daten
hinzufügen.Um das Medium zu löschen, verwenden Sie:&prompt.root; growisofs -Z /dev/cd0=/dev/zeroDVD-RW-Medien benutzenDVDDVD-RWEine DVD-RW kann mit zwei Methoden
beschrieben werden:
Sequential-Recording oder
Restricted-Overwrite. Voreingestellt
ist Sequential-Recording.Eine neue DVD-RW kann direkt
beschrieben werden; sie muss nicht vorher formatiert werden.
Allerdings muss eine DVD-RW, die mit
Sequential-Recording aufgenommen wurde, zuerst gelöscht
werden, bevor eine neue Session aufgenommen werden
kann.Der folgende Befehl löscht eine DVD-RW
im Sequential-Recording-Modus:&prompt.root; dvd+rw-format -blank=full /dev/cd0Das vollständige Löschen mit
dauert mit einem
1x Medium ungefähr eine Stunde. Wenn die
DVD-RW im Disk-At-Once-Modus (DAO)
aufgenommen wurde, kann sie mit
schneller gelöscht werden. Um eine
DVD-RW im DAO-Modus zu brennen, benutzen
Sie das folgende Kommando:&prompt.root; growisofs -use-the-force-luke=dao -Z /dev/cd0=imagefile.isoDie Option
sollte nicht erforderlich sein, da &man.growisofs.1;
den DAO-Modus automatisch erkennt.Der Restricted-Overwrite-Modus sollte mit jeder
DVD-RW verwendet werden, da er flexibler
als der voreingestellte Sequential-Recording-Modus
ist.Um Daten auf eine DVD-RW im
Sequential-Recording-Modus zu schreiben, benutzen Sie dasselbe
Kommando wie für die anderen
DVD-Formate:&prompt.root; growisofs -Z /dev/cd0 -J -R /path/to/dataUm weitere Daten zu einer Aufnahme hinzuzufügen, benutzen
Sie mit &man.growisofs.1;. Werden die
Daten im Sequential-Recording-Modus hinzugefügt, wird eine
neue Session erstellt. Das Ergebnis ist ein
Multi-Session-Medium.Eine DVD-RW im
Restricted-Overwrite-Modus muss nicht gelöscht werden, um eine
neue Session aufzunehmen. Das Medium kann einfach mit
überschrieben werden. Mit
kann das ISO-9660-Dateisystem, wie mit
einer DVD+RW, vergrößert werden.
Die DVD enthält danach eine Session.Benutzen sie das nachstehende Kommando, um den
Restricted-Overwrite-Modus einzustellen:&prompt.root; dvd+rw-format /dev/cd0Das folgende Kommando stellt den Modus wieder auf
Sequential-Recording zurück:&prompt.root; dvd+rw-format -blank=full /dev/cd0Multi-SessionNur wenige DVD-ROM-Laufwerke
unterstützen Multi-Session-DVDs und lesen meist nur die erste
Session. Mehrere Sessions werden von DVD+R, DVD-R und
DVD-RW im Sequential-Recording-Modus
unterstützt. Im Modus Restricted-Overwrite gibt nur eine
Session.Wenn das Medium noch nicht geschlossen ist, erstellt das
nachstehende Kommando eine neue Session auf einer DVD+R, DVD-R
oder DVD-RW im
Sequential-Recording-Modus:&prompt.root; growisofs -M /dev/cd0 -J -R /path/to/nextdataWird dieses Kommando mit DVD+RW- oder
DVD-RW-Medien im Restricted-Overwrite-Modus
benutzt, werden die neuen Daten mit
den Daten der bestehenden Session zusammengeführt. Das Medium
enthält danach eine Session. Nutzen Sie diese Methode, um
neue Daten zu einer bestehenden Session hinzuzufügen.Für den Anfang und das Ende einer Session wird auf dem
Medium zusätzlicher Platz verbraucht. Um den Speicherplatz
auf dem Medium optimal auszunutzen, sollten Sie daher
Sessions mit vielen Daten hinzufügen. Auf ein DVD+R-Medium
passen maximal 154 Sessions, 2000 Sessions auf ein
DVD-R-Medium und 127 Sessions auf eine DVD+R Double
Layer.Weiterführendesdvd+rw-mediainfo
/dev/cd0 zeigt
Informationen über eine im Laufwerk liegende
DVD an.Weiteres zu dvd+rw-tools
finden Sie in &man.growisofs.1;, auf der
dvd+rw-tools Web-Seite und in den Archiven
der
cdwrite-Mailingliste.Wenn Sie einen Problembericht zur Nutzung der
dvd+rw-tools erstellen, fügen Sie
immer die Ausgabe von dvd+rw-mediainfo
hinzu.DVD-RAMDVDDVD-RAMDVD-RAM-fähige Brenner nutzten die
SCSI- oder
ATAPI-Schnittstelle. Für
ATAPI-Geräte muss der DMA-Modus aktiviert
werden, indem die folgende Zeile in
/boot/loader.conf hinzugefügt
wird:hw.ata.atapi_dma="1"Eine DVD-RAM kann mit einer
Wechselplatte verglichen werden. Wie diese, muss auch eine
DVD-RAM vor dem ersten
Einsatz formatiert werden. In diesem Beispiel wird das
gesamte Medium mit dem Standard-UFS2-Dateisystem
formatiert:&prompt.root; dd if=/dev/zero of=/dev/acd0 bs=2k count=1
&prompt.root; bsdlabel -Bw acd0
&prompt.root; newfs /dev/acd0Denken Sie dabei daran, dass Sie gegebenenfalls die
Gerätedatei (hier acd0) an
Ihre Konfiguration anpassen müssen.Nachdem die DVD-RAM formatiert ist,
kann sie wie eine normale Festplatte gemountet
werden:&prompt.root; mount /dev/acd0/mntDanach kann schreibend und lesend auf das
DVD-RAM Medium zugegriffen werden.Disketten benutzenDieser Abschnitt beschreibt die Formatierung
von 3,5 Zoll Disketten in &os;.Disketten formatierenBevor eine Diskette benutzt werden kann, muss sie
(low-level) formatiert werden, was normalerweise der
Hersteller schon gemacht hat. Sie können die Diskette
allerdings noch einmal formatieren, um das Medium zu
überprüfen. Benutzen Sie &man.fdformat.1;, um Disketten
unter &os; zu formatieren. Achten Sie dabei auf
Fehlermeldungen, die schlechte Speichermedien
anzeigen.Um eine Diskette zu formatieren, legen Sie eine
3,5 Zoll Diskette in das erste Diskettenlaufwerk ein
und führen das folgende Kommando aus:&prompt.root; /usr/sbin/fdformat -f 1440 /dev/fd0Nach dem Formatieren muss auf der Diskette ein
Disklabel erstellt werden, um die Größe und Geometrie der
Diskette zu erkennen. Eine Liste der unterstützten
Geometrien finden Sie in
/etc/disktab.Erstellen Sie nun das Label mit &man.bsdlabel.8;:&prompt.root; /sbin/bsdlabel -B -w /dev/fd0 fd1440Auf der Diskette kann nun ein Dateisystem erstellt
werden (high-level Formatierung). Das Dateisystem der
Diskette kann entweder UFS oder FAT sein, wobei FAT für
Disketten in der Regel die bessere Wahl ist.Um die Diskette mit FAT zu formatieren, geben Sie
folgendes Kommando ein:&prompt.root; /sbin/newfs_msdos /dev/fd0Die Diskette kann nun benutzt werden. Um die Diskette
zu verwenden, kann sie mit &man.mount.msdosfs.8; eingehängt
werden. Man kann auch emulators/mtools aus
der Ports-Sammlung installieren, um mit der Diskette zu
arbeiten.DatensicherungDie Planung und Umsetzung einer Backup-Strategie ist
unerlässlich, um Daten in bestimmten Situationen
wiederherstellen zu können, zum Beispiel bei Plattendefekten,
versehentlichem Löschen von Dateien, willkürlicher Korrumpierung
von Dateien oder der vollständigen Zerstörung des Systems und
der Backups, die am gleichen Ort aufbewahrt werden.Die Art und der Zeitplan des Backups kann variieren,
abhängig von der Wichtigkeit der Daten, der benötigten
Granularität zur Wiederherstellung von Dateien und der
Dauer einer akzeptablen Ausfallzeit. Zu den möglichen
Backup-Strategien gehören unter anderem:Die Archivierung des kompletten Systems auf externen
Datenträgern. Dieser Ansatz schützt zwar vor allen oben
aufgeführten Problemen, ist aber zeitaufwändig und unbequem
bei der Wiederherstellung, insbesondere für nicht
privilegierte Benutzer.Dateisystem-Snapshots sind nützlich bei der
Wiederherstellung von gelöschten Dateien, bzw. früheren
Versionen von Dateien.Kopien ganzer Dateisysteme oder Festplatten, die mit
einem anderen System im Netzwerk mittels
net/rsync synchronisiert werden.Hardware oder Software RAID, was im
Falle von Plattendefekten die Ausfallzeit minimiert oder
vermeidet.Üblicherweise wird eine Mischung aus verschiedenen
Strategien verwendet. Es kann zum Beispiel ein Sicherungsplan
erstellt und automatisiert werden, um eine wöchentliche,
vollständige Systemsicherung, ergänzt mit stündlichen
ZFS-Snapshots, zu erstellen. Darüber hinaus könnte man
eine manuelle Sicherung einzelner Verzeichnisse oder Dateien
machen, bevor diese bearbeitet oder gelöscht werden.Dieser Abschnitt beschreibt einige Programme, die zur
Erstellung und Verwaltung von Sicherungen unter &os; verwendet
werden können.Sicherung von DateisystemenBackup-Softwaredump / restoredumprestoreDie traditionellen &unix;-Programme zum Sichern und
Wiederherstellen von Dateisystemen sind &man.dump.8; und
&man.restore.8;. Diese Programme arbeiten auf der Block-Ebene
der Festplatte, also unterhalb des Abstraktionslevels von
Dateien, Links und Verzeichnissen, die die Grundlage des
Dateisystemkonzepts bilden. Im Gegensatz zu anderen
Backup-Programmen sichert dump ein ganzes
Dateisystem und nicht nur einen Teil des Dateisystems, oder
einen Verzeichnisbaum, der mehr als ein Dateisystem umfasst.
Anstatt Dateien oder Verzeichnisse zu schreiben, schreibt
dump die Blöcke, aus denen die Dateien und
Verzeichnisse bestehen.Wird dump benutzt, um das
Root-Verzeichnis zu sichern, werden
/home, /usr und
viele andere Verzeichnisse nicht gesichert, da dies
normalerweise Mountpunkte für andere Dateisysteme oder
symbolische Links zu diesen Dateisystemen sind.Wenn restore zum Extrahieren von Daten
verwendet wird, werden temporäre Dateien standardmäßig in
/tmp abgelegt. Wenn Sie von einer Platte
mit einem kleinen /tmp-Verzeichnis
zurücksichern, setzen Sie die Umgebungsvariable
TMPDIR auf ein Verzeichnis mit mehr freiem
Speicherplatz, damit die Wiederherstellung gelingt.Beachten Sie bei der Verwendung von
dump, dass es einige Eigenarten aus den
frühen Tagen der Version 6 von AT&T &unix; (ca. 1975)
beibehalten hat. Die Standardparameter gehen davon aus, dass
auf einem 9-Spur-Band gesichert wird, und nicht auf ein
anderes Medium oder auf Sicherungsbänder mit hoher Dichte.
Diese Standardwerte müssen auf der Kommandozeile überschrieben
werden..rhostsEs ist möglich, das Dateisystem über das Netzwerk auf
einem anderen Rechner zu sichern, oder auf einem Bandlaufwerk
eines anderen Rechners. Obwohl die Programme &man.rdump.8;
und &man.rrestore.8; für diese Zwecke benutzt werden können,
gelten sie als nicht sicher.Verwenden Sie stattdessen dump und
restore in einer sichereren Weise über eine
SSH-Verbindung. In diesem Beispiel wird
eine vollständige, komprimierte Sicherung von
/usr erstellt, das
anschließend an einen bestimmten Host über eine
SSH-Verbindung gesendet wird.dump mit
ssh benutzen&prompt.root; /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gzIn diesem Beispiel wird RSH gesetzt, um
über eine SSH-Verbindung eine Sicherung auf
ein Bandlaufwerk eines entfernten Systems zu schreiben:dump über
ssh mit gesetzter
RSH benutzen&prompt.root; env RSH=/usr/bin/ssh /sbin/dump -0uan -f tatargetuser@targetmachine.example.com:/dev/sa0 /usrSicherung von VerzeichnissenBackup-SoftwaretarEinige integrierte Werkzeuge stehen zur Sicherung
und Wiederherstellung von bestimmten Dateien und
Verzeichnissen bei Bedarf zur Verfügung.Wenn es um die Sicherung von Dateien in einem Verzeichnis
geht, ist &man.tar.1; eine gute Wahl. Dieses Werkzeug stammt
aus Version 6 von AT&T &unix; und erwartet standardmäßig
eine rekursive Sicherung auf ein lokales Band. Es können
jedoch Optionen angegeben werden, um den Namen einer
Sicherungsdatei zu bestimmen.tarIn diesem Beispiel wird eine komprimierte Sicherung des
aktuellen Verzeichnisses nach
/tmp/mybackup.tgz gespeichert. Achten
Sie bei der Sicherungsdatei darauf, dass sie nicht in dem
Verzeichnis gespeichert wird, welches gesichert werden
soll.Das aktuelle Verzeichnis mit tar
sichern&prompt.root; tar czvf /tmp/mybackup.tgz .Um eine komplette Sicherung wiederherzustellen, wechseln
Sie mit cd in das Verzeichnis, in dem Sie
die Daten wiederherstellen möchten und geben Sie den Namen der
Sicherungsdatei an. Beachten Sie, dass dabei alle Dateien in
dem Verzeichnis überschrieben werden. Im Zweifel sichern Sie
besser in einem temporären Verzeichnis, oder geben Sie den
Verzeichnisnamen bei der Wiederherstellung an.Wiederherstellung mit tar in das
aktuelle Verzeichnis&prompt.root; tar xzvf /tmp/mybackup.tgzEs gibt dutzende Optionen, die in &man.tar.1; beschrieben
werden. Das Programm unterstützt auch die Verwendung von
Ausschlußmustern, um bestimmte Dateien von der Sicherung oder
Wiederherstellung von Verzeichnissen auszuschließen.Backup-SoftwarecpioUm bestimmte, aufgelistete Dateien und Verzeichnisse zu
sichern, ist &man.cpio.1; eine gute Wahl. Im Gegensatz zu
tar weiß cpio nicht
wie ein Verzeichnisbaum durchlaufen wird. Daher ist es auf
eine Liste von zu sichernden Dateien angewiesen.So kann beispielsweise eine Liste von Dateien mit
ls oder find erzeugt
werden. Dieses Beispiel erstellt eine rekursive Liste des
aktuellen Verzeichnisses, die dann über eine Pipe an
cpio übergeben wird, um eine Sicherung
namens /tmp/mybackup.cpio zu
erstellen.Rekursive Sicherung des aktuellen Verzeichnisses mit
ls und cpio&prompt.root; ls -R | cpio -ovF /tmp/mybackup.cpioBackup-SoftwarepaxpaxPOSIXIEEE&man.pax.1; ist ein Programm, welches versucht die
Funktionen von tar und
cpio zu kombinieren. Über die Jahre
hinweg sind die verschiedenen Versionen von
tar und cpio leicht
inkompatibel geworden. Daher hat &posix;
pax geschaffen, welches versucht viele
der unterschiedlichen cpio- und
tar-Formate zu lesen und zu schreiben,
außerdem einige neue, eigene Formate.Für die vorangegangenen Beispiele wäre ein äquivalenter
Aufruf von pax:Das aktuelle Verzeichnis mit pax
sichern&prompt.root; pax -wf /tmp/mybackup.pax .Bandmedien benutzenBandmedienObwohl sich Bandmedien mit der Zeit weiterentwickelt
haben, verwenden moderne Backup-Systeme in der Regel
Offsite-Backups in Verbindung
mit lokalen Wechseldatenträgern. &os; unterstützt alle
SCSI-Bandlaufwerke, wie etwa
LTO und DAT. Zusätzlich
gibt es begrenzte Unterstützung für SATA-
und USB-Bandlaufwerke.Für SCSI-Bandlaufwerke nutzt &os; den
&man.sa.4; Treiber, der die Schnittstellen
/dev/sa0, /dev/nsa0
und /dev/esa0 bereitstellt. Der Name des
physikalischen Geräts ist /dev/sa0.
Wird /dev/nsa0 benutzt, dann wird die
Backup-Anwendung nach dem Schreibvorgang das Band nicht
zurückspulen, was es ermöglicht, mehr als eine Datei auf das
Band zu schreiben. Die Verwendung von
/dev/esa0 wirft das Band aus, nachdem das
Gerät geschlossen wurde.&os; nutzt mt für die Steuerung der
Operationen des Bandlaufwerks, wie die Suche nach Dateien auf
einem Band, oder um Kontrollmarkierungen auf ein Band zu
schreiben. Beispielsweise können die ersten drei Dateien auf
einem Band erhalten bleiben, indem sie übersprungen werden,
bevor eine neue Datei auf das Band geschrieben wird&prompt.root; mt -f /dev/nsa0 fsf 3Dieses Werkzeug unterstützt viele Operationen. Weitere
Einzelheiten finden Sie in &man.mt.1;.Um eine Datei mit tar auf ein Band zu
schreiben, geben Sie den Namen des Bandlaufwerks und den
Dateinamen an:&prompt.root; tar cvf /dev/sa0 fileWiederherstellung von Dateien aus dem
tar-Archiv von Band in das aktuelle
Verzeichnis:&prompt.root; tar xvf /dev/sa0Benutzen Sie dump, um ein
UFS-Dateisystem zu sichern. Dieses
Beispiel sichert /usr, ohne danach das
Band zurückzuspulen:&prompt.root; dump -0aL -b64 -f /dev/nsa0 /usrInteraktive Wiederherstellung von Dateien aus einer
&man.dump.8;-Datei von Band in das aktuelle
Verzeichnis:&prompt.root; restore -i -f /dev/nsa0Backup-Software von DrittanbieternBackup-SoftwareDie &os; Ports-Sammlung enthält viele Programme von
Drittanbietern, die verwendet werden können um die zeitliche
Erstellung von Sicherungen zu planen, zu vereinfachen und
bequemer zu machen. Viele dieser Programme basieren auf dem
Client-Server-Modell und können benutzt werden, um die
Sicherung von einzelnen Systemen oder allen Rechnern in einem
Netzwerk zu automatisieren.Zu den bekannten Programmen gehören
Amanda,
Bacula,
rsync und
duplicity.Die Wiederherstellung in einem NotfallZusätzlich zu den regelmäßigen Sicherungen empfiehlt es
sich, die folgenden Schritte im Rahmen eines Notfallplans
durchzuführen.bsdlabelErstellen Sie einen Ausdruck der Ausgabe der folgenden
Kommandos:gpart showmore /etc/fstabdmesgLive-CDBewahren Sie diesen Ausdruck und eine Kopie des
Installationsmediums an einem sicheren Ort auf. Im Falle
einer Wiederherstellung im Notfall, starten Sie von dem
Installationsmedium und wählen Sie Live CD,
um eine Rettungs-Shell zu starten. Dieser Rettungsmodus kann
verwendet werden, um den aktuellen Stand des Systems
anzuzeigen, und wenn nötig, Festplatten zu formatieren und
Daten aus den Sicherungen wiederherzustellen.Das Installationsmedium für
&os;/&arch.i386; &rel2.current;-RELEASE enthält
keine Rettungs-Shell. Laden Sie für diese Version ein
Abbild der Livefs CD von ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/&arch.i386;/ISO-IMAGES/&rel2.current;/&os;-&rel2.current;-RELEASE-&arch.i386;-livefs.iso.Als nächstes testen Sie die Rettungs-Shell und die
Sicherungen. Dokumentieren Sie diesen Ablauf. Bewahren Sie
diese Notizen zusammen mit den Medien, den Ausdrucken und den
Sicherungen auf. Diese Notizen können Ihnen im Notfall helfen
eine versehentliche Zerstörung der Sicherungen zu verhindern,
während Sie unter Stress eine Wiederherstellung
durchführen.Als zusätzliche Sicherheitsvorkehrung kann jeweils die
letzte Sicherung an einem entfernten Standort aufbewahrt
werden. Dieser Standort sollte räumlich von den Computern und
Festplatten durch eine erhebliche Entfernung getrennt
sein.Speicherbasierte LaufwerkeMarcFonvieilleVerbessert und neu strukturiert von Neben physikalischen Laufwerken unterstützt &os;
auch speicherbasierte Laufwerke. Eine mögliche Verwendung für
ein speicherbasiertes Laufwerk ist der Zugriff auf ein
ISO-Dateisystem, jedoch ohne vorher
die Daten auf eine CD oder
DVD zu brennen und dann das Medium
einzuhängen.&os; verwendet den &man.md.4; Treiber um Unterstützung für
speicherbasierte Laufwerke bereitzustellen. Dieser Treiber ist
bereits im GENERIC-Kernel enthalten. Wenn
Sie eine angepasste Kernelkonfigurationsdatei verwenden, stellen
Sie sicher, dass folgende Zeile enthalten ist:device mdEin- und Aushängen von bestehenden AbbildernLaufwerkespeicherbasierteUm ein bestehendes Abbild eines Dateisystems einzuhängen,
verwenden Sie mdconfig zusammen mit dem
Namen der ISO-Datei und einer freien
Gerätenummer. Benutzen Sie dann diese Gerätenummer, um das
Abbild in einen existierenden Mountpunkt einzuhängen. Sobald
dies erledigt ist, erscheinen die Dateien des Abbildes
unterhalb des Mountpunktes. Dieses Beispiel wird
diskimage.iso an das speicherbasierte
Laufwerk /dev/md0 binden und dann in
/mnt einhängen:&prompt.root; mdconfig -f diskimage.iso -u 0
&prompt.root; mount /dev/md0/mntWenn keine Gerätenummer mit angegeben
ist, wird von &man.md.4; automatisch eine
ungenutzte Gerätenummer zugewiesen. Das zugewiesene Gerät
wird auf der Standardausgabe ausgegeben (zum Beispiel
md4). Weitere Informationen zu diesem
Kommando und dessen Optionen finden Sie in
&man.mdconfig.8;.Laufwerkespeicherbasiertes Laufwerk aushängenWenn ein speicherbasiertes Laufwerk nicht mehr in Gebrauch
ist, sollten seine belegten Ressourcen wieder an das System
zurückgegeben werden. Hängen Sie zuerst das Dateisystem aus,
dann verwenden Sie mdconfig, um die Platte
vom System zu trennen und die Ressourcen freizugeben.&prompt.root; umount /mnt
&prompt.root; mdconfig -d -u 0Um festzustellen, ob noch irgendwelche speicherbasierten
Laufwerke am System angeschlossen sind, benutzen Sie
mdconfig -l.Ein datei- oder speicherbasiertes Laufwerk
erzeugenLaufwerkespeicherbasierte&os; unterstützt auch speicherbasierte Laufwerke, bei
denen der verwendete Speicher entweder einer Festplatte, oder
einem Bereich im Arbeitsspeicher zugewiesen wird. Die erste
Methode ist gemeinhin als dateibasiertes Dateisystem, die
zweite als speicherbasiertes Dateisystem bekannt. Beide Typen
können mit mdconfig erzeugt werden.Um ein speicherbasiertes Dateisystem zu erstellen, geben
Sie den Typ swap sowie die gewünschte Größe
des Laufwerks an. Dieses Beispiel erzeugt ein 5 MB
großes Laufwerk an der Gerätenummer 1. Das
Laufwerk wird mit dem UFS-Dateisystem
formatiert, bevor es eingehängt wird:&prompt.root; mdconfig -a -t swap -s 5m -u 1
&prompt.root; newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes.
with soft updates
super-block backups (for fsck -b #) at:
160, 2752, 5344, 7936
&prompt.root; mount /dev/md1/mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md1 4718 4 4338 0% /mntUm ein dateibasiertes Dateisystem zu erstellen,
muss zunächst ein Stück Speicher auf der Festplatte reserviert
werden. Dieses Beispiel erzeugt eine 5 KB große Datei
namens newimage:&prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records outAls nächstes muss diese Datei an ein speicherbasiertes
Laufwerk gebunden, gelabelt und mit dem
UFS-Dateisystem formatiert werden. Danach
können Sie das Laufwerk einhängen und die Größe
überprüfen:&prompt.root; mdconfig -f newimage -u 0
&prompt.root; bsdlabel -w md0 auto
&prompt.root; newfs md0a
/dev/md0a: 5.0MB (10224 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes.
super-block backups (for fsck -b #) at:
160, 2720, 5280, 7840
&prompt.root; mount /dev/md0a /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0a 4710 4 4330 0% /mntEs benötigt mehrere Befehle, um ein datei- oder
speicherbasiertes Dateisystem mit mdconfig
zu erstellen. &os; enthält auch mdmfs, das
ein speicherbasiertes Laufwerk automatisch konfigurieren,
formatieren und einhängen kann. Nachdem beispielsweise
newimage mit dd
erstellt wurde, hätte auch der folgende Befehl benutzt werden
können, anstelle der oben verwendeten Kommandos
bsdlabel, newfs und
mount:&prompt.root; mdmfs -F newimage -s 5m md0/mntUm hingegen ein speicherbasiertes Laufwerk mit
mdmfs zu erstellen, wird dieser Befehl
benutzt:&prompt.root; mdmfs -s 5m md1/mntWenn die Gerätenummer nicht angegeben wird, wählt
mdmfs automatisch ein ungenutztes
Gerät aus. Weitere Einzelheiten über mdmfs
finden Sie in &man.mdmfs.8;.Schnappschüsse von DateisystemenTomRhodesBeigetragen von Schnappschüssevon DateisystemenZusammen mit
Soft Updates bietet &os;
eine weitere Funktion: Schnappschüsse von Dateisystemen.UFS-Schnappschüsse sind Dateien, die ein Abbild eines
Dateisystems enthalten und müssen auf dem jeweiligen Dateisystem
erstellt werden. Pro Dateisystem darf es maximal
20 Schnappschüsse, die im Superblock vermerkt werden,
geben. Schnappschüsse bleiben erhalten, wenn das Dateisystem
abgehangen, neu eingehangen oder das System neu gestartet wird.
Wenn ein Schnappschuss nicht mehr benötigt wird, kann er
mit &man.rm.1; gelöscht werden. Es ist egal, in welcher
Reihenfolge Schnappschüsse gelöscht werden. Es kann allerdings
vorkommen, dass nicht der gesamte Speicherplatz wieder
freigegeben wird, da ein anderer Schnappschuss einen Teil der
entfernten Blöcke für sich beanspruchen kann.Das unveränderliche -Dateiflag
wird nach der Erstellung des Snapshots von &man.mksnap.ffs.8;
gesetzt. Durch die Verwendung von &man.unlink.1; ist es
allerdings möglich, einen Schnappschuss zu löschen.Schnappschüsse werden mit &man.mount.8; erstellt. Das
folgende Kommando legt einen Schnappschuss von
/var in
/var/snapshot/snap ab:&prompt.root; mount -u -o snapshot /var/snapshot/snap /varAlternativ kann der Schnappschuss auch mit
&man.mksnap.ffs.8; erstellt werden.&prompt.root; mksnap_ffs /var /var/snapshot/snapUm Schnappschüsse auf einem Dateisystem, beispielsweise
/var zu finden, kann man &man.find.1;
verwenden:&prompt.root; find /var -flags snapshotNachdem ein Schnappschuss erstellt wurde, können Sie
ihn für verschiedene Zwecke benutzen:Sie können den Schnappschuss für die
Datensicherung benutzen und ihn auf eine
CD oder ein Band schreiben.Die Integrität des Schnappschusses kann mit &man.fsck.8;
geprüft werden. Wenn das Dateisystem zum Zeitpunkt der
Erstellung des Schnappschusses in Ordnung war, sollte
&man.fsck.8; immer erfolgreich durchlaufen.Sie können den Schnappschuss mit &man.dump.8;
sichern. Sie erhalten dann eine konsistente Sicherung des
Dateisystems zu dem Zeitpunkt, der durch den Zeitstempel des
Schnappschusses gegeben ist. Der Schalter
von &man.dump.8; erstellt für die
Sicherung einen Schnappschuss und entfernt diesen am Ende
der Sicherung wieder.Sie können einen Schnappschuss in den
Verzeichnisbaum einhängen und sich dann den Zustand des
Dateisystems zu dem Zeitpunkt ansehen, an dem der
Schnappschuss erstellt wurde. Der folgende Befehl
hängt den Schnappschuss
/var/snapshot/snap ein:&prompt.root; mdconfig -a -t vnode -o readonly -f /var/snapshot/snap -u 4
&prompt.root; mount -r /dev/md4 /mntDer eingefrorene Stand des
/var-Dateisystems ist nun unterhalb von
/mnt verfügbar. Mit Ausnahme der früheren
Schnappschüsse, die als leere Dateien auftauchen, wird zu
Beginn alles so aussehen, wie zum Zeitpunkt der Erstellung des
Schnappschusses. Der Schnappschuss kann wie folgt abgehängt
werden:&prompt.root; umount /mnt
&prompt.root; mdconfig -d -u 4Weitere Informationen über Soft Updates und
Schnappschüsse von Dateisystemen sowie technische Artikel finden
Sie auf der
Webseite von Marshall Kirk McKusick.Disk QuotasAccountingPlattenplatzDisk QuotasDisk Quotas erlauben dem Administrator, den Plattenplatz
und/oder die Anzahl der Dateien eines Benutzers oder der
Mitglieder einer Gruppe, auf Dateisystemebene zu beschränken.
Dadurch wird verhindert, dass ein Benutzer oder eine Gruppe von
Benutzern den ganzen verfügbaren Plattenplatz belegt.Dieser Abschnitt beschreibt die Konfiguration von Disk
Quotas für UFS-Dateisysteme. Lesen Sie
, wenn Sie Disk Quotas auf einem
ZFS-Dateisystem einrichten möchten.Disk Quotas aktivierenPrüfen Sie zunächst, ob der &os;-Kernel Disk Quotas
unterstützt:&prompt.user; sysctl kern.features.ufs_quota
kern.features.ufs_quota: 1In diesem Beispiel zeigt die 1 an, das
Quotas unterstützt werden. Falls 0
ausgegeben wird, fügen Sie folgende Zeile in die
Kernelkonfigurationsdatei ein, und folgen Sie den Anweisungen
in um den Kernel zu
aktualisieren:options QUOTAAls nächstes aktivieren Sie Disk Quotas in
/etc/rc.conf:quota_enable="YES"Disk QuotasüberprüfenNormalerweise wird beim Booten die Integrität der Quotas
auf allen Dateisystemen mit &man.quotacheck.8;
überprüft. Dieses Programm stellt sicher, dass die
Quota-Datenbank mit den Daten auf einem Dateisystem
übereinstimmt. Dies ist allerdings ein zeitraubender Prozess,
der die Zeit, die das System zum Booten braucht, signifikant
beeinflusst. Eine Variable in
/etc/rc.config erlaubt es, diesen Schritt
zu überspringen:check_quotas="NO"Zuletzt muss noch /etc/fstab
bearbeitet werden, um die Plattenquotas auf Dateisystemebene
zu aktivieren. Um Quotas pro Benutzer für ein Dateisystem zu
aktivieren, geben Sie für dieses Dateisystem
im Feld Optionen von
/etc/fstab an. Zum Beispiel:/dev/da1s2g /home ufs rw,userquota 1 2Um Quotas für Gruppen einzurichten, verwenden
Sie . Um Quotas für Benutzer
und Gruppen einzurichten, trennen Sie die Optionen durch
Kommata:/dev/da1s2g /home ufs rw,userquota,groupquota 1 2Quota-Dateien werden standardmäßig im Rootverzeichnis
des Dateisystems unter quota.user und
quota.group abgelegt. Weitere
Informationen finden Sie in &man.fstab.5;. Es wird nicht
empfohlen, Quota-Dateien an anderen Stellen zu
speichern.Sobald die Konfiguration abgeschlossen ist, starten Sie
das System neu.
/etc/rc wird dann automatisch die
richtigen Kommandos aufrufen, um die Quota-Dateien für
alle in /etc/rc.conf definierten Quotas
anzulegen.Normalerweise brauchen die Kommandos
&man.quotacheck.8;, &man.quotaon.8; oder
&man.quotaoff.8; nicht von Hand aufgerufen werden,
obwohl man die entsprechenden Seiten im
Manual lesen sollte, um sich mit ihnen vertraut
zu machen.Setzen von Quota-LimitsDisk QuotasLimitsStellen Sie sicher, dass Quotas auch tatsächlich
aktiviert sind:&prompt.root; quota -vFür jedes Dateisystem, auf dem Quotas aktiviert sind,
sollte eine Zeile mit der Plattenauslastung und den
aktuellen Quota-Limits zu sehen sein.Mit edquota können nun
Quota-Limits zugewiesen werden.Mehrere Möglichkeiten stehen zur Verfügung, um Limits für
den Plattenplatz, den ein Benutzer oder eine Gruppe
verbrauchen kann, oder die Anzahl der Dateien, die angelegt
werden dürfen, festzulegen. Die Limits können auf dem
Plattenplatz (Block-Quotas), der Anzahl der Dateien
(Inode-Quotas) oder einer Kombination von beiden basieren.
Jedes Limit wird weiterhin in zwei Kategorien geteilt:
Hardlimits und Softlimits.HardlimitEin Hardlimit kann nicht überschritten werden.
Hat der Benutzer einmal ein Hardlimit erreicht, so kann er
auf dem betreffenden Dateisystem keinen weiteren Platz mehr
beanspruchen. Hat ein Benutzer beispielsweise ein Hardlimit
von 500 Kilobytes auf einem Dateisystem und benutzt davon
490 Kilobyte, so kann er nur noch 10 weitere Kilobytes
beanspruchen. Der Versuch, weitere 11 Kilobytes zu
beanspruchen, wird fehlschlagen.SoftlimitSoftlimits können für eine befristete Zeit überschritten
werden. Diese Frist beträgt in der Grundeinstellung eine
Woche. Hat der Benutzer das Softlimit über die Frist hinaus
überschritten, so wird das Softlimit in ein Hardlimit
umgewandelt und der Benutzer kann keinen weiteren Platz mehr
beanspruchen. Wenn er einmal das Softlimit unterschreitet,
wird die Frist wieder zurückgesetzt.Im folgenden Beispiel wird das Quota des Benutzerkonto
test bearbeitet.
Wenn edquota aufgerufen wird,
wird der in EDITOR definierte Editor
aufgerufen, um die Quota-Limts zu konfigurieren. Der
Standard-Editor ist vi.&prompt.root; edquota -u test
Quotas for user test:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)Für jedes Dateisystem, auf dem Quotas aktiv sind,
sind zwei Zeilen zu sehen. Eine repräsentiert die
Block-Quotas und die andere die Inode-Quotas. Um ein Limit zu
modifizieren, ändern Sie einfach den angezeigten Wert. Um
beispielsweise das Blocklimit von /usr
auf ein Softlimit von 500 und ein Hardlimit
von 600 zu erhöhen, ändern Sie die Zeile
wie folgt:/usr: kbytes in use: 65, limits (soft = 500, hard = 600)Die neuen Limits sind wirksam, sobald der Editor verlassen
wird.Manchmal ist es wünschenswert, die Limits für eine Reihe
von Benutzern zu setzen. Dazu weisen Sie zunächst einem
Benutzer das gewünschte Quota-Limit zu. Anschließend benutzen
Sie , um das Quota auf einen bestimmten
Bereich von Benutzer-IDs (UID) zu
duplizieren. Der folgende Befehl dupliziert die Quota-Limits
auf die UIDs 10000 bis
19999:&prompt.root; edquota -p test 10000-19999Weitere Informationen finden Sie in
&man.edquota.8;.Überprüfen von Quota-Limits und PlattennutzungDisk QuotasüberprüfenUm die Limits oder die Plattennutzung individueller
Benutzer und Gruppen zu überprüfen, kann &man.quota.1; benutzt
werden. Ein Benutzer kann nur die eigenen Quotas und die
Quotas der Gruppe, der er angehört untersuchen. Nur der
Superuser darf sich alle Limits ansehen. Mit &man.repquota.8;
erhalten Sie eine Zusammenfassung von allen Limits und der
Plattenausnutzung für alle Dateisysteme, auf denen Quotas
aktiv sind.In der Ausgabe von &man.quota.1; werden Dateisysteme, auf
denen ein Benutzer keinen Platz verbraucht, nicht angezeigt,
auch wenn diesem Quotas zugewiesen wurden. Benutzen Sie
um solche Dateisysteme ebenfalls
anzuzeigen. Das folgende Beispiel zeigt die Ausgabe von
quota -v für einen Benutzer, der
Quota-Limits auf zwei Dateisystemen besitzt:Disk quotas for user test (uid 1002):
Filesystem usage quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60grace periodIm Dateisystem /usr liegt der
Benutzer momentan 15 Kilobytes über dem Softlimit von 50
Kilobytes und hat noch 5 Tage seiner Frist übrig. Der Stern
* zeigt an, dass der Benutzer sein Limit
überschritten hat.Quotas über NFSNFSQuotas werden von dem Quota-Subsystem auf dem
NFS-Server erzwungen. Der
&man.rpc.rquotad.8; Daemon stellt quota die
Quota Informationen auf dem NFS-Client
zur Verfügung, so dass Benutzer auf diesen Systemen ihre
Quotas abfragen können.Sie aktivieren rpc.rquotad auf dem
NFS-Server, indem Sie das Zeichen
# auf folgender Zeile in
/etc/inetd.conf entfernen:rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotadAnschließend starten Sie inetd
neu:&prompt.root; service inetd restartPartitionen verschlüsselnLuckyGreenBeigetragen von shamrock@cypherpunks.toPartitionenverschlüsseln&os; bietet ausgezeichnete Möglichkeiten, Daten vor
unberechtigten Zugriffen zu schützen. Wenn das Betriebssystem
läuft, schützen Zugriffsrechte und vorgeschriebene
Zugriffskontrollen (MAC) (siehe ) die
Daten. Die Zugriffskontrollen des Betriebssystems schützen
allerdings nicht vor einem Angreifer, der Zugriff auf den
Rechner hat. Der Angreifer kann eine Festplatte in ein anderes
System einbauen und dort die Daten analysieren.Die für &os; verfügbaren kryptografischen Subsysteme,
GEOM Based Disk Encryption
(gbde) und geli sind in
der Lage, Daten auf Dateisystemen auch vor hoch motivierten
Angreifern zu schützen, die über erhebliche Mittel verfügen.
Dieser Schutz ist unabhängig von der Art und Weise, durch die
ein Angreifer Zugang zu einer Festplatte oder zu einem Rechner
erlangt hat. Im Gegensatz zu anderen Verschlüsselungsmethoden,
bei denen einzelne Dateien verschlüsselt werden, verschlüsseln
gbde und geli
transparent ganze Dateisysteme. Auf der Festplatte werden dabei
keine Daten im Klartext gespeichert.Dieses Kapitel zeigt, wie ein verschlüsseltes Dateisystem
unter &os; erstellt wird. Zunächst wird der Ablauf für
gbde beschrieben und anschließend
das gleiche Beispiel für geli.Plattenverschlüsselung mit
gbdeDas Ziel von &man.gbde.4; ist es, einen Angreifer vor eine
große Herausforderung zu stellen, um an die Daten einer
Festplatte zu gelangen. Falls jedoch der Rechner
kompromittiert wurde, während er im Betrieb war und das
Speichergerät aktiv verbunden war, oder wenn der Angreifer
eine gültige Passphrase kennt, bietet dieses System keinen
Schutz für die Daten der Festplatte. Daher ist es wichtig,
für die physische Sicherheit zu sorgen, während das System im
Betrieb ist. Außerdem muss die Passphrase für den
Verschlüsselungsmechanismus geschützt werden.&man.gbde.4; besitzt einige Funktionen um die Daten,
die in einem Sektor gespeichert sind, zu schützen. Es benutzt
128-Bit AES im
CBC-Modus, um die Daten eines Sektors zu
verschlüsseln. Jeder Sektor einer Festplatte wird mit einem
anderen AES-Schlüssel verschlüsselt.
Weitere Informationen zum kryptographischen Design und wie die
Schlüssel für einen Sektor aus der gegebenen Passphrase
ermittelt werden, finden Sie in &man.gbde.4;.&os; enthält ein Kernelmodul für
gbde, das wie folgt geladen werden
kann:&prompt.root; kldload geom_bdeWenn Sie einen angepassten Kernel verwenden, stellen Sie
sicher, dass folgende Zeile in der Kernelkonfigurationsdatei
enthalten ist:options GEOM_BDEDas folgende Beispiel beschreibt, wie eine Partition
auf einer neuen Festplatte verschlüsselt wird. Die
Partition wird in /private
eingehangen.Eine Partition mit gbde
verschlüsselnInstallieren der FestplatteInstallieren Sie die Festplatte wie in
beschrieben. Im Beispiel
wird die Partition /dev/ad4s1c
verwendet. Die Gerätedateien
/dev/ad0s1*
sind Standard-Partitionen des &os;-Systems.&prompt.root; ls /dev/ad*
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4Verzeichnis für gbde-Lock-Dateien anlegen&prompt.root; mkdir /etc/gbdeDie Lock-Dateien sind für den Zugriff von
gbde auf verschlüsselte
Partitionen notwendig. Ohne die Lock-Dateien können
die Daten nur mit erheblichem manuellen Aufwand wieder
entschlüsselt werden (dies wird auch von der Software
nicht unterstützt). Jede verschlüsselte
Partition benötigt eine gesonderte Lock-Datei.Vorbereiten der gbde-PartitionEine von gbde benutzte
Partition muss einmalig initialisiert werden, bevor
sie benutzt werden kann. Das Programm öffnet eine Vorlage
im Standard-Editor, um verschiedene Optionen zu
konfigurieren. Setzen Sie sector_size
auf 2048, wenn Sie
UFS benutzen:
- &prompt.root; gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock
+ &prompt.root; gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock
# $FreeBSD: src/sbin/gbde/template.txt,v 1.1.36.1 2009/08/03 08:13:06 kensmith Exp $
#
# Sector size is the smallest unit of data which can be read or written.
# Making it too small decreases performance and decreases available space.
# Making it too large may prevent filesystems from working. 512 is the
# minimum and always safe. For UFS, use the fragment size
#
sector_size = 2048
[...]Sobald die Änderungen gespeichert werden, wird der
Benutzer zweimal aufgefordert, die zum Schutz der Daten
verwendete Passphrase einzugeben. Die Passphrase muss
beide Mal gleich eingegeben werden. Die Sicherheit der
Daten hängt allein von der Qualität der gewählten
Passphrase ab. Die Auswahl einer sicheren und leicht zu
merkenden Passphrase wird auf der Webseite
http://world.std.com/~reinhold/diceware.html
beschrieben.Bei der Initialisierung wird eine Lock-Datei für die
gbde-Partition erstellt. In
diesem Beispiel
/etc/gbde/ad4s1c.lock. Lock-Dateien
müssen die Dateiendung .lock aufweisen,
damit sie von /etc/rc.d/gbde, dem
Startskript von gbde, erkannt
werden.Lock-Dateien müssen immer zusammen mit den
verschlüsselten Dateisystemen gesichert werden. Ohne
die Lock-Datei können Sie allerdings nicht auf die
verschlüsselten Daten zugreifen.Einbinden der verschlüsselten Partition
in den Kernel&prompt.root; gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lockDieses Kommando fragt die Passphrase ab, die bei der
Initialisierung der verschlüsselten Partition eingegeben
wurde. Das neue verschlüsselte Gerät erscheint danach in
/dev als
/dev/device_name.bde:&prompt.root; ls /dev/ad*
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bdeDateisystem auf dem verschlüsselten Gerät
anlegenNachdem die verschlüsselte Partition im Kernel
eingebunden ist, kann ein Dateisystem erstellt werden.
Dieses Beispiel erstellt ein
UFS-Dateisystem mit aktivierten Soft
Updates. Achten Sie darauf, die Partition mit der
Erweiterung
*.bde
zu benutzen:&prompt.root; newfs -U -O2 /dev/ad4s1c.bdeEinhängen der verschlüsselten PartitionLegen Sie einen Mountpunkt für das
verschlüsselte Dateisystem an. Hängen Sie anschließend
das Dateisystem ein:&prompt.root; mkdir /private
&prompt.root; mount /dev/ad4s1c.bde /privateÜberprüfen des verschlüsselten
DateisystemsDas verschlüsselte Dateisystem sollte jetzt erkannt
und benutzt werden können:&prompt.user; df -H
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 1037M 72M 883M 8% /
/devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1f 8.1G 55K 7.5G 0% /home
/dev/ad0s1e 1037M 1.1M 953M 0% /tmp
/dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr
/dev/ad4s1c.bde 150G 4.1K 138G 0% /privateNach jedem Neustart müssen verschlüsselte
Dateisysteme dem Kernel wieder bekannt gemacht werden,
auf Fehler überprüft werden und eingehangen
werden. Für die dazu nötigen Schritte fügen Sie folgende
Zeilen in /etc/rc.conf hinzu:gbde_autoattach_all="YES"
gbde_devices="ad4s1c"
gbde_lockdir="/etc/gbde"Durch diese Argumente muss beim Systemstart auf der
Konsole die Passphrase eingegeben werden. Erst nach Eingabe
der korrekten Passphrase wird die verschlüsselte Partition
automatisch in den Verzeichnisbaum eingehängt. Weitere
Bootoptionen von gbde finden Sie
in &man.rc.conf.5;.sysinstall ist nicht
kompatibel mit
gbde-verschlüsselten Geräten.
Bevor sysinstall gestartet
wird, müssen alle *.bde Geräte vom
Kernel getrennt werden, da sonst der Kernel bei der
ersten Suche nach Geräten abstürzt. Um das verschlüsselte
Gerät aus dem Beispiel zu trennen, benutzen Sie das
folgende Kommando:&prompt.root; gbde detach /dev/ad4s1cPlattenverschlüsselung mit
geliDanielGerzoBeigetragen von Mit geli steht eine alternative
kryptografische GEOM-Klasse zur Verfügung.
Dieses Werkzeug unterstützt unterschiedliche Fähigkeiten und
verfolgt einen anderen Ansatz für die Verschlüsselung.
geli bietet die folgenden
Funktionen:Die Nutzung des &man.crypto.9;-Frameworks. Wenn das
System über kryptografische Hardware verfügt, wird diese
von geli automatisch verwendet.Die Unterstützung verschiedener kryptografischer
Algorithmen, wie AES, Blowfish, und
3DES.Die Möglichkeit, die root-Partition zu
verschlüsseln. Um auf die verschlüsselte
root-Partition zugreifen zu können, muss beim
Systemstart die Passphrase eingegeben werden.Erlaubt den Einsatz von zwei voneinander unabhängigen
Schlüsseln.Es ist durch einfache Sektor-zu-Sektor-Verschlüsselung
sehr schnell.Die Möglichkeit, Master-Keys zu sichern und
wiederherzustellen. Wenn ein Benutzer seinen Schlüssel
zerstört, kann er über seinen zuvor gesicherten
Schlüssel wieder auf seine Daten zugreifen.geli erlaubt es, Platten mit
einem zufälligen Einmal-Schlüssel einzusetzen,
was für Swap-Partitionen und
temporäre Dateisysteme interessant ist.Weitere Funktionen und Anwendungsbeispiele finden Sie in
&man.geli.8;.Das folgende Beispiel beschreibt, wie eine
Schlüsseldatei erzeugt wird, die als Teil des Master-Keys für
den Verschlüsselungs-Provider verwendet wird, der unter
/private in den Verzeichnisbaum
eingehängt wird. Die Schlüsseldatei liefert zufällige Daten,
die für die Verschlüsselung des Master-Keys benutzt werden.
Zusätzlich wird der Master-Key durch eine Passphrase
geschützt. Die Sektorgröße des Providers beträgt 4 KB.
Das Beispiel beschreibt, wie Sie einen
geli-Provider aktivieren, ein vom ihm
verwaltetes Dateisystem erzeugen, es mounten, mit ihm arbeiten
und wie Sie es schließlich wieder unmounten und den Provider
deaktivieren.Eine Partition mit geli
verschlüsselnLaden der
geli-UnterstützungDie Unterstützung für geli wird
über ein ladbares Kernelmodul zur Verfügung gestellt.
Damit das Modul automatisch beim Booten geladen wird,
fügen Sie folgende Zeile in
/boot/loader.conf ein:geom_eli_load="YES"Um das Modul direkt zu laden:&prompt.root; kldload geom_eliStellen Sie bei einer angepassten
Kernelkonfigurationsdatei sicher, dass diese Zeilen
enthalten sind:options GEOM_ELI
device cryptoErzeugen des Master-KeysDie folgenden Befehle erzeugen einen Master-Key
(/root/da2.key), der durch eine
Passphrase geschützt ist. Die Datenquelle für die
Schlüsseldatei ist /dev/random. Um
eine bessere Leistung zu erzielen beträgt die Sektorgröße
des Providers (/dev/da2.eli)
4 KB:&prompt.root; dd if=/dev/random of=/root/da2.key bs=64 count=1
&prompt.root; geli init -s 4096 -K /root/da2.key /dev/da2
Enter new passphrase:
Reenter new passphrase:Es ist nicht zwingend nötig, sowohl eine Passphrase
als auch eine Schlüsseldatei zu verwenden. Die
einzelnen Methoden können auch unabhängig
voneinander eingesetzt werden.Wird für die Schlüsseldatei
- angegeben, wird dafür die
Standardeingabe verwendet. Das folgende Kommando erzeugt
beispielsweise drei Schlüsseldateien:&prompt.root; cat keyfile1 keyfile2 keyfile3 | geli init -K - /dev/da2Aktivieren des Providers mit dem erzeugten
SchlüsselUm den Provider zu aktivieren, geben Sie die
Schlüsseldatei, den Namen des Laufwerks und die Passphrase
an:&prompt.root; geli attach -k /root/da2.key /dev/da2
Enter passphrase:Dadurch wird ein neues Gerät mit der Erweiterung
.eli angelegt:&prompt.root; ls /dev/da2*
/dev/da2 /dev/da2.eliDas neue Dateisystem erzeugenAls nächstes muss das Gerät mit dem
UFS-Dateisystem formatiert und an einen
vorhandenen Mountpunkt eingehängt werden:&prompt.root; dd if=/dev/random of=/dev/da2.eli bs=1m
&prompt.root; newfs /dev/da2.eli
&prompt.root; mount /dev/da2.eli /privateDas verschlüsselte Dateisystem sollte jetzt erkannt
und benutzt werden können:&prompt.root; df -H
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 248M 89M 139M 38% /
/devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1f 7.7G 2.3G 4.9G 32% /usr
/dev/ad0s1d 989M 1.5M 909M 0% /tmp
/dev/ad0s1e 3.9G 1.3G 2.3G 35% /var
/dev/da2.eli 150G 4.1K 138G 0% /privateWenn Sie nicht mehr mit dem verschlüsselten Dateisystem
arbeiten und die unter /private
eingehängte Partition daher nicht mehr benötigen, sollten Sie
diese unmounten und den
geli-Verschlüsselungs-Provider wieder
deaktivieren:&prompt.root; umount /private
&prompt.root; geli detach da2.eli&os; verfügt über ein rc.d-Skript,
das dass Einhängen von verschlüsselten Geräten beim Booten
deutlich vereinfacht. Für dieses Beispiel, fügen Sie
folgende Zeilen in /etc/rc.conf
hinzu:geli_devices="da2"
geli_da2_flags="-p -k /root/da2.key"Dies konfiguriert /dev/da2 als
geli-Provider mit dem Master-Key
/root/da2.key. Das System wird den
Provider automatisch deaktivieren, bevor es heruntergefahren
wird. Während des Startvorgangs fordert das Skript die
Passphrase an, bevor der Provider aktiviert wird. Vor und
nach der Eingabeaufforderung für die Passphrase werden noch
weitere Kernelmeldungen angezeigt. Achten Sie sorgfältig
auf die Eingabeaufforderung zwischen den anderen Meldungen,
falls es zu Problemen beim Startvorgang kommt. Sobald die
richtige Passphrase eingegeben wurde, wird der Provider
aktiviert. Anschließend werden die Dateisysteme gemäß
/etc/fstab eingehängt. Lesen Sie
wenn Sie wissen möchten,
wie Sie ein Dateisystem konfigurieren, sodass es beim
booten automatisch gestartet wird.Den Auslagerungsspeicher verschlüsselnChristianBruefferGeschrieben von AuslagerungsspeicherverschlüsselnWie die Verschlüsselung von Partitionen, wird auch der
Auslagerungsspeicher verschlüsselt, um sensible Informationen
zu schützen. Stellen Sie sich eine Anwendung vor, die mit
Passwörtern umgeht. Solange sich diese Passwörter im
Arbeitsspeicher befinden, werden sie nicht auf die Festplatte
geschrieben und nach einem Neustart gelöscht. Falls &os; jedoch
damit beginnt Speicher auszulagern, um Platz für andere
Anwendungen zu schaffen, können die Passwörter unverschlüsselt
auf die Festplatte geschrieben werden. Die Verschlüsselung des
Auslagerungsspeichers kann in solchen Situationen Abhilfe
schaffen.Dieser Abschnitt zeigt die Konfiguration eines
verschlüsselten Auslagerungsspeichers mittels &man.gbde.8; oder
&man.geli.8;. In den Beispielen repräsentiert
/dev/ada0s1b die Swap-Partition.Konfiguration eines verschlüsselten
AuslagerungsspeichersSwap-Partitionen werden standardmäßig nicht verschlüsselt.
Sie sollten daher alle sensiblen Daten im Auslagerungsspeicher
löschen, bevor Sie fortfahren. Führen Sie folgenden Befehl
aus, um die Swap-Partition mit Zufallsdaten zu
überschreiben:&prompt.root; dd if=/dev/random of=/dev/ada0s1b bs=1mUm den Auslagerungsspeicher mit &man.gbde.8; zu
verschlüsseln, fügen Sie in /etc/fstab
das Suffix .bde an den Gerätenamen der
Swap-Partition hinzu:# Device Mountpoint FStype Options Dump Pass#
/dev/ada0s1b.bde none swap sw 0 0Wenn Sie &man.geli.8; benutzen, verwenden Sie stattdessen
das Suffix .eli, um den
Auslagerungsspeicher zu verschlüsseln:# Device Mountpoint FStype Options Dump Pass#
/dev/ada0s1b.eli none swap sw 0 0In der Voreinstellung verschlüsselt &man.geli.8; mit
dem AES-Algorithmus und einer
Schlüssellänge von 128 Bit. Diese Voreinstellungen sind in
der Regel ausreichend, können jedoch im Options-Feld in
/etc/fstab angepasst werden. Mögliche
Optionen sind:aalgoDer Algorithmus für die Prüfung der
Datenintegrität. Dieser wird benutzt um
sicherzustellen, dass die verschlüsselten Daten nicht
manipuliert wurden. Eine Liste der unterstützten
Algorithmen finden Sie in &man.geli.8;.ealgoDer Verschlüsselungsalgorithmus, der verwendet wird
um die Daten zu schützen. Eine Liste der unterstützten
Algorithmen finden Sie in &man.geli.8;.keylenDie Länge des Schlüssels für den
Verschlüsselungsalgorithmus. In &man.geli.8; können Sie
lesen, welche Schlüssellängen von welchem Algorithmus
unterstützt werden.sectorsizeDie Größe, in der die Datenblöcke aufgeteilt werden,
bevor sie verschlüsselt werden. Größere Blöcke erhöhen
die Leistung auf Kosten des Speicherverbrauchs. Die
empfohlene Größe beträgt 4096 Byte.Dieses Beispiel konfiguriert eine verschlüsselte
Swap-Partition mit dem Blowfish-Algorithmus, einer
Schlüssellänge von 128 Bit und einer Sektorgröße von
4 KB:# Device Mountpoint FStype Options Dump Pass#
/dev/ada0s1b.eli none swap sw,ealgo=blowfish,keylen=128,sectorsize=4096 0 0Überprüfung des verschlüsselten
AuslagerungsspeichersNachdem das System neu gestartet wurde, kann die korrekte
Funktion des verschlüsselten Auslagerungsspeichers mit
swapinfo geprüft werden.Wenn Sie &man.gbde.8; einsetzen, erhalten Sie eine
Meldung ähnlich der folgenden:&prompt.user; swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ada0s1b.bde 542720 0 542720 0%Wenn Sie &man.geli.8; einsetzen, erhalten Sie hingegen
eine Ausgabe ähnlich der folgenden:&prompt.user; swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ada0s1b.eli 542720 0 542720 0%Highly Available Storage
(HAST)DanielGerzoBeigetragen von FreddieCashMit Beiträgen von Pawel JakubDawidekMichael W.LucasViktorPeterssonBenedictReuschlingÜbersetzt von HASThigh availabilityHochverfügbarkeit ist eine der Hauptanforderungen von
ernsthaften Geschäftsanwendungen und hochverfügbarer Speicher
ist eine Schlüsselkomponente in solchen Umgebungen. Highly
Available STorage (HAST) ist ein Framework
in &os;, welches die transparente Speicherung der gleichen
Daten über mehrere physikalisch getrennte Maschinen ermöglicht,
die über ein TCP/IP-Netzwerk verbunden sind.
HAST kann als ein netzbasiertes RAID1
(Spiegel) verstanden werden und ist dem DRBD®-Speichersystem
der GNU/&linux;-Plattform ähnlich. In Kombination mit anderen
Hochverfügbarkeitseigenschaften von &os; wie
CARP, ermöglicht es HAST,
hochverfügbare Speichercluster zu bauen, die in der Lage sind,
Hardwareausfällen zu widerstehen.Die Hauptmerkmale von HAST sind:Es kann zur Maskierung von
I/O-Fehlern auf lokalen Festplatten
eingesetzt werden.Dateisystem-unabhängig, was es erlaubt, jedes von &os;
unterstützte Dateisystem zu verwenden.Effiziente und schnelle Resynchronisation: es werden
nur die Blöcke synchronisiert, die während der Ausfallzeit
eines Knotens geändert wurden.Es kann in einer bereits bestehenden Umgebung
eingesetzt werden, um zusätzliche Redundanz zu
erreichen.Zusammen mit CARP,
Heartbeat, oder anderen
Werkzeugen, ist es möglich, ein robustes und dauerhaftes
Speichersystem zu bauen.Nachdem Sie diesen Abschnitt gelesen haben, werden Sie
folgendes wissen:Was HAST ist, wie es funktioniert und
welche Eigenschaften es besitzt.Wie man HAST unter &os; aufsetzt und
verwendet.Wie man CARP und &man.devd.8;
kombiniert, um ein robustes Speichersystem zu bauen.Bevor Sie diesen Abschnitt lesen, sollten Sie:die Grundlagen von &unix; und &os; verstanden haben
().wissen, wie man Netzwerkschnittstellen und andere
Kernsysteme von &os; konfiguriert ().ein gutes Verständnis der &os;-Netzwerkfunktionalität
besitzen ().Das HAST-Projekt wurde von der &os;
Foundation mit Unterstützung der
OMCnet Internet Service GmbH und TransIP BV
gesponsert.HAST im EinsatzHAST bietet eine synchrone Replikation
auf Blockebene zwischen zwei Maschinen: einem
primary, auch bekannt als
master Knoten, sowie dem
secondary, oder slave
Knoten. Diese beiden Maschinen zusammen werden als Cluster
bezeichnet.Da HAST in einer
primär-sekundär-Konfiguration funktioniert, ist immer nur ein
Knoten des Clusters zu jeder Zeit aktiv. Der primäre Knoten,
auch active genannt, ist derjenige, der
alle I/O-Anfragen verarbeitet, die an die
HAST-Schnittstelle gesendet werden. Der
sekundäre Knoten wird automatisch vom primären Knoten aus
synchronisiert.Die physischen Komponenten des
HAST-Systems sind die lokale Platte am
Primärknoten und die entfernte Platte am
Sekundärknoten.HAST arbeitet synchron auf Blockebene,
was es für Dateisysteme und Anwendungen transparent macht.
HAST stellt gewöhnliche
GEOM-Provider in
/dev/hast/ für die Verwendung durch
andere Werkzeuge oder Anwendungen zur Verfügung. Es gibt
keinen Unterschied zwischen dem Einsatz von
HAST bereitgestellten Geräten und
herkömmlichen Platten oder Partitionen.Jede Schreib-, Lösch- oder Entleerungsoperation wird an
die lokale und über TCP/IP zu der entfernt
liegenden Platte gesendet. Jede Leseoperation wird von der
lokalen Platte durchgeführt, es sei denn, die lokale Platte
ist nicht aktuell oder es tritt ein
I/O-Fehler auf. In solchen Fällen wird die
Leseoperation an den Sekundärknoten geschickt.HAST versucht, eine schnelle
Fehlerbereinigung zu gewährleisten. Aus diesem Grund ist es
wichtig, die Synchronisationszeit nach dem Ausfall eines
Knotens zu reduzieren. Um eine schnelle Synchronisation zu
ermöglichen, verwaltet HAST eine Bitmap von
unsauberen Bereichen auf der Platte und synchronisiert nur
diese während einer regulären Synchronisation (mit Ausnahme
der initialen Synchronisation).Es gibt viele Wege, diese Synchronisation zu behandeln.
HAST implementiert mehrere
Replikationsarten, um unterschiedliche Methoden der
Synchronisation zu realisieren:memsync: Dieser Modus meldet
Schreiboperationen als vollständig, wenn die lokale
Schreiboperation beendet ist und der entfernt liegende
Knoten die Ankunft der Daten bestätigt hat, jedoch bevor
die Daten wirklich gespeichert wurden. Die Daten werden
auf dem entfernt liegenden Knoten direkt nach dem Senden
der Bestätigung gespeichert. Dieser Modus ist dafür
gedacht, Latenzen zu verringern und zusätzlich eine gute
Verlässlichkeit zu bieten. In der Voreinstellung wird
dieser Modus benutzt.fullsync: Dieser Modus meldet
Schreiboperationen als vollständig, wenn sowohl die
lokale, als auch die entfernte Schreiboperation
abgeschlossen wurde. Dies ist der sicherste und
zugleich der langsamste Replikationsmodus.async: Dieser Modus meldet
Schreiboperationen als vollständig, wenn lokale
Schreibvorgänge abgeschlossen wurden. Dies ist der
schnellste und gefährlichste Replikationsmodus. Er
sollte nur verwendet werden, wenn die Latenz zu einem
entfernten Knoten bei einer Replikation zu hoch ist
für andere Modi.HAST-KonfigurationDas HAST-Framework besteht aus mehreren
Komponenten:Dem &man.hastd.8;-Daemon, welcher für
Datensynchronisation verantwortlich ist. Wenn dieser
Daemon gestartet wird, wird automatisch
geom_gate.ko geladen.Dem &man.hastctl.8; Management-Werkzeug.Der Konfigurationsdatei &man.hast.conf.5;. Diese
Datei muss vorhanden sein, bevor
hastd gestartet wird.Alternativ lässt sich die
GEOM_GATE-Unterstützung in den Kernel
statisch einbauen, indem folgende Zeile zur
Kernelkonfigurationsdatei hinzugefügt wird. Anschließend muss
der Kernel, wie in beschrieben,
neu gebaut werden:options GEOM_GATEDas folgende Beispiel beschreibt, wie man zwei Knoten als
master-slave / primary-secondary mittels
HAST konfiguriert, um Daten zwischen diesen
beiden auszutauschen. Die Knoten werden als
hasta mit der IP-Adresse
172.16.0.1 und hastb mit
der IP-Adresse
172.16.0.2 bezeichnet. Beide Knoten
besitzen eine dedizierte Festplatte
/dev/ad6 mit der gleichen Größe für den
HAST-Betrieb. Der
HAST-Pool, manchmal auch Ressource genannt,
oder der GEOM-Provider in
/dev/hast/ wird als
test bezeichnet.Die Konfiguration von HAST wird in
/etc/hast.conf vorgenommen. Diese Datei
sollte auf beiden Knoten gleich sein. Die einfachste
Konfiguration ist folgende:resource test {
on hasta {
local /dev/ad6
remote 172.16.0.2
}
on hastb {
local /dev/ad6
remote 172.16.0.1
}
}Fortgeschrittene Konfigurationsmöglichkeiten finden Sie in
&man.hast.conf.5;.Es ist ebenfalls möglich, den Hostnamen in den
remote-Anweisungen zu verwenden, falls
die Rechner aufgelöst werden können und in
/etc/hosts, oder im lokalen
DNS definiert sind.Sobald die Konfiguration auf beiden Rechnern vorhanden
ist, kann ein HAST-Pool erstellt werden.
Lassen Sie diese Kommandos auf beiden Knoten ablaufen, um die
initialen Metadaten auf die lokale Platte zu schreiben und
starten Sie anschließend &man.hastd.8;:&prompt.root; hastctl create test
&prompt.root; service hastd onestartEs ist nicht möglich,
GEOM-Provider
mit einem bereits bestehenden Dateisystem zu verwenden, um
beispielsweise einen bestehenden Speicher in einen von
HAST verwalteten Pool zu konvertieren.
Dieses Verfahren muss einige Metadaten auf den Provider
schreiben und dafür würde nicht genug freier Platz zur
Verfügung stehen.Die Rolle eines HAST Knotens, primary
oder secondary, wird vom einem
Administrator, oder einer Software wie
Heartbeat, mittels
&man.hastctl.8; festgelegt. Auf dem primären Knoten
hasta geben Sie diesen Befehl ein:&prompt.root; hastctl role primary testGeben Sie folgendes Kommando auf dem sekundären Knoten
hastb ein:&prompt.root; hastctl role secondary testÜberprüfen Sie das Ergebnis mit hastctl
auf beiden Knoten:&prompt.root; hastctl status testÜberprüfen Sie die status-Zeile. Wird
hier degraded angezeigt, dann ist etwas mit
der Konfigurationsdatei nicht in Ordnung. Auf jedem Konten
sollte complete angezeigt werden, was
bedeutet, dass die Synchronisation zwischen den beiden Knoten
gestartet wurde. Die Synchronisierung ist abgeschlossen, wenn
hastctl status meldet, dass die
dirty-Bereiche 0 Bytes betragen.Der nächste Schritt ist, ein Dateisystem auf dem
GEOM-Provider anzulegen und dieses ins
System einzuhängen. Dies muss auf dem
primary-Knoten durchgeführt werden.
Die Erstellung des Dateisystems kann ein paar Minuten dauern,
abhängig von der Größe der Festplatte. Dieses Beispiel
erstellt ein UFS-Dateisystem auf
/dev/hast/test:&prompt.root; newfs -U /dev/hast/test
&prompt.root; mkdir /hast/test
&prompt.root; mount /dev/hast/test/hast/testSobald das HAST-Framework richtig
konfiguriert wurde, besteht der letzte Schritt nun darin,
sicherzustellen, dass HAST während des
Systemstarts automatisch gestartet wird. Fügen Sie diese
Zeile in /etc/rc.conf hinzu:hastd_enable="YES"Failover-KonfigurationDas Ziel dieses Beispiels ist, ein robustes
Speichersystem zu bauen, welches Fehlern auf einem
beliebigen Knoten widerstehen kann. Wenn der
primary-Knoten ausfällt, ist der
secondary-Knoten da, um nahtlos
einzuspringen, das Dateisystem zu prüfen, einzuhängen und
mit der Arbeit fortzufahren, ohne dass auch nur ein
einzelnes Bit an Daten verloren geht.Um diese Aufgabe zu bewerkstelligen, wird das
Common Address Redundancy
Protocol (CARP)
benutzt, welches ein automatisches Failover auf der
IP-Schicht ermöglicht.
CARP erlaubt es mehreren Rechnern im
gleichen Netzsegment, die gleiche
IP-Adresse zu verwenden. Setzen Sie
CARP auf beiden Knoten des Clusters
anhand der Dokumentation in auf.
In diesem Beispiel hat jeder Knoten seine eigene
Management IP-Adresse und die geteilte
IP-Adresse
172.16.0.254. Der primäre
HAST-Knoten des Clusters muss der
CARP-Masterknoten sein.Der HAST-Pool, welcher im vorherigen
Abschnitt erstellt wurde, ist nun bereit für den Export über
das Netzwerk auf den anderen Rechner. Dies kann durch den
Export über NFS oder
Samba erreicht werden, indem die
geteilte IP-Adresse
172.16.0.254 verwendet wird. Das
einzige ungelöste Problem ist der automatische Failover,
sollte der primäre Knoten einmal ausfallen.Falls die CARP-Schnittstelle
aktiviert oder deaktiviert wird, generiert das
&os;-Betriebssystem ein &man.devd.8;-Ereignis, was es
ermöglicht, Zustandsänderungen auf den
CARP-Schnittstellen zu überwachen. Eine
Zustandsänderung auf der
CARP-Schnittstelle ist ein Indiz dafür,
dass einer der Knoten gerade ausgefallen oder wieder
verfügbar ist. Diese Zustandsänderungen machen es möglich,
ein Skript zu starten, welches automatisch den HAST-Failover
durchführt.Um Zustandsänderungen auf der
CARP-Schnittstelle abzufangen, müssen
diese Zeilen in /etc/devd.conf auf
jedem Knoten hinzugefügt werden:notify 30 {
match "system" "IFNET";
match "subsystem" "carp0";
match "type" "LINK_UP";
action "/usr/local/sbin/carp-hast-switch master";
};
notify 30 {
match "system" "IFNET";
match "subsystem" "carp0";
match "type" "LINK_DOWN";
action "/usr/local/sbin/carp-hast-switch slave";
};Wenn auf dem System &os; 10 oder höher eingesetzt
wird, ersetzen Sie carp0 durch den
Namen der konfigurierten Schnittstelle für
CARP.Starten Sie &man.devd.8; auf beiden Knoten neu, um
die neue Konfiguration wirksam werden zu lassen:&prompt.root; service devd restartWenn die Schnittstelle
aktiviert oder deaktiviert wird, erzeugt das System eine
Meldung, was es dem &man.devd.8;-Subsystem ermöglicht, ein
automatisches Failover-Skript zu starten,
/usr/local/sbin/carp-hast-switch.
Weitere Informationen zu dieser Konfiguration finden Sie in
&man.devd.conf.5;.Es folgt ein Beispiel für ein automatisches
Failover-Skript:#!/bin/sh
# Original script by Freddie Cash <fjwcash@gmail.com>
# Modified by Michael W. Lucas <mwlucas@BlackHelicopters.org>
# and Viktor Petersson <vpetersson@wireload.net>
# The names of the HAST resources, as listed in /etc/hast.conf
resources="test"
# delay in mounting HAST resource after becoming master
# make your best guess
delay=3
# logging
log="local0.debug"
name="carp-hast"
# end of user configurable stuff
case "$1" in
master)
logger -p $log -t $name "Switching to primary provider for ${resources}."
sleep ${delay}
# Wait for any "hastd secondary" processes to stop
for disk in ${resources}; do
while $( pgrep -lf "hastd: ${disk} \(secondary\)" > /dev/null 2>&1 ); do
sleep 1
done
# Switch role for each disk
hastctl role primary ${disk}
if [ $? -ne 0 ]; then
logger -p $log -t $name "Unable to change role to primary for resource ${disk}."
exit 1
fi
done
# Wait for the /dev/hast/* devices to appear
for disk in ${resources}; do
for I in $( jot 60 ); do
[ -c "/dev/hast/${disk}" ] && break
sleep 0.5
done
if [ ! -c "/dev/hast/${disk}" ]; then
logger -p $log -t $name "GEOM provider /dev/hast/${disk} did not appear."
exit 1
fi
done
logger -p $log -t $name "Role for HAST resources ${resources} switched to primary."
logger -p $log -t $name "Mounting disks."
for disk in ${resources}; do
mkdir -p /hast/${disk}
fsck -p -y -t ufs /dev/hast/${disk}
mount /dev/hast/${disk} /hast/${disk}
done
;;
slave)
logger -p $log -t $name "Switching to secondary provider for ${resources}."
# Switch roles for the HAST resources
for disk in ${resources}; do
if ! mount | grep -q "^/dev/hast/${disk} on "
then
else
umount -f /hast/${disk}
fi
sleep $delay
hastctl role secondary ${disk} 2>&1
if [ $? -ne 0 ]; then
logger -p $log -t $name "Unable to switch role to secondary for resource ${disk}."
exit 1
fi
logger -p $log -t $name "Role switched to secondary for resource ${disk}."
done
;;
esacIm Kern führt das Skript die folgenden Aktionen durch,
sobald ein Knoten zum Master wird:Es ernennt den HAST-Pool als den
primären für einen gegebenen Knoten.Es prüft das Dateisystem, dass auf dem
HAST-Pool erstellt wurde.Es hängt den Pool ins System ein.Wenn ein Knoten zum Sekundären ernannt wird:Hängt es den HAST-Pool aus dem
Dateisystem aus.Degradiert es den HAST-Pool zum
sekundären.Dieses Skript ist nur ein Beispiel für eine mögliche
Lösung. Es behandelt
nicht alle möglichen Szenarien, die auftreten können und
sollte erweitert bzw. abgeändert werden, so dass z.B.
benötigte Dienste gestartet oder gestoppt werden.Für dieses Beispiel wurde ein
UFS-Dateisystem verwendet. Um die Zeit
für die Wiederherstellung zu verringern, kann ein
UFS mit Journal oder ein
ZFS-Dateisystem benutzt werden.Weitere detaillierte Informationen mit zusätzlichen
Beispielen können unter
http://wiki.FreeBSD.org/HAST abgerufen
werden.FehlerbehebungHAST sollte generell ohne Probleme
funktionieren. Jedoch kann es, wie bei jeder anderen
Software auch, zu gewissen Zeiten sein, dass sie sich nicht
so verhält wie angegeben. Die Quelle dieser Probleme kann
unterschiedlich sein, jedoch sollte als Faustregel
gewährleistet werden, dass die Zeit für alle Knoten im
Cluster synchron läuft.Für die Fehlersuche bei HAST sollte
die Anzahl an Debugging-Meldungen von &man.hastd.8; erhöht
werden. Dies kann durch das Starten von
hastd mit -d erreicht
werden. Diese Option kann mehrfach angegeben werden, um die
Anzahl an Meldungen weiter zu erhöhen. Sie sollten ebenfalls
die Verwendung von -F in Erwägung ziehen,
was hastd im Vordergrund startet.Auflösung des Split-brain-Zustandssplit-brain bezeichnet eine
Situation, in der beide Knoten des Clusters nicht in der
Lage sind, miteinander zu kommunizieren und dadurch beide
als primäre Knoten fungieren. Dies ist ein
gefährlicher Zustand, weil es beiden Knoten erlaubt ist,
Änderungen an den Daten vorzunehmen, die miteinander nicht
in Einklang gebracht werden können. Diese Situation muss
vom Systemadministrator manuell bereinigt werden.Der Administrator muss entscheiden, welcher Knoten die
wichtigeren Änderungen besitzt, oder die Zusammenführung
manuell durchführen. Anschließend kann
HAST die volle Synchronisation mit
dem Knoten durchführen, der die beschädigten Daten enthält.
Um dies zu tun, geben Sie folgende Befehle auf dem Knoten
ein, der neu synchronisiert werden muss:&prompt.root; hastctl role init test
&prompt.root; hastctl create test
&prompt.root; hastctl role secondary test
Index: head/de_DE.ISO8859-1/books/handbook/mail/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/mail/chapter.xml (revision 50863)
+++ head/de_DE.ISO8859-1/books/handbook/mail/chapter.xml (revision 50864)
@@ -1,2161 +1,2161 @@
Elektronische Post (E-Mail)BillLloydUrsprüglicher Text von JimMockNeugeschrieben von RobertDrehmelÜbersetzt von TerminologieE-MailTerminologieDas Akronym MTA steht für
Mail Transfer Agent was übersetzt
Mailübertragungs-Agent bedeutet.Während die Bezeichnung Server-Dämon
die Komponente eines MTA benennt, die für
eingehende Verbindungen zuständig ist, wird mit dem Begriff
Mailer öfters die Komponente des
MTA bezeichnet, die E-Mails versendet.ÜbersichtE-MailElektronische Post, besser bekannt als
E-Mail, ist eine der am weit verbreitetsten Formen der
Kommunikation heutzutage. Dieses Kapitel bietet eine
grundlegende Einführung in das Betreiben eines E-Mail-Servers
unter &os;. Ebenfalls wird der Versand und Empfang von E-Mails
unter &os; behandelt. Eine umfassende Betrachtung zu diesem
Thema finden Sie in den Büchern, die in aufgelistet sind.Dieses Kapitel behandelt die folgenden Punkte:Welche Software-Komponenten beim Senden und
Empfangen von elektronischer Post involviert sind.Wo sich grundlegende Sendmail
Konfigurationsdateien in &os; befinden.Den Unterschied zwischen entfernten und lokalen
Postfächern.Wie man Versender von Spam daran hindern kann,
E-Mail-Server illegalerweise als Weiterleitung zu
verwenden.Wie man einen alternativen MTA
installiert und konfiguriert, um
Sendmail zu ersetzen.Wie man oft auftretende E-Mail-Server Probleme
behebt.Wie E-Mails über einen Relay verschickt werden.Wie E-Mails über eine Einwahlverbindung gehandhabt
werden.Wie SMTP-Authentifizierung einrichtet wird.Den Empfang und den Versand von E-Mails mithilfe
von Programmen wie mutt.Wie E-Mails von einem entfernten Server mit
POP oder IMAP
abgeholt werden.Wie eingehende E-Mail automatisch gefiltert wird.Bevor Sie dieses Kapitel lesen, sollten Sie:Die Netzwerk-Verbindung richtig einrichten.
().Die DNS-Information für einen
E-Mail-Server einstellen
().Wissen, wie man zusätzliche Dritthersteller-Software
installiert ().E-Mail KomponentenPOPIMAPDNSE-Mail-Server DämonenSendmailE-Mail-Server DämonenPostfixE-Mail-Server DämonenqmailE-Mail-Server DämonenEximE-MailsempfangenMX-EintragE-Mail-ServerEs gibt fünf größere Komponenten die am Austausch von
E-Mails beteiligt sind: der Mail User
Agent (MUA), der
Mail Transfer Agent
(MTA), der
Mail Host, ein entferntes
oder lokales Postfach, sowie DNS. Dieser
Abschnitt enthält eine Übersicht über diese
Komponenten.Mail User Agent (MUA)Der Mail User Agent
(MUA) ist das Benutzerprogramm zum
Verfassen, Senden und Empfangen von E-Mails. Diese
Anwendung kann ein Kommandozeilenprogramm sein, wie das
in &os; enthaltene Programm mail,
oder ein Programm aus der Ports-Sammlung wie
beispielsweise mutt,
alpine oder
elm. In der Ports-Sammlung
sind auch dutzende von grafischen Programmen verfügbar,
darunter ClawsMail,
Evolution und
Thunderbird. Einige
Unternehmen bieten auch ein Web-Mail-Programm an, das
über einen Webbrowser verwaltet werden kann. Weitere
Informationen zur Installation und Verwendung von
MUAs unter &os; finden Sie im
.Mail Transfer Agent (MTA)Der
Mail Transfer Agent
(MTA) ist ein E-Mail-Server Daemon,
welcher für dem Empfang von eingehenden E-Mails und für
den Versand von ausgehenden E-Mails verantwortlich ist.
&os; wird mit Sendmail als
Standard-MTA ausgeliefert, aber es
unterstützt auch weitere E-Mail-Server, darunter
Exim,
Postfix und
qmail. Die Konfiguration von
Sendmail wird im beschrieben. Wenn Sie einen
anderen MTA aus der Ports-Sammlung
installieren, lesen Sie die Nachrichten die nach der
Installation der Anwendung ausgegeben werden, wenn Sie
&os; spezifische Informationen benötigen. Allgemeine
Informationen zur Konfiguration finden Sie in der Regel
auf der Webseite des Herstellers.Mail Host und PostfächerDer Mail Host ist für
die Zustellung und das Empfangen von E-Mails für den
Rechner oder eines Netzwerks zuständig. Der Mail Host
empfängt alle E-Mails für eine Domäne und speichert
diese entweder im voreingestellten
mbox-Format, oder im
Maildir-Format. Diese E-Mails können lokal mit einem
Benutzerprogramm MUA gelesen werden.
Mithilfe von Protokollen wie POP oder
IMAP können die E-Mails auch von
entfernten Rechnern gelesen werden. Wenn die E-Mails
direkt auf dem Mail Host gelesen werden, wird kein
POP- oder
IMAP-Server benötigt.Um auf entfernte Postfächer zuzugreifen, wird ein
Zugang zu einem POP- oder
IMAP-Server benötigt. Beide
Protokolle ermöglichen es Benutzern, auf ein entferntes
Postfach zuzugreifen. IMAP bietet
gegenüber POP einige Vorteiler. Dazu
zählt die Fähigkeit eine Kopie aller Nachrichten auf
einem entfernten Server zu speichern, sowie gleichzeitig
ablaufende Aktualisierungen. IMAP
kann auch über langsame Verbindungen nützlich sein, da
nicht gleich die komplette Nachricht heruntergeladen
wird. Weiterhin können E-Mails auf dem Server
durchsucht werden, was den Datenverkehr zwischen Clients
und dem Server minimiert.Die Ports-Sammlung enthält einige
POP- und
IMAP-Server, darunter
mail/qpopper,
mail/imap-uw,
mail/courier-imap und
mail/dovecot2.Beachten Sie, dass sowohl POP
als auch IMAP Daten, wie den
Benutzernamen und das Passwort, im Klartext
übertragen. Um die Übermittlung von Daten über diese
Protokolle zu schützen, können Sie Sitzungen über
&man.ssh.1; ()
tunneln oder SSL
() verwenden.Domain Name System (DNS)Das
Domain Name System
(DNS) und sein Daemon
named spielen eine große Rolle bei
der Auslieferung von E-Mails. Um E-Mails auszuliefern,
fragt der MTA im
DNS den Rechner ab, der E-Mails für
das Zielsystem entgegennimmt. Der gleiche Vorgang läuft
ab, wenn eine E-Mail von einem entfernten Server zum
MTA zugestellt wird.Im DNS werden Rechnernamen auf
IP-Adressen abgebildet. Daneben werden
spezielle Informationen für das Mail-System gespeichert,
die MX-Einträge
(MX record) genannt werden.
Der MX-Eintrag (von
Mail eXchanger) gibt an,
welche Rechner E-Mails für eine Domäne annehmen.Mit &man.host.1; können die
MX-Einträge für eine Domäne abgefragt
werden:&prompt.root; host -t mx FreeBSD.org
FreeBSD.org mail is handled by 10 mx1.FreeBSD.orgWeitere Informationen zu DNS und
dessen Konfiguration finden Sie im .Sendmail-KonfigurationsdateienChristopherShumwayBeigesteuert von SendmailSendmail ist der standardmäßig in
&os; installierte MTA. Es nimmt E-Mails von
E-Mail-Benutzerprogrammen (MUA)
entgegen und liefert diese zu den entsprechenden Mail Hosts, die
in der Konfigurationsdatei definiert sind.
Sendmail kann auch
Netzwerkverbindungen annehmen und E-Mails an lokale
Mailboxen, oder an andere Programme
ausliefern.Die Konfigurationsdateien von
Sendmail befinden sich in
/etc/mail. In diesem Abschnitt werden
diese Dateien im Detail beschrieben./etc/mail/access/etc/mail/aliases/etc/mail/local-host-names/etc/mail/mailer.conf/etc/mail/mailertable/etc/mail/sendmail.cf/etc/mail/virtusertable/etc/mail/accessDiese Datenbank bestimmt, welche Rechner oder
IP-Adressen Zugriff auf den lokalen
Mail-Server haben und welche Art von Zugriff ihnen
gestattet wird. Rechner die als
aufgelistet sind, was der Standard ist, sind berechtigt
E-Mails zu diesem Rechner zu schicken, solange die
endgültige Zieladresse der lokale Rechner ist. Rechner
die als aufgelistet sind, werden
abgelehnt. Rechner die als
aufgelistet sind, wird es erlaubt Post für jede
Zieladresse durch diesen Mail-Server zu senden. Rechner
die als aufgelistet sind, bekommen
ihre E-Mail mit einem speziellen Fehler zurück. Wenn ein
Rechner als aufgelistet ist, wird
Sendmail die aktuelle Suche
abbrechen, ohne die E-Mail zu akzeptieren oder abzulehnen.
E-Mails von Rechnern die als
aufgelistet sind, werden vorerst zurückgehalten. Dem
sendenden Rechner wird ein festgelegter Text als Grund für
die Quarantäne zurückgeschickt.Beispiele für die Verwendung dieser Optionen für
IPv4-
und IPv6-Adressen finden Sie in der
Beispielkonfiguration
/etc/mail/access.sample:
- # $FreeBSD$
+ # $FreeBSD$
#
# Mail relay access control list. Default is to reject mail unless the
# destination is local, or listed in /etc/mail/local-host-names
#
## Examples (commented out for safety)
#From:cyberspammer.com ERROR:"550 We don't accept mail from spammers"
#From:okay.cyberspammer.com OK
#Connect:sendmail.org RELAY
#To:sendmail.org RELAY
#Connect:128.32 RELAY
#Connect:128.32.2 SKIP
#Connect:IPv6:1:2:3:4:5:6:7 RELAY
#Connect:suspicious.example.com QUARANTINE:Mail from suspicious host
#Connect:[127.0.0.3] OK
#Connect:[IPv6:1:2:3:4:5:6:7:8] OKUm die Datenbank zu konfigurieren, verwenden Sie das
im Beispiel gezeigte Format, um Einträge in
/etc/mail/access hinzuzufügen, aber
setzen Sie kein Kommentarsymbol (#) vor
die Einträge. Erstellen Sie einen Eintrag für jeden
Rechner, dessen Zugriff konfiguriert werden soll.
E-Mail-Versender, die mit der linken Spalte der Tabelle
übereinstimmen, sind betroffen von der Aktion in der
rechten Spalte.Immer wenn diese Datei verändert wurde, muss die
Datenbank aktualisiert und
Sendmail neu gestartet
werden:&prompt.root; makemap hash /etc/mail/access < /etc/mail/access
&prompt.root; service sendmail restart/etc/mail/aliasesDiese Datenbank enthält eine Liste der virtuellen
Mailboxen, die in andere Benutzer, Dateien, Programme oder
andere Aliase expandiert werden. Hier sind ein paar
Beispiele, die das Dateiformat verdeutlichen:root: localuser
ftp-bugs: joe,eric,paul
bit.bucket: /dev/null
procmail: "|/usr/local/bin/procmail"Der Name der Mailbox auf der linken Seite des
Doppelpunkts wird mit den Zielen auf der rechten Seite
ersetzt. Der erste Eintrag ersetzt die Mailbox
root mit der
Mailbox localuser, die dann
in der Datenbank /etc/mail/aliases
gesucht wird. Wird kein passender Eintrag gefunden, wird
die Nachricht zum localuser geliefert. Der
zweite Eintrag zeigt eine E-Mail-Verteilerliste. E-Mails
an ftp-bugs
werden zu den drei lokalen Mailboxen joe,
eric und
paul gesendet.
Eine entfernte Mailbox kann auch als
user@example.com angegeben werden. Der
dritte Eintrag zeigt wie E-Mails in eine Datei geschrieben
werden, in diesem Fall /dev/null.
Der letzte Eintrag verdeutlicht das Senden von E-Mails an
ein Programm. Hier wird die Nachricht über eine &unix;
Pipe an /usr/local/bin/procmail
gesendet. Weitere Informationen zu dem Format dieser
Datei finden Sie in &man.aliases.5;.Wenn diese Datei geändert wird, muss
newaliases ausgeführt werden, um die
Datenbank zu aktualisieren./etc/mail/sendmail.cfDies ist die Hauptkonfigurations-Datei von
Sendmail. Sie kontrolliert das
allgemeine Verhalten von
Sendmail, einschließlich allem
vom Umschreiben von E-Mail Adressen bis hin zum Übertragen
von Ablehnungsnachrichten an entfernte E-Mail-Server.
Dementsprechend ist die Konfigurationsdatei ziemlich
komplex. Glücklicherweise muss diese Datei selten für
Standard E-Mail-Server geändert werden.Die Sendmail
Hauptkonfigurationsdatei kann mit &man.m4.1; Makros
erstellt werden, die Eigenschaften und Verhalten von
Sendmail definieren. Einige
der Details finden Sie in
/usr/src/contrib/sendmail/cf/README.Wenn Änderungen an dieser Datei vorgenommen werden,
muss Sendmail neu gestartet
werden, damit die Änderungen Wirkung zeigen./etc/mail/virtusertableDiese Datenbank ordnet Adressen für virtuelle Domänen
und Benutzern reellen Mailboxen zu. Diese Mailboxen
können lokal, auf entfernten Systemen, Aliase in
/etc/mail/aliases oder eine Datei
sein. Dadurch können mehrere virtuelle Domains auf einem
Rechner gehostet werden.&os; enthält eine Beispielkonfiguration in
/etc/mail/virtusertable.sample, die
das Format genauer beschreibt. Das folgende Beispiel
zeigt, wie benutzerdefinierte Einträge in diesem Format
erstellt werden:root@example.com root
postmaster@example.com postmaster@noc.example.net
@example.com joeDiese Datei wird nach dem ersten übereinstimmenden
Eintrag durchsucht. Wenn eine E-Mail-Adresse mit der
Adresse auf der linken Seite übereinstimmt, wird sie
dem Eintrag auf der rechten Seite zugeordnet. Der erste
Eintrag in diesem Beispiel ordnet eine bestimmte
E-Mail-Adresse einer lokalen Mailbox zu, während der
zweite Eintrag eine bestimmte E-Mail-Adresse einer
entfernten Mailbox zuordnet. Zuletzt wird jede
E-Mail-Adresse von example.com, welche
nicht mit einem der vorherigen Einträge übereinstimmt, mit
dem letzten Eintrag übereinstimmen und der lokalen Mailbox
joe zugeordnet. Benutzen Sie dieses
Format, wenn Sie neue Einträge in
/etc/mail/virtusertable hinzufügen.
Jedes Mal, wenn diese Datei bearbeitet wurde, muss die
Datenbank aktualisiert und
Sendmail neu gestartet
werden:&prompt.root; makemap hash /etc/mail/virtusertable < /etc/mail/virusertable
&prompt.root; service sendmail restart/etc/mail/relay-domainsIn der standardmäßigen &os;-Installation wird
Sendmail nur dazu konfiguriert,
E-Mails von dem Rechner, auf dem es läuft, zu senden.
Wenn zum Beispiel ein POP-Server
installiert ist, können Benutzer ihre E-Mails von
entfernten Standorten überprüfen. Sie werden jedoch keine
E-Mails von außen verschicken können. Typischerweise
wird ein paar Sekunden nach dem Versuch eine E-Mail
von MAILER-DAEMON mit einer
5.7 Relaying Denied Fehlermeldung
versendet werden.Die einfachste Lösung ist, wie im folgenden Beispiel
gezeigt, den FQDN des
Internet-Dienstanbieters und gegebenenfalls weitere
Adressen in /etc/mail/relay-domains
einzutragen:your.isq.example.com
other.isp.example.net
users.isp.example.org
www.example.orgNachdem diese Datei erstellt oder editiert wurde, muss
Sendmail mittels
service sendmail restart neu gestartet
werden.Ab jetzt wird jede E-Mail, die von einem in der Liste
eingetragenen Rechner durch das System geschickt wird,
ihr Ziel erreichen, vorausgesetzt der Benutzer
hat einen Account auf dem System. Dies erlaubt es
Benutzern aus der Ferne, E-Mails über das System zu
versenden, ohne dem Massenversand
(SPAM) die Tür zu öffnen.Wechseln des Mailübertragungs-AgentenAndrewBoothmanGeschrieben von GregoryNeil ShapiroInformationen entnommen aus E-Mails geschrieben von E-MailMTA, wechseln&os; enthält mit Sendmail bereits
einen MTA, der für die ein- und ausgehenden
E-Mails verantwortlich ist. Der Systemadministrator kann aber
den MTA des Systems wechseln. Eine große
Auswahl an alternativen MTAs ist in der
Kategorie mail der &os; Ports-Sammlung
verfügbar.Sobald ein neuer MTA installiert ist,
können Sie die neue Software konfigurieren und testen, bevor Sie
Sendmail ersetzen. Informationen
über die Konfiguration des neu gewählten MTA
finden Sie in der dazugehörigen Dokumentation.Sobald der neue MTA wie gewünscht
funktioniert, benutzen Sie die Anweisungen in diesem Abschnitt,
um Sendmail zu deaktivieren und
stattdessen den neuen MTA zu
verwenden.Sendmail deaktivierenWenn der ausgehende Mail-Dienst von
Sendmail deaktiviert ist, muss
für den E-Mail-Versand ein alternatives System installiert
werden. Andernfalls sind Systemfunktionen wie
&man.periodic.8; nicht mehr in der Lage, ihre Resulate und
Meldungen als E-Mail zu versenden. Aber auch viele andere
Teile des Systems erwarten einen funktionalen
MTA. Sind Programme auf die
deaktivierten
Sendmail-Binärdateien angewiesen,
landen deren E-Mails ansonsten in einer inaktiven
Sendmail-Warteschlange und
können nicht ausgeliefert werden.Um Sendmail komplett zu
deaktivieren, müssen folgende Zeilen in
/etc/rc.conf hinzugefügt oder editiert
werden:sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"Um lediglich die Funktion zum Empfang von E-Mails
durch Sendmail zu deaktivieren,
muss folgender Eintrag in /etc/rc.conf
gesetzt werden:sendmail_enable="NO"Weitere Informationen zu den Startoptionen von
Sendmail finden Sie in der
Manualpage &man.rc.sendmail.8;.Den voreingestellten MTA
ersetzenWenn ein neuer MTA über die
Ports-Sammlung installiert wird, werden auch die Startskripten
installiert. Die Anweisungen zum starten dieser Skripte
werden in den Paketnachrichten erwähnt. Bevor Sie den neuen
MTA in Betrieb nehmen, stoppen Sie alle
laufenden Sendmail-Prozesse. In
diesem Beispiel werden alle notwendigen Dienste gestoppt und
danach der Postfix Dienst
gestartet:&prompt.root; service sendmail stop
&prompt.root; service postfix startDamit der angegebene MTA automatisch
beim Hochfahren des Systems gestartet wird, fügen Sie dessen
Konfigurationszeile in /etc/rc.conf
hinzu. Dieser Eintrag startet den
Postfix
MTA:postfix_enable="YES"Da Sendmail allgegenwärtig ist
und manche Anwendungen einfach davon ausgehen es bereits
installiert und konfiguriert, wird einige zusätzliche
Konfiguration benötigt. Überprüfen Sie
/etc/periodic.conf und stellen Sie
sicher, dass diese Werte auf NO gesetzt
werden. Wenn die Datei nicht existiert, erstellen Sie sie
mit folgenden Einträgen:daily_clean_hoststat_enable="NO"
daily_status_mail_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"Viele alternative MTAs stellen ihre
eigenen kompatiblen Implementierungen der
Sendmail
Kommandozeilen-Schnittstelle zur Verfügung, was die Verwendung
als drop-in Ersatz für
Sendmail vereinfacht. Allerdings
versuchen einige MUAs
Sendmails Standard-Dateien
auszuführen, anstelle der Dateien des neuen
MTAs. &os; verwendet
/etc/mail/mailer.conf um die erwarteten
Sendmail Dateien auf die neuen Dateien
abzubilden. Weitere Informationen über diese Zuordnungen
können in &man.mailwrapper.8; gefunden werden.In der Voreinstellung sieht
/etc/mail/mailer.conf wie folgt
aus:
- #$FreeBSD$
+ # $FreeBSD$
#
# Execute the "real" sendmail program, named /usr/libexec/sendmail/sendmail
#
sendmail /usr/libexec/sendmail/sendmail
send-mail /usr/libexec/sendmail/sendmail
mailq /usr/libexec/sendmail/sendmail
newaliases /usr/libexec/sendmail/sendmail
hoststat /usr/libexec/sendmail/sendmail
purgestat /usr/libexec/sendmail/sendmailWenn eines der Kommandos auf der linken Seite ausgeführt
werden soll, führt das System tatsächlich den damit
verbundenen Befehl auf der rechten Seite aus. Mit diesem
System lassen sich Programme, die für die
Sendmail-Funktionen gestartet
werden, leicht ändern.Einige MTAs aus der Ports-Sammlung
können diese Datei aktualisieren. Zum Beispiel würde
Postfix die Datei wie folgt
aktualisieren:#
# Execute the Postfix sendmail program, named /usr/local/sbin/sendmail
#
sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmailFalls die Installation des MTA nicht
automatisch /etc/mail/mailer.conf
aktualisiert, bearbeiten Sie diese Datei in einem Texteditor,
so dass auf die neuen Dateien verwiesen wird. Dieses Beispiel
zeigt auf die Dateien, die von mail/ssmtp
installiert wurden:sendmail /usr/local/sbin/ssmtp
send-mail /usr/local/sbin/ssmtp
mailq /usr/local/sbin/ssmtp
newaliases /usr/local/sbin/ssmtp
hoststat /usr/bin/true
purgestat /usr/bin/trueSobald alles konfiguriert ist, wird empfohlen, das System
neu zu starten. Ein Neustart bietet auch die Möglichkeit
sicherzustellen, dass das System korrekt konfiguriert wurde,
um den neuen MTA automatisch beim
Hochfahren zu starten.FehlerbehebungHier finden sich ein paar häufig gestellte Fragen und ihre
Antworten, die von der FAQ übernommen
wurden.Warum muss ich einen FQDN (fully-qualified domain
name / voll ausgeschriebenen Domänennamen) für meine
Rechner verwenden?Vielleicht befindet sich der Rechner in einer anderen
Domäne. Um beispielsweise von einem Rechner in
foo.bar.edu
einen Rechner namens mumble in
der Domäne
foo.bar.edu
zu erreichen, geben Sie seinen voll ausgeschriebenen
Domänennamen (FQDN)
mumble.bar.edu,
anstelle von mumble an.Das liegt daran, dass die aktuelle Version von
BINDBIND, die mit &os;
ausgeliefert wird, keine Standardabkürzungen für nicht
komplett angegebene Domänennamen außerhalb der lokalen
Domäne unterstützt. Daher muss ein nicht-qualifizierter
Rechner, wie mumble, entweder als
mumble.foo.bar.edu
gefunden werden, oder er wird in der root Domäne
gesucht.In älteren Versionen von
BIND lief die Suche über
mumble.bar.edu und
mumble.edu.
RFC 1535 erklärt, warum dieses Verhalten als schlechte
Praxis oder sogar als Sicherheitsloch angesehen
wird.Um das zu umgehen, setzen Sie die Zeile:search foo.bar.edu bar.eduanstatt der vorherigendomain foo.bar.eduin /etc/resolv.conf ein. Stellen
Sie jedoch sicher, dass die Suchordnung nicht die
Begrenzung von
lokaler und öffentlicher Administration,
wie RFC 1535 sie nennt, überschreitet.Wie kann ich einen E-Mail-Server auf einem
Anwahl-PPPPPP
Rechner betreiben?Sie wollen sich mit einem &os; E-Mail
Gateway im LAN
verbinden. Die PPP-Verbindung ist keine
Standleitung.Ein Weg dies zu tun ist, von einem immer mit dem
Internet verbundenen Server einen sekundären
MX-DienstMX-Eintrag
für die Domäne zur Verfügung gestellt zu bekommen. In
diesem Beispiel heißt die Domäne example.com, und der
Internet-Dienstanbieter hat example.net so
eingestellt, dass er für die Domäne einen sekundären
MX-Dienst zur Verfügung stellt:example.com. MX 10 bigco.com.
MX 20 example.net.Nur ein Rechner sollte als Endempfänger angegeben
sein. Sendmail fügen Sie
Cw example.com zu
/etc/sendmail.cf auf
example.com
hinzu.Wenn der MTA des Versenders
versucht die E-Mail zuzustellen, wird es versuchen das
System example.com über die
PPP-Verbindung zu erreichen. Es kommt zu einer
Zeitüberschreitung, wenn das Zielsystem offline ist. Der
MTA wird die E-Mail automatisch der
sekundären MX-Seite des
Internet-Providers example.net zustellen.
Die sekundäre MX-Seite wird periodisch
versuchen, eine Verbindung zur primären
MX-Seite example.com
aufzubauen.Verwenden Sie etwas wie dies als Login-Skript:#!/bin/sh
# Put me in /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppmyispWenn Sie ein separates Login-Skript für einen Benutzer
erstellen, benutzen Sie stattdessen
sendmail -qRexample.com in dem oben
gezeigten Skript. Das erzwingt die sofortige Verarbeitung
der E-Mails in der Warteschlange für example.comEine weitere Verfeinerung der Situation kann an diesem
Beispiel von &a.isp; entnommen werden:> wir stellen einem Kunden den sekundären MX zur Verfügung.
> Der Kunde verbindet sich mit unseren Diensten mehrmals am Tag
> automatisch um die E-Mails zu seinem primären MX zu holen
> (wir wählen uns nicht bei ihm ein, wenn E-Mails für seine
> Domäne eintreffen). Unser sendmail sendet den Inhalt der
> E-Mail-Warteschlange alle 30 Minuten. Momentan muss er 30 Minuten
> eingewählt bleiben um sicher zu sein, dass alle seine E-Mails
> beim primären MX eingetroffen sind.
>
> Gibt es einen Befehl, der sendmail dazu bringt, alle E-Mails sofort
> zu senden? Der Benutzer hat natürlich keine root-Rechte auf
> unserer Maschine.
In der privacy flags Sektion von sendmail.cf befindet sich die
Definition Opgoaway,restrictqrun
Entferne restrictqrun um nicht-root Benutzern zu erlauben, die Verarbeitung
der Nachrichten-Warteschlangen zu starten. Möglicherweise willst du
auch die MX neu sortieren. Wir sind der primäre MX für unsere
Kunden mit diesen Wünschen und haben definiert:
# Wenn wir der beste MX für einen Rechner sind, versuche es direkt
# anstatt einen lokalen Konfigurationsfehler zu generieren.
OwTrue
Auf diesem Weg liefern Gegenstellen direkt zu dir, ohne die Kundenverbindung
zu versuchen. Dann sendest du zu deinem Kunden. Das funktioniert nur
für Rechner, du musst also deinen Kunden dazu bringen,
ihre E-Mail Maschine customer.com zu nennen, sowie
hostname.customer.com im DNS. Setze einfach einen A-Eintrag
in den DNS für customer.com.Weiterführende ThemenDieser Abschnitt behandelt kompliziertere Themen wie
E-Mail-Konfiguration und Einrichtung von E-Mail für eine
ganze Domäne.Grundlegende KonfigurationMit der Software im Auslieferungszustand sollte es möglich
sein, E-Mails an externe Rechner zu senden, vorausgesetzt
/etc/resolv.conf ist konfiguriert, oder
das Netzwerk hat Zugriff auf einen konfigurierten
DNS-Server. Um E-Mails an den
MTA auf dem Rechner auszuliefern, stehen
zwei Möglichkeiten zur Auswahl:Betreiben Sie einen DNS-Server für
die Domäne.Lassen Sie die E-Mails direkt über den
FQDN des Rechners ausliefern.Um E-Mails direkt zu einem Rechner geliefert zu bekommen,
wird eine permanente statische IP-Adresse (keine dynamische
IP-Adresse) benötigt. Befindet sich das System hinter einer
Firewall, muss diese den SMTP-Verkehr weiterleiten. Um
E-Mails direkt am Rechner zu empfangen, muss eines der
folgenden Dinge konfiguriert werden:Vergewissern Sie sich, dass der
MXMX-Eintrag-Eintrag mit der kleinsten Nummer im
DNS auf die statische IP-Adresse des
Rechners zeigt.Stellen Sie sicher, dass für den Rechner kein
MX-Eintrag im DNS
existiert.Jede der erwähnten Konfigurationsmöglichkeiten erlaubt es,
E-Mails direkt auf dem Rechner zu empfangen.Versuchen Sie das:&prompt.root; hostname
example.FreeBSD.org
&prompt.root; host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XXIn diesem Beispiel sollte es funktionieren, E-Mails direkt
an yourlogin@example.FreeBSD.org
zu senden, vorausgesetzt dass
Sendmail auf example.FreeBSD.org korrekt
läuft.In diesem Beispiel:&prompt.root; host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by devnull.FreeBSD.orgHier wird jede an den Rechner example.FreeBSD.org
gesandte E-Mail auf hub unter dem
gleichen Benutzernamen gesammelt, anstatt diese direkt zu
Ihrem Rechner zu senden.Die obige Information wird von einem
DNS-Server verwaltet. Der
DNS-Eintrag, der die Information zum
E-Mail-Routing enthält, ist der MX-Eintrag.
Existiert kein MX-Eintrag, werden E-Mails
direkt über die IP-Adresse an den Rechner geliefert.Der MX-Eintrag für freefall.FreeBSD.org sah
einmal so aus:freefall MX 30 mail.crl.net
freefall MX 40 agora.rdrop.com
freefall MX 10 freefall.FreeBSD.org
freefall MX 20 who.cdrom.comfreefall hatte viele
MX-Einträge. Die kleinste
MX-Nummer definiert de Rechner, der die
E-Mails direkt empfängt, wobei die anderen Rechner temporär
E-Mails in Warteschlangen einreihen, falls
freefall beschäftigt oder
unerreichbar ist.Es ist sehr sinnvoll, dass stellvertretende
MX-Seiten separate Internet-Verbindungen
verwenden. Ihr ISP kann diesen Dienst zur
Verfügung stellen.E-Mails für eine DomäneWird ein MTA für ein Netzwerk
konfiguriert, dann sollte jede E-Mail die an einen Rechner in
dieser Domäne geschickt wird, an den MTA
umgeleitet werden, damit die Benutzer ihre E-Mails vom
zentralen Mail-Server empfangen können.Am einfachsten ist es, wenn Accounts mit gleichen
Benutzernamen sowohl auf dem
MTA, als auch auf dem System mit dem
MUA existieren. Verwenden Sie
&man.adduser.8;, um Benutzerkonten anzulegen.Der MTA muss auf jeder Workstation im
Netzwerk als der zuständige Rechner für den E-Mail-Austausch
gekennzeichnet werden. Dies wird in der
DNS-Konfiguration über den
MX-Eintrag gesteuert:example.FreeBSD.org A 204.216.27.XX ; Workstation
MX 10 devnull.FreeBSD.org ; MailhostDiese Einstellung wird E-Mails für die Workstations zum
MTA weiterleiten, egal wo der A-Eintrag
hinzeigt. Die E-Mails werden zum
MX-Rechner gesendet.Diese Einstellung muss auf dem
DNS-Server konfiguriert werden. Besitzt
das Netzwerk keinen eigenen DNS-Server,
kontaktieren Sie Ihren ISP oder
DNS-Verwalter.Im Folgenden ist ein Beispiel für virtuelles
E-Mail-Hosting. Nehmen wir an, dass für einen Kunden mit der
Domäne customer1.org, alle
E-Mails für customer1.org an
mail.myhost.com
gesendet werden sollen. Der entsprechende
DNS-Eintrag sollte wie folgt
aussehen:customer1.org MX 10 mail.myhost.comWenn für die Domäne nur E-Mails verarbeitet werden sollen,
wird für customer1.orgkeinA-Eintrag
benötigt. Allerdings wird ein ping gegen
customer1.org
nur dann funktionieren, wenn ein A-Eintrag
existiert.Teilen Sie dem MTA mit, für welche
Domänen bzw. Hostnamen Post entgegengenommen werden soll. Die
beiden folgenden Methoden funktionieren für
Sendmail:Fügen Sie die Rechnernamen in
/etc/mail/local-host-names hinzu,
wenn FEATURE(use_cw_file) verwendet
wird.Fügen Sie eine Zeile
Cwyour.host.com in
/etc/sendmail.cf hinzu.Ausgehende E-Mail über einen Relay versendenBillMoranBeigetragen von In vielen Fällen möchte man E-Mail nur über
einen Relay verschicken. Zum Beispiel:Der Rechner ist ein Arbeitsplatzrechner und benutzt
Programme wie &man.send-pr.1; über ein Relay des
ISP.Ein Server, der E-Mails nicht selbst verarbeitet,
soll alle E-Mails zu einem Relay schicken.Obwohl jeder MTA diese Aufgabe erfüllen
kann, ist es oft schwierig einen vollwertigen
MTA so zu konfigurieren, dass er lediglich
ausgehende E-Mails weiterleitet. Es ist übertrieben, Programme
wie Sendmail und
Postfix nur für diesen Zweck
einzusetzen.Weiterhin kann es sein, dass die Bestimmungen des
Internetzugangs es verbieten, einen eigenen Mail-Server
zu betreiben.Um die hier beschriebenen Anforderungen zu erfüllen,
installieren Sie einfach den Port
mail/ssmtp:&prompt.root; cd /usr/ports/mail/ssmtp
&prompt.root; make install replace cleanNach der Installation kann
mail/ssmtp über
/usr/local/etc/ssmtp/ssmtp.conf
konfiguriert werden:root=yourrealemail@example.com
mailhub=mail.example.com
rewriteDomain=example.com
hostname=_HOSTNAME_Verwenden Sie eine gültige E-Mail-Adresse für
root. Geben Sie für
mail.example.com
den Mail-Relay des ISPs an. Einige
ISPs nennen den Relay
Postausgangsserver oder
SMTP-Server.Deaktivieren Sie Sendmail,
einschließlich des Services für den Postausgang. Details finden
Sie in .mail/ssmtp verfügt über weitere Optionen.
Die Beispiele in /usr/local/etc/ssmtp oder
die Manualpage von ssmtp enthalten
weitere Informationen.Wird ssmtp wie hier
beschrieben eingerichtet, können Anwendungen E-Mails von dem
lokalen Rechner verschicken. Man verstößt damit auch nicht
gegen Bestimmungen des ISPs und läuft
nicht Gefahr, dass der Rechner zum Versenden von Spam
missbraucht wird.E-Mail über Einwahl-VerbindungenWird eine feste IP-Adresse verwendet, müssen die
Standardeinstellungen wahrscheinlich gar nicht geändert
werden. Stellen Sie den Hostnamen auf den entsprechend
zugeordneten Internetnamen ein und
Sendmail übernimmt
das Übrige.Bei der Verwendung einer dynamisch zugewiesenen IP-Adresse
und einer PPP-Wählverbindung mit dem
Internet, hat man in der Regel ein Postfach auf dem Mailserver
des ISP. In diesem Beispiel ist die Domäne
des ISP example.net, der
Benutzername ist user,
der Rechnername ist bsd.home und der
ISP erlaubt es, relay.example.net als
Mail-Relayhost zu benutzen.Um Mails aus der Mailbox des ISPs
abzuholen, muss ein gesondertes Programm aus der Ports-Sammlung
installiert werden. mail/fetchmail ist eine
gute Wahl, weil es viele verschiedene Protokolle unterstützt.
Für gewöhnlich stellt der ISP
POP zur Verfügung. Falls
User-PPP verwendet wird, können durch
folgenden Eintrag in /etc/ppp/ppp.linkup
E-Mails automatisch abgerufen werden, sobald eine Verbindung zum
Netz aufgebaut wird:MYADDR:
!bg su user -c fetchmailWird Sendmail benutzt, um E-Mails
an nicht-lokale Benutzer zu versenden, konfigurieren Sie es so,
dass die Warteschlange abgearbeitet wird, sobald eine Verbindung
mit dem Internet besteht. Um dies zu erreichen, müssen folgende
Zeilen nach dem fetchmail-Eintrag in
/etc/ppp/ppp.linkup hinzugefügt
werden.!bg su user -c "sendmail -q"In diesem Beispiel existiert auf bsd.home ein Benutzer
user.
Erstellen Sie auf bsd.home im
Heimatverzeichnis von user die Datei
.fetchmailrc mit folgender
Zeile:poll example.net protocol pop3 fetchall pass MySecret;Diese Datei sollte für niemandem außer
user lesbar sein, weil sie das
Passwort MySecret enthält.Um Mails mit dem richtigen from:-Header
zu versenden, müssen Sie Sendmail so
konfigurieren, dass es user@example.net und nicht
user@bsd.home benutzen soll und das alle Mails
über relay.example.net versendet
werden, um eine schnellere Übertragung von Mails zu
gewährleisten.Die folgende .mc sollte
ausreichen:VERSIONID(`bsd.home.mc version 1.0')
OSTYPE(bsd4.4)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Cwlocalhost
Cwbsd.home
MASQUERADE_AS(`example.net')dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(nocanonify)dnl
FEATURE(nodns)dnl
define(`SMART_HOST', `relay.example.net')
Dmbsd.home
define(`confDOMAIN_NAME',`bsd.home')dnl
define(`confDELIVERY_MODE',`deferred')dnlIm vorherigen Abschnitt finden Sie Details dazu, wie
Sie diese Datei in das Format sendmail.cf
konvertieren können. Vergessen Sie nicht,
Sendmail neu zu starten,
nachdem sendmail.cf verändert wurde.SMTP-AuthentifizierungJamesGorhamGeschrieben von Die Konfiguration von
SMTP-Authentifizierung auf dem
MTA bietet einige Vorteile. Die
erforderliche Authentifizierung erhöht die Sicherheit von
Sendmail und mobilen Benutzern, die
auf entfernten Rechnern arbeiten. Diese Benutzer können
denselben MTA verwenden, ohne jedes Mal das
Benutzerprogramm neu konfigurieren zu müssen.Installieren Sie security/cyrus-sasl2
aus der Ports-Sammlung. Dieser Port verfügt über einige
Optionen, die während der Übersetzung festgelegt werden.
Für die in diesem Abschnitt beschriebene Methode zur
SMTP-Authentifizierung muss die Option
aktiviert werden.Nach der Installation von
security/cyrus-sasl2 editieren Sie
/usr/local/lib/sasl2/Sendmail.conf.
Erstellen Sie die Datei, wenn sie nicht existiert und fügen
Sie die folgende Zeile hinzu:pwcheck_method: saslauthdAls nächstes installieren Sie
security/cyrus-sasl2-saslauthd,
und fügen die folgende Zeile in
/etc/rc.conf ein:saslauthd_enable="YES"Abschließend starten Sie den saslauthd-Dämon:&prompt.root; service saslauthd startDieser Dämon agiert als Broker zwischen
Sendmail und der
&os;-passwd-Datenbank. Dadurch
müssen zum Versenden von E-Mails keine zusätzlichen
Accounts und Passwörter angelegt werden. Die Benutzer
verwenden dasselbe Passwort zum Anmelden wie zum Verschicken
von E-Mails.Fügen Sie danach in /etc/make.conf
die folgenden Zeilen hinzu:SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl2Beim Übersetzen von Sendmail
werden damit die cyrus-sasl2-Bibliotheken
benutzt. Stellen Sie daher vor dem Übersetzen von
Sendmail sicher, dass
cyrus-sasl2 installiert
ist.Übersetzen Sie Sendmail mit
den nachstehenden Kommandos:&prompt.root; cd /usr/src/lib/libsmutil
&prompt.root; make cleandir && make obj && make
&prompt.root; cd /usr/src/lib/libsm
&prompt.root; make cleandir && make obj && make
&prompt.root; cd /usr/src/usr.sbin/sendmail
&prompt.root; make cleandir && make obj && make && make installDie Übersetzung sollte keine Probleme bereiten, wenn
/usr/src nicht umfangreich verändert
wurde und die benötigten Bibliotheken installiert
sind.Nachdem Sendmail übersetzt
und installiert wurde, editieren Sie
/etc/mail/freebsd.mc beziehungsweise
die lokale .mc-Datei. Viele
Administratoren verwenden die Ausgabe von &man.hostname.1;,
um der .mc einen eindeutigen
Namen zu geben. Fügen Sie die folgenden Zeilen
hinzu:dnl set SASL options
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnlDiese Anweisungen konfigurieren die Methoden, die
Sendmail zur Authentifizierung
von Benutzern verwendet. Lesen Sie die
Sendmail Dokumentation, wenn eine
andere Methode als verwendet werden
soll.Abschließend rufen Sie &man.make.1; in
/etc/mail auf. Damit wird aus der
.mc-Datei eine neue
.cf-Datei erzeugt. Der Name ist
entweder freebsd.cf oder der Name der
lokalen .mc-Datei.
make install restart installiert die
Datei nach /etc/mail/sendmail.cf und
startet Sendmail neu. Weitere
Informationen zu diesem Vorgang entnehmen Sie bitte
/etc/mail/Makefile.Um die Konfiguration zu testen, verwenden Sie einen
MUA, um eine Testnachricht zu senden.
Mail-Benutzerprogramm das Passwort für die Authentifizierung ein
und versenden Sie zum Testen eine E-Mail. Zur Fehlersuche,
setzen Sie den von
Sendmail auf 13
und untersuchen die Fehlermeldungen in
/var/log/maillog.Weitere Information finden Sie unter
SMTP-Authentifizierung.E-Mail-ProgrammeMarcSilverBeigetragen von Mail-User-AgentsE-Mail-ProgrammeAnwendungen, die E-Mails versenden und empfangen, werden als
E-Mail-Programme oder Mail-User-Agents (MUA)
bezeichnet. Mit der Entwicklung und Ausbreitung von E-Mail
wachsen auch die E-Mail-Programme und bieten Benutzern mehr
Funktionen und höhere Flexibilität. Die Kategorie
mail der &os; Ports-Sammlung enthält
zahlreiche E-Mail-Programme. Dazu gehören grafische Programme,
wie beispielsweise Evolution oder
Balsa und Konsolen basierte Programme
wie mutt oder
alpine.mailDas standardmäßig unter &os; installierte
E-Mail-Programm ist &man.mail.1;. Das Programm ist
konsolenorientiert und enthält alle Funktionen,
die zum Versand und Empfang textbasierter
E-Mails erforderlich sind. Es bietet eine begrenzte
Unterstützung für Anhänge und kann auf lokale Postfächer
zugreifen.mail kann nicht direkt auf
POP- oder IMAP-Server
zugreifen. Entfernte Postfächer können aber
mit einer Anwendung wie fetchmail
in eine lokale mbox geladen
werden.Um E-Mails zu versenden oder zu empfangen, starten
Sie einfach mail wie im nachstehenden
Beispiel:&prompt.user; mailmail liest automatisch
den Inhalt des Benutzer-Postfachs im Verzeichnis
/var/mail. Sollte
das Postfach leer sein, beendet sich mail
mit der Nachricht, dass keine E-Mails vorhanden sind.
Wenn E-Mails vorhanden sind, wird die Benutzeroberfläche
gestartet und eine Liste der E-Mails angezeigt.
Die E-Mails werden automatisch nummeriert wie
im folgenden Beispiel gezeigt:Mail version 8.1 6/6/93. Type ? for help.
"/var/mail/marcs": 3 messages 3 new
>N 1 root@localhost Mon Mar 8 14:05 14/510 "test"
N 2 root@localhost Mon Mar 8 14:05 14/509 "user account"
N 3 root@localhost Mon Mar 8 14:05 14/509 "sample"Einzelne Nachrichten können nun durch Eingabe von
t gefolgt von der Nummer der Nachricht
gelesen werden. Im nachstehenden Beispiel wird die erste
E-Mail gelesen:& t 1
Message 1:
From root@localhost Mon Mar 8 14:05:52 2004
X-Original-To: marcs@localhost
Delivered-To: marcs@localhost
To: marcs@localhost
Subject: test
Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)
Das ist eine Test-Nachricht. Antworte bitte!Wie in diesem Beispiel zu sehen ist, wird die Nachricht
zusammen mit dem vollständigen Nachrichtenkopf angezeigt.
Um die Liste der E-Mails erneut zu sehen, drücken Sie wieder
die Taste h.Um auf eine E-Mail zu antworten, benutzen Sie
entweder R oder r.
R weist mail an, dem
Versender der Nachricht zu antworten, während mit
r allen Empfängern der Nachricht geantwortet
wird. Den Kommandos kann die Zahl der E-Mail, auf die
geantwortet werden soll, mitgegeben werden. Nachdem die
Antwort E-Mail verfasst worden ist, sollte die Eingabe mit
einem einzelnen Punkt (.) auf einer neuen
Zeile abgeschlossen werden. Hierzu ein Beispiel:& R 1
To: root@localhost
Subject: Re: test
Danke, ich habe deine E-Mail erhalten.
.
EOTNeue E-Mails können mit m, gefolgt von
der E-Mail-Adresse des Empfängers verschickt werden. Mehrere
Empfänger werden durch Kommata (,) getrennt,
angegeben. Der Betreff
(subject) der Nachricht kann
dann, gefolgt vom Inhalt der Nachricht eingegeben werden.
Die Nachricht wird dann mit einem einzelnen Punkt
(.) auf einer neuen Zeile
abgeschlossen.& mail root@localhost
Subject: Ich habe die E-Mails im Griff!
Jetzt kann ich E-Mails versenden und empfangen ... :)
.
EOTDie Taste ? zeigt zu jeder Zeit
einen Hilfetext an. Lesen Sie &man.mail.1;, wenn Sie weitere
Hilfe zur Benutzung von mail erhalten
möchten.&man.mail.1; wurde nicht für den Umgang mit Anhängen
entworfen und kann daher sehr schlecht mit Anhängen umgehen.
Neuere MUAs gehen wesentlich besser
mit Anhängen um. Benutzer, die mail
bevorzugen, werden vielleicht den Port
converters/mpack zu schätzen
wissen.muttmutt ist ein leistungsfähiges
E-Mail-Programm mit vielen Funktionen, darunter:mutt kann den Verlauf
einer Diskussion
(threading)
darstellen.Unterstützung von PGP für das digitale
signieren und verschlüsseln von E-Mail.MIME-Unterstützung.Maildir-Unterstützung.mutt lässt sich
im höchsten Maße an lokale Bedürfnisse
anpassen.Mehr über mutt erfahren Sie auf
der Seite
http://www.mutt.org.mutt kann über den Port
mail/mutt installiert werden. Nachdem der
Port installiert ist, kann mutt
mit dem folgenden Befehl gestartet werden:&prompt.user; muttmutt liest automatisch den
Inhalt des Benutzer-Postfachs im Verzeichnis
/var/mail. Sind keine E-Mails vorhanden,
wartet mutt auf Benutzereingaben.
Das folgende Beispiel zeigt, wie
mutt eine Nachrichten-Liste
darstellt:Um eine E-Mail zu lesen, wählen Sie die Nachricht einfach
mit den Pfeiltasten aus und drücken
Enter. mutt
zeigt E-Mails wie folgt an:Änlich wie &man.mail.1;, kann auch
mutt verwendet werden, um nur dem
Absender, oder auch allen anderen Empfängern zu antworten. Um
nur dem Absender der E-Mail zu antworten, drücken Sie
r. Um sowohl dem Absender, als auch allen
anderen Empfängern zu antworten, drücken Sie
g.Zum Erstellen oder zum Beantworten von E-Mails
ruft mutt den Editor
&man.vi.1; auf. Jeder Benutzer kann diese Einstellung
anpassen, indem die Variable editor in
.muttrc im Heimatverzeichnis gesetzt
wird, oder die Umgebungsvariable EDITOR
entsprechend angepasst wird. Weitere Informationen zur
Konfiguration von mutt finden Sie
unter
http://www.mutt.org/.Drücken Sie m, um eine neue Nachricht zu
verfassen. Nachdem der Betreff
(subject) eingegeben wurde,
startet mutt den &man.vi.1; und
die Nachricht kann verfasst werden. Wenn Sie fertig sind,
speichern Sie die Nachricht und verlassen den &man.vi.1;.
mutt wird dann wieder aktiv
und zeigt eine Zusammenfassung der zu sendenden Nachricht
an. Drücken Sie y, um die E-Mail
zu versenden. Der nachstehende Bildschirmabzug zeigt die
Zusammenfassung der E-Mail:mutt verfügt über
eine umfangreiche Hilfestellung. Aus fast jedem Menü
können Hilfeseiten mit ? aufgerufen werden.
In der oberen Statuszeile werden zudem die
verfügbaren Tastenkombinationen angezeigt.alpinealpine wendet sich an
Anfänger bietet aber ebenfalls einige Funktionen
für Profis.In der Vergangenheit wurden in
alpine mehrere Schwachstellen
gefunden. Die Schwachstellen gestatteten entfernten
Benutzern, durch das Versenden einer besonders verfassten
E-Mail, Programme auf dem lokalen System laufen
zu lassen. Alle bekannten
Schwachstellen sind beseitigt worden, doch wird im
Quellcode von alpine ein
sehr riskanter Programmierstil verwendet, sodass der
&os;-Security-Officer von weiteren unbekannten
Schwachstellen ausgeht. Benutzer installieren
alpine auf eigene
Verantwortung!Der Port mail/alpine
enthält die aktuelle Version von
alpine. Nach der Installation
können Sie alpine mit dem
nachstehenden Kommando starten:&prompt.user; alpineBeim ersten Start von alpine,
zeigt das Programm eine Seite mit einer kurzen Einführung an.
Um die alpine-Benutzer zu zählen,
bitten die Entwickler auf dieser Seite um eine anonyme E-Mail.
Sie können diese anonyme E-Mail senden, indem Sie
Enter drücken oder den
Begrüßungsbildschirm mit der Taste
E verlassen, ohne die anonyme E-Mail
zu senden. Der Begrüßungsbildschirm
sieht wie folgt aus:Nach dem Begrüßungsbildschirm wird das
Hauptmenü dargestellt, das sich mit den
Pfeiltasten bedienen lässt. Über Tastenkombinationen
können aus dem Hauptmenü neue E-Mails erstellt, Postfächer
angezeigt und das Adressbuch verwaltet werden. Unterhalb des
Menüs werden die Tastenkombinationen für die verfügbaren
Aktionen angezeigt.In der Voreinstellung öffnet
alpine das Verzeichnis
inbox.
Die Taste I oder der Menüpunkt
MESSAGE INDEX führt
zu einer Nachrichten-Liste:Die Liste zeigt die Nachrichten im Arbeitsverzeichnis.
Sie können Nachrichten mit den Pfeiltasten markieren.
Um eine Nachricht zu lesen, drücken Sie
Enter.Im nächsten Bildschirmabzug sehen Sie, wie
alpine eine Nachricht darstellt.
Die unteren Bildschirmzeilen zeigen die verfügbaren
Tastenkombinationen. Mit r
können Sie zum Beispiel auf die gerade angezeigte
Nachricht antworten.Zum Antworten auf eine E-Mail wird in
alpine der Editor
pico, der mit installiert wird,
benutzt. pico ist leicht
zu bedienen und gerade für Anfänger besser
geeignet als &man.vi.1; oder &man.mail.1;. Die Antwort
wird mit der Tastenkombination
CtrlX
versendet. Vor dem Versand bittet alpine
noch um eine Bestätigung.Über den Menüpunkt SETUP
des Hauptmenüs können Sie alpine
an Ihre Bedürfnisse anpassen. Erläuterungen
dazu finden Sie auf der Seite
http://www.washington.edu/pine/.E-Mails mit fetchmail
abholenMarcSilverBeigetragen von fetchmailfetchmail ist ein vollwertiger
IMAP- und POP-Client.
Mit fetchmail können Benutzer
E-Mails von entfernten IMAP- und
POP-Servern in leichter zugängliche
lokale Postfächer laden. fetchmail
wird aus dem Port mail/fetchmail
installiert. Das Programm bietet unter anderem folgende
Funktionen:fetchmail beherrscht die
Protokolle POP3,
APOP, KPOP,
IMAP, ETRN und
ODMR.E-Mails können mit SMTP
weiterverarbeitet werden. Dadurch ist garantiert, dass
Filter, Weiterleitungen und Aliase weiterhin
funktionieren.Das Programm kann als Dienst laufen und periodisch
neue Nachrichten abrufen.fetchmail kann mehrere
Postfächer abfragen und je nach Konfiguration
die E-Mails an verschiedene lokale Benutzer
zustellen.Dieser Abschnitt erklärt einige grundlegende Funktionen von
fetchmail. Das Programm benötigt
eine Konfigurationsdatei .fetchmailrc im
Heimatverzeichnis des Benutzers. In dieser Datei werden
Informationen über Server wie auch Benutzerdaten und Passwörter
hinterlegt. Wegen des kritischen Inhalts dieser Datei ist es
ratsam, diese nur für den Benutzer lesbar zu machen:&prompt.user; chmod 600 .fetchmailrcDie folgende .fetchmailrc zeigt, wie
das Postfach eines einzelnen Benutzers mit
POP heruntergeladen wird.
fetchmail wird angewiesen, eine
Verbindung zu example.com herzustellen und
sich dort als Benutzer joesoap mit dem Passwort
XXX anzumelden. Das Beispiel setzt voraus,
dass der Benutzer joesoap auch auf dem lokalen
System existiert.poll example.com protocol pop3 username "joesoap" password "XXX"Im folgenden Beispiel werden mehrere POP-
und IMAP-Server benutzt. Wo notwendig,
werden E-Mails auf andere lokale Konten umgeleitet:poll example.com proto pop3:
user "joesoap", with password "XXX", is "jsoap" here;
user "andrea", with password "XXXX";
poll example2.net proto imap:
user "john", with password "XXXXX", is "myth" here;fetchmail kann als Dämon
gestartet werden. Verwendet wird dazu die Kommandozeilenoption
gefolgt von einer Zeitspanne in Sekunden,
die angibt, wie oft die Server aus
.fetchmailrc abgefragt werden sollen.
Mit dem nachstehenden Befehl fragt
fetchmail die Server alle
600 Sekunden ab:&prompt.user; fetchmail -d 600Mehr über fetchmail erfahren Sie
auf der Seite
http://www.fetchmail.info/.E-Mails mit procmail
filternMarcSilverBeigetragen von procmailprocmail ist ein mächtiges
Werkzeug, mit dem sich eingehende E-Mails filtern lassen.
Benutzer können Regeln für eingehende E-Mails definieren, die
E-Mails zu anderen Postfächern oder anderen E-Mail-Adressen
umleiten. procmail befindet
sich im Port mail/procmail.
procmail kann leicht in die
meisten MTAs integriert werden. Lesen
Sie dazu bitte die Dokumentation des verwendeten
MTAs. Alternativ kann
procmail in das E-Mail-System
eingebunden werden, indem die nachstehende Zeile in
die Datei .forward im Heimatverzeichnis
eines Benutzers eingefügt wird:"|exec /usr/local/bin/procmail || exit 75"Der folgende Abschnitt zeigt einige einfache
procmail-Regeln sowie eine kurze
Beschreibung dessen, was sie tun. Regeln müssen in
.procmailrc im Heimatverzeichnis des
Benutzers eingefügt werden.Den Großteil dieser Regeln finden Sie auch
in &man.procmailex.5;.Um E-Mails von user@example.com
an die externe Adresse goodmail@example2.com
weiterzuleiten::0
* ^From.*user@example.com
! goodmail@example2.comUm E-Mails, die kürzer als 1000 Bytes
sind, an goodmail@example2.com
weiterzuleiten::0
* < 1000
! goodmail@example2.comUm E-Mails, die an alternate@example.com
geschickt werden, im Postfach alternate zu
speichern::0
* ^TOalternate@example.com
alternateUm E-Mails, die im Betreff Spam
enthalten, nach /dev/null zu
verschieben::0
^Subject:.*Spam
/dev/nullZuletzt ein nützliches Rezept, das eingehende E-Mails
von den &os;.org-Mailinglisten
in ein separates Postfach für jede Liste einsortiert::0
* ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
{
LISTNAME=${MATCH}
:0
* LISTNAME??^\/[^@]+
FreeBSD-${MATCH}
}
Index: head/de_DE.ISO8859-1/books/handbook/network-servers/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/network-servers/chapter.xml (revision 50863)
+++ head/de_DE.ISO8859-1/books/handbook/network-servers/chapter.xml (revision 50864)
@@ -1,6135 +1,6135 @@
NetzwerkserverÜbersichtDieses 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.Nachdem Sie dieses Kapitel gelesen haben, werden SieDen inetd-Daemon
konfigurieren können.Wissen, wie das
Network File System
(NFS) eingerichtet wird.Einen
Network Information Server
(NIS) einrichten können, um damit
Benutzerkonten im Netzwerk zu verteilen.Wissen, wie Sie &os; einrichten, um als
LDAP-Server oder -Client zu
agieren.Rechner durch Nutzung von DHCP
automatisch für ein Netzwerk konfigurieren können.In der Lage sein, einen
Domain Name Server
(DNS) einzurichten.Den Apache
HTTP-Server konfigurieren können.Wissen, wie man einen
File Transfer Protocol
(FTP)-Server einrichtet.Mit Samba einen Datei- und
Druckserver für &windows;-Clients konfigurieren
können.Unter Nutzung des NTP-Protokolls
Datum und Uhrzeit synchronisieren sowie einen Zeitserver
installieren können.Wissen, wie iSCSI eingerichtet
wird.Dieses Kapitel setzt folgende Grundkenntnisse voraus:/etc/rc-Skripte.NetzwerkterminologieInstallation zusätzlicher Software von Drittanbietern
().Der inetdSuper-ServerDer &man.inetd.8;-Daemon wird manchmal auch als
Internet Super-Server bezeichnet, weil er
Verbindungen für viele Dienste verwaltet. Anstatt mehrere
Anwendungen zu starten, muss nur der
inetd-Dienst gestartet werden.
Wenn eine Verbindung für einen Dienst eintrifft, der von
inetd verwaltet wird, bestimmt
inetd, welches Programm für die
eingetroffene Verbindung zuständig ist, aktiviert den
entsprechenden Prozess und reicht den Socket an ihn weiter.
Der Einsatz von inetd an Stelle
viele einzelner Daemonen kann auf nicht komplett ausgelasteten
Servern zu einer Verringerung der Systemlast führen.inetd wird vor allem dazu
verwendet, andere Daemonen zu aktivieren, einige Protokolle
werden aber auch intern verwaltet. Dazu gehören
chargen,
auth,
time,
echo,
discard sowie
daytime.Dieser Abschnitt beschreibt die Konfiguration von
inetd.KonfigurationsdateiDie Konfiguration von inetd
erfolgt über /etc/inetd.conf Jede Zeile
dieser Datei repräsentiert eine Anwendung, die von
inetd gestartet werden kann. In
der Voreinstellung beginnt jede Zeile mit einem Kommentar
(#), was bedeutet dass
inetd keine Verbindungen für
Anwendungen akzeptiert. Entfernen Sie den Kommentar am Anfang
der Zeile, damit inetd Verbindungen
für diese Anwendung entgegennimmt.Nachdem Sie die Änderungen gespeichert haben, fügen Sie
folgende Zeile in /etc/rc.conf ein, damit
inetd bei Booten automatisch
gestartet wird:inetd_enable="YES"Starten Sie jetzt inetd, so
dass er Verbindungen für die von Ihnen konfigurierten Dienste
entgegennimmt:&prompt.root; service inetd startSobald inetd gestartet ist,
muss der Dienst benachrichtigt werden, wenn eine Änderung in
/etc/inetd.conf gemacht wird:Die Konfigurationsdatei von
inetd neu einlesen&prompt.root; service inetd reloadNormalerweise müssen Sie lediglich den Kommentar vor der
Anwendung entfernen. In einigen Situationen kann es jedoch
sinnvoll sein, den Eintrag weiter zu bearbeiten.Als Beispiel dient hier der Standardeintrag für
&man.ftpd.8; über IPv4:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -lDie sieben Spalten in diesem Eintrag haben folgende
Bedeutung: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-argumentsservice-nameDer Dienstname eines bestimmten Daemons. Er muss
einem in /etc/services
aufgelisteten Dienst entsprechen. Hier wird festgelegt,
auf welchen Port inetd
eingehende Verbindungen für diesen Dienst entgegennimmt.
Wenn ein neuer Dienst benutzt wird, muss er zuerst in
/etc/services eingetragen
werden.socket-typeEntweder stream,
dgram, raw, oder
seqpacket. Nutzen Sie
stream für
TCP-Verbindungen und
dgram für
UDP-Dienste.protocolBenutzen Sie eines der folgenden Protokolle:ProtokollBedeutungtcp oder tcp4TCP (IPv4)udp oder udp4UDP (IPv4)tcp6TCP (IPv6)udp6UDP (IPv6)tcp46TCP sowohl unter IPv4 als auch unter
IPv6udp46UDP sowohl unter IPv4
als auch unter IPv6{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]In diesem Feld muss oder
angegeben werden.
,
sowie
sind optional. gibt an, ob der Dienst
seinen eigenen Socket verwalten kann oder nicht.
-Sockets müssen
verwenden, während Daemonen mit
-Sockets, die normalerweise auch
aus mehreren Threads bestehen,
verwenden sollten. gibt in der
Regel mehrere Sockets an einen einzelnen Daemon weiter,
während für jeden neuen Socket
einen Childdaemon erzeugt.Die maximale Anzahl an Child-Daemonen, die
inetd erzeugen kann, wird
durch die Option festgelegt.
Wenn ein bestimmter Daemon 10 Instanzen benötigt, wird
der Wert /10 hinter die Option
gesetzt. Der Wert
/0 gibt an, das es keine Beschränkung
gibt.
legt die maximale Anzahl von Verbindungsversuchen pro
Minute fest, die von einer bestimmten
IP-Adresse aus unternommen werden
können. Sobald das Limit erreicht ist, werden weitere
Verbindungen von dieser IP-Adresse
geblockt, bis die Minute vorüber ist. Ein Wert von
/10 würde die maximale Anzahl der
Verindungsversuche einer bestimmten
IP-Adresse auf zehn Versuche in der
Minute beschränken.
legt fest, wie viele Child-Daemonen von einer bestimmten
IP-Adresse aus gestartet werden
können. Durch diese Optionen lassen sich
Ressourcenverbrauch sowie die Auswirkungen eines
Denial of Service (DoS)-Angriffs
begrenzen.Ein Beispiel finden Sie in den Voreinstellungen für
&man.fingerd.8;:finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -k -suserDer Benutzername, unter dem der jeweilige Daemon
laufen soll. Meistens laufen Daemonen als root, daemon oder nobody.server-programDer vollständige Pfad des Daemons. Wird der Daemon
von inetd intern
bereitgestellt, verwenden Sie
.server-program-argumentsDieser 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 .KommandozeilenoptionenWie die meisten anderen Server-Daemonen lässt sich auch
inetd über verschiedene Optionen
steuern. In der Voreinstellung wird
inetd mit
-wW -C 60 gestartet. Durch das Setzen
dieser Werte wird das TCP-Wrapping für alle
inetd-Dienste aktiviert.
Zudem wird verhindert, dass eine IP-Adresse
eine Dienst öfter als 60 Mal pro Minute anfordern kann.Um die Voreinstellungen für
inetd zu ändern, fügen Sie einen
Eintrag für inetd_flags in
/etc/rc.conf hinzu. Wenn
inetd bereits ausgeführt wird,
starten Sie ihn mit service inetd restart
neu.Die verfügbaren Optionen sind:-c maximumLegt 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
in /etc/inetd.conf festgelegt
werden.-C rateLegt fest, wie oft ein Dienst von einer einzelnen
IP-Adresse in einer Minute aufgerufen
werden kann; in der Voreinstellung gibt es keine
Einschränkung. Dieser Wert kann für jeden Dienst durch
das Setzen des Parameters
in /etc/inetd.conf festgelegt
werden.-R rateLegt fest, wie oft ein Dienst in der Minute
aktiviert werden kann; in der Voreinstellung sind dies
256 Aktivierungen pro Minute. Ein
Wert von 0 erlaubt unbegrenzt viele
Aktivierungen.-s maximumLegt fest, wie oft ein Dienst in der Minute von
einer einzelnen IP-Adresse aus
aktiviert werden kann; in der Voreinstellung gibt es
hier keine Beschränkung. Diese Einstellung kann für
jeden Dienst durch die Angabe von
in
/etc/inetd.conf angepasst
werden.Es sind noch weitere Optionen verfügbar. Eine
vollständige Liste der Optionen finden Sie in
&man.inetd.8;.SicherheitsbedenkenViele Daemonen, die von inetd
verwaltet werden, sind nicht auf Sicherheit bedacht. Einige
Damonen, wie beispielsweise
fingerd, 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.
max-connections-per-ip-per-minute,
max-child und
max-child-per-ip können verwendet werden,
um solche Angriffe zu begrenzen.TCP-Wrapper 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
inetd aktivierte Daemonen
benötigen.Network File System (NFS)TomRhodesReorganisiert und erweitert von BillSwingleGeschrieben von NFS&os; unterstützt das Netzwerkdateisystem
NFS, das es einem Server erlaubt, Dateien
und Verzeichnisse über ein Netzwerk mit Clients zu teilen. Mit
NFS können Benutzer und Programme auf Daten
entfernter Systeme zugreifen, und zwar so, als ob es sich
um lokal gespeicherte Daten handeln würde.Die wichtigsten Vorteile von NFS
sind: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.Verschiedene Clients können auf ein gemeinsames
Verzeichnis /usr/ports/distfiles
zugreifen. Die gemeinsame Nutzung dieses Verzeichnisses
ermöglicht einen schnellen Zugriff auf die Quelldateien,
ohne sie auf jede Maschine zu kopieren zu müssen.In größeren Netzwerken ist es praktisch, einen
zentralen NFS-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.Die Verwaltung der NFS-Exporte wird
vereinfacht. Zum Beispiel gibt es dann nur noch ein
Dateisystem, für das Sicherheits- oder Backup-Richtlinien
festgelegt werden müssen.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.NFS 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:Folgende Daemonen müssen auf dem Server ausgeführt
werden:NFSServerDateiserverUnix-ClientsrpcbindmountdnfsdDaemonBeschreibungnfsdDer NFS-Daemon. Er bearbeitet
Anfragen der NFS-Clients.mountdDer NFS-Mount-Daemon. Er
bearbeitet die Anfragen von
nfsd.rpcbindDer Portmapper-Daemon. Durch ihn erkennen die
NFS-Clients, welchen Port der
NFS-Server verwendet.Der Einsatz von &man.nfsiod.8; ist nicht zwingend
erforderlich, kann aber die Leistung auf dem Client
verbessern.Konfiguration des ServersNFSeinrichtenDie Dateisysteme, die der NFS-Server
exportieren soll, werden in /etc/exports
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.NFSExport von DateisystemenWie Dateisysteme exportiert werden, ist in der folgenden
/etc/exports 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 findne
Sie in &man.exports.5;.Dieses Beispiel exportiert /cdrom für
drei Clients, alpha,
bravo und
charlie:/cdrom -ro alphabravocharlieDie 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 DNS oder über
/etc/hosts aufgelöst werden können.
Lesen Sie &man.hosts.5; falls das Netzwerk über keinen
DNS-Server verfügt.Das nächste Beispiel exportiert /home
auf drei durch IP-Adressen bestimmte
Clients. Diese Einstellung kann für Netzwerke ohne
DNS-Server und
/etc/hosts nützlich sein. Die 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./usr/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4Das nächste Beispiel exportiert /a,
damit Clients von verschiedenen Domänen auf das Dateisystem
zugreifen können. Die Option
erlaubt es dem Benutzer root des Clients, als
root auf das
exportierte Dateisystem zu schreiben. Wenn diese Option nicht
gesetzt ist, wird der
root-Benutzer des Clients dem nobody-Konto des Servers
zugeordnet und unterliegt somit den Zugriffsbeschränkungen
dieses Kontos./a -maproot=root host.example.com box.example.orgEin Client kann für jedes Dateisystem nur einmal definiert
werden. Wenn beispielsweise /usr ein
gesondertes Dateisystem ist, dann wären die folgenden Einträge
falsch, da in beiden Einträgen der gleiche Rechner angegeben
wird:#Nicht erlaubt, wenn /usr ein einziges Dateisystem ist
/usr/src client
/usr/ports clientDas richtige Format für eine solche Situation ist:/usr/src /usr/ports clientDas Folgende ist ein Beispiel für eine gültige
Exportliste, in der /usr und
/exports lokale Dateisysteme sind:# 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 -roDamit die vom NFS-Server benötigen
Prozesse beim Booten gestartet werden, fügen Sie folgende
Optionen in /etc/rc.conf hinzu:rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"Der Server kann jetzt mit diesem Kommando gestartet
werden:&prompt.root; service nfsd startWenn der NFS-Server startet, wird
auch mountd automatisch gestartet.
Allerdings liest mountd/etc/exports nur, wenn der Server
gestartet wird. Um nachfolgende Änderungen an
/etc/exports wirksam werden zu lassen,
kann mountd angewiesen werden, die
Datei neu einzulesen:&prompt.root; service mountd reloadKonfiguration des ClientsUm den NFS-Client zu aktivieren, setzen
Sie folgende Option in /etc/rc.conf auf
jedem Client:nfs_client_enable="YES"Der Client ist nun in der Lage, ein entferntes Dateisystem
einzuhängen. In diesen Beispielen ist der Name des Servers
server und der Name des Clients
client. Fügen Sie folgenden Befehl
aus, um das Verzeichnis /home vom
server auf dem
client ins Verzeichnis
/mnt einzuhängen:NFSDateisysteme einhängen&prompt.root; mount server:/home /mntDie Dateien und Verzeichnisse in
/home stehen dem Rechner
client nun im Verzeichnis
/mnt zur Verfügung.Um ein entferntes Dateisystem bei jedem Systemstart
automatisch einzuhängen, fügen Sie das Dateisystem in
/etc/fstab ein:server:/home /mnt nfs rw 0 0&man.fstab.5; enthält eine Beschreibung aller
Optionen.Dateien sperren
(Locking)Einige Anwendungen erfordern die Sperrung von Dateien,
damit sie korrekt arbeiten. Um diese Sperre zu aktivieren,
müssen diese Zeilen in /etc/rc.conf
sowohl auf dem Client als auch auf dem Server hinzugefügt
werden:rpc_lockd_enable="YES"
rpc_statd_enable="YES"Danach starten Sie die beiden Anwendungen:&prompt.root; service lockd start
&prompt.root; service statd startWenn keine Dateisperren zwischen den
NFS-Clients und dem
NFS-Server benötigt werden, können Sie den
NFS-Client durch die Übergabe der
Option an mount
zu einer lokalen Sperrung von Dateien zwingen. Weitere
Details finden Sie in &man.mount.nfs.8;.Automatisches Einhängen mit &man.amd.8;WylieStilwellBeigetragen von ChernLeeÜberarbeitet von amdAutomatic Mounter Daemon&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 amd automatisch
abgehängt.Dieser Damon ist eine Alternative zum dauerhaften
Einhängen von Dateisystemen in
/etc/fstab. In der Voreinstellung stellt
amd die Verzeichnisse
/host und /net als
NFS-Server bereit. Wenn auf eine
Datei in diesen Verzeichnissen zugegriffen wird, sucht
amd den entsprechenden Mountpunkt
und hängt das Dateisystem automatisch ein.
/net wird zum Einhängen von
exportierten Dateisystemen von einer
IP-Adresse verwendet, während
/host zum Einhängen von exportierten
Dateisystemen eines durch seinen Namen festgelegten Rechners
dient. Ein Zugriff auf eine Datei in
/host/foobar/usr würde
amd veranlassen, das von
foobar exportierte Dateisystem
/usr einzuhängen.Ein exportiertes Dateisystem mit
amd in den Verzeichnisbaum
einhängenshowmount -e zeigt in diesem Beispiel
die exportierten Dateisysteme des
NFS-Servers
foobar an:&prompt.user; showmount -e foobar
Exports list on foobar:
/usr 10.10.10.0
/a 10.10.10.0
&prompt.user; cd /host/foobar/usrDie Ausgabe von showmount zeigt
/usr als exportiertes Dateisystem an.
Wenn man in das Verzeichnis
/host/foobar/usr wechselt, fängt
amd die Anfrage ab und versucht
den Rechnernamen foobar aufzulösen.
Wenn dies gelingt, wird amd
automatisch den gewünschten Export in den Verzeichnisbaum
einhängen.Um amd beim Booten zu
aktivieren, fügen Sie folgende Zeile in
/etc/rc.conf ein:amd_enable="YES"Um amd direkt zu
starten:&prompt.root; service amd startIndividuelle Optionen können über die Umgebungsvariable
amd_flags an amd
übergeben werden. In der Voreinstellung ist
amd_flags eingestellt auf:amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"Die Standardoptionen, mit denen exportierte Dateisysteme
in den Verzeichnisbaum eingehängt werden, werden in
/etc/amd.map festgelegt. Einige der
erweiterten Optionen von amd
werden in /etc/amd.conf definiert.Weitere Informationen finden Sie in &man.amd.8; und
&man.amd.conf.5;.Automatisches Einhängen mit &man.autofs.5;&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.autofsAutomounter Subsystem&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;.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.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.Die primäre Konfigurationsdatei von autofs ist
/etc/auto_master. Sie enthält die
einzelnen Zuordnungen zu den Mountpunkten. Eine Erklärung
zu auto_master und der Syntax für
die Zuordnungen finden Sie in &man.auto.master.5;.Eine spezielle Automounter Zuordnung wird in
/net 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
/net/foobar/usr zugegriffen werden soll,
würde &man.automountd.8; das exportierte Dateisystem
/usr von dem Rechner foobar einhängen.Ein exportiertes Dateisystem mit &man.autofs.5; in den
Verzeichnisbaum einhängenIn diesem Beispiel zeigt showmount -e
die exportierten Dateisysteme des
NFS-Servers foobar:&prompt.user; showmount -e foobar
Exports list on foobar:
/usr 10.10.10.0
/a 10.10.10.0
&prompt.user; cd /net/foobar/usrDie Ausgabe von showmount zeigt das
exportierte Dateisystem /usr. Wenn in
das Verzeichnis /host/foobar/usr
gewechselt wird, fängt &man.automountd.8; die Anforderung ab
und versucht, den Rechnernamen foobar aufzulösen.
Gelingt dies, wird &man.automountd.8; automatisch das
exportierte Dateisystem einhängen.Um &man.autofs.5; beim Booten zu aktivieren, fügen Sie
diese Zeile in /etc/rc.conf ein:autofs_enable="YES"Danach kann &man.autofs.5; gestartet werden:&prompt.root; service automount start
&prompt.root; service automountd start
&prompt.root; service autounmountd startObwohl 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 Mac
OS X Dokument.Weitere Informationen finden Sie in den Manualpages
&man.automount.8;, &man.automountd.8;, &man.autounmountd.8;
und &man.auto.master.5;.Network Information System (NIS)NISSolarisHP-UXAIXLinuxNetBSDOpenBSDyellow pagesNISDas Network Information System (NIS)
wurde entwickelt, um &unix;-Systeme zentral verwalten zu
können. Dazu zählen beispielsweise &solaris;, HP-UX, &aix;,
&linux;, NetBSD, OpenBSD und &os;. NIS war
ursprünglich als Yellow Pages bekannt,
aus markenrechtlichen Gründen wurde der Name aber geändert.
Dies ist der Grund, warum NIS-Kommandos mit
yp beginnen.NISDomänenBei NIS handelt es sich um ein
RPC-basiertes Client/Server-System. Eine
Gruppe von Rechnern greift dabei innerhalb einer
NIS-Domäne auf gemeinsame
Konfigurationsdateien zu. Dies erlaubt es einem
Systemadministrator, NIS-Clients mit
minimalem Aufwand einzurichten, sowie Änderungen an der
Systemkonfiguration von einem zentralen Ort aus
durchzuführen.&os; verwendet die Version 2 des
NIS-Protokolls.NIS-Begriffe und -ProzesseTabelle 30.1 fasst die Begriffe und Anwenderprozesse
zusammen, die von NIS verwendet
werden:rpcbind
NIS BegriffeBegriffBeschreibungNIS-DomänennameNIS-Masterserver und Clients
benutzen einen gemeinsamen
NIS-Domänennamen. In der Regel hat
dieser Name nichts mit DNS zu
tun.&man.rpcbind.8;Dieser Dienst aktiviert RPC
und muss gestartet sein, damit ein
NIS-Server oder -Client ausgeführt
werden kann.&man.ypbind.8;Dieser Dienst bindet einen
NIS-Client an seinen
NIS-Server. Der Client bezieht den
NIS-Domänennamen vom System und
stellt über das RPC-Protokoll eine
Verbindung zum NIS-Server her.
ypbind ist der zentrale
Bestandteil der Client-Server-Kommunikation in einer
NIS-Umgebung. Wird der Dienst
auf einem Client beendet, ist dieser nicht mehr in der
Lage, auf den NIS-Server
zuzugreifen.&man.ypserv.8;Dies ist der Prozess für den
NIS-Server. Wenn dieser Dienst
nicht mehr läuft, kann der Server nicht mehr auf
NIS-Anforderungen reagieren. Wenn
ein Slaveserver existiert, kann dieser als Ersatz
fungieren. Einige NIS-Systeme (allerdings nicht das
von &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
ypbind-Prozess auf dem
Client neu zu starten.&man.rpc.yppasswdd.8;Dieser Prozess läuft nur auf dem
NIS-Masterserver. Es handelt sich
um einen Daemonprozess, der es
NIS-Clients ermöglicht, ihre
NIS-Passwörter zu ändern. Wenn
dieser Daemon nicht läuft, müssen sich die Benutzer am
NIS-Masterserver anmelden und ihre
Passwörter dort ändern.
Arten von NIS-RechnernNISMasterserverNISSlaveserverNISClientNIS-MasterserverDieser Server dient als zentraler Speicherort für
Rechnerkonfigurationen. Zudem verwaltet er die
maßgebliche Kopie, der von den
NIS-Clients gemeinsam verwendeten
Dateien. passwd,
group, sowie verschiedene andere von
den Clients verwendete Dateien existieren auf dem
Masterserver. Obwohl ein Rechner auch für mehrere
NIS-Domänen als Masterserver fungieren
kann, wird diese Art von Konfiguration nicht behandelt, da
sich dieser Abschnitt auf eine relativ kleine
NIS-Umgebung konzentriert.NIS-SlaveserverNIS-Slaveserver verwalten Kopien
der Daten des NIS-Masterservers um
Redundanz zu bieten. Zudem entlasten Slaveserver den
Masterserver: NIS-Clients verbinden
sich immer mit dem NIS-Server, welcher
zuerst reagiert. Dieser Server kann auch ein Slaveserver
sein.NIS-ClientsNIS-Clients identifizieren sich
gegenüber dem NIS-Server während der
Anmeldung.Mit NIS können Informationen aus
verschiedenen Dateien von mehreren Rechnern gemeinsam
verwendet werden. master.passwd,
group, und hosts
werden oft gemeinsam über NIS verwendet.
Immer, wenn ein Prozess auf einem Client auf Informationen
zugreifen will, die normalerweise in lokalen Dateien vorhanden
wären, wird stattdessen eine Anfrage an den
NIS-Server gestellt, an den der Client
gebunden ist.PlanungDieser Abschnitt beschreibt eine einfache
NIS-Umgebung, welche aus 15 &os;-Maschinen
besteht, für die keine zentrale Verwaltung existiert. Jeder
Rechner hat also eine eigene Version von
/etc/passwd und
/etc/master.passwd. Diese Dateien werden
manuell synchron gehalten; wird ein neuer Benutzer
angelegt, so muss dies auf allen fünfzehn Rechnern manuell
erledigt werden.In Zukunft soll die Konfiguration wie folgt
aussehen:RechnernameIP-AdresseRechneraufgabeellington10.0.0.2NIS-Mastercoltrane10.0.0.3NIS-Slavebasie10.0.0.4Workstation der Fakultätbird10.0.0.5Clientrechnercli[1-11]10.0.0.[6-17]Verschiedene andere ClientsWenn 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.Einen NIS-Domänennamen
wählenNISDomänennameWenn ein Client Informationen anfordert, ist in dieser
Anforderung der Name der NIS-Domäne
enthalten. Dadurch weiß jeder Server im Netzwerk, auf
welche Anforderung er antworten muss. Stellen Sie sich
den NIS-Domänennamen als einen Namen
einer Gruppe von Rechnern vor.Manchmal wird der Name der Internetdomäne auch für die
NIS-Domäne verwendet. Dies ist
allerdings nicht empfehlenswert, da es bei der Behebung von
Problemen verwirrend sein kann. Der Name der
NIS-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
NIS-Domäne acme-art. Für
dieses Beispiel wird der Name test-domain
verwendet.Es gibt jedoch auch Betriebssysteme, die als
NIS-Domänennamen den Namen der
Internetdomäne verwenden. Wenn dies für einen oder
mehrere Rechner des Netzwerks zutrifft,
muss der Name der Internetdomäne als
NIS-Domänennamen verwendet werden.Anforderungen an den ServerBei der Wahl des NIS-Servers müssen
einige Dinge beachtet werden. Da die
NIS-Clients auf die Verfügbarkeit des
Servers angewiesen sind, sollten Sie einen Rechner wählen,
der nicht regelmäßig neu gestartet werden muss. Der
NIS-Server sollte idealerweise ein
alleinstehender Rechner sein, dessen einzige Aufgabe es
ist, als NIS-Server zu dienen. Wenn
das Netzwerk nicht zu stark ausgelastet ist, ist es auch
möglich, den NIS-Server als weiteren
Dienst auf einem anderen Rechner laufen zu lassen. Wenn
jedoch ein NIS-Server ausfällt, wirkt
sich dies negativ auf alle
NIS-Clients aus.Einen NIS-Masterserver
konfigurierenDie verbindlichen Kopien aller
NIS-Dateien befinden sich auf dem
Masterserver. Die Datenbanken, in denen die Informationen
gespeichert sind, bezeichnet man als
NIS-Maps. Unter &os; werden diese Maps
unter /var/yp/[domainname] gespeichert,
wobei [domainname] der Name der
NIS-Domäne ist. Da ein
NIS-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
NIS-Maps.NIS-Master- und Slaveserver
verwenden &man.ypserv.8;, um NIS-Anfragen
zu bearbeiten. Dieser Daemon ist für eingehende Anfragen
der NIS-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.NISServerkonfigurationAbhängig von den Anforderungen ist die Einrichtung eines
NIS-Masterservers relativ einfach, da
NIS von &os; bereits in der
Standardkonfiguration unterstützt wird. Es kann durch
folgende Zeilen in /etc/rc.conf aktiviert
werden:nisdomainname="test-domain">>>>>>>
nis_server_enable="YES">>>>>>>>>
nis_yppasswdd_enable="YES">>>>>>Diese Zeile setzt den
NIS-Domänennamen auf
test-domain.Dadurch werden die
NIS-Serverprozesse beim Systemstart
automatisch ausgeführt.Durch diese Zeile wird der
&man.rpc.yppasswdd.8;-Daemon aktiviert, der die
Änderung von NIS-Passwörtern von
einem Client aus ermöglicht.Wird ypserv in einer
Multi-Serverdomäne verwendet, in der
NIS-Server gleichzeitig als
NIS-Clients arbeiten, ist es eine gute
Idee, diese Server zu zwingen, sich an sich selbst zu binden.
Damit wird verhindert, dass Bindeanforderungen gesendet werden
und sich die Server gegenseitig binden. Sonst könnten
seltsame Fehler auftreten, wenn ein Server ausfällt, auf den
andere Server angewiesen sind. Letztlich werden alle Clients
einen Timeout melden, und versuchen, sich an andere Server zu
binden. Die dadurch entstehende Verzögerung kann beträchtlich
sein. Außerdem kann der Fehler erneut auftreten, da sich die
Server wiederum aneinander binden könnten.Server, die auch als Client arbeiten, können durch das
Hinzufügen der folgenden Zeilen in
/etc/rc.conf zu gezwungen werden, sich an
einen bestimmten Server zu binden:nis_client_enable="YES" # run client stuff as well
nis_client_flags="-S NIS domain,server"Nachdem die Parameter konfiguriert wurden, muss noch
/etc/netstart ausgeführt werden, um alles
entsprechend den Vorgaben in /etc/rc.conf
einzurichten. Bevor die NIS-Maps
einrichtet werden können, muss der &man.ypserv.8;-Daemon
manuell gestartet werden:&prompt.root; service ypserv startDie NIS-Maps
initialisierenNISmapsNIS-Maps Sie werden am
NIS-Masterserver aus den
Konfigurationsdateien unter /etc
erzeugt. Einzige Ausnahme:
/etc/master.passwd. Dies verhindert,
dass die Passwörter für root- oder andere
Administratorkonten an alle Server in der
NIS-Domäne verteilt werden. Deshalb
werden die primären Passwort-Dateien konfiguriert, bevor die
NIS-Maps initialisiert werden:&prompt.root; cp /etc/master.passwd /var/yp/master.passwd
&prompt.root; cd /var/yp
&prompt.root; vi master.passwdEs ist ratsam, alle Einträge für Systemkonten sowie
Benutzerkonten, die nicht an die
NIS-Clients weitergegeben werden sollen,
wie beispielsweise root und weitere
administrative Konten, zu entfernen.Stellen Sie sicher, dass
/var/yp/master.passwd weder von der
Gruppe noch von der Welt gelesen werden kann, indem Sie
Zugriffsmodus auf 600
einstellen.Nun können die NIS-Maps
initialisiert werden. &os; verwendet dafür das Skript
&man.ypinit.8;. Geben Sie und den
NIS-Domänennamen an, wenn Sie
NIS-Maps für den Masterserver
erzeugen:ellington&prompt.root; ypinit -m test-domain
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] n
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: coltrane
next host to add: ^D
The current list of NIS servers looks like this:
ellington
coltrane
Is this correct? [y/n: y] y
[..output from map generation..]
NIS Map update completed.
ellington has been setup as an YP master server without any errors.Dadurch erzeugt ypinit/var/yp/Makefile aus
/var/yp/Makefile.dist. Diese Datei
geht in der Voreinstellung davon aus, dass in einer
NIS-Umgebung mit nur einem Server
gearbeitet wird und dass alle Clients unter &os; laufen. Da
test-domain aber auch über einen
Slaveserver verfügt, muss
/var/yp/Makefile entsprechend angepasst
werden, sodass es mit einem Kommentar (#)
beginnt:NOPUSH = "True"Neue Benutzer hinzufügenJedes Mal, wenn ein neuer Benutzer angelegt wird,
muss er am NIS-Masterserver hinzugefügt
und die NIS-Maps anschließend neu
erzeugt werden. Wird dieser Punkt vergessen, kann sich
der neue Benutzer nur am
NIS-Masterserver anmelden. Um
beispielsweise den neuen Benutzer jsmith zur Domäne
test-domain hinzufügen wollen, müssen
folgende Kommandos auf dem Masterserver ausgeführt
werden:&prompt.root; pw useradd jsmith
&prompt.root; cd /var/yp
&prompt.root; make test-domainStatt pw useradd jsmith kann auch
adduser jsmith verwendet werden.Einen NIS-Slaveserver
einrichtenNISSlaveserverUm einen NIS-Slaveserver einzurichten,
melden Sie sich am Slaveserver an und bearbeiten Sie
/etc/rc.conf analog zum Masterserver.
Erzeugen Sie aber keine NIS-Maps, da diese
bereits auf dem Server vorhanden sind. Wenn
ypinit auf dem Slaveserver ausgeführt wird,
benutzen Sie (Slave) statt
(Master). Diese Option benötigt den Namen
des NIS-Masterservers und den Domänennamen,
wie in diesem Beispiel zu sehen:coltrane&prompt.root; ypinit -s ellington test-domain
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] n
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.Hierbei wird auf dem Slaveserver ein Verzeichnis namens
/var/yp/test-domain erstellt, welches
Kopien der NIS-Masterserver-Maps enthält.
Durch hinzufügen der folgenden Zeilen in
/etc/crontab wird der Slaveserver
angewiesen, seine Maps mit den Maps des Masterservers zu
synchronisieren:20 * * * * root /usr/libexec/ypxfr passwd.byname
21 * * * * root /usr/libexec/ypxfr passwd.byuidDiese Einträge sind nicht zwingend notwendig, da der
Masterserver automatisch versucht, alle Änderungen seiner
NIS-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.Um die Konfiguration abzuschließen, führen Sie
/etc/netstart auf dem Slaveserver aus, um
die NIS-Dienste erneut zu starten.Einen NIS-Client einrichtenEin NIS-Client
bindet sich unter Verwendung von
ypbind an einen
NIS-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
ypbind, 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.
ypbindpingt den Server
gelegentlich an, um sicherzustellen, dass der Server
funktioniert. Antwortet der Server innerhalb eines bestimmten
Zeitraums nicht (Timeout), markiert ypbind
die Domäne als ungebunden und beginnt erneut,
RPCs über das Netzwerk zu verteilen, um
einen anderen Server zu finden.NISClient konfigurierenEinen &os;-Rechner als NIS-Client
einrichten:Fügen Sie folgende Zeilen in
/etc/rc.conf ein, um den
NIS-Domänennamen festzulegen, und
um &man.ypbind.8; bei der Initialisierung des Netzwerks zu
starten:nisdomainname="test-domain"
nis_client_enable="YES"Um alle Passworteinträge des
NIS-Servers zu importieren, löschen Sie
alle Benutzerkonten in
/etc/master.passwd mit
vipw. Denken Sie daran, zumindest ein
lokales Benutzerkonto zu behalten. Dieses Konto sollte
außerdem Mitglied der Gruppe wheel sein. Wenn es mit
NIS 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:+:::::::::Diese Zeile legt für alle gültigen Benutzerkonten der
NIS-Server-Maps einen Zugang an. Es
gibt verschiedene Wege, den NIS-Client
durch Änderung dieser Zeile zu konfigurieren. Eine
Methode wird in
beschrieben. Weitere detaillierte Informationen finden
Sie im Buch Managing NFS and NIS vom
O'Reilly Verlag.Um alle möglichen Gruppeneinträge vom
NIS-Server zu importieren, fügen Sie
folgende Zeile in /etc/group
ein:+:*::Um den NIS-Client direkt zu starten,
führen Sie als Superuser die folgenden Befehle aus:&prompt.root; /etc/netstart
&prompt.root; service ypbind startDanach sollte bei der Eingabe von
ypcat passwd auf dem Client die
passwd-Map des
NIS-Servers angezeigt werden.Sicherheit unter NISDa RPC ein Broadcast-basierter Dienst
ist, kann jedes System innerhalb der Domäne mittels
ypbind den Inhalt der
NIS-Maps abrufen. Um nicht autorisierte
Transaktionen zu verhindern, unterstützt &man.ypserv.8; eine
Funktion namens securenets, durch die der
Zugriff auf bestimmte Rechner beschränkt werden kann. In der
Voreinstellung sind diese Informationen in
/var/yp/securenets gespeichert, es sei
denn, &man.ypserv.8; wurde mit der Option
und einem alternativen Pfad gestartet. Diese Datei enthält
Einträge, die aus einer Netzwerkadresse und einer Netzmaske
bestehen. Kommentarzeilen beginnen mit #.
/var/yp/securnets könnte beispielsweise
so aussehen:# 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.0Wenn &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 securenets nicht existiert, erlaubt
ypserv Verbindungen von jedem
Rechner. beschreibt eine alternative
Methode zur Zugriffskontrolle. Obwohl beide Methoden einige
Sicherheit gewähren, sind sie anfällig für
IP-Spoofing-Angriffe. Der
NIS-Verkehr sollte daher von einer Firewall
blockiert werden.Server, die securenets verwenden,
können Schwierigkeiten bei der Anmeldung von
NIS-Clients haben, die ein veraltetes
TCP/IP-Subsystem besitzen. Einige dieser TCP/IP-Subsysteme
setzen alle Rechnerbits auf Null, wenn sie einen
Broadcast 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 securenets
umgehen.TCP-WrapperDie Verwendung der TCP-Wrapper
verlangsamt die Reaktion des NIS-Servers.
Diese zusätzliche Reaktionszeit kann in Clientprogrammen zu
Timeouts führen. Dies vor allem in Netzwerken, die stark
ausgelastet sind, oder nur über langsame
NIS-Server verfügen. Wenn ein oder mehrere
Clients dieses Problem aufweisen, sollten Sie die betreffenden
Clients in NIS-Slaveserver umwandeln, und
diese an sich selbst binden.Bestimmte Benutzer an der Anmeldung hindernIn diesem Beispiel gibt es innerhalb der
NIS-Domäne den Rechner
basie, der nur für Mitarbeiter der
Fakultät bestimmt ist. Die passwd
Datenbank des NIS-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.Es gibt eine Möglichkeit, bestimmte Benutzer an der
Anmeldung an einem bestimmten Rechner zu hindern, selbst
wenn diese in der NIS-Datenbank vorhanden
sind. Dazu kann mit vipw der Eintrag
-Benutzername
und die richtige Anzahl von Doppelpunkten an das Ende von
/etc/master.passwd gesetzt werden,
wobei Benutzername der zu
blockierende Benutzername ist. Die Zeile mit dem geblockten
Benutzer muss dabei vor der + Zeile, für
zugelassene Benutzer stehen. In diesem Beispiel wird die
Anmeldung für den Benutzer bill am Rechner
basie blockiert:basie&prompt.root; cat /etc/master.passwd
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;Netzgruppen verwendenNetzgruppenBestimmten Benutzern die Anmeldung an einzelnen Systemen
zu verweigern, kann in großen Netzwerken schnell
unübersichtlich werden. Dadurch verlieren Sie den
Hauptvorteil von NIS: die
zentrale Verwaltung.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.Um das Beispiel in diesem Kapitel fortzuführen, wird die
NIS-Domäne um zusätzliche Benutzer und
Rechner erweitert:
Zusätzliche BenutzerBenutzername(n)Beschreibungalpha,
betaMitarbeiter der IT-Abteilungcharlie,
deltaLehrlinge der IT-Abteilungecho,
foxtrott,
golf, ...Mitarbeiterable,
baker, ...Praktikanten
Zusätzliche RechnerRechnername(n)Beschreibungwar,
death,
famine,
pollutionNur Mitarbeiter der IT-Abteilung dürfen sich an
diesen Rechnern anmelden.pride,
greed,
envy,
wrath,
lust,
slothNur Mitarbeiter und Lehrlinge der IT-Abteilung
dürfen sich auf diesen Rechnern anmelden.one,
two,
three,
four, ...Gewöhnliche Arbeitsrechner für
Mitarbeiter.trashcanEin sehr alter Rechner ohne kritische Daten.
Sogar Praktikanten dürfen diesen Rechner
verwenden.
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 NIS sorgfältig geplant wurde, muss nur
noch eine zentrale Konfigurationsdatei bearbeitet werden, um
den Zugriff auf bestimmte Rechner zu erlauben oder zu
verbieten.Dieses Beispiel erstellt vier Netzgruppen:
IT-Mitarbeiter, IT-Lehrlinge, normale Mitarbeiter sowie
Praktikanten: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)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: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.Der Name des Benutzerkontos, der zu dieser Netzgruppe
gehört.Die NIS-Domäne für das
Benutzerkonto. Benutzerkonten können von anderen
NIS-Domänen in eine Netzgruppe
importiert werden.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;.NetzgruppenNetzgruppennamen 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.Einige NIS-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:BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]
BIGGRP2 (,joe16,domain) (,joe17,domain) [...]
BIGGRP3 (,joe31,domain) (,joe32,domain)
BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3Wiederholen Sie diesen Vorgang, wenn mehr als 225 (15*15)
Benutzer in einer einzigen Netzgruppe existieren.Die neue NIS-Map aktivieren und
verteilen:ellington&prompt.root; cd /var/yp
ellington&prompt.root; makeDadurch werden die NIS-Maps netgroup,
netgroup.byhost und
netgroup.byuser erzeugt. Prüfen Sie die
Verfügbarkeit der neuen NIS-Maps mit
&man.ypcat.1;:ellington&prompt.user; ypcat -k netgroup
ellington&prompt.user; ypcat -k netgroup.byhost
ellington&prompt.user; ypcat -k netgroup.byuserDie Ausgabe des ersten Befehls gibt den Inhalt von
/var/yp/netgroup wieder. Der zweite
Befehl erzeugt nur dann eine Ausgabe, wenn rechnerspezifische
Netzgruppen erzeugt wurden. Der dritte Befehl gibt die
Netzgruppen nach Benutzern sortiert aus.Wenn Sie einen Client einrichten, verwenden Sie
&man.vipw.8; um den Namen der Netzgruppe anzugeben. Ersetzen
Sie beispielsweise auf dem Server namens
war die folgende Zeile:+:::::::::durch+@IT_EMP:::::::::ersetzt werden.Diese Zeile legt fest, dass nur noch Benutzer der
Netzgruppe IT_EMP in die Passwortdatenbank
dieses Systems importiert werden. Nur diese Benutzer dürfen
sich an diesem Server anmelden.Diese Konfiguration gilt auch für die
~-Funktion der Shell und für alle Routinen,
die auf Benutzernamen und numerische Benutzer-IDs zugreifen.
Oder anders formuliert,
cd ~Benutzer ist
nicht möglich, ls -l zeigt die numerische
Benutzer-ID statt dem Benutzernamen und
find . -user joe -print erzeugt die
Fehlermeldung No such user. 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:+:::::::::/sbin/nologinDiese Zeile weist den Client an, alle Einträge zu
importieren, aber die Shell in diesen Einträgen durch
/sbin/nologin zu ersetzen.Stellen Sie sicher, dass die zusätzliche Zeile
nach der Zeile
+@IT_EMP::::::::: eingetragen ist.
Andernfalls haben alle via NIS
importierten Benutzerkonten /sbin/nologin
als Loginshell und niemand wird sich mehr am System anmelden
können.Um die weniger wichtigen Server zu konfigurieren, ersetzen
Sie den alten Eintrag +::::::::: auf den
Servern mit diesen Zeilen:+@IT_EMP:::::::::
+@IT_APP:::::::::
+:::::::::/sbin/nologinDie entsprechenden Zeilen für Arbeitsplätze lauten:+@IT_EMP:::::::::
+@USERS:::::::::
+:::::::::/sbin/nologinNIS 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 BIGSRV erzeugen, um den Zugang
zu den wichtigsten Servern zu beschränken, eine weitere Gruppe
SMALLSRV für die weniger wichtigen Server
und eine dritte Netzgruppe USERBOX 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 NIS-Map
sollten ähnlich den folgenden aussehen:BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERSDiese 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.Rechnerspezifische Netzgruppen sind eine weitere
Möglichkeit, um mit den oben beschriebenen Änderungen
umzugehen. In diesem Szenario enthält
/etc/master.passwd auf jedem Rechner zwei
mit + 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 /sbin/nologin als Shell zu.
Verwenden Sie auch hier (analog zu den Netzgruppen)
Großbuchstaben für die Rechnernamen:+@BOXNAME:::::::::
+:::::::::/sbin/nologinSobald dies für alle Rechner erledigt ist, müssen die
lokalen Versionen von /etc/master.passwd
nie mehr verändert werden. Alle weiteren Änderungen geschehen
über die NIS-Maps. Nachfolgend ein
Beispiel für eine mögliche Netzgruppen-Map:# 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]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 NIS-Maps
in Grenzen zu halten.PasswortformateNISPasswortformateAlle Rechner innerhalb der NIS-Domäne
müssen für die Verschlüsselung von Passwörtern das gleiche
Format benutzen. Wenn Benutzer Schwierigkeiten bei der
Authentifizierung auf einem NIS-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 DES der kleinste gemeinsame
Standard ist.Welches Format die Server und Clients verwenden,
steht in /etc/login.conf:default:\
:passwd_format=des:\
:copyright=/etc/COPYRIGHT:\
[weitere Einträge]In diesem Beispiel verwendet das System das Format
DES. Weitere mögliche Werte sind unter
anderem blf und md5 (mit
Blowfish und MD5 verschlüsselte Passwörter).Wird auf einem Rechner das Format entsprechend der
NIS-Domäne geändert, muss anschließend die
Login-Capability Datenbank neu erstellt werden:&prompt.root; cap_mkdb /etc/login.confDas Format der schon bestehenden Passwörter wird erst
aktualisiert, wenn ein Benutzer sein Passwort ändert,
nachdem die Datenbank neu erstellt
wurde.Lightweight Access Directory Protocol
(LDAP)TomRhodesGeschrieben von BjörnHeidottingÜbersetzt von LDAPDas Lightweight Directory Access Protocol
(LDAP) 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
OpenLDAP-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 LDAP-Servers
erfolgen.Dieser Abschnitt enthält eine kompakte Anleitung, um einen
LDAP-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.LDAP Terminologie und StrukturLDAP verwendet mehrere Begriffe die
Sie verstehen sollten bevor Sie die Konfiguration beginnen.
Alle Verzeichniseinträge bestehen aus einer Gruppe von
Attributen. Jede Attributgruppe enthält
einen eindeutigen Bezeichner, der als
distinguished name
(DN) bekannt ist. Dieser setzt sich
normalerweise aus mehreren anderen Attributen, wie dem
Relative Distinguished Name
(RDN) zusammen. Wie bei Verzeichnissen
gibt es auch hier absolute und relative Pfade. Betrachten Sie
DN als absoluten Pfad und
RDN als relativen Pfad.Beispielsweise könnte ein LDAP-Eintrag
wie folgt aussehen. Dieses Beispiel sucht nach dem Eintrag
für das angegebene Benutzerkonto (uid),
Organisationseinheit (ou und Organisation
(o):&prompt.user; ldapsearch -xb "uid=trhodes,ou=users,o=example.com"
# 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:1Die Einträge in diesem Beispiel zeigen die Werte für die
Attribute dn, mail,
cn, uid und
telephoneNumber. Das Attribut
cn ist der RDN.Weitere Informationen über LDAP und
dessen Terminologie finden Sie unter
http://www.openldap.org/doc/admin24/intro.html.Konfiguration eines
LDAP-ServersLDAP Server&os; integriert keinen LDAP-Server.
Beginnen Sie die Konfiguration durch die Installation des
Ports oder Pakets net/openldap24-server.
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 übersetzt werden.Als nächstes muss ein Verzeichnis für Daten sowie ein
Verzeichnis für die Zertifikate erstellt werden:&prompt.root; mkdir /var/db/openldap-data
&prompt.root; mkdir /usr/local/etc/openldap/privateKopieren Sie die Konfigurationsdatei der Datenbank:&prompt.root; cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap-data/DB_CONFIGIm nächsten Schritt wird die Zertifizierungsstelle
konfiguriert. Die folgenden Befehle müssen in
/usr/local/etc/openldap/private
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:&prompt.root; openssl req -days 365 -nodes -new -x509 -keyout ca.key -out ../ca.crtDiese Einträge sind frei wählbar,
mit Ausnahme von
Common Name. 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 CA für die
Zertifizierungsstelle voran.Die nächste Aufgabe besteht darin, einen
Zertifikatsregistrierungsanforderung (CSR)
sowie einen privaten Schlüssel zu erstellen. Geben Sie
folgenden Befehl ein und folgen Sie den Anweisungen:&prompt.root; openssl req -days 365 -nodes -new -keyout server.key -out server.csrStellen Sie hierbei sicher, dass
Common Name richtig eingetragen wird.
Anschließend muss der Schlüssel signiert werden:&prompt.root; openssl x509 -req -days 365 -in server.csr -out ../server.crt -CA ../ca.crt -CAkey ca.key -CAcreateserialDer letzte Schritt für die Erstellung der Zertifikate
besteht darin, die Client-Zertifikate zu erstellen und zu
signieren:&prompt.root; openssl req -days 365 -nodes -new -keyout client.key -out client.csr
&prompt.root; openssl x509 -req -days 3650 -in client.csr -out ../client.crt -CAkey ca.keyAchten Sie wieder auf das Attribut
Common name. Stellen Sie außerdem sicher,
dass bei diesem Verfahren acht (8) neue Dateien erzeugt worden
sind. Der nächste Schritt besteht darin,
/usr/local/etc/openldap/slapd.conf zu
editieren und folgende Optionen hinzuzufügen: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.crtDanach bearbeiten Sie
/usr/local/etc/openldap/ldap.conf und
fügen folgende Zeilen hinzu:TLS_CACERT /usr/local/etc/openldap/ca.crt
TLS_CIPHER_SUITE HIGH:MEDIUM:+SSLv3Kommentieren Sie die folgenden Einträge aus und setzen Sie
sie auf die gewünschten Werte: ,
, und
. Setzen Sie bei
und
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: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:+SSLv3Anschließend sollte das Standardpasswort für den Server
geändert werden:&prompt.root; slappasswd -h "{SHA}" >> /usr/local/etc/openldap/slapd.confDieser Befehl wird nach einem Passwort fragen und, wenn
der Prozess nicht fehlschlägt, ein Passwort-Hash an das
Ende von slapd.conf hinzufügen. Es
werden verschiedene Hash-Formate unterstützt. Weitere
Informationen hierzu finden Sie in der Manualpage von
slappasswd.Als nächstes bearbeiten Sie
/usr/local/etc/openldap/slapd.conf und
fügen folgende Zeilen hinzu:password-hash {sha}
allow bind_v2Das Suffix in dieser Datei muss aus
/usr/local/etc/openldap/ldap.conf
entsprechen. Zudem sollte die Option
ebenfalls gesetzt werden. Ein guter Wert ist beispielsweise
. Bevor die Datei gespeichert
wird, setzen Sie die Passwortausgabe von
slappasswd hinter die Option
. Das Endergebnis sollte in etwa wie
folgt aussehen: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=Aktivieren Sie abschließend
OpenLDAP in
/etc/rc.conf und setzen Sie die
URI:slapd_enable="YES"
slapd_flags="-4 -h ldaps:///"An dieser Stelle kann der Server gestartet und getestet
werden:&prompt.root; service slapd startWenn alles richtig konfiguriert ist, sollte eine Suche im
Verzeichnis, wie in diesem Beispiel, eine erfolgreiche
Verbindung mit einer Antwort liefern:&prompt.root; ldapsearch -Z
# 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: 1Wenn der Befehl fehlschlägt, aber die Konfiguration
richtig aussieht, stoppen Sie den
slapd-Dienst. Starten Sie anschließend
den Dienst mit
Debugging-Optionen:&prompt.root; service slapd stop
&prompt.root; /usr/local/libexec/slapd -d -1Sobald der Dienst antwortet, kann das Verzeichnis mit dem
Befehl ldapadd 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:dn: dc=example,dc=com
objectclass: dcObject
objectclass: organization
o: Example
dc: Example
dn: cn=Manager,dc=example,dc=com
objectclass: organizationalRole
cn: ManagerUm 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:&prompt.root; ldapadd -Z -D "cn=Manager,dc=example,dc=com" -W -f import.ldif
Enter LDAP Password:
adding new entry "dc=example,dc=com"
adding new entry "cn=Manager,dc=example,dc=com"Stellen Sie mit einer Suche auf dem Server sicher, dass
die Daten importiert wurden. Nutzen Sie dazu
ldapsearch:&prompt.user; ldapsearch -Z
# 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: 2An dieser Stelle sollte der Server konfiguriert sein und
ordnungsgemäß funktionieren.Dynamic Host Configuration Protocol
(DHCP)Dynamic Host Configuration ProtocolDHCPInternet Systems Consortium (ISC)Das Dynamic Host Configuration Protocol
(DHCP) 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
dhclient, um die Adressinformationen zu
beziehen. &os; installiert keinen
DHCP-Server, aber es stehen einige Server in
der &os; Ports-Sammlung zu Verfügung. Das
DHCP-Protokoll wird vollständig im
RFC 2131 beschrieben. Eine weitere, lehrreiche
Informationsquelle existiert unter
isc.org/downloads/dhcp/.In diesem Abschnitt wird beschrieben, wie der integrierte
DHCP-Client verwendet wird. Anschließend
wird erklärt, wie ein DHCP-Server zu
installieren und konfigurieren ist.Unter &os; wird das Gerät &man.bpf.4; für den
DHCP-Server und den
DHCP-Client benötigt. Das Gerät ist
bereits im GENERIC-Kernel enthalten.
Benutzer, die es vorziehen einen angepassten Kernel zu
erstellen, müssen dieses Gerät behalten, wenn
DHCP verwendet wird.Es sei darauf hingewiesen, dass bpf
es priviligierten Benutzern ermöglicht einen Paket-Sniffer
auf dem System auszuführen.Einen DHCP-Client
konfigurierenDie Unterstützung für den DHCP-Client
ist im Installationsprogramm von &os; enthalten, sodass ein
neu installiertes System automatisch die Adressinformationen
des Netzwerks vom DHCP-Server
erhält. In finden Sie
Beispiele für eine Netzwerkkonfiguration.UDPdhclient beginnt von einem
Clientrechner aus über den UDP-Port 68
Konfigurationsinformationen anzufordern. Der Server antwortet
auf dem UDP-Port 67, indem er dem Client
eine IP-Adresse zuweist und ihm weitere
relevante Informationen über das Netzwerk, wie Netzmasken,
Router und DNS-Server mitteilt. Diese
Informationen werden als
DHCP-Lease bezeichnet und sind
nur für bestimmte Zeit, die vom Administrator des
DHCP-Servers vorgegeben wird, gültig.
Dadurch fallen verwaiste IP-Adressen, deren
Clients nicht mehr mit dem Netzwerk verbunden sind,
automatisch an den Server zurück.
DHCP-Clients können sehr viele
Informationen von einem DHCP-Server
erhalten. Eine ausführliche Liste finden Sie in
&man.dhcp-options.5;.Das Gerät bpf ist im
GENERIC-Kernel bereits enthalten. Für
die Nutzung von DHCP muss also kein
angepasster Kernel erzeugt werden. In einer angepassten
Kernelkonfigurationsdatei muss das Gerät enthalten sein, damit
DHCP ordnungsgemäß funktioniert.Standardmässig läuft die
DHCP-Konfiguration bei &os; im Hintergrund
oder auch asynchron. Andere
Startskripte laufen weiter, während DHCP
fertig abgearbeitet wird, was den Systemstart
beschleunigt.DHCP im Hintergrund funktioniert gut,
wenn der DHCP-Server schnell auf Anfragen
der Clients antwortet. Jedoch kann DHCP
eine lange Zeit benötigen, um auf manchen Systemen fertig zu
werden. Falls Netzwerkdienste gestartet werden, bevor
DHCP die Informationen und Netzwerkadressen
gesetzt hat, werden diese fehlschlagen. Durch die Verwendung
von DHCP im
asynchronen Modus wird das Problem
verhindert, so dass die Startskripte pausiert werden, bis die
DHCP-Konfiguration abgeschlossen
ist.Diese Zeile wird in /etc/rc.conf
verwendet, um den asynchronen Modus zu aktivieren:ifconfig_fxp0="DHCP"Die Zeile kann bereits vorhanden sein, wenn bei der
Installation des Systems DHCP konfiguriert
wurde. Ersetzen Sie fxp0 durch die
entsprechende Schnittstelle. Die dynamische Konfiguration von
Netzwerkkarten wird in beschrieben.Um stattdessen den synchronen Modus zu verwenden, der
während des Systemstarts pausiert bis die
DHCP-Konfiguration abgeschlossen ist,
benutzen Sie SYNCDHCP:ifconfig_fxp0="SYNCDHCP"Es stehen weitere Optionen für den Client zur Verfügung.
Suchen Sie in &man.rc.conf.5; nach
dhclient, wenn Sie an Einzelheiten
interessiert sind.DHCPKonfigurationsdateienDer DHCP-Client verwendet die folgenden
Dateien:/etc/dhclient.confDie Konfigurationsdatei von
dhclient. Diese Datei enthält
normalerweise nur Kommentare, da die Vorgabewerte zumeist
ausreichend sind. Diese Konfigurationsdatei wird in
&man.dhclient.conf.5; beschrieben./sbin/dhclientWeitere Informationen über dieses Kommando
finden Sie in &man.dhclient.8;./sbin/dhclient-scriptDas &os;-spezifische Konfigurationsskript des
DHCP-Clients. Es wird in
&man.dhclient-script.8; beschrieben und kann meist
unverändert übernommen werden./var/db/dhclient.leases.interfaceDer DHCP-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.Einen DHCP-Server installieren und
einrichtenDieser Abschnitt beschreibt die Einrichtung eines
&os;-Systems als DHCP-Server. Dazu wird
die DHCP-Implementation von ISC (Internet
Systems Consortium) verwendet. Diese Implementation und die
Dokumentation können als Port oder Paket
net/isc-dhcp43-server installiert
werden.DHCPServerDHCPinstallierenDer Port net/isc-dhcp43-server
installiert eine Beispiel-Konfigurationsdatei. Kopieren Sie
/usr/local/etc/dhcpd.conf.example nach
/usr/local/etc/dhcpd.conf und nehmen Sie
die Änderungen an der neuen Datei vor.DHCPdhcpd.confDiese Konfigurationsdatei umfasst Deklarationen für
Subnetze und Rechner, die den DHCP-Cleints
zur Verfügung gestellt wird. Die folgenden Zeilen
konfigurieren Folgendes:option domain-name "example.org";
option domain-name-servers ns1.example.org;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 72400;
ddns-update-style none;
subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20;
option routers rtr-239-0-1.example.org;
}
host fantasia {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address fantasia.fugue.com;
}Diese Option beschreibt die Standardsuchdomäne, die
den Clients zugewiesen wird. Weitere Informationen finden
Sie in &man.resolv.conf.5;.Diese Option legt eine, durch Kommata getrennte Liste
von DNS-Servern fest, die von den
Clients verwendet werden sollen. Die Server können über
den Namen (FQDN) oder die
IP-Adresse spezifiziert werden.Die den Clients zugewiesene Subnetzmaske.Die Voreinstellung für die Ablaufzeit des Lease in
Sekunden. Ein Client kann diesen Wert in der
Konfiguration überschreiben.Die maximale Zeitdauer, für die der Server Leases
vergibt. Sollte ein Client eine längere Zeitspanne
anfordern, wird dennoch nur der Wert
max-lease-time zugewiesen.Die Voreinstellung deaktiviert
dynamische DNS-Updates. Bei der
Einstellung aktualisiert der
DHCP-Server den
DNS-Server, wenn ein Lease vergeben
oder zurückgezogen wurde. Ändern Sie die Voreinstellung
nicht, wenn der Server so konfiguriert wurde, dynamische
DNS-Updates zu unterstützen.Diese Zeile erstellt einen Pool der verfügbaren
IP-Adressen, die für die Zuweisung der
DHCP-Clients reserviert sind. Der
Bereich muss für das angegebene Netz oder Subnetz aus der
vorherigen Zeile gültig sein.Legt das Standard-Gateway für das Netz oder Subnetz
fest, das nach der öffnenden Klammer {
gültig ist.Bestimmt die Hardware-MAC-Adresse
eines Clients, durch die der
DHCP-Server den Client erkennt, der
eine Anforderung an ihn stellt.Einem Rechner soll immer die gleiche
IP-Adresse zugewiesen werden. Hier ist
auch ein Rechnername gültig, da der
DHCP-Server den Rechnernamen auflöst,
bevor er das Lease zuweist.Die Konfigurationsdatei unterstützt viele weitere
Optionen. Lesen Sie &man.dhcpd.conf.5;, die mit dem Server
installiert wird, für Details und Beispiele.Nachdem dhcpd.conf konfiguriert ist,
aktivieren Sie den DHCP-Server in
/etc/rc.conf:dhcpd_enable="YES"
dhcpd_ifaces="dc0"Dabei müssen Sie dc0 durch die
Gerätedatei (mehrere Gerätedateien müssen durch Leerzeichen
getrennt werden) ersetzen, die der
DHCP-Server auf Anfragen von
DHCP-Clients hin überwachen soll.Starten Sie den Server mit folgenden Befehl:&prompt.root; service isc-dhcpd startKünftige Änderungen an der Konfiguration des Servers
erfordern, dass der Dienst dhcpd gestoppt
und anschließend mit &man.service.8; gestartet wird.DHCPKonfigurationsdateien/usr/local/sbin/dhcpdWeitere Informationen zu
dhcpd finden Sie in
&man.dhcpd.8;./usr/local/etc/dhcpd.confDie 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./var/db/dhcpd.leasesDer DHCP-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./usr/local/sbin/dhcrelayDieser Daemon wird in komplexen Umgebungen verwendet,
in denen ein DHCP-Server eine Anfrage
eines Clients an einen DHCP-Server in
einem separaten Netzwerk weiterleitet. Wenn Sie diese
Funktion benötigen, müssen Sie
net/isc-dhcp43-relay installieren.
Weitere Informationen zu diesem Thema finden Sie in
&man.dhcrelay.8;.Domain Name System (DNS)DNSDNS ist das für die Umwandlung von
Rechnernamen in IP-Adressen zuständige
Protokoll. Im Internet wird DNS durch ein
komplexes System von autoritativen Root-Nameservern, Top Level
Domain-Servern (TLD) sowie anderen
kleineren Nameservern verwaltet, die individuelle
Domaininformationen speichern und untereinander abgleichen.
Für einfache DNS-Anfragen wird auf dem
lokalen System kein Nameserver benötigt.BINDIn &os; 10 wurde Berkeley Internet Name Domain
(BIND) aus dem Basissystem entfernt und
durch Unbound ersetzt. Unbound ist für die lokale
Namensauflösung zuständig. In der Ports-Sammlung ist
BIND immer noch als
dns/bind99 und
dns/bind98 verfügbar und in &os; 9 und
älteren Versionen ist BIND im Basissystem
enthalten. Die Version in &os; bietet erweiterte
Sicherheitsfunktionen, ein neues Dateisystem-Layout und eine
automatisierte &man.chroot.8; Konfiguration.
BIND wird betreut vom Internet Systems
Consortium.ResolverReverse-DNSRoot-ZoneDie folgende Tabelle beschreibt einige mit
DNS verbundenen Begriffe:
DNS-BegriffeBegriffBedeutungForward-DNSRechnernamen in IP-Adressen
umwandeln.Origin (Ursprung)Die in einer bestimmten Zonendatei beschriebene
Domäne.named, BINDGebräuchliche Namen für das unter &os; verwendete
BIND-Nameserverpaket.ResolverEin Systemprozess, durch den ein Rechner
Zoneninformationen von einem Nameserver
anfordert.Reverse-DNSdie Umwandlung von IP-Adressen
in RechnernamenRoot-ZoneDer 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.ZoneEine individuelle Domäne, Unterdomäne, oder ein
Teil von DNS, der von der gleichen
Autorität verwaltet wird.
ZonenBeispieleEs folgen nun einige Zonenbeispiele:Innerhalb der Dokumentation wird die Root-Zone in der
Regel mit . bezeichnet.org. ist eine Top level Domain
(TLD) innerhalb der Root-Zone.example.org. ist eine
Zone innerhalb der
org.-TLD.1.168.192.in-addr.arpa. ist die
Zone mit allen IP-Adressen des Bereichs
192.168.1.*.Wie man an diesen Beispielen erkennen kann, befindet sich
der spezifischere Teil eines Rechnernamens auf der linken Seite
der Adresse. example.org. beschreibt
einen Rechner also genauer als org.,
während org. genauer als die Root-Zone
ist. Jeder Teil des Rechnernamens hat Ähnlichkeiten mit
einem Dateisystem, in dem etwa /dev dem
Wurzelverzeichnis untergeordnet ist.Gründe für die Verwendung eines NameserversEs gibt zwei Arten von Nameservern: Autoritative
Nameserver sowie zwischenspeichernde (cachende, auch bekannt
als auflösende) Nameserver.Ein autoritativer Nameserver ist notwendig, wennSie anderen verbindliche
DNS-Auskünfte erteilen wollen.eine Domain, beispielsweise example.org,
registriert wird, und den zu dieser Domain gehörenden
Rechnern IP-Adressen zugewiesen werden
müssen.ein IP-Adressblock
reverse-DNS-Einträge benötigt, um
IP-Adressen in Rechnernamen auflösen zu
können.ein Backup-Nameserver (auch Slaveserver genannt) oder
ein zweiter Nameserver auf Anfragen antworten soll.Ein cachender Nameserver ist notwendig, weilein lokaler DNS-Server Daten
zwischenspeichern und daher schneller auf Anfragen
reagieren kann als ein entfernter Server.Wird nach www.FreeBSD.org gesucht,
leitet der Resolver diese Anfrage an den Nameserver des
ISPs weiter und nimmt danach das Ergebnis
der Abfrage entgegen. Existiert ein lokaler,
zwischenspeichernder DNS-Server, muss
dieser die Anfrage nur einmal nach außen weitergeben. Für
alle weiteren Anfragen ist dies nicht mehr nötig, da diese
Information nun lokal gespeichert ist.DNS-Server Konfiguration in &os; 10.0
und neueren VersionenIn &os; 10.0 wurde BIND durch
Unbound ersetzt.
Unbound ist lediglich ein
validierender und cachender Resolver. Wenn ein autoritativer
Server benötigt wird, stehen einige in der Ports-Sammlung zur
Verfügung.Unbound ist im Basissystem von
&os; enthalten. In der Voreinstellung bietet es nur die
DNS-Auflösung auf dem lokalen Rechner.
Obwohl das im Basissystem enthaltene
Unbound konfiguriert werden kann,
um Namensauflösung über den lokalen Rechner hinweg
bereitzustellen, ist es empfehlenswert für solche
Anforderungen Unbound aus der &os;
Ports-Sammlung zu installieren.Um Unbound zu aktivieren, fügen
Sie folgende Zeile in /etc/rc.conf
ein:local_unbound_enable="YES"Alle vorhandenen Nameserver aus
/etc/resolv.conf werden als Forwarder
in der neuen Unbound-Konfiguration
benutzt.Wenn einer der aufgeführten Nameserver kein
DNSSEC unterstützt, wird die lokale
DNS-Auflösung nicht funktionieren.
Testen Sie jeden Server und entfernen Sie die Server, die
den Test nicht bestehen. Das folgende Beispiel zeigt einen
Trust Tree beziehungsweise
einen Fehler für den Nameserver auf 192.168.1.1:&prompt.root; drill -S FreeBSD.org @192.168.1.1Nachdem jeder Server für DNSSEC
konfiguriert ist, starten Sie
Unbound:&prompt.root; service local_unbound onestartDieses Kommando sorgt für die Aktualisierung von
/etc/resolv.conf, so dass Abfragen für
DNSSEC gesicherte Domains jetzt
funktionieren. Führen Sie folgenden Befehl aus, um den
DNSSEC
Trust Tree für
FreeBSD.org zu überprüfen:&prompt.user; drill -S FreeBSD.org
;; 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 successfulDNS-Server Konfiguration in &os;
9.XUnter &os; wird der BIND-Daemon als
named bezeichnet.DateiBeschreibungnamedDer BIND-Daemon.&man.rndc.8;Das Steuerprogramm für
named./etc/namedbDas Verzeichnis, in dem sich die
Zoneninformationen für BIND befinden./etc/namedb/named.confDie Konfigurationsdatei für
named.Je nachdem, wie eine Zone auf dem Server konfiguriert
wurde, finden sich die zur Zone gehörendenden Dateien in den
Unterverzeichnissen master,
slave, oder dynamic
des Verzeichnisses /etc/namedb. Diese
Dateien enthalten die DNS-Informationen,
die der Nameserver für die Beantwortung von Anfragen
benötigt.BIND startenBINDStartDa BIND automatisch installiert wird, ist die
Konfiguration relativ einfach.In der Voreinstellung wird ein in einer
&man.chroot.8;-Umgebung betriebener
named-Server zur einfachen
Namensauflösung eingerichtet, der nur im lokalen
IPv4-Loopback-Adressbereich (127.0.0.1) lauscht. Um den
Server manuell zu starten, verwenden Sie den folgenden
Befehl:&prompt.root; service named onestartUm den named-Daemon beim
Systemstart automatisch zu starten, fügen Sie folgende
Zeile in /etc/rc.conf ein:named_enable="YES"/etc/namedb/named.conf bietet
zahlreiche Konfigurationsoptionen, die in diesem Dokument
nicht alle beschrieben werden können. Weitere Startoptionen
von named unter &os; finden Sie
in den
named_*-Flags
in /etc/defaults/rc.conf sowie in
&man.rc.conf.5;. Zusätzliche Informationen finden Sie im
.KonfigurationsdateienBINDKonfigurationsdateienDie Konfigurationsdateien von
named finden sich unter
/etc/namedb und müssen
in der Regel an Ihre Bedürfnisse angepasst werden. Es sei
denn, Sie benötigen nur einen einfachen Resolver. Ein
Großteil der Konfigurationsarbeiten erfolgt dabei in
diesem Verzeichnis./etc/namedb/named.conf
- // $FreeBSD$
+ // $FreeBSD$
//
// Refer to the named.conf(5) and named(8) man pages, and the documentation
// in /usr/share/doc/bind9 for more details.
//
// If you are going to set up an authoritative server, make sure you
// understand the hairy details of how DNS works. Even with
// simple mistakes, you can break connectivity for affected parties,
// or cause huge amounts of useless Internet traffic.
options {
// All file and path names are relative to the chroot directory,
// if any, and should be fully qualified.
directory "/etc/namedb/working";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
// If named is being used only as a local resolver, this is a safe default.
// For named to be accessible to the network, comment this option, specify
// the proper IP address, or delete this option.
listen-on { 127.0.0.1; };
// If you have IPv6 enabled on this system, uncomment this option for
// use as a local resolver. To give access to the network, specify
// an IPv6 address, or the keyword "any".
// listen-on-v6 { ::1; };
// These zones are already covered by the empty zones listed below.
// If you remove the related empty zones below, comment these lines out.
disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
// If you've got a DNS server around at your upstream provider, enter
// its IP address here, and enable the line below. This will make you
// benefit from its cache, thus reduce overall DNS traffic in the Internet.
/*
forwarders {
127.0.0.1;
};
*/
// If the 'forwarders' clause is not empty the default is to 'forward first'
// which will fall back to sending a query from your local server if the name
// servers in 'forwarders' do not have the answer. Alternatively you can
// force your name server to never initiate queries of its own by enabling the
// following line:
// forward only;
// If you wish to have forwarding configured automatically based on
// the entries in /etc/resolv.conf, uncomment the following line and
// set named_auto_forward=yes in /etc/rc.conf. You can also enable
// named_auto_forward_only (the effect of which is described above).
// include "/etc/namedb/auto_forward.conf";Um vom Cache Ihres Internetproviders zu profitieren,
können hier forwarders aktiviert
werden. Normalerweise sucht ein Nameserver das Internet
rekursiv ab, bis er die gesuchte Antwort findet. Durch
diese Option wird stets der Nameserver des
Internetproviders zuerst abgefragt, um von dessen
Cache zu profitieren. Wenn es sich um einen schnellen,
viel benutzten Nameserver handelt, kann dies zu einer
Geschwindigkeitssteigerung führen.127.0.0.1
funktioniert hier nicht. Ändern
Sie diese Adresse in einen Nameserver des
Einwahlproviders. /*
Modern versions of BIND use a random UDP port for each outgoing
query by default in order to dramatically reduce the possibility
of cache poisoning. All users are strongly encouraged to utilize
this feature, and to configure their firewalls to accommodate it.
AS A LAST RESORT in order to get around a restrictive firewall
policy you can try enabling the option below. Use of this option
will significantly reduce your ability to withstand cache poisoning
attacks, and should be avoided if at all possible.
Replace NNNNN in the example with a number between 49160 and 65530.
*/
// query-source address * port NNNNN;
};
// If you enable a local name server, don't forget to enter 127.0.0.1
// first in your /etc/resolv.conf so this server will be queried.
// Also, make sure to enable it in /etc/rc.conf.
// The traditional root hints mechanism. Use this, OR the slave zones below.
zone "." { type hint; file "/etc/namedb/named.root"; };
/* Slaving the following zones from the root name servers has some
significant advantages:
1. Faster local resolution for your users
2. No spurious traffic will be sent from your network to the roots
3. Greater resilience to any potential root server failure/DDoS
On the other hand, this method requires more monitoring than the
hints file to be sure that an unexpected failure mode has not
incapacitated your server. Name servers that are serving a lot
of clients will benefit more from this approach than individual
hosts. Use with caution.
To use this mechanism, uncomment the entries below, and comment
the hint zone above.
As documented at http://dns.icann.org/services/axfr/ these zones:
"." (the root), ARPA, IN-ADDR.ARPA, IP6.ARPA, and ROOT-SERVERS.NET
are availble for AXFR from these servers on IPv4 and IPv6:
xfr.lax.dns.icann.org, xfr.cjr.dns.icann.org
*/
/*
zone "." {
type slave;
file "/etc/namedb/slave/root.slave";
masters {
192.5.5.241; // F.ROOT-SERVERS.NET.
};
notify no;
};
zone "arpa" {
type slave;
file "/etc/namedb/slave/arpa.slave";
masters {
192.5.5.241; // F.ROOT-SERVERS.NET.
};
notify no;
};
*/
/* Serving the following zones locally will prevent any queries
for these zones leaving your network and going to the root
name servers. This has two significant advantages:
1. Faster local resolution for your users
2. No spurious traffic will be sent from your network to the roots
*/
// RFCs 1912 and 5735 (and BCP 32 for localhost)
zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; };
zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// RFC 1912-style zone for IPv6 localhost address
zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
// "This" Network (RFCs 1912 and 5735)
zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// Private Use Networks (RFCs 1918 and 5735)
zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "18.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "19.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "20.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "21.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "22.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "23.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "24.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "25.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "26.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "27.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "28.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "29.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "30.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// Link-local/APIPA (RFCs 3927 and 5735)
zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IETF protocol assignments (RFCs 5735 and 5736)
zone "0.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// TEST-NET-[1-3] for Documentation (RFCs 5735 and 5737)
zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 Range for Documentation (RFC 3849)
zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// Domain Names for Documentation and Testing (BCP 32)
zone "test" { type master; file "/etc/namedb/master/empty.db"; };
zone "example" { type master; file "/etc/namedb/master/empty.db"; };
zone "invalid" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.net" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.org" { type master; file "/etc/namedb/master/empty.db"; };
// Router Benchmark Testing (RFCs 2544 and 5735)
zone "18.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "19.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IANA Reserved - Old Class E Space (RFC 5735)
zone "240.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "241.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "242.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "243.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "244.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "245.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "246.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "247.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "248.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "249.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "250.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "251.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "252.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "253.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "254.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 Unassigned Addresses (RFC 4291)
zone "1.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "8.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "c.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "e.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "1.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "2.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "8.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "1.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "2.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 ULA (RFC 4193)
zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 Link Local (RFC 4291)
zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IPv6 Deprecated Site-Local Addresses (RFC 3879)
zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "f.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
// IP6.INT is Deprecated (RFC 4159)
zone "ip6.int" { type master; file "/etc/namedb/master/empty.db"; };
// NB: Do not use the IP addresses below, they are faked, and only
// serve demonstration/documentation purposes!
//
// Example slave zone config entries. It can be convenient to become
// a slave at least for the zone your own domain is in. Ask
// your network administrator for the IP address of the responsible
// master name server.
//
// Do not forget to include the reverse lookup zone!
// This is named after the first bytes of the IP address, in reverse
// order, with ".IN-ADDR.ARPA" appended, or ".IP6.ARPA" for IPv6.
//
// Before starting to set up a master zone, make sure you fully
// understand how DNS and BIND work. There are sometimes
// non-obvious pitfalls. Setting up a slave zone is usually simpler.
//
// NB: Don't blindly enable the examples below. :-) Use actual names
// and addresses instead.
/* An example dynamic zone
key "exampleorgkey" {
algorithm hmac-md5;
secret "sf87HJqjkqh8ac87a02lla==";
};
zone "example.org" {
type master;
allow-update {
key "exampleorgkey";
};
file "/etc/named/dynamic/example.org";
};
*/
/* Example of a slave reverse zone
zone "1.168.192.in-addr.arpa" {
type slave;
file "/etc/namedb/slave/1.168.192.in-addr.arpa";
masters {
192.168.1.1;
};
};
*/Hierbei handelt es sich um Slave-Einträge für
eine Reverse- und Forward-DNS-Zone, die in der Datei
named.conf definiert sind.Für jede neue Zone muss ein zusätzlicher Eintrag
in named.conf erstellt werden.Ein einfacher Eintrag für eine Zone example.org könnte
beispielsweise so aussehen:zone "example.org" {
type master;
file "master/example.org";
};Die Option legt fest, dass es
sich um eine Master-Zone handelt, deren Zoneninformationen
sich in der Datei
/etc/namedb/master/example.org
befinden. Diese Datei wird durch die Option
festgelegt.zone "example.org" {
type slave;
file "slave/example.org";
};Hier handelt es sich um einen Slaveserver, der seine
Informationen vom Masterserver der betreffenden Zone
bezieht und diese in der angegebenen Datei speichert.
Wenn der Masterserver nicht erreichbar ist, verfügt der
Slaveserver über die transferierten Zoneninformationen
und kann diese an andere Rechner weitergeben.ZonendateienBINDZonendateiDie in der Datei
/etc/namedb/master/example.org
definierte Zonendatei für example.org könnte
etwa so aussehen:$TTL 3600 ; 1 hour default TTL
example.org. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
300 ; Negative Response TTL
)
; DNS Servers
IN NS ns1.example.org.
IN NS ns2.example.org.
; MX Records
IN MX 10 mx.example.org.
IN MX 20 mail.example.org.
IN A 192.168.1.1
; Machine Names
localhost IN A 127.0.0.1
ns1 IN A 192.168.1.2
ns2 IN A 192.168.1.3
mx IN A 192.168.1.4
mail IN A 192.168.1.5
; Aliases
www IN CNAME example.org.Beachten Sie, dass jeder mit einem .
endende Rechnername ein exakter Rechnername ist, während
sich alles ohne einen abschließenden .
relativ auf den Ursprung bezieht. ns1
steht daher beispielsweise für
ns1.example.org..Eine Zonendatei hat folgenden Aufbau:recordname IN recordtype valueDNSEinträgeDie am häufigsten verwendeten
DNS-Einträge sind:SOAStart der ZonenautoritätNSEin autoritativer NameserverAEine RechneradresseCNAMEDer kanonische Name eines AliasMXMail ExchangerPTREin (bei Reverse-DNS verwendeter) Domain Name
Pointerexample.org. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
300 ) ; Negative Response TTLexample.org.Der Name der Domäne und damit der Ursprung
dieser Zonendatei.ns1.example.org.Der primäre/autoritative Nameserver
dieser Zone.admin.example.org.Die für diese Zone verantwortliche
Person. Das Zeichen @ wird dabei
ersetzt (admin@example.org wird also
zu admin.example.org).2006051501Die Seriennummer der Datei. Sie muss
stets inkrementiert werden, wenn die Zonendatei
geändert wird. Viele Administratoren bevorzugen
ein JJJJMMTTRR-Format, um die
Seriennummer festzulegen.
2006051501 steht also für
den 15.05.2006, die beiden letzten Stellen für die
erste Modifikation der Zonendatei an diesem Tag.
Die Seriennummer ist von großer Bedeutung, da
Slaveserver daran eine aktualisierte Zonendatei
erkennen können. IN NS ns1.example.org.Ein NS-Eintrag. Jeder Nameserver, der für eine Zone
verantwortlich ist, muss über einen solchen Eintrag
verfügen.localhost IN A 127.0.0.1
ns1 IN A 192.168.1.2
ns2 IN A 192.168.1.3
mx IN A 192.168.1.4
mail IN A 192.168.1.5Der Eintrag A bezieht sich auf
Rechnernamen. ns1.example.org würde
also zu 192.168.1.2 aufgelöst
werden. IN A 192.168.1.1Diese Zeile weist die IP-Adresse
192.168.1.1 dem
aktuellen Ursprung, in diesem Fall also example.org,
zu.www IN CNAME @Der Eintrag für den kanonischen Namen wird dazu
verwendet, Aliase für einen Rechner zu vergeben. Im
Beispiel ist www ein Alias für
den Master-Rechner, dessen Name dem
Domainnamen example.org (oder
192.168.1.1)
entspricht. CNAMEs können daher niemals gleichzeitig mit
einem anderen Eintrag für denselben Hostname eingerichtet
werden.MX-Eintrag IN MX 10 mail.example.org.Der MX-Eintrag legt fest, welcher Mailserver für
eintreffende Mails der Zone verantwortlich ist.
mail.example.org ist
der Rechnername des Mailservers, der eine Priorität von 10
hat.Es können auch mehrere Mailserver mit verschiedener
Priorität (10, 20, ...) vorhanden sein. Ein Mailserver,
der eine Mail an example.org
verschicken will, verwendet zuerst den MX mit der höchsten
Priorität (das heißt den mit der niedrigsten
Prioritätsnummer), danach den mit der nächsthöheren
Priorität. Und dies solange, bis die E-Mail zugestellt
werden kann.Für (bei Reverse-DNS verwendete)
in-addr.arpa-Zonendateien wird das
gleiche Format verwendet. Der einzige Unterschied besteht
in der Verwendung der Option PTR an Stelle der Optionen A
und CNAME.$TTL 3600
1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
300 ) ; Negative Response TTL
IN NS ns1.example.org.
IN NS ns2.example.org.
1 IN PTR example.org.
2 IN PTR ns1.example.org.
3 IN PTR ns2.example.org.
4 IN PTR mx.example.org.
5 IN PTR mail.example.org.Durch diese Datei werden den Rechnernamen der fiktiven
Domäne IP-Adressen zugewiesen.Beachten Sie bitte, dass es sich bei allen Namen auf
der rechten Seite eines PTR-Eintrags um absolute
(fully qualified) Domainnamen handeln
muss, die mit . enden.Zwischenspeichernde (cachende) NameserverBINDZwischenspeichernde NameserverEin cachender Nameserver hat primär die Aufgabe,
rekursive Abfragen aufzulösen. Er stellt lediglich
eigene Anfragen und speichert deren Ergebnisse ab.
DNSSECBINDDNS security
extensionsDomain Name System Security Extensions, oder kurz
DNSSEC,
ist eine Sammlung von Spezifikationen, um auflösende
Nameserver von gefälschten DNS-Daten, wie
beispielsweise vorgetäuschte
DNS-Einträge, zu schützen. Durch die
Verwendung von digitalen Signaturen kann ein Resolver die
Integrität des Eintrages überprüfen. Wichtig dabei ist,
dass DNSSEC
nur die Integrität über digital signierte Resource Records
(RR)
bereitstellt. Weder wird die Vertraulichkeit noch der
Schutz vor falschen Annahmen des Endbenutzers
sichergestellt. Dies bedeutet, dass es Benutzer nicht davor
schützen kann, zu example.net anstatt zu
example.com zu
gelangen. Das einzige, was DNSSEC tut,
ist die Authentifizierung, dass die Daten während der
Übertragung nicht verändert wurden. Die Sicherheit von
DNS ist ein wichtiger Schritt in der
generellen Absicherung des Internets. Für weitere,
tiefergehende Details über die Funktionsweise von
DNSSEC sind die dazugehörigen
RFCs ein guter Einstieg in die Thematik.
Sehen Sie sich dazu die Liste in
an.Der folgende Abschnitt wird zeigen, wie man
DNSSEC für einen autoritativen
DNS-Server und einen rekursiven (oder
cachenden) DNS-Server, der jeweils
BIND 9 verwenden, einrichten kann.
Obwohl alle Versionen von BIND 9
DNSSEC unterstützen, ist es notwendig,
mindestens die Version 9.6.2 zu verwenden, um in der Lage zu
sein, die signierten Root-Zonen zu benutzen, wenn
DNS-Abfragen geprüft werden. Der Grund
dafür ist, dass früheren Versionen die Algorithmen fehlen,
um die Überprüfung des Root-Zonenschlüssels zu aktivieren.
Es wird dringend empfohlen, die letzte Version von
BIND 9.7 oder höher einzusetzen, um von
den Vorteilen der automatischen Schlüsselaktualisierung des
Root-Zonenschlüssels Gebrauch zu machen, genauso wie andere
Eigenschaften, um automatisch Zonen signieren zu lassen und
Signaturen aktuell zu halten. Unterschiede zwischen den
Versionen 9.6.2 und 9.7 und höher werden an den betreffenden
Stellen angesprochen.Rekursive DNS-Server
KonfigurationDie Aktivierung der
DNSSEC-Überprüfung von Anfragen, die
von einem rekursiven DNS-Server
stammen, benötigt ein paar Änderungen in der
named.conf. Bevor man jedoch diese
Änderungen durchführt, muss der Root-Zonenschlüssel oder
Vertrauensanker erworben werden. Momentan ist der
Root-Zonenschlüssel nicht in einem Dateiformat verfügbar,
dass von BIND benutzt werden kann, so
dass dieser manuell in das richtige Format konvertiert
werden muss. Der Schlüssel selbst kann durch Abfrage an
die Root-Zone erhalten werden, indem man dazu
dig verwendet. Durch Aufruf
von:&prompt.user; dig +multi +noall +answer DNSKEY . > root.dnskeywird der Schlüssel in root.dnskey
abgelegt. Der Inhalt sollte so ähnlich wie folgt
aussehen:. 93910 IN DNSKEY 257 3 8 (
AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQ
bSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh
/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWA
JQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXp
oY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3
LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGO
Yl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGc
LmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0=
) ; key id = 19036
. 93910 IN DNSKEY 256 3 8 (
AwEAAcaGQEA+OJmOzfzVfoYN249JId7gx+OZMbxy69Hf
UyuGBbRN0+HuTOpBxxBCkNOL+EJB9qJxt+0FEY6ZUVjE
g58sRr4ZQ6Iu6b1xTBKgc193zUARk4mmQ/PPGxn7Cn5V
EGJ/1h6dNaiXuRHwR+7oWh7DnzkIJChcTqlFrXDW3tjt
) ; key id = 34525Seien Sie nicht alarmiert, wenn der von Ihnen bezogene
Schlüssel anders als in diesem Beispiel aussieht. Diese
könnten sich in der Zwischenzeit geändert haben. In
dieser Ausgabe sind eigentlich zwei Schlüssel enthalten.
Der erste Schüssel mit dem Wert 257 nach dem
DNSKEY-Eintrag ist derjenige, der benötigt wird. Der Wert
zeigt an, dass es sich um einen sicheren Einstiegspunkt
(SEP), gemein
auch als Schlüsselsignierungsschlüssel (KSK) bekannt, handelt.
Der zweite Schüssel mit dem Wert 256 ist der
untergeordnete Schlüssel, im allgemeinen auch als
Zonen-Signaturschlüssel (ZSK) bezeichnet.
Weitere Schlüsselarten werden später in erläutert.Nun muss der Schlüssel verifiziert und so formatiert
werden, dass BIND diesen verwenden
kann. Um den Schlüssel zu verifizieren, erzeugen Sie
einen DS
RR-Satz.
Erstellen Sie eine Datei, welche die RRs enthält,
mittels:&prompt.user; dnssec-dsfromkey -f root.dnskey . > root.dsDiese Einträge verwenden SHA-1 sowie SHA-256 und
sollten ähnlich zu folgendem Beispiel aussehen, in dem
der längere, SHA-256, benutzt wird.. IN DS 19036 8 1 B256BD09DC8DD59F0E0F0D8541B8328DD986DF6E
. IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5Der SHA-256 RR kann nun mit dem
Abriss in
https://data.iana.org/root-anchors/root-anchors.xml
verglichen werden. Um absolut sicher zu sein, dass der
Schlüssel nicht zusammen mit den
XML-Daten verändert wurde, sollte die
Datei mit einer passenden PGP-Signatur
überprüft werden.Als nächstes muss der Schlüssel in das passende Format
gebracht werden. Dies unterscheidet sich ein bisschen von
den BIND Versionen 9.6.2 und 9.7 und
höhere. In Version 9.7 wurde die Ünterstützung zur
automatischen Verfolgung und notwendigen Aktualisierung
von Änderungen am Schlüssel eingebaut. Dies wird durch
den Einsatz von managed-keys erreicht,
wie in dem Beispiel unten gezeigt ist. Wenn die ältere
Version eingesetzt wird, kann der Schlüssel durch eine
trusted-keys-Anweisung eingebaut werden
und die Aktualisierung muss händisch erfolgen. In
BIND 9.6.2 sollte das Format
folgendermaßen aussehen:trusted-keys {
"." 257 3 8
"AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD
X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz
W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS
Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq
QxA+Uk1ihz0=";
};In 9.7 wird das Format stattdessen wie folgt
aussehen:managed-keys {
"." initial-key 257 3 8
"AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD
X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz
W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS
Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq
QxA+Uk1ihz0=";
};Der Root-Schlüssel kann nun zu
named.conf hinzugefügt werden,
entweder direkt oder durch Inkludierung der Datei, die den
Schlüssel enthält. Nachdem diese Schritte absolviert
sind, muss BIND konfiguriert werden, um
DNSSEC-Validierung für Anfragen
durchzuführen, indem named.conf
bearbeitet und die folgende
options-Direktive hinzugefügt
wird:dnssec-enable yes;
dnssec-validation yes;Um zu prüfen, dass es tatsächlich funktioniert,
benutzen Sie dig, um eine
Anfrage zu einer signierten Zone durch den Resolver, der
gerade konfiguriert wurde, zu stellen. Eine erfolgreiche
Antwort wird den AD-Eintrag aufweisen,
um anzudeuten, dass die Daten authentisiert sind. Eine
Anfrage wie:&prompt.user; dig @resolver +dnssec se ds sollte den DS RR
für die .se-Zone zurückgeben. In dem
Abschnitt flags: sollte der
AD-Eintrag gesetzt sein, wie im
folgenden zu sehen ist:...
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
...Der Resolver ist nun in der Lage, Anfragen ans
DNS zu authentisieren.Autoritative DNS-Server
KonfigurationUm einen autoritativen Nameserver dazu zu bringen, als
eine DNSSEC-signierte Zone zu
fungieren, ist ein wenig mehr Aufwand nötig. Eine Zone
ist durch kryptographische Schlüssel signiert, die erzeugt
werden müssen. Es ist möglich, nur einen Schlüssel dazu
zu verwenden. Die vorgeschlagene Methode ist jedoch,
einen starken, gut geschützten
Schlüsselsignierungsschlüssel (KSK) einzusetzen, der
nicht oft gewechselt wird und einen
Zonensignierungsschlüssel (ZSK), der öfter
ausgewechselt wird. Informationen zu vorgeschlagenen
Einsatzszenarien können in RFC
4641: DNSSEC Operational Practices
nachgelesen werden. Einsatzszenarien, welche die
Root-Zone betreffen, finden Sie in DNSSEC Practice
Statement for the Root Zone KSK
operator sowie DNSSEC Practice
Statement for the Root Zone ZSK
operator. Der KSK wird dazu
verwendet, um eine Kette von Autorität für die Daten, die
diese Validierung benötigen, zu erschaffen und wird als
solche auch als sicherer Einstiegspunkt (SEP)-Schlüssel
bezeichnet. Ein Nachrichtenabriss dieses Schlüssels, der
auch Delegation Signer (DS)-Eintrag genannt
wird, muss in der Elternzone veröffentlicht werden, um die
Vertrauenskette herzustellen. Wie dies erreicht wird,
hängt von dem Besitzer der Elternzone ab. Der ZSK wird verwendet, um
die Zone zu signieren und muss nur dort öffentlich
zugänglich gemacht werden.Um DNSSEC für die example.com-Zone,
welche in den vorherigen Beispielen verwendet wird, zu
aktivieren, muss als erster Schritt
dnssec-keygen benutzt werden,
um das KSK- und
ZSK-Schlüsselpaar zu generieren.
Dieses Schlüsselpaar kann unterschiedliche
kryptographische Algorithmen nutzen. Es wird empfohlen,
RSA/SHA256 für die Schlüssel zu nutzen. Eine
Schlüssellänge von 2048 Bits sollte genügen. Um den
KSK für example.com zu
generieren, geben Sie:&prompt.user; dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE example.comein und um den ZSK zu erzeugen,
setzen Sie folgenden Befehl ab:&prompt.user; dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.comdnssec-keygen gibt zwei
Dateien aus, den öffentlichen und den privaten Schlüssel
und zwar in Dateinamen, die ähnlich lauten wie
Kexample.com.+005+nnnnn.key
(öffentlich) und
Kexample.com.+005+nnnnn.private
(privat). Der nnnnn-Teil des
Dateinamens ist eine fünfstellige Schlüsselkennung.
Passen Sie genau auf, welche Kennung zu welchem
Schlüssel gehört. Das ist besonders wichtig, wenn mehrere
Schlüssel in einer Zone vorliegen. Es ist auch möglich,
die Schlüssel umzubenennen. Für jede
KSK-Datei tun Sie folgendes:&prompt.user; mv Kexample.com.+005+nnnnn.key Kexample.com.+005+nnnnn.KSK.key
&prompt.user; mv Kexample.com.+005+nnnnn.private Kexample.com.+005+nnnnn.KSK.privateFür die ZSK-Dateien ersetzen Sie
KSK für ZSK wenn
nötig. Die Dateien können nun in der Zonendatei
inkludiert werden, indem die $include
Anweisung verwendet wird. Es sollte folgendermaßen
aussehen:$include Kexample.com.+005+nnnnn.KSK.key ; KSK
$include Kexample.com.+005+nnnnn.ZSK.key ; ZSKSchliesslich signieren Sie die Zone und weisen
BIND an, die signierte Zonendatei zu
benutzen. Um eine Zone zu signieren, wird
dnssec-signzone eingesetzt.
Der Befehl, um eine Zone example.com zu
signieren, die in example.com.db
liegt, sollte wie folgt aussehen:&prompt.user; dnssec-signzone -o example.com -k Kexample.com.+005+nnnnn.KSK example.com.db Kexample.com.+005+nnnnn.ZSK.keyDer Schlüssel, welcher mit dem Argument
übergeben wird, ist der
KSK und die andere Schlüsseldatei ist
der ZSK, welcher für die Signatur
benutzt werden soll. Es ist möglich, mehr als einen
KSK und ZSK
anzugeben, was das Ergebnis zur Folge hat, dass die Zone
mit allen übergebenen Schlüsseln signiert wird. Dies kann
dann benötigt werden, um Zonendaten mit mehr als einem
Algorithmus zur Signierung zu verwenden. Die Ausgabe von
dnssec-signzone ist eine
Zonendatei mit allen signierten RRs.
Diese Ausgabe wird in einer Datei mit der Endung
.signed abgelegt, wie beispielsweise
example.com.db.signed. Die DS-Einträge werden
ebenfalls in eine separate Datei
dsset-example.com geschrieben. Um
diese signierte Zone zu verwenden, ändern Sie die
Zonendirektive in named.conf, so dass
example.com.db.signed benutzt wird.
Standardmässig sind die Signaturen nur 30 Tage gültig, was
bedeutet, dass die Zone in etwa 15 Tagen erneut signiert
werden muss, um sicher zu stellen, dass Resolver keine
Einträge mit veralteten Signaturen zwischenspeichern. Es
ist möglich, ein Skript und einen cron-Job zu schreiben,
um dies zu erledigen. Lesen Sie dazu die relevanten
Anleitungen, um Details zu erfahren.Stellen Sie sicher, dass die privaten Schlüssel
vertraulich bleiben, genau wie mit allen anderen
kryptographischen Schlüsseln auch. Wenn ein Schlüssel
geändert wird, ist es gute Praxis den neuen Schlüssel in
die Zone zu inkludieren, noch während der alte Schlüssel
noch zum signieren eingesetzt wird, um dann auf den neuen
Schlüssel zum signieren zu wechseln. Nachdem diese
Schritte erfolgt sind, kann der alte Schlüssel aus der
Zone entfernt werden. Wenn das nicht geschieht, können
DNS-Daten für einige Zeit nicht
verfügbar sein, bis der neue Schlüssel durch die
DNS-Hierarchie propagiert wurde. Für
weitere Informationen bezüglich Schlüsselübergabe und
andere DNSSEC-Einsatzszenarien lesen
Sie RFC
4641: DNSSEC Operational
practices.Automatisierung mittels BIND 9.7
oder höherBeginnend mit der Version 9.7 von
BIND wurde eine neue Eigenschaft
vorgestellt, die Smart Signing
genannt wird. Diese zielt darauf ab, das
Schlüsselmanagement und den Signierungsprozess einfacher
zu gestalten und zu automatisieren. Durch ablegen der
Schlüssel in ein Verzeichnis, genannt
key repository und die Verwendung der
neuen Option auto-dnssec, ist es
möglich eine dynamische Zone zu erzeugen, welche dann bei
Bedarf erneut signiert wird. Um diese Zone zu
aktualisieren, benutzen Sie
nsupdate mit der neuen Option
. Es hat also
rndc die Fähigkeit gewonnen,
Zonen mit Schlüsseln im Key Repository zu verwenden, indem
die Option eingesetzt wird. Um
BIND anzuweisen, diese automatische
Signierung und Zonenaktualisierung für example.com zu nutzen,
fügen Sie die folgenden Zeilen in
named.conf hinzu:zone example.com {
type master;
key-directory "/etc/named/keys";
update-policy local;
auto-dnssec maintain;
file "/etc/named/dynamic/example.com.zone";
};Nachdem diese Änderungen durchgeführt wurden, erzeugen
Sie die Schlüssel für die Zone wie in beschrieben wird, legen
diese Schlüssel im Key Repository ab, dass als Argument
key-directory in der Zonenkonfiguration
steht und die Zone wird automatisch signiert.
Aktualisierungen für eine Zone, die auf diese Art und
Weise konfiguriert wurde, muss mittels
nsupdate erfolgen, dass sich um
die erneute Signierung der Zone mit den hinzugefügten
Daten kümmern wird. Für weitere Details, lesen Sie und die Dokumentation von
BIND.SicherheitObwohl BIND die am meisten verwendete Implementierung
von DNS darstellt, werden dennoch
manchmal neue Sicherheitsprobleme entdeckt.Zwar startet &os; named
automatisch in einer &man.chroot.8;-Umgebung, es gibt aber
noch weitere Sicherheitsmechanismen, mit denen Sie
potentielle DNS-Serviceattacken
erschweren können.Es ist daher eine gute Idee, die Sicherheitshinweise von
CERT zu lesen
sowie die Mailingliste &a.security-notifications; zu
abonnieren, um sich über Sicherheitsprobleme im Zusammenhang
mit dem Internet und &os; zu informieren.Tritt ein Problem auf, kann es nie schaden, die
Quellen zu aktualisieren und
named neu zu
kompilieren.Weitere InformationsquellenHilfeseiten zu BIND/named:
&man.rndc.8; &man.named.8; &man.named.conf.5;
&man.nsupdate.1; &man.dnssec-signzone.8;
&man.dnssec-keygen.8;
Offizielle ISC-Seite zu BIND
Offizielles Forum zu ISC-BIND
O'Reilly DNS and BIND 5th
Edition
Root DNSSEC
DNSSEC Vertrauensanker-Publikation
für die Root-ZoneRFC
1034 - Domain Names - Concepts and FacilitiesRFC
1035 - Domain Names - Implementation and
SpecificationRFC
4033 - DNS Security Introduction
and RequirementsRFC
4034 - Resource Records for the
DNS Security ExtensionsRFC
4035 - Protocol Modifications for the
DNS Security ExtensionsRFC
4641 - DNSSEC Operational
PracticesRFC
5011 - Automated Updates of DNS
Security (DNSSEC) Trust AnchorsApache HTTP-ServerMurrayStokelyBeigetragen von WebserverkonfigurierenApacheDer Open Source
Apache HTTP-Server ist der am
weitesten verbreitete Webserver. Dieser Webserver ist nicht im
Basissystem von &os; enthalten, kann aber als Paket oder Port
www/apache24 installiert werden.Dieser Abschnitt beschreibt die Konfiguration der
Version 2.x des
Apache HTTP-Server. Weiterführende
Informationen und Konfigurationsanweisungen für
Apache 2.X finden Sie unter
httpd.apache.org.Apache konfigurieren und startenApacheKonfigurationsdateiDer Apache HTTP-Server wird
unter &os; primär in
/usr/local/etc/apache2x/httpd.conf
konfiguriert, wobei das x die
Versionsnummer darstellt. In dieser Textdatei leitet ein
# einen Kommentar ein. Die am häufigsten
verwendeten Optionen sind:ServerRoot "/usr/local"Legt das Standardwurzelverzeichnis für die
Apache-Installation fest.
Binärdateien werden in die Verzeichnisse
bin und
sbin unterhalb des
Serverwurzelverzeichnisses installiert, während sich
Konfigurationsdateien im Unterverzeichnis
etc/apache2x
befinden.ServerAdmin you@example.comDie E-Mail-Adresse, an die Mitteilungen über
Serverprobleme geschickt werden. Diese Adresse
erscheint auf vom Server erzeugten Seiten,
beispielsweise auf Fehlerseiten.ServerName www.example.com:80Erlaubt dem Administrator, einen Rechnernamen
festzulegen, den der Server an die Clients sendet.
Beispielsweise könnte www statt
des richtigen Rechnernamens verwendet werden. Wenn das
System keinen eingetragenen DNS-Namen
hat, kann stattdessen die IP-Adresse
eingetragen werden. Lauscht der Server auf einem
anderen Port, tauschen Sie die 80
gegen eine entsprechende Portnummer.DocumentRoot "/usr/local/www/apache2x/data"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.Es ist empfehlenswert, eine Sicherungskopie der
Apache-Konfigurationsdatei
anzulegen, bevor Änderungen durchgeführt werden. Wenn die
Konfiguration von Apache
abgeschlossen ist, speichern Sie die Datei und überprüfen Sie
die Konfiguration mit apachectl. Der
Befehl apachectl configtest sollte
Syntax OK zurückgeben.ApacheStarten oder BeendenUm den Apache beim Systemstart
zu starten, fügen Sie folgende Zeile in
/etc/rc.conf ein:apache24_enable="YES"Wenn Sie während des Systemstarts weitere Parameter an den
Apache übergeben wollen, können Sie
diese durch eine zusätzliche Zeile in
rc.conf angeben:apache24_flags=""Wenn apachectl keine
Konfigurationsfehler meldet, starten Sie
httpd:&prompt.root; service apache24 startSie können den httpd-Dienst testen,
indem Sie
http://localhost
in einen Browser eingeben, wobei Sie
localhost durch den
vollqualifizierten Domainnamen der Maschine ersetzen, auf dem
der httpd läuft. Die Standard Webseite,
die angezeigt wird, ist
/usr/local/www/apache24/data/index.html.Die Konfiguration von Apache
kann bei nachfolgenden Änderungen an der Konfigurationsdatei
bei laufendem httpd, auf Fehler überprüft
werden. Geben Sie dazu folgendes Kommando ein:&prompt.root; service apache24 configtestEs ist wichitg zu beachten, dass
configtest kein &man.rc.8;-Standard ist,
und somit nicht zwingend mit anderen
&man.rc.8;-Startskripten funktioniert.Virtual HostingVirtual Hosting ermöglicht
es, mehrere Webseiten auf einem
Apache-Server laufen zu lassen.
Die virtuellen Hosts können IP-basiert
oder namensbasiert sein.
IP-basiertes virtual Hosting verwendet eine
IP-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
IP-Adresse zu betreiben.Damit der Apache namenbasierte
virtuelle Domains verwalten kann, fügen Sie für jede Webseite
einen separaten VirtualHost-Block ein.
Wenn der Webserver beispielsweise www.domain.tld heißt und
die virtuelle Domain www.someotherdomain.tld
einrichtet werden soll, ergänzen Sie
httpd.conf um folgende Einträge:<VirtualHost *>
ServerName www.domain.tld
DocumentRoot /www/domain.tld
</VirtualHost>
<VirtualHost *>
ServerName www.someotherdomain.tld
DocumentRoot /www/someotherdomain.tld
</VirtualHost>Setzen Sie für jeden virtuellen Host die entsprechenden
Werte für ServerName und
DocumentRoot.Ausführliche Informationen zum Einrichten von virtuellen
Hosts finden Sie in der offiziellen
Apache-Dokumentation unter
http://httpd.apache.org/docs/vhosts/.Häufig verwendete Apache-ModuleApacheModuleApache 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
http://httpd.apache.org/docs/current/mod/.In &os; können einige Module mit dem Port
www/apache24 kompiliert werden. Geben Sie
in /usr/ports/www/apache24make config 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.mod_sslWebserverVerschlüsselungSSLVerschlüsselungDas Modul mod_ssl verwendet die
OpenSSL-Bibliothek, um über die
Protokolle Secure Sockets Layer (SSLv3)
sowie Transport Layer Security (TLSv1)
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.Unter &os; wird das Modul mod_ssl
standardmäßig im Port und auch im Paket aktiviert. Die
verfügbaren Konfigurationsanweisungen werden in
http://httpd.apache.org/docs/current/mod/mod_ssl.html
beschrieben.mod_perlmod_perlPerlDas Modul mod_perl macht es
möglich, vollständig in Perl
geschriebene Apache-Module zu
erzeugen. Da der
Perl-Interpreter in den Server
eingebettet wird, muss weder ein externer Interpreter noch
Perl zusätzlich aufgerufen
werden.mod_perl wird über den Port
oder das Paket www/mod_perl2 installiert.
Dokumentation für dieses Modul finden Sie unter
http://perl.apache.org/docs/2.0/index.html.mod_phpTomRhodesGeschrieben von mod_phpPHPPHP: Hypertext Preprocessor
(PHP) ist eine vielseitig
verwendbare Skriptsprache, die besonders für die
Web-Entwicklung geeignet ist. PHP kann
in HTML eingebettet werden und ähnelt von
der Syntax her Sprachen wie C,
&java; und Perl. Das
Hauptanliegen von PHP ist es,
Web-Entwicklern die rasche Erstellung von dynamisch
erzeugten Internetseiten zu ermöglichen.Damit der Apache-Webserver
PHP5 unterstützt, der Port oder das Paket
lang/php56 installiert werden. Dies wird
die Module installieren und konfigurieren, die für die
Unterstützung von dynamischen
PHP-Anwendungen benötigt werden. Die
Installation wird automatisch folgende Zeilen in
/usr/local/etc/apache24/httpd.conf
hinzufügen:LoadModule php5_module libexec/apache24/libphp5.soDanach rufen Sie
apachectl auf, um das
PHP-Modul zu laden:&prompt.root; apachectl gracefulDie PHP-Unterstützung von
www/mod_php56 verfügt nur über wenige
Funktionen. Zusätzliche Funktionen können mit dem Port
lang/php56-extensions installiert werden.
Der Port bietet ein Auswahlmenü, über das Sie
verschiedene PHP-Erweiterungen
installieren können.Alternativ können einzelne Erweiterungen über den
jeweiligen Port installieren. Um beispielsweise die
Unterstützung des Datenbankservers
MySQL in PHP
zu aktivieren, installieren Sie den Port
databases/php56-mysql.Nachdem Sie eine Erweiterung installiert haben,
müssen Sie den
Apache-Server neu starten, damit
die Erweiterung auch erkannt wird:&prompt.root; apachectl gracefulAb nun wird MySQL von
PHP unterstützt.Dynamische WebseitenWebserverdynamischNeben mod_perl und
mod_php stehen noch weitere
Sprachen zur Erstellung von dynamischen Inhalten zur
Verfügung. Dazu gehören auch
Django und
Ruby on Rails.DjangoPythonDjangoBei Django 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
Phyton-Objekte entwickelt werden
können) sowie eine API für den
dynamischen Datenbankzugriff auf diese Objekte, ohne dass
Entwickler jemals SQL-Code schreiben
müssen. Zusätzlich existiert ein umfangreiches
Template-System, wodurch die Programmlogik von der
HTML-Präsentation getrennt werden
kann.Django setzt das Modul
mod_python und eine
SQL-Datenbank voraus. In &os; wird
bei der Installation von www/py-django
automatisch mod_python installiert.
Als Datenbanken werden
PostgreSQL,
MySQL und
SQLite unterstützt, wobei
SQLite die Voreinstellung ist.
Wenn Sie die Datenbank ändern möchten, geben Sie in
/usr/ports/www/py-djangomake config ein und installieren Sie den
Port neu.Nachdem Django installiert
ist, benötigt die Anwendung ein Projektverzeichnis und die
Apache-Konfiguration, um den
eingebetteten Python-Interpreter
zu nutzen. Dieser Interpreter wird verwendet um die
Anwendung für spezifische URLs
der Seite aufrufen.Damit Apache Anfragen für
bestimmte URLs an die Web-Applikation
übergeben kann, müssen Sie den vollständigen Pfad zum
Projektverzeichnis in httpd.conf
festlegen:<Location "/">
SetHandler python-program
PythonPath "['/pfad/zu/den/django/paketen/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonAutoReload On
PythonDebug On
</Location>Weitere Informationen zur Verwendung von
Django finden Sie unter
https://docs.djangoproject.com/en/1.6/.Ruby on RailsRuby on RailsRuby on Rails 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
www/rubygem-rails installiert
werden.Weitere Informationen zur Verwendung von
Ruby on Rails finden Sie unter
http://rubyonrails.org/documentation.File Transfer Protocol (FTP)FTP-ServerDas File Transfer Protocol (FTP)
ermöglicht auf einfache Art und Weise den Dateiaustausch mit
einem FTP-Server. Der
FTP-Server ftpd
ist bei &os; bereits im Basisystem enthalten.&os; verwendet mehrere Konfigurationsdateien, um den Zugriff
auf den FTP zu kontrollieren. Dieser
Abschnitt fasst diese Dateien zusammen. In &man.ftpd.8; finden
Sie weitere Inforamtionen über den integrierten
FTP-Server.KonfigurationDer wichtigste Punkt ist hier die Entscheidung darüber,
welche Benutzer auf den FTP-Server
zugreifen dürfen. Ein &os;-System verfügt über diverse
Systembenutzerkonten, die jedoch nicht auf den
FTP-Server zugreifen sollen. Die Datei
/etc/ftpusers enthält alle Benutzer, die
vom FTP-Zugriff ausgeschlossen sind. In
der Voreinstellung gilt dies auch die gerade erwähnten
Systembenutzerkonten. Sie können über diese Datei weitere
Benutzer vom FTP-Zugriff
ausschließen.In einigen Fällen kann es wünschenswert sein, den Zugang
für manche Benutzer einzuschränken, ohne dabei
FTP komplett zu verbieten. Dazu passen Sie
/etc/ftpchroot, 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
FTP.FTPanonymousUm anonymen FTP-Zugriff auf dem Server
zu aktivieren, muss ein Benutzer ftp auf dem &os;-System
angelegt werden. Danach können sich Benutzer mit dem
Benutzernamen ftp
oder anonymous am
FTP-Server anmelden. Das Passwort ist
dabei beliebig, allerdings wird dazu in der Regel eine
E-Mail-Adresse verwendet. Meldet sich ein anonymer Benutzer
an, aktiviert der FTP-Server
&man.chroot.2;, um den Zugriff auf das Heimatverzeichnis des
Benutzers ftp zu
beschränken.Es gibt zwei Textdateien, deren Inhalt den
FTP-Clients bei der Anmeldung angezeigt
wird. Der Inhalt von /etc/ftpwelcome
wird angezeigt, bevor der Login-Prompt erscheint. Nach einer
erfolgreichen Anmeldung wird der Inhalt von
/etc/ftpmotd 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
~ftp/etc/ftpmotd angezeigt.Sobald der FTP-Server konfiguriert ist,
setzen Sie die entsprechende Variable in
/etc/rc.conf, damit der Dienst beim
Booten gestartet wird:ftpd_enable="YES"Starten Sie den Dienst:&prompt.root; service ftpd startTesten Sie die Verbindung zum
FTP-Server, indem Sie folgendes
eingeben:&prompt.user; ftp localhostWartungsyslogLogdateienFTPDer ftpd-Daemon verwendet
&man.syslog.3;, um Protokolldateien zu erstellen. In der
Voreinstellung werden alle FTP betreffenden
Nachrichten nach
/var/log/xferlog geschrieben. Dies lässt
sich aber durch das Einfügen der folgenden Zeile in
/etc/syslog.conf ändern:ftp.info /var/log/xferlogFTPanonymousBeachten Sie, dass mit dem Betrieb eines anonymen
FTP-Servers verschiedene
Sicherheitsrisiken verbunden sind. Problematisch ist hier
vor allem die Erlaubnis zum anonymen Upload von Dateien.
Dadurch könnte der Server zur Verbreitung von illegaler oder
nicht lizensierter Software oder noch Schlimmeren
missbraucht werden. Wenn anonyme
FTP-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.Datei- und Druckserver für
µsoft.windows;-Clients (Samba)Samba-ServerMicrosoft WindowsDateiserverWindows-ClientsDruckserverWindows-ClientsSamba ist ein beliebtes
Open Source Softwarepaket, das Datei- und Druckdienste über
das SMB/CIFS-Protokoll zur Verfügung
stellt. Dieses Protokoll ist in µsoft.windows;-Systemen
enthalten und kann über die Installation der
Samba-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.Unter &os; können die
Samba-Client-Bibliotheken über den
Port oder das Paket net/samba-smbclient
installiert werden. Der Client ermöglicht es einem
&os;-System auf SMB/CIFS-Freigaben in einem
µsoft.windows;-Netzwerk zuzugreifen.Ein &os;-System kann auch als
Samba-Server agieren, wenn Sie den
Port oder das Paket net/samba43
installieren. Dies erlaubt es dem Administrator
SMB/CIFS-Freigaben auf dem &os;-System
einzurichten, auf welche dann Clients mit µsoft.windows;
oder den Samba-Client-Bibliotheken
zugreifen können.Konfiguration des ServersSamba wird in
/usr/local/etc/smb4.conf konfiguriert.
Diese Datei muss erstellt werden, bevor
Samba benutzt werden kann.Eine einfache smb4.conf, wie hier
gezeigt, stellt den Zugriff auf Verzeichnisse und Drucker für
&windows;-Clients in einer Arbeitsgruppe (engl.
Workgroup) zur Verfügung. In
aufwendigeren Installationen, in denen LDAP
oder Active Directory zum Einsatz kommt, ist es einfacher die
smb4.conf mit dem Werkzeug
&man.samba-tool.8; zu erstellen.[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 = 0755Globale EinstellungenEinstellungen für das Netzwerk werden in
/usr/local/etc/smb4.conf
definiert:workgroupDer Name der Arbeitsgruppe.netbios nameNetBIOSDer NetBIOS-Namen fest, unter dem der
Samba-Server bekannt ist.
In der Regel handelt es sich dabei um den ersten
Teil des DNS-Namens des
Servers.server stringLegt die Beschreibung fest, die angezeigt wird,
wenn mit net view oder anderen
Netzwerkprogrammen Informationen über den Server
angefordert werden.wins supportLegt fest, ob Samba als
WINS-Server fungieren soll.
Aktivieren Sie die Unterstützung für
WINS auf maximal einem Server im
Netzwerk.Samba absichernDie wichtigsten Einstellungen in
/usr/local/etc/smb4.conf betreffen
das zu verwendende Sicherheitsmodell sowie das
Backend-Passwortformat. Die folgenden Direktiven steuern
diese Optionen:securityDie häufigsten Optionen sind
security = share und
security = user. Wenn die Clients
Benutzernamen verwenden, die den Benutzernamen auf dem
&os;-Rechner entsprechen, dann sollte die Einstellung
user level 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.In der Einstellung share level
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 Samba-Versionen
war dies die Standardeinstellung.passdb backendNIS+LDAPSQL databaseSamba erlaubt
verschiedene Backend-Authentifizierungsmodelle.
Clients können sich durch LDAP, NIS+, eine
SQL-Datenbank oder eine Passwortdatei
authentifizieren. Die empfohlene
Authentifizierungsmethode, tdbsam,
ist ideal für einfache Netzwerke und wird hier
vorgestellt. Für größere oder komplexere Netzwerke
wird ldapsam empfohlen.
smbpasswd war der frühere Standard
und gilt mittlerweile als veraltet.Samba BenutzerDamit &windows;-Clients auf die Freigaben zugreifen
können, müssen die &os;-Benutzerkonten in der
SambaSAMAccount-Datenbank zugeordnet
werden. Für bereits vorhandene Benutzerkonten kann dazu
&man.pdbedit.8; benutzt werden:&prompt.root; pdbedit -a usernameDieser Abschnitt beschreibt lediglich die am häufigsten
verwendeten Einstellungen. Ausführliche Informationen zur
Konfiguration von Samba finden
Sie im
Official Samba HOWTO.Samba startenDamit Samba beim Systemstart
automatisch aktiviert wird, fügen Sie die folgende Zeile in
/etc/rc.conf ein:samba_enable="YES"Für Samba4 verwenden Sie:samba_server_enable="YES"Jetzt kann Samba direkt
gestartet werden:&prompt.root; service samba start
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.Samba verwendet drei Daemonen.
Sowohl nmbd als auch
smbd werden durch
samba_enable gestartet. Wenn eine
Namensauflösung über winbind
benötigt wird, setzen Sie zusätzlich:winbindd_enable="YES"Samba kann jederzeit
durch folgenden Befehl beendet werden:&prompt.root; service samba stopSamba 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 http://www.samba.org
umsehen.Die Uhrzeit mit NTP synchronisierenNTPntpdDie 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
Network Time Protocol
(NTP) bietet die Möglichkeit, die exakte
Uhrzeit in einem Netzwerk zur Verfügung zu stellen.Mit &man.ntpd.8; enthält &os; ein Werkzeug, das andere
NTP-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
ISP zur Verfügung gestellt werden. Darüber
hinaus gibt es eine
Liste von öffentlich zugänglichen
NTP-Servern. Falls Sie sich für
einen solchen öffentlichen Server entscheiden, wählen Sie
einen nahegelegenen Server und prüfen Sie die
Nutzungsbedingungen.Die Auswahl von mehreren NTP-Servern
wird empfohlen, falls sich ein Server nicht erreichbar ist
oder sich als unzuverlässig herausstellt.
ntpd verwendet die Antworten
anderer Server, um zuverlässige Server zu bestimmen, die dann
bevorzugt abgefragt werden.Dieser Abschnitt beschreibt die Konfiguration von
ntpd unter &os;. Zusätzliche
Dokumentation im HTML-Format finden Sie in
/usr/share/doc/ntp/.NTP konfigurierenNTPntp.conf&os; enthält mit ntpd ein
Werkzeug, das zur Synchronisation der Uhrzeit verwendet werden
kann. Um ntpd beim Booten zu
aktivieren, fügen Sie den Eintrag
ntpd_enable="YES" in
/etc/rc.conf ein. Zusätzliche Variablen
können ebenfalls in /etc/rc.conf gesetzt
werden. Weitere Details finden Sie in &man.rc.conf.5; und
&man.ntpd.8;.Das Programm liest /etc/ntp.conf
um herauszufinden, welche NTP-Server
abgefragt werden müssen. Hier ist ein einfaches Beispiel
einer /etc/ntp.conf:Beispiel einer
/etc/ntp.confserver ntplocal.example.com prefer
server timeserver.example.org
server ntp2a.example.net
driftfile /var/db/ntp.driftDas Format dieser Datei wird in &man.ntp.conf.5;
beschrieben. Die Option server legt die zu
verwendenden Server fest, wobei jeder Server in einer eigenen
Zeile steht. Wenn ein Server mit der Option
prefer 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 prefer sollte nur für sehr
zuverlässige und genaue NTP-Server
verwendet werden, die über eine spezielle Hardware zur
Zeitüberwachung verfügen.Die Option driftfile legt fest, in
welcher Datei die Abweichungen der Systemuhr protokolliert
werden. ntpd verwendet diese
Datei, um die Systemzeit automatisch anzupassen, selbst wenn
kurzzeitig kein NTP-Server zur
Synchronisation verfügbar ist. Weiterhin werden in dieser
Datei Informationen über frühere Anworten von
NTP-Server. Da diese Datei interne
Informationen für NTP enthält, sollte sie
nicht verändert werden.In der Voreinstellung ist der
NTP-Server für alle Rechner im Netzwerk
erreichbar. Die Option restrict in
/etc/ntp.conf steuert, welche Rechner
auf den Server zugreifen können. Wenn Sie beispielsweise
alle Rechner vom Zugriff auf den
NTP-Server ausschließen wollen, fügen Sie
folgende Zeile in /etc/ntp.conf
ein:restrict default ignoreDieser Eintrag verhindert auch den Zugriff von anderen
NTP-Servern. Besteht die
Notwendigkeit, sich mit einem externen
NTP-Server zu synchronisieren, muss
dieser Server explizit zugelassen werden. Weitere
Informationen finden Sie in &man.ntp.conf.5;.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:restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap192.168.1.0
ist die lokale Adresse des Netzwerks, 255.255.255.0 ist die Netzmaske
des Netzwerks.Es werden mehrere restict-Einträge
untstützt. Weitere Details finden Sie im Abschnitt
Access Control Support von
&man.ntp.conf.5;.Sobald ntpd_enable="YES" in
/etc/rc.conf hinzugefügt wurde,
kann ntpd direkt
gestartet werden:&prompt.root; service ntpd startNTP mit einer
PPP-Verbindung verwendenntpd benötigt keine ständige
Internetverbindung. Wenn Sie sich über eine
PPP-Verbindung ins Internet einwählen,
sollten Sie verhindern, dass NTP-Verkehr
eine Verbindung aufbauen oder aufrechterhalten kann. Dies
kann in den filter-Direktiven von
/etc/ppp/ppp.conf festgelegt werden.
Ein Beispiel: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/0Weitere Informationen finden Sie im Abschnitt
PACKET FILTERING von &man.ppp.8; sowie in
den Beispielen unter
/usr/share/examples/ppp/.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.iSCSI Initiator und Target KonfigurationiSCSI bietet die Möglichkeit,
Speicherkapazitäten über ein Netzwerk zu teilen. Im Gegensatz
zu NFS, das auf Dateisystemebene arbeitet,
funktioniert iSCSI auf
Blockgerätebene.In der iSCSI-Terminologie wird das
System, das den Speicherplatz zur Verfügung stellt, als
Target 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 ZFS formatiert ist, kann
ein zvol erstellt werden, welches dann als
iSCSI-Speicher verwendet werden kann.Die Clients, die auf den iSCSI-Speicher
zugreifen, werden Initiator genannt. Ihnen
steht der verfügbare Speicher als rohe, nicht formatierte
Festplatte, die auch als LUN bezeichnet wird,
zur Verfügung. Die Gerätedateien für die Festplatten erscheinen
in /dev/ und müssen separat formatiert und
eingehangen werden.Seit 10.0-RELEASE enthält &os; einen nativen,
kernelbasierten iSCSI
Target und Initiator.
Dieser Abschnitt beschreibt, wie ein &os;-System als Target oder
Initiator konfiguriert wird.Ein iSCSI-Target konfigurierenEin natives iSCSI-Target wird seit
&os; 10.0-RELEASE unterstützt. Um iSCSI
mit älteren Versionen zu benutzen, installieren Sie ein
Target aus der Ports-Sammlung, beispielsweise
net/istgt. Dieses Kapitel beschreibt
nur das native Target.Um ein iSCSI-Target zu konfigurieren,
erstellen Sie die Konfigurationsdatei
/etc/ctl.conf und fügen Sie eine Zeile
in /etc/rc.conf hinzu, um
sicherzustellen, dass &man.ctld.8; automatisch beim Booten
gestartet wird. Starten Sie dann den Daemon.Das folgende Beispiel zeigt eine einfache
/etc/ctl.conf. Eine vollständige
Beschreibung dieser Datei und der verfügbaren Optionen finden
Sie in &man.ctl.conf.5;.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
}
}Der erste Eintrag definiert die Portalgruppe
pg0. Portalgruppen legen fest, auf welchen
Netzwerk-Adressen der &man.ctld.8;-Daemon Verbindungen
entgegennehmen wird. Der Eintrag
discovery-auth-group no-authentication
zeigt an, dass jeder Initiator
iSCSI-Targets suchen darf, ohne sich
authentifizieren zu müssen. Die dritte und vierte Zeilen
konfigurieren &man.ctld.8; so, dass er auf allen
IPv4- (listen 0.0.0.0)
und IPv6-Adressen
(listen [::]) auf dem Standard-Port 3260
lauscht.Es ist nicht zwingend notwendig eine Portalgruppe zu
definieren, da es bereits eine integrierte Portalgruppe namens
default gibt. In diesem Fall ist der
Unterschied zwischen default und
pg0 der, dass bei
default eine Authentifizierung nötig ist,
während bei pg0 die Suche nach Targets
immer erlaubt ist.Der zweite Eintrag definiert ein einzelnes Target. Ein
Target hat zwei mögliche Bedeutungen: eine Maschine die
iSCSI bereitstellt, oder eine Gruppe von
LUNs. Dieses Beispiel verwendet die
letztere Bedeutung, wobei
iqn.2012-06.com.example:target0 der Name
des Targets ist. Dieser Name ist nur für Testzwecke geeignet.
Für den tatsächlichen Gebrauch ändern Sie
com.example auf einen echten, rückwärts
geschriebenen Domainnamen. 2012-06 steht
für das Jahr und den Monat, an dem die Domain erworben
wurde. target0 darf einen beliebigen
Wert haben und in der Konfigurationsdatei darf eine beliebige
Anzahl von Targets definiert werden.Der Eintrag
auth-group no-authentication erlaubt es
allen Initiatoren sich mit dem angegebenen Target zu verbinden
und portal-group pg0 macht das Target über
die Portalgruppe pg0 erreichbar.Die nächste Sektion definiert die LUN.
Jede LUN wird dem Initiator als separate
Platte präsentiert. Für jedes Target können mehrere
LUNs definiert werden. Jede
LUN wird über eine Nummer identifiziert,
wobei LUN 0 verpflichtend ist. Die Zeile
mit dem Pfad path /data/target0-0 definiert
den absoluten Pfad zu der Datei oder des zvols für die
LUN. Der Pfad muss vorhanden sein, bevor
&man.ctld.8; gestartet wird. Die zweite Zeile ist optional
und gibt die Größe der LUN an. Als
nächstes fügen Sie folgende Zeile in
/etc/rc.conf ein, um &man.ctld.8;
automatisch beim Booten zu starten:ctld_enable="YES"Um &man.ctld.8; jetzt zu starten, geben Sie dieses
Kommando ein:&prompt.root; service ctld startDer &man.ctld.8;-Daemon liest beim Start
/etc/ctl.conf. Wenn diese Datei nach dem
Starten des Daemons bearbeitet wird, verwenden Sie folgenden
Befehl, damit die Änderungen sofort wirksam werden:&prompt.root; service ctld reloadAuthentifizierungDie 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: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
}
}Die Sektion auth-group definiert die
Benutzernamen und Passwörter. Um sich mit
iqn.2012-06.com.example:target0 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
discovery-auth-group auf eine definierte
auth-group anstelle von
no-autentication.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:target iqn.2012-06.com.example:target0 {
portal-group pg0
chap username1 secretsecret
lun 0 {
path /data/target0-0
size 4G
}
}Einen iSCSI-Initiator
konfigurierenDer in dieser Sektion beschriebene
iSCSI-Initiator wird seit &os;
10.0-RELEASE unterstützt. Lesen Sie &man.iscontrol.8;, wenn
Sie den iSCSI-Initiator mit älteren
Versionen benutzen möchten.Um den Initiator zu verwenden, muss zunächst ein
iSCSI-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 /etc/rc.conf
ein:iscsid_enable="YES"Um &man.iscsid.8; jetzt zu starten, geben Sie dieses
Kommando ein:&prompt.root; service iscsid startDie Verbindung mit einem Target kann mit, oder ohne eine
Konfigurationsdatei /etc/iscsi.conf
durchgeführt werden. Dieser Abschnitt beschreibt beide
Möglichkeiten.Verbindung zu einem Target herstellen - ohne
KonfigurationsdateiUm einen Initiator mit einem Target zu verbinden, geben
Sie die IP-Adresse des Portals und den
Namen des Ziels an:&prompt.root; iscsictl -A -p 10.10.10.10 -t iqn.2012-06.com.example:target0Um zu überprüfen, ob die Verbindung gelungen ist, rufen
Sie iscsictl ohne Argumente auf. Die
Ausgabe sollte in etwa wie folgt aussehen:Target name Target portal State
iqn.2012-06.com.example:target0 10.10.10.10 Connected: da0In diesem Beispiel wurde die
iSCSI-Sitzung mit der
LUN /dev/da0
erfolgreich hergestellt. Wenn das Target
iqn.2012-06.com.example:target0 mehr als
nur eine LUN exportiert, werden mehrere
Gerätedateien in der Ausgabe angezeigt:Connected: da0 da1 da2.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:Target name Target portal State
iqn.2012-06.com.example:target0 10.10.10.10 Waiting for iscsid(8)Die folgende Meldung deutet auf ein Netzwerkproblem hin,
zum Beispiel eine falsche IP-Adresse oder
einen falschen Port:Target name Target portal State
iqn.2012-06.com.example:target0 10.10.10.11 Connection refusedDiese Meldung bedeutet, dass der Name des Targets falsch
angegeben wurde:Target name Target portal State
iqn.2012-06.com.example:target0 10.10.10.10 Not foundDiese Meldung bedeutet, dass das Target eine
Authentifizierung erfordert:Target name Target portal State
iqn.2012-06.com.example:target0 10.10.10.10 Authentication failedVerwenden Sie diese Syntax, um einen
CHAP-Benutzernamen und ein Passwort
anzugeben:&prompt.root; iscsictl -A -p 10.10.10.10 -t iqn.2012-06.com.example:target0 -u user -s secretsecretVerbindung mit einem Target herstellen - mit
KonfigurationsdateiWenn Sie für die Verbindung eine Konfigurationsdatei
verwenden möchten, erstellen Sie
/etc/iscsi.conf mit etwa folgendem
Inhalt:t0 {
TargetAddress = 10.10.10.10
TargetName = iqn.2012-06.com.example:target0
AuthMethod = CHAP
chapIName = user
chapSecret = secretsecret
}t0 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.
TargetAddress und
TargetName müssen angegeben werden,
die restlichen sind optional. In diesen Beispiel wird
der CHAP-Benuztername und das Passwort
angegeben.Um sich mit einem bestimmten Target zu verbinden, geben
Sie dessen Namen an:&prompt.root; iscsictl -An t0Um sich stattdessen mit allen definierten Targets aus
der Konfigurationsdatei zu verbinden, verwenden Sie:&prompt.root; iscsictl -AaDamit sich der Initiator automatisch mit allen Targets
aus /etc/iscsi.conf verbindet, fügen
Sie folgendes in /etc/rc.conf
hinzu:iscsictl_enable="YES"
iscsictl_flags="-Aa"