diff --git a/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml
index 63da2d78e1..0811fb661f 100644
--- a/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml
+++ b/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml
@@ -1,3004 +1,3004 @@
SGML-Dokumente erstellenIn diesem Kapitel werden die beiden vom FDP eingesetzen
Auszeichnungssprachen HTML und DocBook behandelt. Hierbei
beschränkt sich dieses Kapitel auf die Elemente, die bei der
täglichen Arbeit am ehesten zum Einsatz kommen werden.Beide Sprachen besitzen eine große Anzahl von Elementen.
Das erschwert es, das richtige Element in der richtigen Situation
auszuwählen. Aus diesem Grund werden zu jedem Element auch
immer Beispiele angeboten, die den richtigen Einsatz des Elements
verdeutlichen sollen.Es ist nicht das Ziel dieses Kapitels möglichst viele
Elemente beider Sprachen zu behandeln – dies wäre nur
eine Wiederholung der eigentlichen Sprachreferenz. Sofern es
Unklarheiten zur Verwendung einzelner Elemente und Auszeichnung
von bestimmten Sachverhalten gibt, können diese an &a.doc;
geschickt werden.Fluß- kontra BlockelementeWenn im folgenden von
Flußelementen die Rede ist, sind
damit Elemente gemeint, die in einem Blockelement auftreten
können und keinen Zeilenumbruch hervorrufen.
Blockelemente hingegen erzeugen unter
anderem einen ZeilenumbruchDie englische
Bezeichnung inline element
wurde in Anlehnung an das Wort Fließtext
mit Flußelement
übersetzt..HTMLHTML, die HyperText Markup
Language, ist die Auszeichnungssprache des
Internets. Weitere Informationen zu HTML finden sich unter
.Sie kommt bei der Erstellung der Webseiten des
FreeBSD-Projektes zum Einsatz. Für technische Dokumentationen
sollte HTML jedoch nicht eingesetzt werden, da DocBook eine
größere und bessere Auswahl an Elementen bietet. Folglich
sollte HTML nur für die FreeBSD-Webseiten verwendet werden.Die HTML-Spezifikation liegt bis jetzt in mehreren Versionen
vor: 1, 2, 3.0, 3.2 und (die aktuelle) 4.0. Von letzterer
existieren zwei Varianten: streng (HTML 4.0
Strict) und locker (HTML 4.0
Transitional).Die HTML-DTDs sind über den Port textproc/html verfügbar und werden
automatisch als Teil des Metaports textproc/docproj
mitinstalliert.Formale Öffentliche BezeichnerDa es mehrere Version von HTML gibt, existieren auch
mehrere FÖPs, zu denen ein HTML-Dokument konform
erklärt werden kann. Die Mehrzahl der sich auf der
FreeBSD-Webseite befindenen HTML-Seiten sind zu der lockeren
Version von HTML 4.0 konform.PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"Die Elemente head und
bodyEin HTML-Dokument unterteilt sich normalerweise in zwei
Bereiche: head und body. Der
Kopf (head) enthält Metadaten
wie den Dokumententitel und Angaben zum Autor. Der Rumpf
(body) umfaßt den eigentlichen
Dokumenteninhalt, der für den Leser bestimmt ist. In einem
HTML-Dokument werden diese Bereiche über die Elemente
head und body
voneinander abgegrenzt. Beide sind Kinder des Wurzelelementes
html.Die Struktur eines HTML-Dokumentes<html>
<head>
<title>Der Dokumententitel</title>
</head>
<body>
…
</body>
</html>BlockelementeÜberschriftenHTML kennt sechs verschiedene Elemente, mit denen
Überschriften ausgezeichnet werden können. Das bekannteste
Element ist h1, das sich am Anfang der
Überschriftenhierarchie befindet. h1
folgen die Überschriftenelemente h2 bis
h6. Der Inhalt von
hN stellt den
Text der Überschrift dar.h1, h2…Fügen Sie in eine der existierenden Übungsdateien folgendes ein:Erstes Kapitel
Das ist die Überschrift des ersten Kapitels
Das ist die Überschrift des ersten Unterkapitels
Das ist die Überschrift des zweiten Kapitels
]]>Eine HTML-Seite sollte immer nur eine Überschrift
h1 haben. Dieser Überschrift können
beliebig viele Kapitel mit einer Überschrift
h2 folgen, die selbst wiederum eine
beliebige Anzahl von Kapiteln mit einer Überschrift
h3 enthalten können. Diese
Verschachtelung setzt sich bis zu Kapiteln mit einer
h6-Überschrift fort. Es sollte vermieden
werden, Elemente in der Überschriftenhierarchie
auszulassen.Falsche Verschachtelung von ÜberschriftenFügen Sie in eine der existierenden Übungsdateien folgendes ein:Erstes Kapitel
Unterkapitel
]]>AbsätzeAbsätze können in HTML mit Hilfe des Elementes
p ausgezeichnet werden.Absätze mit dem Element pFügen Sie in eine der existierenden Übungsdateien folgendes ein:Das hier, das ist ein Absatz. Absätze können
andere Elemente enhalten.
]]>
BlockzitateEin Blockzitat ist ein etwas umfangreicheres Zitat aus
einem anderen Text, das nicht zum aktuellen Absatz
gehört.BlockzitatFügen Sie in eine der existierenden Übungsdateien
folgendes ein:
Artikel 1: Menschenwürde; Grundrechtsbindung der
staatlichen Gewalt
Die Würde des Menschen ist unantastbar. Sie zu achten
und zu schützen ist Verpflichtung aller staatlichen
Gewalten.
Das Deutsche Volk bekennt sich darum zu unverletzlichen
und unveräußerlichen Menschenrechten als Grundlage jeder
menschlichen Gemeinschaft, des Friedens und der
Gerechtigkeit in der Welt.
Die nachfolgenden Grundrechte binden Gesetzgebung,
vollziehende Gewalt und Rechtsprechung als
unmittelbar geltendes Recht.
]]>ListenHTML kennt drei Arten von Listen: sortierte, unsortierte
und Definitionslisten. Ein Eintrag in einer sortierten Liste
wird üblicherweise mit einer Nummer versehen, Einträge in
unsortierten Listen hingegen mit einem Aufzählungspunkt.
Definitionslisten wiederum bestehen aus zwei Teilen: Der
erste enthält den Begriff der definiert werden soll und der
zweite dessen Erläuterung.Sortierte Listen werden mit dem Element
ol (für
ordered
list) ausgezeichnet,
unsortierte Listen mit ul (für
unordered
list) und
Definitionslisten mit dl.Listenpunkte sortierter und unsortierter Listen werden
mit dem Element li ausgezeichnet,
welches Text oder andere Blockelemente enthalten kann.
Begriffe, die in einer Definitionslisten enthalten sind,
werden mit dem Element dt (für
definition
term) ausgezeichnet.
Die Erklärung zu diesem Begriff wird mit Hilfe des Elementes
dd (für definition
description) markiert. So wie
li, kann das Element
dd ebenfalls andere Blockelemente
aufnehmen.Listen mit ul und
ol erstellenFügen Sie in eine der existierenden Übungsdateien
folgendes ein:Jetzt folgt eine unsortierte Liste. Wahrscheinlich werden
die einzelnen Einträge mit einem vorangehenden Punkt dargestellt.
Erster Eintrag
Zweiter Eintrag
Dritter Eintrag
Die zweite Liste ist sortiert und ihre Einträge bestehen aus mehreren Absätzen.
Jeder Listeneintrag ist nummeriert.
Das ist der erste Eintrag mit nur einem Absatz.
Das ist der erste Absatz des zweiten Eintrags.
Und das ist der zweite Absatz des zweiten Eintrags.
Der dritte Eintrag besteht ebenfalls nur aus einem Eintrag.
]]>Definitionslisten mit dl erstellenFügen Sie in eine der existierenden Übungsdateien folgendes ein:
Erster Begriff
Erster Absatz der Erklärung
Zweiter Absatz der Erklärung.
Zweiter Begriff
Erster Absatz der Erklärung.
Dritter Begriff
Erster Absatz der Erklärung zum dritten Begriff.
]]>Vorformatierter TextIn einigen Fällen ist es gewollt, dass die Formatierung
eines Textes im Quelldokument erhalten bleibt, damit der
Leser diesen genau so sieht, wie ihn der Autor erstellt hat.
In der HTML-Spezifikation ist dafür das Element
pre vorgesehen, welches dafür sorgt, dass
Zeilenumbrüche erhalten bleiben und Leerzeichen nicht
zusammengefaßt werden. Browser verwenden für den
Inhalt des Elementes pre
üblicherweise eine Fixschrift.Vorformatierten Text mit pre erstellenDer Originaltext einer E-Mail läßt sich beispielsweise
wie folgt einbinden: From: nik@FreeBSD.org
To: freebsd-doc@FreeBSD.org
Subject: Neue Version verfügbar
Es ist eine neue Version der Fibel für neue Mitarbeiter am
FreeBSD-Dokumentationsprojekt verfügbar:
<URL:http://people.FreeBSD.org/~nik/primer/index.html>
Kommentare und Anmerkungen sind willkommen.
N]]>Beachten Sie, dass < und
& nach wie vor als Sonderzeichen
erkannt werden. Daher wird in diesem Beispiel auch
< an Stelle von
< verwendet. Aus dem gleichen
Grund wurde auch > an Stelle
von > verwendet. Achten Sie also
stets auf Sonderzeichen, wenn Sie normalen Text
aus E-Mails, Programmcode oder einer anderen Quelle
kopieren.TabellenDie meisten Textbrowser, beispielsweise Lynx, können
Tabellen nicht besonders gut darstellen. Deshalb sollten
Auszeichnungsalternativen in Betracht gezogen werden, um
eine angemessene Darstellung sicherzustellen.Tabellen lassen sich in HTML mit Hilfe des Elements
table auszeichnen. Eine Tabelle setzt
sich aus einer oder mehreren Zeilen (tr)
zusammen, von denen jede mindestens eine Zelle
(td) enthält. Zellen können wiederum
andere Blockelemente, wie Absätze oder Listen, enthalten.
Auch können sie auch andere Tabellen aufnehmen, wobei die
Verschachtelungstiefe unbegrenzt ist. Soll die Tabellenzelle
nur einen Textabsatz enthalten, ist es nicht notwendig den
Text mit einem p zu umschließen.Einfache Tabelle mit tableFügen Sie in eine der existierenden Übungsdateien folgendes ein:Eine einfache 2x2 Tabelle.
Obere linke Zelle
Obere rechte Zelle
Untere linke Zelle
Untere rechte Zelle
]]>HTML kennt die Möglichkeit, dass sich eine
Zelle mehrere Zeilen und/oder Spalten erstrecken kann.
Sollen beispielsweise mehrere Spalten zusammenfassen werden,
kann dies mit mit Hilfe des Attributes
colspan erreicht werden, indem man ihm
die Anzahl der zusammenzufassenden Spalten zuweist.
Ähnliches gilt für die Zusammenfassung von Zeilen:
Hierfür wird dem Attribut rowspan
die Anzahl der zusammenzufassenden Zeilen zugewiesen.Anwendung des Attributes rowspanDiese Tabelle besteht aus einer langen Zelle auf der
linken Seite und zwei kleineren Zellen auf der rechten.
Lang und dünn
Obere Zelle
Untere Zelle
]]>Anwendung des Attributes colspanEine breite Zeile oben und zwei schmalere Zeilen
darunter.
Obere Zelle
Linke untere Zelle
Rechte untere Zelle
]]>Gemeinsame Anwendung der Attrbute rowspan und
colspanEine Tablle mit 3-mal-3 Zellen. Oben links
werden 2 mal 2 Zelle zusammengezogen.
Große obere linke Zelle
Obere rechte Zelle
Mittlere rechte Zelle
Untere linke Zelle
Untere mittlere Zelle
Untere rechte Zelle
]]>FlußelementeHervorheben von InformationSollen sich bestimmte Informationen von anderen optisch
abheben, kann dies mit den HTML-Tags
strong und em erreicht
werden. strong stellt dabei eine
stärkere Hervorhebung als em dar,
wobei mit strong ausgezeichnete Elemente
fett und mit em ausgezeichnete Elemente
kursiv dargestellt werden. Allerdings ist diese Aussage
nicht verläßlich, da die Darstellung vom Browser
abhängig ist.Text mit em und strong
hervorhebenDieses Wort ist hervorgehoben,
während dieses noch stärker hervorgehoben ist.]]>Fett- und SchrägschriftDa mittels HTML auch Festlegungen über die
Darstellung getroffen werden können, gibt es die
Möglichkeit direkt zu bestimmen, dass bestimmte
Inhalte fett oder kursiv dargestellt werden sollen. Mit
b eingefaßte Inhalte werden fett
und mit i eingefaßte kursiv
dargestellt.Text mit b und i
formatierenDieses Wort wird fett dargestellt,
während dieses kursiv dargestellt wird.]]>Nicht-proportionale Schrift für TexteDer Tag tt erlaubt es,
Text in einer schreibmaschinenähnlichen
Schrift darzustellen.Nicht-proportionale Schrift mit
ttDieses Dokument wurde ursprünglich von
Nik Clayton geschrieben. Nick Clayton kann unter der E-Mail-Adresse
nik@FreeBSD.org erreicht werden.]]>Änderung der SchriftgrößeHTML bietet auch Möglichkeiten, um Einfluß
auf die Schriftgröße zu nehmen, das heißt,
zu bestimmen, ob die Schrift größer oder kleiner
als die Standardschrift dargestellt werden soll. Es gibt
drei verschiedene Wege, dies zu erreichen:Mittels der Tags big und
small kann die
Darstellungsgröße des eingeschlossenen Textes
vergrößert respektive verkleinert werden.
HTML erlaubt es zudem, diese Tags zu verschachteln, so
dass auch <big><big>Das ist
wesentlich
größer.</big></big>
geschrieben werden kann.Das gleiche Ergebnis kann über die Zuweisung der
Werte 1 und -1 an
das Attribut size
des Tags font erreicht werden. Diese
Vorgehensweise sollte allerdings als veraltet betrachtet
werden, da der Einsatz eines CSS hierfür die bessere
Lösung darstellt.Über die Zuweisung von absoluten Werten im Bereich
von 1 bis 7 an das
Attribut size des Tags
fontDer Standardwert für size ist
3.. Diese
Herangehensweise ist ebenfalls veraltet und sollte nicht
mehr angewandt werden.Schriftgröße ändern mit
big, small und
fontDie folgenden HTML-Schnipsel bewirken alle das gleiche:Dieser Text ist etwas kleiner. Dieser
jedoch ein wenig größer.
Dieser Text ist etwas kleiner. Dieser
jedoch ein wenig größer.
Dieser Text ist etwas kleiner. Dieser
jedoch ein wenig größer.
]]>LinksBei Links handelt es sich ebenfalls Flußelemente.Auf andere Dokumente im WWW verweisenUm auf ein anderes Dokument im WWW zu verweisen,
müssen Sie die URL dieses Dokuments kennen.Links auf andere Dokumente im WWW werden in HTML durch
den Tag a und dessen Attribute href, das die Zieladresse
enthält, angelegt. Der Inhalt des Elementes wird selbst
zum Link und seine Darstellung erfolgt verschieden vom
übrigen Text. Meist geschieht das durch eine andere
Schriftfarbe oder dadurch, dass der Linktext
unterstrichen wird.<a href="..."> benutzenWeitere Informationen stehen auf der
FreeBSD-Webseite zur Verfügung.]]>Beim Aufruf dieses Links wird das referenzierte Dokument vom
Browser geladen und mit dessen Seitenanfang dargestellt.Auf bestimmte Dokumentenabschnitte verweisenHTML unterstützt neben einfachen Links auch solche, die
auf einen bestimmten Abschnitt innerhalb eines Dokumentes
verweisen. Dazu müssen die Abschnitte, auf die verwiesen
werden soll, mit Hilfe von sogenannten Ankern
markiert werden. Diese Anker können ebenfalls mit Hilfe des
Tags a gesetzt werden, nur das anstelle
von href das Attribut
name gesetzt werden
muss.Anwendung von <a name="...">Auf diesen Absatz kann mit
Hilfe seines Namens (absatz1) verwiesen werden.]]>Um auf einen so gekennzeichneten Abschnitt zu verweisen,
muss die URL des Dokumentes um das Zeichen
# und den Namen des Zielankers erweitert
werden.Auf einen Abschnitt eines anderen Dokumentes
verweisenFür dieses Beispiel wird davon ausgegangen, dass der mit
absatz1 gekennzeichnete Absatz sich in
der HTML-Datei foo.html
befindet.Weitere Informationen können im
ersten Absatz der Datei
foo.html gefunden werden.]]>Die DocBook DTDDocBook wurde ursprüglich von HaL Computer Systems and
O'Reilly & Associates als DTD für das Erstellen von
technischen Dokumenten entwickelt
Einen kurzen historischen Abriss finden Sie unter
http://www.oasis-open.org/docbook/intro.shtml#d0e41..
Seit 1998 wird es vom
DocBook Technical Committee gewartet. DocBook ist sehr
stark auf die Beschreibung von Inhalten, und nicht auf die
Darstellung des Inhalts ausgerichtet. Damit steht es im Gegensatz
zu LinuxDoc und HTML.Formelle und informelle ElementeEinige Elemente der DocBook DTD sind in zwei Varianten
vorhanden: formell und
informell. Üblicherweise besitzt die
formelle Variante einen Titel, dem der eigentliche
Elementeninhalt folgt. Die informelle Variante hingegen hat
keinen Titel.Die DocBook DTD ist in der Ports-Sammlung im Port textproc/docbook enthalten und wird
bei der Installation des Metaports textproc/docproj automatisch
mitinstalliert.Die FreeBSD-ErweiterungenFür das FDP wurde die DocBook DTD durch das
FreeBSD-Dokumentationsproject um zusätzliche Elemente
erweitert, um damit präzisiere
Auszeichnungsmöglichkeiten zur Verfügung zu haben.
Sofern im folgenden FreeBSD-spezifische Elemente genutzt
werden, wird explizit darauf hingewiesen werden.Wenn nachfolgend im Text der Begriff
DocBook verwendet wird, ist damit die durch das
FDP erweiterte Version der DocBook DTD gemeint.Die durch das FDP vorgenommenen Erweiterungen sind nicht
FreeBSD-spezifisch. Sie wurden lediglich vorgenommen, da sie
für die Arbeit des FDPs als nützlich erschienen.
Für den Fall, das in den anderen *nix-Lagern (NetBSD,
OpenBSD, Linux,…) Interesse daran besteht, gemeinsam
eine Standarderweiterung für die DocBook DTD zu
entwickeln, kann mit dem &a.doceng; Verbindung aufgenommen
werden.Zum jetzigen Zeitpunkt sind die FreeBSD-Erweiterungen
nicht Bestandteil der Ports-Sammlung. Sie werden im
&os;-CVS-Archiv (doc/share/sgml/freebsd.dtd)
verwaltet.Formelle Öffentliche BezeichnerIn Übereinstimmung mir der DocBook-Richtlinie zur
Erstellung von Bezeichnern für DocBook-Erweiterungen lautet
der Bezeichner der erweiterten FreeBSD-Variante:PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN"Die Struktur von DocBook-DokumentenDocBook erlaubt es, Dokumente auf verschiedene Weise zu
strukturieren. Innerhalb des FDPs werden hauptsächlich zwei
Arten von DocBook-Dokumenten verwendet: Buch und Artikel.
Beide unterscheiden sich darin, dass ein Buch auf der obersten
Ebene durch chapter-Elemente strukturiert
wird. Sollte das noch nicht ausreichend sein, können die
einzelnen Kapitel eines Buches mit Hilfe des Elementes
part in Teile aufgespalten werden. Das
Handbuch ist beispielsweise auf diese Weise aufgebaut.Kapitel (chapter) können weiterhin in
Unterkapitel unterteilt werden. Diese werden durch die
Elemente sect1 ausgezeichnet. Soll ein
Unterkapitel selbst weitere Unterkapitel enthalten, kann das
über das Element sect2 geschehen. Diese
Unterteilung kann bis zur Tiefe von fünf Unterkapiteln –
über die Elemente sect3,
sect4 und sect5 –
fortgeführt werden. Der eigentliche Inhalt, um den es ja in
dem Artikel oder Buch geht, wird unterhalb der hier genannten
Elemente eingefügt.Vom Aufbau her ist ein Artikel ist einfacher strukturiert
als ein Buch. So kann ein Artikel beispielsweise keine Kapitel
(chapter) enthalten. Stattdessen kann der
Inhalt eines Artikels nur durch die schon bekannten
sectN-Elemente
in einen oder mehrere Abschnitte gegliedert werden.
Überlegen Sie sich vor dem Schreiben eines Textes,
ob der zu schreibende Text am
besten als Buch oder als Artikel angelegt wird. Artikel eignen
sich besser für Texte, die nicht in mehrere Kapitel
aufgeteilt werden müssen und mit einem Umfang von
ungefähr 20 bis 25 Seiten vergleichsweise kurz sind.
Natürlich ist das nur eine Richtlinie. Bücher sind
dementsprechend am besten für lange Texte geeignet, die
sich sinnvoll in Kapitel unterteilen lassen und
möglichweiser noch Anhänge und ähnliches
enthalten können.Alle Tutorien von
FreeBSD sind als Artikel verfaßt, während
hingegen die FreeBSD-FAQ und das FreeBSD-Handbuch als
Bücher verfaßt wurden.Bücher schreibenDer Inhalt eines Buches wird in einem
book-Element abgelegt. Neben dem
Textteil des Buches kann dieses Element weitergehende
Informationen über das Buch selbst,
wie Meta-Informationen zum Erstellen eines
Stichwortverzeichnisses oder zusätzliche
Inhalte zum Erstellen einer Titelei, enthalten. Diese
zusätzlichen Inhalte sollten in einem
bookinfo-Element abgelegt werden.Buchvorlage book mit
bookinfo<book>
<bookinfo>
<title>Titel</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
<affiliation>
<address><email>E-Mail-Adresse</email></address>
</affiliation>
</author>
<copyright>
<year>1998</year>
<holder role="mailto:E-Mail-Adresse">Vollständiger Name</holder>
</copyright>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Kurze Zusammenfassung des Buchinhaltes.</para>
</abstract>
</bookinfo>
…
</book>Artikel schreibenDer Inhalt eines Artikels wird in einem
article-Element abgelegt. Neben
dem Textteil kann dieses Element weitere Teile,
wie Meta-Informationen zum Erstellen eines
Stichwortverzeichnisses oder zusätzliche
Inhalte zum Erstellen einer Titelei, enthalten.
Analog zu einem Buch, sollten diese Informationen in einem
articleinfo-Element abgelegt
werden.Artikelvorlage article mit
articleinfo<article>
<articleinfo>
<title>Titel</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
<affiliation>
<address><email>E-Mail-Adresse</email></address>
</affiliation>
</author>
<copyright>
<year>1998</year>
<holder role="mailto:E-Mail-Adresse">Vollständiger Name</holder>
</copyright>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Kurze Zusammenfassung des Artikelinhalts.</para>
</abstract>
</articleinfo>
…
</article>KapitelKapitel werden mit dem
chapter-Element angelegt und müssen ein
title-Element enthalten. Verwendet werden
können sie nur in Büchern.Ein einfaches KapitelKapitelüberschrift
…
]]>Kapitel können nicht leer sein. Nebem einem
title-Element müssen sie weiteren Inhalt
beinhalten. Falls ein leeres Kapitel benötig wird, kann dies
durch das Einfügen eines leeren Absatzes
(para) erreicht werden.Ein leeres KapitelDas ist ein leeres Kapitel
]]>UnterkapitelBücher werden auf der obersten Gliederungsebene
durch chapter-Elemente in Kapitel
unterteilt. Eine weitergehende Untergliederung kann durch
das Anlegen von Unterkapiteln erreicht werden. Im Gegensatz
zu Kapiteln, die durch chapter-Elemente
ausgezeichnet werden, erfolgt die Auszeichnung von
Unterkapitel mit dem Element
sectn. Das
n in Elementnamen trifft eine
Aussage über die Gliederungstiefe, auf der sich das
Unterkapitel befindet. Ein sect1-Element
kann mehrere Elemente vom Typ sect2
enthalten, die die Unterkapitel der
nächsten Gliederungsebene darstellen.
sect5 ist das letzte Element, das auf
diese Art zur Gliederung eingesetzt werden kann.UnterkapitelEin BeispielkapitelEin beliebiger Text.Erster Abschnitt (1.1)
…
Zweiter Abschnitt (1.2)Erster Unterabschnitt (1.2.1)Erster Unterunterabschnitt (1.2.1.1)
…
Zweiter Unterabschnitt (1.2.2)
…
]]>Die Unterkapitel dieses Beispiels wurden zu
Demonstrationszwecken manuell durchnummeriert. In
normalen Dokumenten wird diese Aufgabe von
den Stylesheets übernommen.Bücher mittels part
unterteilenIn den Fällen, in denen die Unteilung eines Buches in
Kapitel nicht ausreichend ist, können mehrere
Kapitel mit dem Element part zu
einem Teil zusammengefasst werden.EinführungÜberblick
…
Was ist FreeBSD?
…
Die Geschichte von FreeBSD
…
]]>BlockelementeAbsätzeDocBook kennt drei Arten von Absätzen: Absätze
mit Überschrift (formalpara),
normale Absätze (para) und einfache
Absätze (simpara).Normale Absätze und einfache Absätze
unterscheiden sich dadurch, dass innerhalb von
para Blockelemente erlaubt sind,
innerhalb von simpara hingegen nicht. Es
ist empfehlenswert, para den Vorzug
zu geben.Absatz mit paraDas ist ein Absatz. Absätze können fast jedes andere
Element aufnehmen.]]>Darstellung:Das ist ein Absatz. Absätze können fast jedes andere
Element aufnehmen.BlockzitateBlockzitate sind textlich umfangreichere Zitate aus
einem anderen Text, die nicht innerhalb des aktuellen
Absatzes angezeigt werden sollen. Wahlweise können
Blockzitate eine Überschrift haben und die Zitatquelle
nennen.blockquoteEin Auszug aus dem Grundgesetz:
Menschenwürde; Grundrechtsbindung der staatlichen GewaltAus dem GrundgesetzDie Würde des Menschen ist unantastbar. Sie zu achten
und zu schützen ist Verpflichtung aller staatlichen
Gewalten.Das Deutsche Volk bekennt sich darum zu unverletzlichen
und unveräußerlichen Menschenrechten als Grundlage jeder
menschlichen Gemeinschaft, des Friedens und der
Gerechtigkeit in der Welt.Die nachfolgenden Grundrechte binden Gesetzgebung,
vollziehende Gewalt und Rechtsprechung als
unmittelbar geltendes Recht.
]]>Darstellung:
Menschenwürde; Grundrechtsbindung der
staatlichen GewaltAus dem GrundgesetzDie Würde des Menschen ist unantastbar. Sie
zu achten und zu schützen ist Verpflichtung
aller staatlichen Gewalten.Das Deutsche Volk bekennt sich darum zu
unverletzlichen und unveräußerlichen
Menschenrechten als Grundlage jeder menschlichen
Gemeinschaft, des Friedens und der Gerechtigkeit in
der Welt.Die nachfolgenden Grundrechte binden
Gesetzgebung, vollziehende Gewalt und Rechtsprechung
als unmittelbar geltendes Recht.
Tipps, Anmerkungen, Warnungen, wichtige Informationen
und RandbemerkungenIn bestimmten Fällen kann es nützlich sein,
dem Leser zusätzliche Informationen zu geben, die sich
vom Haupttext abheben, damit der Leser sie besser wahrnimmt.
Abhängig von der Art der Information, können
solche Stellen mit einem der Elemente tip
(für Tipps), note (für
Anmerkungen), warning (für
Warnungen), caution (für besonders
ernstzunehmende Warnungen) und important
(für wichtige Anmerkungen) ausgezeichnet werden. Trifft
keines dieser Element für die auszuzeichnende Stelle
zu, sollte diese mit dem Element sidebar
ausgezeichnet werden.Da die richtige Einordnung einer auszuzeichnenden
Textstelle nicht immer leicht zu treffen ist, werden in der
DocBook-Dokumentation folgende Empfehlungen gegeben:Eine Anmerkung (note) ist eine
Information, die von jedem Leser beachtet werden
sollte.Eine wichtige Anmerkung
(important) eine Variation einer
Anmerkung.Eine Warnung (warning)
betrifft einen möglichen Hardwareschaden
oder weist auf eine Gefahr für Leib und Leben
hin.Eine besonders ernstzunehmende Warnung
(caution) betrifft einen möglichen
Datenverlust oder Softwareschaden.warningWenn Sie FreeBSD auf Ihrer Festplatte installieren,
kann es sein, daß Sie Windows nie mehr benutzen wollen.
]]>Eine Warnung wird wie folgt dargestellt:Wenn Sie FreeBSD auf Ihrer Festplatte installieren,
kann es sein, dass Sie Windows nie mehr benutzen wollen.Listen und HandlungsanweisungenListen sind ein oft gebrauchtes Hilfsmittel, wenn es
darum geht, Informationen für den Benutzer
übersichtlich darzustellen oder eine Abfolge von
Arbeitsschritten zu beschreiben, die notwendig sind, um ein
bestimmtes Ziel zu erreichen. Zur Auszeichnung von Listen
stellt DocBook die Elemente itemizedlist,
orderedlist und
procedure zur Verfügung.DocBook kennt noch andere Elemente für die
Auszeichnung von Listen, die an dieser Stelle jedoch
nicht behandelt werden..itemizedlist und
orderedlist ähneln sehr stark ihren
HTML-Gegenstücken ul und
ol. Beide Listenarten müssen
mindestens ein Element listitem
enthalten. Das listitem Element
muss mindestens ein weiteres Blockelement
enthalten.procedure unterscheidet sich ein
wenig von den vorhergehenden. Es enthält
step-Elemente, die wiederum
step- oder
substel-Elemente enthalten können.
Ein step-Element kann nur Blockelemente
aufnehmen.itemizedlist,
orderedlist und
procedureDas ist das erste Listenelement.Das ist das zweite Listenelement.Das ist das erste Aufzählungselement.Das ist das zweite Aufzählungselement.Machen Sie zuerst dies.Und dann machen Sie das..Und jetzt noch das…]]>Darstellung:Das ist das erste Listenelement.Das ist das zweite Listenelement.Das ist das erste Aufzählungselement.Das ist das zweite Aufzählungselement.Machen Sie zuerst dies.Und dann machen Sie das..Und jetzt noch das…Dateiinhalte auszeichnenTechnische Dokumente enthalten oft auch
Konfigurationsbeispiele oder Quellcodeschnipsel. Zur
Auszeichnung dieser Inhalte, stellt Docbook das Element
programmlisting zur Verfügung. Im
Gegensatz zu anderen DocBook-Elementen wird der
Elementinhalt von programmlistingnicht normalisiert, das heißt,
dass alle Leerzeichen, Tabulatoren und
Zeilenumbrüche unverändert übernommen werden.
Aus diesem Grund ist es unter anderem wichtig, dass
sich der öffende Tag in der selben Zeile wie der Anfang
des darzustellenden Textes befindet. Gleiches gilt für
den schließenden Tag: Er muss sich am Ende der
letzten Zeile befinden. Wird das nicht beachtet, kann es
sein, dass unerwartete Leerzeichen und Leerzeilen in
der Ausgabe auftauchen.programlistingAm Ende sollte Ihr Programm wie folgt
aussehen:
#include <stdio.h>
int
main(void)
{
printf("Hallo Welt!\n");
}]]>Die spitzen Klammern der
#include-Anweisung können nicht direkt
verwendet werden, sondern müssen über ihre Entitäten
eingebunden werden.Darstellung:Am Ende sollte Ihr Programm wie folgt aussehen:#include <stdio.h>
int
main(void)
{
printf("Hallo Welt!\n");
}TextanmerkungenTextanmerkungen
auf Englisch:
callout
sind ein Mechanismus, um auf bestimmte Stellen in einem
vorhergehenden Beispiel oder Text zu verweisen.Um solche Verweise anzulegen, müssen die betreffenden
Stellen in den Beispielen
(programlisting,
literallayout, …) mit
co-Elementen markiert werden, wobei jedes
Element ein eindeutiges id-Attribut
besitzen muss. Anschließend sollte ein
calloutlist-Element eingefügt werden,
dessen Elemente sich auf die co-Elemente
des Beispiels beziehen und die jeweiligen Anmerkungen
enthalten.Das co- und das
calloutlist-ElementAm Ende sollte Ihr Programm wie folgt
aussehen:
#include <stdio.h>
int
main(void)
{
printf("Hallo Welt\n");
}Bindet die Headerdatei stdio.h ein.Bestimmt den Typ des Rückgabewertes von main().Ruft die Funktion printf() auf, die
Hallo Welt! auf der Standardausgabe ausgibt]]>Darstellung:Am Ende sollte Ihr Programm wie folgt aussehen:#include <stdio.h>
int
main(void)
{
printf("Hallo Welt\n");
}Bindet die Headerdatei stdio.h ein.Bestimmt den Typ des Rückgabewertes von main().Ruft die Funktion printf() auf, die
Hallo Welt! auf der Standardausgabe ausgibtTabellenIm Gegensatz zu HTML ist es nicht notwendig, Tabellen zu
Layoutzwecken einzusetzen, da die Layoutaufgabe von den
Stylesheets übernommen wird. Stattdessen sollten Tabellen
nur für die Auszeichnung von Daten in Tabellenform genutzt
werden.Vereinfacht betrachtet (für Details sollte die
DocBook-Dokumentation zu Rate gezogen werden) besteht eine
Tabelle, die entweder als formelle oder als informelle
Tabelle angelegt werden kann, aus einem
table-Element. Dieses Element selbst
beinhaltet mindestens ein Element tgroup,
das über ein Attribut die Spaltenanzahl der Tabelle
bestimmt. Innerhalb des Elementes tgroup
kann sich ein Element thead mit den
Spaltenüberschriften und ein Element
tbody mit dem eigentlichen Tabelleninhalt
befinden. Beide Elemente beinhalten
row-Elemente, die wiederum
entry-Elemente beinhalten. Jedes
entry-Element stellt eine einzelne
Tabellenzelle dar.Tabellen mittels informaltable
auszeichnenSpaltenüberschrift 1Spaltenüberschrift 2Zeile 1, Spalte 1Zeile 1, Spalte 2Zeile 2, Spalte 1Zeile 2, Spalte 2
]]>Darstellung:Spaltenüberschrift 1Spaltenüberschrift 2Zeile 1, Spalte 1Zeile 1, Spalte 2Zeile 2, Spalte 1Zeile 2, Spalte 2Verwenden Sie stets das Attribut pgwide
mit dem Wert 1, wenn Sie das Element
informaltable benutzen. Ein Bug des
Internet Explorers verhindert ansonsten die korrekte
Darstellung dieser Tabellen.Soll die Tabelle keinen Rand haben, kann das Attribut
frame mit dem Wert
none dem Element
informaltable hinzugefügt werden
(<informaltable frame="none">)).Tabelle mit Attribut
frame="none"Darstellung:Spaltenüberschrift 1Spaltenüberschrift 2Zeile 1, Spalte 1Zeile 1, Spalte 2Zeile 2, Spalte 1Zeile 2, Spalte 2Beispiele für den LeserOft gilt es, für dem Benutzer Beispiele
zu geben, die er dann selber nachvollziehen soll. Meist
handelt es sich dabei um interaktive Dialoge zwischen Mensch
und Maschine: Der Benutzer gibt einen Befehl ein und
erhält eine Antwort vom System. Ein Satz
von speziellen Elementen und Entitäten unterstützt
den Autor bei der Auszeichnung solcher Textstellen:screenGedacht zur Auszeichnung von Bildschirminhalten.
Im Unterschied zu anderen Elementen werden Leerzeichen
innerhalb des Elementes screen
unverändert übernommen.prompt,
&prompt.root; und
&prompt.user;Eingabeaufforderungen des Rechners
(Betriebssysten, Shell oder Anwendung) sind ein häufig
auftretender Teil dessen, was der Benutzer auf dem
Bildschirm zu sehen bekommt. Sie sollten mit
prompt ausgezeichnet werden.Ein Spezialfall sind die beiden
Eingabeaufforderungen der Shell für normale
Benutzer und den Superuser root.
Jedesmal wenn auf eine von diesen beiden Nutzerrollen
hingewiesen werden soll, sollte entweder
&prompt.root; oder
&prompt.user; eingesetzt
werden. Beide Entitäten können auch
außerhalb von screen
verwendet werden.&prompt.root; und
&prompt.user; sind
FreeBSD-spezifische Erweiterungen der DocBook DTD
und nicht in der originalen DocBook DTD
enthalten.userinputDas Element userinput ist
für die Auszeichnung von Benutzereingaben
gedacht.screen, prompt
und userinput&prompt.user; ls -1
foo1
foo2
foo3
&prompt.user; ls -1 | grep foo2
foo2
&prompt.user; suPassword:
&prompt.root; cat foo2
This is the file called 'foo2']]>Darstellung:&prompt.user; ls -1
foo1
foo2
foo3
&prompt.user; ls -1 | grep foo2
foo2
&prompt.user; suPassword:
&prompt.root; cat foo2
This is the file called 'foo2'Obgleich der Inhalt der Datei
foo2 in dem obigen Beispiel angezeigt
wird, sollte dieser nicht mit
programlisting ausgezeichnet werden.
Vielmehr sollte programlisting einzig
und allein für die Darstellung von Dateifragmenten
außerhalb von Benutzeraktionen gewählt
werden.FlußelementeHervorhebungenWenn es darum geht bestimmte Wörter oder Textstellen
hervorzuheben, sollte dafür das Element
emphasis verwendet werden. Das so
ausgezeichnete Text wird dann kursiv oder fett dargestellt;
im Falle einer Sprachausgabe würde es anders betont
werden.Im Gegensatz zu den HTML mit seinen Elementen
b und i, kennt DocBook
keinen Weg, um diese Darstellung zu
ändernAnmerkung des
Übersetzers: Hier sollte man sich noch einmal ins
Gedächtnis rufen, dass mittels der DocBook DTD nur
Inhalte ausgezeichnet werden und nicht das Layout
bestimmt wird.. Handelt es sich bei
dem darzustellenden um eine wichtige Information, kann
alternativ important verwendet
werden.Das Element emphasisFreeBSD ist zweifelslos das führende
Unix-artige Bestriebssystem für die Intel-Plattform.]]>Darstellung:FreeBSD ist zweifelslos das führende
Unix-artige Bestriebssystem für die Intel-Plattform.ZitateUm einen Auszug aus einer anderen Quelle zu zitieren
oder kenntlich zu machen, dass eine bestimmte Wendung
im übertragenen Sinne zu verstehen ist, kann der
betreffende Text mit Hilfe des Elementes
quote ausgezeichnet werden. Innerhalb von
quote können die meisten der
normalerweise zur Verfügung stehenden Elemente genutzt
werden.Richtig zitierenEs sollte immer sichergestellt werden, dass die Suche die Grenzen
zwischen lokaler und öffentlicher Administration
(RFC 1535) einhält.]]>Darstellung:Es sollte immer sichergestellt werden, das die Suche
die Grenzen zwischen lokaler und öffentlicher
Administration (RFC 1535) einhält.Tasten, Maustasten und TastenkombinationenDas Element keycap beschreibt
eine bestimmte Taste der Tastatur.
Für die Auszeichnung von Maustasten
steht analog das Element mousebutton zur
Verfügung. Mit Hilfe von keycombo
können beliebige Tasten- und Maustastenkombinationen
beschrieben werden.Das Element keycombo besitzt ein
Attribut action, dem einer der Werte
click, double-click,
other, press,
seq oder simul
zugewiesen werden kann. Die letzten beiden Werte deuten an,
dass die genannte Kombination nacheinander oder
gleichzeitig gedrückt werden soll. Die Stylesheets
fügen zwischen die einzelnen Unterelemente von
keycombo+-Zeichen
ein.Tasten, Maustasten und TastenkombinationenDiese Eingaben zeichnen Sie wie folgt aus:Mit der Tastenkombination AltF1 kann auf die zweite virtuelle Konsole
umgeschaltet werden.
Um vi zu beenden, ohne die Änderungen zu
speichern, muss Esc:q! eingegeben werden.Der Fenstermanager ist so konfiguriert, dass mittels
Altrechter Maustaste
Fenster verschoben werden können.]]>Darstellung:Mit der Tastenkombination AltF1 kann auf die zweite
virtuelle Konsole umgeschaltet werden.Um vi zu beenden, ohne die
Änderungen zu speichern, muss Esc:q! eingegeben werden.Der Fenstermanager ist so konfiguriert, dass mittels
Altrechter Maustaste
Fenster verschoben werden können.Anwendungen, Befehle, Optionen und HilfeseitenOft besteht die Notwendigkeit auf bestimmte Anwendungen
und Befehle zu verweisen. Der Unterschied zwischen einer
Anwendung und einem Befehl liegt darin, dass eine
Anwendung ein einzelnes oder eine Gruppe von Programmen ist,
mit denen eine bestimmte Aufgabe erledigt werden kann. Ein
Befehl hingegen ist der Name eines Programmes, dass der
Benutzer aufrufen kannDer Befehl
mozilla startet das Programm
mozilla..Desweiteren kann es auch vorkommen, dass die
von einem Programm (in einem bestimmten Fall)
akzeptierten Optionen genannt werden müssen.Schlußendlich ist es oft gewünscht, zu einem
Befehl dessen Abschnitt der Manualseiten im
Unix-üblichen Stil Befehl(Zahl)
anzugeben.Anwendungsnamen können mit application
ausgezeichnet werden.Befehle können zusammen mit der betreffenden
Hilfeseite über das DocBook-Element
citerefentry ausgezeichnet werden.
citerefentry muss zwei weitere
Elemente enthalten: refentrytitle,
für den Befehlsnamen, und manvolnum,
für die Kategorie der Hilfeseite.Diese Art auf Befehle zu verweisen kann sehr
ermüdent sein. Daher gibt es einen Satz von
Allgemeinen
Entitäten, der diese Arbeit erleichtert. Er
ist in der Datei
doc/share/sgml/man-refs.ent enhalten
und kann über den folgenden Bezeichner eingebunden
werden:PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN"Jede Entität in dieser Datei ist wie folgt aufgebaut:
&man.Hilfeseite.Kategorie;.Der Anfang eines Dokumentes, das diese Entitäten
einbindet, könnte so aussehen:<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man; … ]>Um Befehle innerhalb des Fließtextes auszuzeichen,
kann das Element command genutzt werden.
Die Optionen eines Befehles können mit Hilfe von
option ausgezeichnet werden.Wenn man sich mehrmals hintereinander auf den gleichen
Befehl bezieht, sollte man beim ersten Auftreten die Notation
&man.command.section;
verwenden. Für alle folgenden Referenzen sollte hingegen
command verwendet werden. Dadurch
verbessert sich das Erscheinungsbild, insbesondere von HTML,
deutlich.Die Unterscheidung zwischen command
und application kann schwer sein, und
manchmal ist die Entscheidung, welches Element das richtige
ist, nicht leicht. Das folgende Beispiel soll diese
Unterscheidung erleichtern.Anwendungen, Befehle und OptionenSendmail ist der verbreitetste
UNIX-Mailserver.
Sendmail besteht aus den Programmen
sendmail8, &man.mailq.1;, und &man.newaliases.1;.Mittels der Option kann
sendmail8 den Status der Mailwarteschlange ausgeben.
Der Status der Mailwarteschlange kann durch den Befehl
sendmail -bp überprüft werden.]]>Darstellung:Sendmail ist der
verbreitetste UNIX-Mailserver.Sendmail besteht aus den
Programmen
sendmail8,
&man.mailq.1; sowie &man.newaliases.1;.Mittels der Option kann
sendmail8 den Status der Mailwarteschlange ausgeben.
Der Status der Mailwarteschlange kann durch den Befehl
sendmail -bp überprüft
werden.Die Schreibweise
&man.Hilfeseite.Kategorie;
ist leichter lesbar.Dateien, Verzeichnisse und ErweiterungenImmer wenn in einem Text der Name einer Datei, eines
Verzeichnisses oder eine Dateierweiterung vorkommt, sollte
die betreffende Stelle mit dem Element
filename ausgezeichnet werden.Das Element filenameDie SGML-Quellen des
englischen Handbuches befinden sich im Verzeichnis
/usr/doc/en/handbook/. In
diesem Verzeichnis befindet sich eine Datei
handbook.sgml. Desweiteren sollte
sich eine Datei mit dem Namen
Makefile zusammen mit mehreren
Dateien mit der Endung .ent in diesem
Verzeichnis befinden.]]>Darstellung:Die SGML-Quellen des englischen Handbuches befinden
sich im Verzeichnis
/usr/doc/en/handbook/. In diesem
Verzeichnis befindet sich eine Datei
handbook.sgml. Desweiteren sollte
sich eine Datei mit dem Namen
Makefile zusammen mit mehreren
Dateien mit der Endung .ent in diesem
Verzeichnis befinden.PortnamenFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.An einigen Stellen ist es notwendig, den Namen eines
Ports aus FreeBSDs Ports-Sammlung in Dokumenten zu verwenden.
In diesem Fall sollte ebenfalls das Element
filename eingesetzt werden, dabei aber
dem Element das Attribut role mit dem
Wert package zugewiesen werden. Da die
Ports-Sammlung an jeder beliebigen Stelle im Dateisystem
installiert werden kann, sollte filename
nur die Kategorie und den Namen des Ports enthalten, aber
nicht das Verzeichnis
/usr/ports.Portsnamen und das Element filenameWenn Sie Ihr Netz und dessen Datenverkehr analysieren
möchten, dann installieren Sie bitte den Port net/ethereal.]]>Darstellung:Wenn Sie Ihr Netz und dessen Datenverkehr analysieren
möchten, dann installieren Sie bitte den Port net/ethereal.Gerätedateien unterhalb von
/devFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Wird in einem Dokument Bezug auf Gerätedateien
unterhalb von dev
genommen, dann gibt es zwei Möglichkeiten diese
auszuzeichnen. Zum einen kann man sich auf das Gerät
beziehen, so wie es unter /dev zu
finden ist, und zum anderen kann man sich auf den
Gerätenamen beziehen, wie es innerhalb des Kerns
verwendet wird. Für letztere Möglichkeit sollte
das Element devicename genutzt
werden.Allerdings besteht nicht immer diese
Wahlmöglichkeit. Einige Geräte, wie zum Beispiel
Netzwerkkartenm haben keinen Eintrag unter
/dev oder werden anders
dargestellt.Gerätenamen per devicename
auszeichnenUnter FreeBSD wird die serielle Datenübertragung über
sio abgewickelt, das unterhalb von
/dev eine Reihe von Einträgen anlegt.
Zu diesen Einträgen behören beispielsweise
/dev/ttyd0 und
/dev/cuaa0.
Andererseits erscheinen Geräte wie beispielsweise
ed0 nicht unterhalb von
/dev.Unter MS-DOS wird das erste Diskettelaufwerk als
a: bezeichnet. FreeBSD
bezeichnet es als /dev/fd0.]]>Darstellung:Unter FreeBSD wird die serielle Datenübertragung
über sio abgewickelt, das
unterhalb von /dev eine Reihe von
Einträgen anlegt. Zu diesen Einträgen
behören beispielsweise
/dev/ttyd0 und
/dev/cuaa0.Andererseits erscheinen Geräte wie beispielsweise
ed0 nicht unterhalb von
/dev.
Unter MS-DOS wird das erste Diskettelaufwerk als
a: bezeichnet. FreeBSD bezeichnet
es als /dev/fd0.Rechner, Domains, IP-Adressen und mehrFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Bezeichner für Rechner können in Abhängigkeit
der Bezeichnungsweise auf verschiedene Art und Weise
ausgezeichnet werden. Gemeinsam ist allen, dass sie
das Element hostid benutzen. Über das
Attribut role wird die Art des Bezeichners
genauer bestimmt.Kein Rollenattribut oder
role="hostname"Ohne Rollenattribut stellt der umschlossene Text
einen normlen Rechnernamen wie
freefall oder
wcarchive dar. Wenn es
gewünscht ist, kann mittels
role="hostname" explizit angegeben
werden, dass es sich um einen Rechnernamen
handelt.role="domainname"Ein Domainname wie FreeBSD.org
oder ngo.org.uk. Er enthält keinen
Rechnernamen.role="fqdn"Vollqualifizierter Domainname wie
www.FreeBSD.org. Enthält sowohl
einen Domainnamen als auch einen Rechnernamen.role="ipaddr"Eine IP-Adresse, meistens als durch Doppelpunkte
getrenntes Tupel von vier Zahlen dargestellt.role="ip6addr"Eine IPv6-Adresse.role="netmask"Eine Netzwerkmaske, dargestellt als ein durch
Doppelpunkte getrenntes Vierzahlentupel, einer Hexzahl
oder als ein /, dem eine Zahl
folgt.role="mac"Eine MAC-Adresse, dargestellt durch zweistellige
Hexzahlen, die durch Doppelpunkte getrennt
sind.role und
hostidDer lokale Rechner kann immer über den Namen
localhost angesprochen werden, dem immer
die IP-Adresse
127.0.0.1 zugeordnet ist.
Zur Domain FreeBSD.org
gehören verschiedene Rechner, inklusive freefall.FreeBSD.org und pointyhat.FreeBSD.org.Wenn eine IP-Adresse einer Netzwerkkarte zugeordnet wird,
was mit der Hilfe von ifconfig geschieht,
sollte immer die Netzmaske
255.255.255.255, die auch
hexadezimal als 0xffffffff
abgegeben werden kann, benutzt werden.Die MAC-Adresse ist für jede existierende Netzwerkkarte
auf der Welt eindeutig. Eine typische MAC-Adresse ist
beispielsweise 08:00:20:87:ef:d0.]]>Darstellung:Der lokale Rechner kann immer über den Namen
localhost angesprochen werden, dem immer
die IP-Adresse 127.0.0.1
zugeordnet ist.Zur Domain FreeBSD.org gehören
verschieden Rechner, inklusive freefall.FreeBSD.org und bento.FreeBSD.org.Wenn eine IP-Adresse einer Netzwerkkarte zugeordnet
wird, was mit der Hilfe von ifconfig
geschieht, sollte immer die Netzmaske
255.255.255.255, die auch
hexadezimal als 0xffffffff
abgegeben werden kann, benutzt werden.Die MAC-Adresse ist für jede existierende
Netzwerkkarte auf der Welt eindeutig. Eine typische
MAC-Adresse ist beispielsweise 08:00:20:87:ef:d0.BenutzernamenFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Namen von Benutzern, wie
root oder bib,
können mit dem Element username
ausgezeichnet werden.Das Element usernameFür die meisten Administrationsaufgaben müssen
Sie als root angemeldet sein.]]>Darstellung:Für die meisten Administrationsaufgaben müssen Sie als
root angemeldet sein.Beschreibung von MakefilesFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Zur Beschreibung von Teilen einer Makedatei stehen die
beiden Elemente marketarget und
makevar zur Verfügung.
maketarget bezeichnet ein Ziel eines
Makefiles, das als Parameter beim
Aufruf von make angegeben werden kann.
makevar hingegen bezeichnet eine
Variable, die entweder in einem
Makefile definiert oder
make auf der Befehlszeile übergeben
werden kann, um so den Bauprozess zu beeinflussen.maketarget und
makevarZwei übliche Ziele in einem Makefile
sind all und
clean.
Üblicherweise wird, wenn das Ziel all
aufgerufen wird, die gesamte Anwendung neu erstellt. Der Aufruf
des Zieles clean veranlaßt das
Löschen aller temporären Dateien (zum Beispiel
.o), die während der Übersetzung erzeugt
wurden.Das genaue Verhalten von clean
kann von einer Reihe von Variablen beeinflußt werden.
Stellvertretend seien hier CLOBBER und
RECURSE genannt.]]>Darstellung:Zwei übliche Ziele in einem
Makefile sind
all und
clean.Üblicherweise wird, wenn das Ziel
all aufgerufen wird, die gesamte
Anwendung neu erstellt. Der Aufruf des Zieles
clean veranlaßt das
Löschen aller temporären Dateien (zum Beispiel
.o), die während der
Übersetzung erzeugt wurden.Das genaue Verhalten von
clean kann von einer Reihe von
Variablen beeinflußt werden. Stellvertretend seien
hier CLOBBER und
RECURSE genannt.Text buchstabengetreu übernehmenFür das Handbuch ist es oft notwendig, Textausschnitte
buchstabengetreu darzustellen. Hierbei kann es sich um Texte
handeln, die aus einer anderen Datei stammen oder die der
Leser eins-zu-eins aus dem Handbuch kopieren können
soll.In einigen Fällen ist zu diesem Zwecke
programlisting ausreichend, jedoch nicht
immer. So ist programlisting zum Beispiel
nicht einsetzbar, wenn es darum geht, einen Auszug aus einer
Datei innerhalb eines Absatzes einzufügen. In solchen Fällen
sollte das Element literal zum Einsatz
kommen.literalDie Zeile maxusers 10 in der
Kernelkonfigurationsdatei beeinflußt die Größe vieler
Systemtabellen und kann als ungefähr als Richtwert dafür
gelten, wie viele paralle Anmeldungen das System handhaben
kann.]]>Darstellung:Die Zeile maxusers 10 in der
Kernelkonfigurationsdatei beeinflußt die Größe vieler
Systemtabellen und kann als ungefähr als Richtwert dafür
gelten, wie viele paralle Anmeldungen das System handhaben
kann.Benutzerspezifische Eingaben darstellenEs kommt oft vor, dass der Leser Beispiele,
Dateinamen oder Kommandozeilen verändern muss.
Für einen solchen Anwendungsfall
ist das Element replaceable gedacht. Es
kann innerhalb von anderen Elementen
genutzt werden, um die Teile auszuzeichnen, die es zu
ersetzen gilt.Das Element replaceable&prompt.user; man command]]>Darstellung:&prompt.user; man commandDieses Beispiel zeigt, dass nur der Text mit
replaceable umschlossen werden soll,
den der Benutzer einzusetzen hat. Sämtlicher anderer
Text sollte wie üblich ausgezeichnet werden.Die Zeile
maxusers n
in der Kernelkonfigurationsdatei bestimmt die Größe vieler Systemtabellen
und stellt einen groben Richtwert dafür dar, wie viele gleichzeitige Anmeldungen
das System unterstützt.
Für einen Arbeitsplatzrechner stellt 32 einen guten
Wert für n dar.]]>Darstellung:Die Zeile maxusers
n in der
Kernelkonfigurationsdatei bestimmt die Größe
vieler Systemtabellen und stellt einen groben Richtwert
dafür dar, wie viele gleichzeitige Anmeldungen das
System unterstützt.Für einen Arbeitsplatzrechner stellt
32 einen guten Wert für
n dar.Fehlermeldungen des Systems darstellenIn manchen Fällen kann es nötig sein,
Fehlermeldungen darzustellen, die von FreeBSD erzeugt werden
können. Für solche Fälle ist das Element
errorname vorgesehen.Das Element errornamePanic: cannot mount root ]]>Darstellung:Panic: cannot mount rootBilder und GrafikenDie Verwendung von Grafiken innerhalb der Dokumentation
ist momentan noch in einem experimentellen Stadium. Es ist
daher wahrscheinlich, dass sich die hier beschriebenen
Mechanismen noch ändern werden.Für die Verwendung von Grafiken ist es notwendig,
den Port graphics/ImageMagick
zusätzlich zu installieren, da er
nicht vom Port textproc/docproj mitinstalliert
wird.Das beste Beispiel für den Einsatz von Grafiken ist
der unter
doc/en_US.ISO8859-1/articles/vm-design/
zu findene Artikel Design elements of the FreeBSD VM
system. Falls beim Lesen der folgenden Kapitel
Fragen unbeantwortet oder unklar bleiben, empfiehlt es sich,
die unter dem genannten Verzeichnis befindlichen Dateien zu
studieren und anhand ihrer zu verstehen, wie alles
zusammenhängt. Es empfiehlt sich, den Artikel in
verschiedenen Ausgabeformaten zu erzeugen, da man so sehen
kann, wie die Grafiken in Abhängigkeit vom
Ausgabemedium angeordnet werden.Unterstütze GrafikformateZur Zeit werden nur zwei Grafikformate unterstützt.
Welches von beiden Formaten zum Einsatz kommen sollte,
hängt von der Art der Grafik ab.Für Bilder, die vorrangig Vektorelemente wie
Netzwerkdiagramme, Zeitlinien und ähnliches beinhalten,
sollte Encapsulated Postscript als Format gewählt
werden. Wichtig ist es in diesem Fall, dass die
Grafikdatei die Endung .eps hat.
Für Bitmapgrafiken, wie zum Beispiel Bildschirmfotos,
steht das Portable Network Grafic Format zur
Verfügung. In diesem Fall, sollte die Grafikdatei immer
die Endung .png haben.In das CVS-Archiv sollten nur
Grafiken in diesen beiden Formaten übernommen
werden.Es sollte darauf sehr darauf geachtet werden, das
richtige Format für das richtige Bild zu wählen.
Erwartungsgemäß wird es Dokumente geben, die eine
Mischung aus PNG- und EPS-Grafiken enthalten. In solchen
Fällen, stellen die Makedateien die Verwendung des
richtigen Formats in Abhängigkeit vom Ausgabeformat
sicher. Deshalb sollte die gleiche Grafik niemals
in zwei unterschiedlichen Formaten in das CVS-Archiv
übernommen werden.Es ist absehbar, dass das Dokumentationsprojekt
in Zukunft das Scalable Vector Graphic-Format (SVG) als
Standardformat für Vektorgrafiken übernehmen
wird. Zum jetzigen Zeitpunkt ist dieser Wechsel noch nicht
möglich, da der Stand der jetzigen SVG-Anwendungen
noch nicht den dafür notwendigen Erfordernissen
entspricht.DocBook-Elemente für den GrafikeinsatzDas Auszeichnen von Bildern mittels DocBook ist relativ
einfach. Zuerst wird ein
mediaobject-Element eingefügt, das
als Container für medienspezifische Elemente fungieren
kann. Für die Zwecke des FDPs sind das die Elemente
imageobject und
textobject.In das mediaobject-Element sollten
ein Element vom Typ imageobject und zwei
textobject-Elemente eingefügt
werden. Das imageobject-Element verweist
auf die eigentliche Grafikdatei. Dabei ist allerdings nur
der Dateipfad ohne Erweiterung anzugegeben. Die
textobject-Elemente werden dafür
genutzt, Texte aufzunehmen, die dem Leser anstelle des
Bildes oder zusammen mit dem Bild angezeigt werden.Dies kann unter zwei Umständen geschehen:Wenn ein Dokument als HTML-Datei durch einem Browser
angezeigt wird. In diesem Falle muss jeder Grafik
ein Alternativtext zugeordnet werden, der dem Leser
angezeigt werden kann. Meist ist das notwendig, wenn der
Browser die Grafik noch nicht geladen hat oder wenn der
Benutzer den Mauszeiger über die Grafik
führt.Wenn das Dokument als Textdatei gelesen wird. Da in
einer Textdatei keine Grafiken angezeigt werden können,
sollte es für die Grafik eine Textentsprechung geben,
die alternativ angezeigt werden kann.Das folgende Beispiel soll das bisher geschriebene
illustrieren. Angenommen es liegt eine einzubindene Grafik
in der Datei bild1 vor, die die
Darstellung eines As in einem Rechteck enthält. Die
ASCII-Alternative könnte so ausgezeichnet werden:<mediaobject>
<imageobject>
<imagedata fileref="bild1">
</imageobject>
<textobject>
<literallayout class="monospaced">+ - - - - - - - - - - - - - - -+
| A |
+- - - - - - - - - - - - - - -+</literallayout>
</textobject>
<textobject>
<phrase>Ein Bild</phrase>
</textobject>
</mediaobject>Innerhalb vom Element imageobject
befindet sich ein Element imagedata,
welches mit Hilfe des Attributes
fileref den Namen der Grafikdatei
(ohne Erweiterung) angibt. Die Bestimmung der
Dateierweiterung wird von den Stylesheets
übernommen.Das erste textobject-Element
enthält ein literallayout-Element,
dessen Attribut class den Wert
monospaced zugewiesen bekommt. Der
Inhalt dieses Elements wird genutzt, wenn das Dokument
in Textform ausgegeben wird. An dieser Stelle hat der
Autor die Möglichkeit seine
Textzeichenkünste unter Beweis zu
stellen.Wichtig ist, dass die erste und die letzte
Zeile sich gleichauf mit dem öffenden und dem
schließenden Tag befindet. Dadurch wird
sichergestellt, dass keine unnötigen
Leerzeichen in die Ausgabe aufgenommen werden.Das zweite textobject-Element
sollte lediglich ein phrase-Element
enthalten. Wird das Dokument nach HTML konvertiert, wird
dessen Inhalt für das Attribut
alt des img-Tags
verwendet.Die Makefile-EinträgeAlle in einem Dokument verwendeten Grafiken müssen in
dem zugehörigen Makefile in der Variable
IMAGES enthalten sein.
IMAGES sollte immer die Namen der
Quellgrafiken enthalten. Werden in
einem Dokument beispielsweise die drei Grafiken
bild1.eps,
bild2.png und
bild3.png referenziert, sollte das
Makefile die folgende Zeile
enthalten:…
IMAGES= bild1.eps bild2.png bild3.png
…Eine andere Möglichkeit wäre:…
IMAGES= bild1.eps
IMAGES+= bild2.png
IMAGES+= bild3.png
…Es kann nicht oft genug betont werden: Welche
Grafikdateien für das zu erzeugende Dokument benötigt
werden, wird von dem Makefiles bestimmt.
IMAGES darf nur die Originaldateien
enthalten.Grafiken und Kapitel in UnterverzeichnissenWenn Sie Ihre Dokumentation in mehrere kleine
Dateien aufspalten (siehe
),
müssen Sie sorgfältig vorgehen.Angenommen es handelt sich um ein Buch, dessen drei
Kapitel in separaten Verzeichnissen angelegt wurden
(kapitel1/kapitel.sgml,
kapitel2/kapitel.sgml und
kapitel3/kapitel.sgml). Enthalten die
Kapitel Grafiken, empfiehlt es sich, diese in den gleichen
Verzeichnisses abzulegen, wie die Kapitel selbst. In diesem
Falle gilt es jedoch zu beachten, dass die Pfade der
Grafikdateien in der Variable IMAGES und
in den imagedata-Elementen immer auch den
Verzeichnisnamen mitenthalten.Soll beispielsweise die Datei
kapitel1/bild1.png in das in
kapitel1/kapitel.sgml enthaltene
Kapitel eingebunden werden, sollte dies so erfolgen:<mediaobject>
<imageobject>
<imagedata fileref="kapitel1/bild1">
</imageobject>
…
</mediaobject>fileref muss den
Datei- und den Verzeichnisnamen enthalten.Das Makefile muss dementsprechend
die Zeile
…
IMAGES= kapitel1/bild1.png
…
enthalten.Wird dies beachtet, sollte es zu keinen Problemen
kommen.QuerverweiseQuerverweise sind auch Flußelemente.Querverweise innerhalb eines DokumentesUm innerhalb eines Dokumentes Verweise anzulegen, muss
angegeben werden, von welcher Textstelle aus wohin verwiesen
werden soll.Jedes DocBook-Element besitzt ein Attribut
id, über das seinem Element ein
eindeutiger Bezeichner zugewiesen werden kann.In den meisten Fällen werden Querverweise nur zu
Kapiteln gesetzt. Die chaper- und
sect*-Elemente sollten aus diesem Grunde
ein gesetztes id-Attribut
besitzen.chapter und section
mit dem Attribut idEinführungDas ist eine Einführung. Sie enthält ein Unterkapitel, das
ebenfalls einen eigenen Bezeichner hat.Unterkapitel 1Das ist ein Unterkapitel.
]]>Als Wert für das Attribut id
sollte immer ein selbsterklärender Bezeichner gewählt
werden. Zudem ist es notwendig, dass dieser Bezeichner
innerhalb des Dokumentes eindeutig ist. Im obigen Beispiel
wurde der Bezeichner für das Unterkapitel gebildet,
indem der Bezeichner des übergeordneten Kapitels um den
Titel des Unterkapitels erweitert wurde. Diese
Vorgehensweise hilft sicherzustellen, dass Bezeichner
eindeutig sind und bleiben.Manchmal soll jedoch nicht auf den Anfang eines Kapitels
verwiesen werden, sondern zum Beispiel auf eine Stelle in
einem Absatz oder auf ein bestimmtes Beispiel. In solchen
Fällen kann an der Stelle, auf die verwiesen werden
soll, das Element anchor mit gesetztem
Attribut id eingefügt werden.
anchor kann selber keinen weiteren Inhalt
aufnehmen.Querverweise und das Element
anchorDieser Absatz enthält ein
Ziel für Querverweise, was jedoch keine
Auswirkung auf dessen Darstellung hat.]]>Zum Anlegen des eigentlichen Querverweises selbst kann
eines der beiden Elemente xref oder
link genutzt werden. Beide besitzen das
Attribut linkend, dem der
id-Wert des Verweiszieles zugewiesen
wird. Ob sich das Ziel vor oder nach dem Verweis befindet,
spielt keine Rolle.xref und link
unterscheiden sich jedoch hinsichtlich der Art und Weise,
auf die der Text erzeugt wird, auf dem der Querverweis
liegt. Kommt xref zum Einsatz, hat der
Autor keine Kontrolle darüber – der Text wird
automatisch für ihn erzeugt.Einsatz von xrefFür dieses Beispiel wird davon ausgegangen, dass sich
folgendes Textfragment irgendwo innerhalb eines Dokumentes
auftaucht, dass das vorherige
id-Beispiel enthält.Weitere Informationen gibt
es im .
Genauere Informationen können im
gefunden werden.]]>Der Verweistext wird automatisch von den Stylesheets
erzeugt und so hervorgehoben, dass ersichtlich ist,
dass es sich bei dem Text um einen Verweis
handelt.
Weitere Informationen können in der
Einführung gefunden
werden.Genauere Informationen können im
Unterkapitel 1 gefunden
werden.
Der Text, auf dem der HTML-Link für den Querverweis
liegt, wurde von den Kapitelüberschriften
übernommen.Das bedeutet, dass es nicht
möglich ist, mit der Hilfe von
xref einen Querverweis zu einer mit
anchor gekennzeichneten Stelle
anzulegen. Da anchor keinen Inhalt
aufnehmen kann, können die Stylesheets nicht
automatisch einen Text für den Verweis
erzeugen.Möchte man selber den für den Verweis
benutzten Text bestimmen können, sollte das Element
link verwendet werden. Im Gegensatz zu
xref kann link Inhalt
aufnehmen, der dann für den Verweis verwendet
wird.link beutzenFür dieses Beispiel wird davon ausgegangen, dass
es sich in dem Dokument befindet, das auch
das id-Beispiel enthält.Weitere Informationen können
im ersten Kapitel gefunden
werden.
Genauere Informationen können in
diesem Kapitel
gefunden werden.]]>Aus diesem SGML-Fragment würden die Stylesheets
folgendes generieren (der hervorgehobene Text deutet den
erzeugten Verweis an):
Weitere Informationen können im ersten
Kapitel gefunden werden.Genauere Informationen können in
diesem Kapitel gefunden
werden.
Das letzte Beispiel ist schlecht. Es sollten niemals
Wörter wie dieses oder
hier als Linktext benutzt werden. Solche
Wörter zwingen den Leser dazu, den Kontext des
Verweises zu lesen, um zu verstehen, wohin der Verweis
führt.Mit dem Element linkkann auf mit
anchor gekennzeichnete Stellen im
Dokument verwiesen werden, da der Inhalt von
link als Text für den Querverweise
genutzt wird.Verweise auf Dokumente im WWWDas Anlegen von Verweisen auf externe Dokumente ist
wesentlich einfacher – solange die URL des zu
referenzierenden Dokumentes bekannt ist. Um von einem
bestimmten Textabschnitt auf das gewünschte externe
Dokument zu verweisen, muss die jeweilige Stelle mit
dem Element ulink ausgezeichnet werden.
Mittels des Attributes url kann die
Adresse des Zieldokumentes angegeben werden. Bei der
Umformung des Quelldokumentes in die verschiedenen
Ausgabeformate wird der sich zwischen Start- und Endtag
befindliche Text für den Verweis übernommen, den
der Leser aufrufen kann.Verweise mit ulinkNatürlich ist es möglich, anstatt diesen Text
weiterzulesen, sofort die
FreeBSD-Homepage
aufzurufen.]]>Darstellung:Natürlich ist es möglich, anstatt diesen Text
weiterzulesen, sofort die FreeBSD-Homepage
aufzurufen.
diff --git a/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml b/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
index 37a55a8be1..e050e8c9c0 100644
--- a/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
@@ -1,6206 +1,6630 @@
JohannKoisÜbersetzt von Weiterführende NetzwerkthemenÜbersichtDieses Kapitel beschreibt verschiedene
weiterführende Netzwerkthemen.Nachdem Sie dieses Kapitel gelesen haben, werden SieDie Grundlagen von Gateways und Routen kennen.&bluetooth;- sowie drahtlose, der Norm &ieee; 802.11
entsprechende, Geräte mit FreeBSD verwenden
können.Eine Bridge unter FreeBSD einrichten können.Einen plattenlosen Rechner über das Netzwerk starten
können.Wissen, wie man NAT (Network Address Translation)
einrichtet.Zwei Computer über PLIP verbinden können.IPv6 auf einem FreeBSD-Rechner einrichten
können.ATM einrichten können.CARP, das Common Address Redundancy Protocol, unter
&os; einsetzen können.Bevor Sie dieses Kapitel lesen, sollten SieDie Grundlagen der /etc/rc-Skripte
verstanden haben.Mit der grundlegenden Netzwerkterminologie vertraut
sein.Einen neuen FreeBSD-Kernel konfigurieren und installieren
können ().Wissen, wie man zusätzliche Softwarepakete von
Drittherstellern installiert ().CoranthGryphonBeigetragen von Gateways und RoutenRoutingGatewaySubnetzDamit ein Rechner einen anderen über ein Netzwerk
finden kann, muss ein Mechanismus vorhanden sein, der
beschreibt, wie man von einem Rechner zum anderen gelangt.
Dieser Vorgang wird als Routing
bezeichnet. Eine Route besteht aus einem
definierten Adressenpaar: Einem Ziel und einem
Gateway. Dieses Paar zeigt an, dass Sie
über das Gateway zum
Ziel gelangen wollen. Es gibt drei Arten
von Zielen: Einzelne Rechner (Hosts), Subnetze und das
Standardziel. Die Standardroute
wird verwendet, wenn keine andere Route zutrifft. Wir werden
Standardrouten später etwas genauer behandeln.
Außerdem gibt es drei Arten von Gateways: Einzelne Rechner
(Hosts), Schnittstellen (Interfaces, auch als Links
bezeichnet), sowie Ethernet Hardware-Adressen (MAC-Adressen).
Ein BeispielUm die verschiedenen Aspekte des Routings zu
veranschaulichen, verwenden wir folgende Ausgaben von
netstat:&prompt.user; netstat -r
Routing tables
Destination Gateway Flags Refs Use Netif Expire
default outside-gw UGSc 37 418 ppp0
localhost localhost UH 0 181 lo0
test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77
10.20.30.255 link#1 UHLW 1 2421
example.com link#1 UC 0 0
host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0
host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 =>
host2.example.com link#1 UC 0 0
224 link#1 UC 0 0
DefaultrouteDie ersten zwei Zeilen geben die Standardroute (die wir
im nächsten
Abschnitt behandeln), sowie die
localhost Route an.Loopback-GerätDas in der Routingtabelle für
localhost festgelegte Interface
(Netif-Spalte)
lo0, ist auch als loopback-Gerät
(Prüfschleife) bekannt. Das heißt, dass der ganze
Datenverkehr für dieses Ziel intern (innerhalb des
Gerätes) bleibt, anstatt ihn über ein Netzwerk (LAN)
zu versenden, da das Ziel dem Start entspricht.EthernetMAC-AdresseDer nächste auffällige Punkt sind die mit
0:e0: beginnenden Adressen. Es
handelt sich dabei um Ethernet Hardwareadressen, die auch als
MAC-Adressen bekannt sind. FreeBSD identifiziert Rechner im
lokalen Netz automatisch (im Beispiel test0)
und fügt eine direkte Route zu diesem Rechner hinzu. Dies
passiert über die Ethernet-Schnittstelle
ed0. Außerdem existiert ein Timeout
(in der Spalte Expire) für diese Art
von Routen, der verwendet wird, wenn dieser Rechner in einem
definierten Zeitraum nicht reagiert. Wenn dies passiert, wird
die Route zu diesem Rechner automatisch gelöscht.
Rechner im lokalen Netz werden durch einen als RIP (Routing
Information Protocol) bezeichneten Mechanismus identifiziert,
der den kürzesten Weg zu den jeweiligen Rechnern
bestimmt.SubnetzFreeBSD fügt außerdem Subnetzrouten für das
lokale Subnetz hinzu (10.20.30.255 ist die Broadcast-Adresse
für das Subnetz 10.20.30,
example.com ist der zu
diesem Subnetz gehörige Domainname). Das Ziel
link#1 bezieht sich auf die erste
Ethernet-Karte im Rechner. Sie können auch feststellen,
dass keine zusätzlichen Schnittstellen angegeben
sind.Routen für Rechner im lokalen Netz und lokale
Subnetze werden automatisch durch den
routed Daemon konfiguriert. Ist
dieser nicht gestartet, sind nur statisch definierte
(explizit eingegebene) Routen vorhanden.Die Zeile host1 bezieht sich auf
unseren Rechner, der durch seine Ethernetadresse bekannt ist.
Da unser Rechner der Sender ist, verwendet FreeBSD automatisch
das Loopback-Gerät (lo0),
anstatt den Datenverkehr über die Ethernetschnittstelle
zu senden.Die zwei host2 Zeilen sind ein Beispiel
dafür, was passiert, wenn wir ein &man.ifconfig.8; Alias
verwenden (Lesen Sie dazu den Abschnitt über Ethernet,
wenn Sie wissen wollen, warum wir das tun sollten.). Das
Symbol => (nach der
lo0-Schnittstelle) sagt aus, dass wir
nicht nur das Loopbackgerät verwenden (da sich die
Adresse auf den lokalen Rechner bezieht), sondern dass es sich
zusätzlich auch um ein Alias handelt. Solche Routen sind
nur auf Rechnern vorhanden, die den Alias bereitstellen;
alle anderen Rechner im lokalen Netz haben für solche
Routen nur eine einfache link#1
Zeile.Die letzte Zeile (Zielsubnetz 224)
behandelt das Multicasting, das wir in einem anderen Abschnitt
besprechen werden.Schließlich gibt es für Routen noch
verschiedene Attribute, die Sie in der Spalte
Flags finden. Nachfolgend finden Sie eine
kurze Übersicht von einigen dieser Flags und ihrer
Bedeutung:UUp: Die Route ist aktiv.HHost: Das Ziel der Route ist ein einzelner
Rechner (Host).GGateway: Alle Daten, die an dieses Ziel gesendet
werden, werden von diesem System an ihr jeweiliges
Ziel weitergeleitet.SStatic: Diese Route wurde manuell konfiguriert,
das heißt sie wurde nicht
automatisch vom System erzeugt.CClone: Erzeugt eine neue Route, basierend auf der
Route für den Rechner, mit dem wir uns verbinden.
Diese Routenart wird normalerweise für lokale
Netzwerke verwendet.WWasCloned: Eine Route, die automatisch
konfiguriert wurde. Sie basiert auf einer lokalen
Netzwerkroute (Clone).LLink: Die Route beinhaltet einen Verweis auf eine
Ethernetkarte (MAC-Adresse).StandardroutenDefaultrouteStandardrouteDefaultrouteWenn sich der lokale Rechner mit einem entfernten Rechner
verbinden will, wird die Routingtabelle überprüft,
um festzustellen, ob bereits ein bekannter Pfad vorhanden ist.
Gehört dieser entfernte Rechner zu einem Subnetz, dessen
Pfad uns bereits bekannt ist
(Cloned route), dann versucht der
lokale Rechner über diese Schnittstelle eine Verbindung
herzustellen.Wenn alle bekannten Pfade nicht funktionieren, hat der
lokale Rechner eine letzte Möglichkeit: Die
Standardroute (Defaultroute). Bei dieser
Route handelt es sich um eine spezielle Gateway-Route
(gewöhnlich die einzige im System vorhandene), die im
Flags-Feld immer mit C gekennzeichnet ist.
Für Rechner im lokalen Netzwerk ist dieses Gateway auf
welcher Rechner auch immer eine Verbindung nach
außen hat gesetzt (entweder über eine
PPP-Verbindung, DSL, ein Kabelmodem, T1 oder eine beliebige
andere Netzwerkverbindung).Wenn Sie die Standardroute für einen Rechner
konfigurieren, der selbst als Gateway zur Außenwelt
funktioniert, wird die Standardroute zum Gateway-Rechner Ihres
Internetanbieter (ISP) gesetzt.Sehen wir uns ein Beispiel für Standardrouten an. So
sieht eine übliche Konfiguration aus:
[Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW]
Die Rechner Local1 und
Local2 befinden sich auf Ihrer Seite.
Local1 ist mit einem ISP über eine
PPP-Verbindung verbunden. Dieser PPP-Server ist über ein
lokales Netzwerk mit einem anderen Gateway-Rechner verbunden,
der über eine Schnittstelle die Verbindung des ISP zum
Internet herstellt.Die Standardrouten für Ihre Maschinen lauten:HostStandard GatewaySchnittstelleLocal2Local1EthernetLocal1T1-GWPPPEine häufig gestellte Frage lautet: Warum (oder
wie) sollten wir T1-GW als Standard-Gateway
für Local1 setzen, statt den (direkt
verbundenen) ISP-Server zu verwenden?.Bedenken Sie, dass die PPP-Schnittstelle für die
Verbindung eine Adresse des lokalen Netzes des ISP verwendet.
Daher werden Routen für alle anderen Rechner im lokalen
Netz des ISP automatisch erzeugt. Daraus folgt, dass Sie
bereits wissen, wie Sie T1-GW erreichen
können! Es ist also unnötig, einen Zwischenschritt
über den ISP-Server zu machen.Es ist üblich, die Adresse X.X.X.1 als Gateway-Adresse für
ihr lokales Netzwerk zu verwenden. Für unser Beispiel
bedeutet dies Folgendes: Wenn Ihr lokaler Klasse-C-Adressraum
10.20.30 ist und Ihr ISP
10.9.9 verwendet, sehen die
Standardrouten so aus:Rechner (Host)StandardrouteLocal2 (10.20.30.2)Local1 (10.20.30.1)Local1 (10.20.30.1, 10.9.9.30)T1-GW (10.9.9.1)Sie können die Standardroute ganz einfach in der Datei
/etc/rc.conf festlegen. In unserem
Beispiel wurde auf dem Rechner Local2
folgende Zeile in /etc/rc.conf
eingefügt:defaultrouter="10.20.30.1"Die Standardroute kann über &man.route.8; auch direkt
gesetzt werden:&prompt.root; route add default 10.20.30.1Weitere Informationen zum Bearbeiten von
Netzwerkroutingtabellen finden Sie in &man.route.8;.Rechner mit zwei HeimatnetzenDual-Homed-HostsEs gibt noch eine Konfigurationsmöglichkeit, die wir
besprechen sollten, und zwar Rechner, die sich in zwei
Netzwerken befinden. Technisch gesehen, zählt jeder als
Gateway arbeitende Rechner zu den Rechnern mit zwei
Heimatnetzen (im obigen Beispiel unter Verwendung einer
PPP-Verbindung). In der Praxis meint man damit allerdings nur
Rechner, die sich in zwei lokalen Netzen befinden.Entweder verfügt der Rechner über zwei
Ethernetkarten und jede dieser Karten hat eine Adresse in
einem separaten Subnetz, oder der Rechner hat nur eine
Ethernetkarte und verwendet &man.ifconfig.8; Aliasing. Die
erste Möglichkeit wird verwendet, wenn zwei physikalisch
getrennte Ethernet-Netzwerke vorhanden sind, die zweite, wenn
es nur ein physikalisches Ethernet-Netzwerk gibt, das aber aus
zwei logisch getrennten Subnetzen besteht.In beiden Fällen werden Routingtabellen erstellt,
damit jedes Subnetz weiß, dass dieser Rechner als Gateway
zum anderen Subnetz arbeitet (inbound
route). Diese Konfiguration (der
Gateway-Rechner arbeitet als Router zwischen den Subnetzen) wird
häufig verwendet, wenn es darum geht, Paketfilterung oder
eine Firewall (in eine oder beide Richtungen) zu implementieren.
Soll dieser Rechner Pakete zwischen den beiden
Schnittstellen weiterleiten, müssen Sie diese Funktion
manuell konfigurieren und aktivieren. Lesen Sie den
nächsten Abschnitt, wenn Sie weitere Informationen zu
diesem Thema benötigen.Einen Router konfigurierenRouterEin Netzwerkrouter ist einfach ein System, das Pakete von
einer Schnittstelle zur anderen weiterleitet.
Internetstandards und gute Ingenieurspraxis sorgten
dafür, dass diese Funktion in FreeBSD in der Voreinstellung
deaktiviert ist. Sie können diese Funktion aktivieren,
indem Sie in &man.rc.conf.5; folgende Änderung
durchführen:gateway_enable="YES" # Auf YES setzen, wenn der Rechner als Gateway arbeiten sollDiese Option setzt die &man.sysctl.8;-Variable
net.inet.ip.forwarding auf
1. Wenn Sie das Routing kurzzeitig
unterbrechen wollen, können Sie die Variable auf
0 setzen.BGPRIPOSPFIhr neuer Router benötigt nun noch Routen, um zu
wissen, wohin er den Verkehr senden soll. Haben Sie ein
(sehr) einfaches Netzwerk, können Sie statische Routen
verwenden. FreeBSD verfügt über den Standard
BSD-Routing-Daemon &man.routed.8;, der RIP (sowohl Version 1
als auch Version 2) und IRDP versteht. BGP v4,
OSPF v2 und andere Protokolle werden von
net/zebra
unterstützt. Es stehen auch kommerzielle Produkte
wie gated zur Verfügung.AlHoangBeigetragen von Statische Routen einrichtenManuelle KonfigurationNehmen wir an, dass wir über folgendes Netzwerk
verfügen:
INTERNET
| (10.0.0.1/24) Default Router to Internet
|
|Interface xl0
|10.0.0.10/24
+------+
| | RouterA
| | (FreeBSD gateway)
+------+
| Interface xl1
| 192.168.1.1/24
|
+--------------------------------+
Internal Net 1 | 192.168.1.2/24
|
+------+
| | RouterB
| |
+------+
| 192.168.2.1/24
|
Internal Net 2
RouterA, ein &os;-Rechner, dient als
Router für den Zugriff auf das Internet. Die
Standardroute ist auf 10.0.0.1
gesetzt, damit ein Zugriff auf das Internet möglich wird.
Wir nehmen nun an, dass RouterB bereits
konfiguriert ist und daher weiß, wie er andere Rechner
erreichen kann. Dazu wird die Standardroute von
RouterB auf
192.168.1.1 gesetzt, da dieser
Rechner als Gateway fungiert.Sieht man sich die Routingtabelle für
RouterA an, erhält man folgende Ausgabe:
&prompt.user; netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.0.0.1 UGS 0 49378 xl0
127.0.0.1 127.0.0.1 UH 0 6 lo0
10.0.0/24 link#1 UC 0 0 xl0
192.168.1/24 link#2 UC 0 0 xl1Mit dieser Routingtabelle kann RouterA
unser internes Netz 2 nicht erreichen, da keine Route zum
Rechner 192.168.2.0/24
vorhanden ist. Um dies zu korrigieren, kann die Route manuell
gesetzt werden. Durch den folgenden Befehl wird das
interne Netz 2 in die Routingtabelle des Rechners
RouterA aufgenommen, indem
192.168.1.2 als nächster
Zwischenschritt verwenden wird:&prompt.root; route add -net 192.168.2.0/24 192.168.1.2Ab sofort kann RouterA alle Rechner des
Netzwerks 192.168.2.0/24
erreichen.Routen dauerhaft einrichtenDas obige Beispiel ist für die Konfiguration einer
statischen Route auf einem laufenden System geeignet. Diese
Information geht jedoch verloren, wenn der &os;-Rechner neu
gestartet werden muss. Um dies zu verhindern, wird diese
Route in /etc/rc.conf eingetragen:# Add Internal Net 2 as a static route
static_routes="internalnet2"
route_internalnet2="-net 192.168.2.0/24 192.168.1.2"Die Variable static_routes enthält
eine Reihe von Strings, die durch Leerzeichen getrennt sind.
Jeder String bezieht sich auf den Namen einer Route. In
unserem Beispiel hat static_routesinternalnet2 als einzigen String.
Zusätzlich verwendet man die Konfigurationsvariable
route_internalnet2,
in der alle sonstigen an &man.route.8; zu übergebenden
Parameter festgelegt werden. In obigen Beispiel hätte
man folgenden Befehl verwendet:&prompt.root; route add -net 192.168.2.0/24 192.168.1.2Daher wird
"-net 192.168.2.0/24 192.168.1.2" als
Parameter der Variable route_ angegeben.
Wie bereits erwähnt, können bei
static_routes auch mehrere Strings
angegeben werden. Dadurch lassen sich mehrere statische
Routen anlegen. Durch folgende Zeilen werden auf einem
imaginären Rechner statische Routen zu den Netzwerken
192.168.0.0/24 sowie 192.168.1.0/24 definiert:static_routes="net1 net2"
route_net1="-net 192.168.0.0/24 192.168.0.1"
route_net2="-net 192.168.1.0/24 192.168.1.1"Verteilung von Routing-Informationenrouting propagationWir haben bereits darüber gesprochen, wie wir unsere
Routen zur Außenwelt definieren, aber nicht darüber,
wie die Außenwelt uns finden kann.Wir wissen bereits, dass Routing-Tabellen so erstellt
werden können, dass sämtlicher Verkehr für
einen bestimmten Adressraum (in unserem Beispiel ein
Klasse-C-Subnetz) zu einem bestimmten Rechner in diesem
Netzwerk gesendet wird, der die eingehenden Pakete im Subnetz
verteilt.Wenn Sie einen Adressraum für Ihre Seite zugewiesen
bekommen, richtet Ihr Diensteanbieter seine Routingtabellen so
ein, dass der ganze Verkehr für Ihr Subnetz entlang Ihrer
PPP-Verbindung zu Ihrer Seite gesendet wird. Aber woher
wissen die Seiten in der Außenwelt, dass sie die Daten an
Ihren ISP senden sollen?Es gibt ein System (ähnlich dem verbreiteten DNS),
das alle zugewiesenen Adressräume verwaltet und ihre
Verbindung zum Internet-Backbone definiert und dokumentiert.
Der Backbone ist das Netz aus
Hauptverbindungen, die den Internetverkehr in der ganzen Welt
transportieren und verteilen. Jeder Backbone-Rechner
verfügt über eine Kopie von Haupttabellen, die den
Verkehr für ein bestimmtes Netzwerk hierarchisch vom
Backbone über eine Kette von Diensteanbietern bis hin zu
Ihrer Seite leiten.Es ist die Aufgabe Ihres Diensteanbieters, den
Backbone-Seiten mitzuteilen, dass sie mit Ihrer Seite
verbunden wurden. Durch diese Mitteilung der Route ist nun
auch der Weg zu Ihnen bekannt. Dieser Vorgang wird als
Bekanntmachung von Routen
(routing propagation)
bezeichnet.ProblembehebungtracerouteManchmal kommt es zu Problemen bei der Bekanntmachung von
Routen, und einige Seiten sind nicht in der Lage, Sie zu
erreichen. Vielleicht der nützlichste Befehl, um
festzustellen, wo das Routing nicht funktioniert, ist
&man.traceroute.8;. Er ist außerdem sehr nützlich,
wenn Sie einen entfernten Rechner nicht erreichen können
(lesen Sie dazu auch &man.ping.8;).&man.traceroute.8; wird mit dem zu erreichenden Rechner
(Host) ausgeführt. Angezeigt werden die Gateway-Rechner
entlang des Verbindungspfades. Schließlich wird der
Zielrechner erreicht oder es kommt zu einem Verbindungsabbruch
(beispielsweise durch Nichterreichbarkeit eines
Gateway-Rechners).Weitere Informationen finden Sie in
&man.traceroute.8;.Multicast-RoutingMulticast-RoutingKerneloptionenMROUTING&os; unterstützt sowohl Multicast-Anwendungen als
auch Multicast-Routing. Multicast-Anwendungen müssen
nicht konfiguriert werden, sie laufen einfach.
Multicast-Routing muss in der Kernelkonfiguration aktiviert
werden:options MROUTINGZusätzlich muss &man.mrouted.8;, der
Multicast-Routing-Daemon, über die Datei
/etc/mrouted.conf eingerichtet werden,
um Tunnel und DVMRP zu aktivieren. Weitere
Informationen zu diesem Thema finden Sie in
&man.mrouted.8;.Ab &os; 7.0 ist &man.mrouted.8; (der Multicast Routing
Daemon) nicht mehr im Basissystem enthalten. Dieser Daemon
verwendet das DVMRP Multicast Routing
Protocol, das inzwischen in den meisten Multicast-Installationen
durch &man.pim.4; ersetzt wurde. Die mit dem Daemon in
Verbindung stehenden Werkzeuge &man.map-mbone.8; und
&man.mrinfo.8; wurden ebenfalls aus dem Basissystem
entfernt. All diese Programme sind aber weiterhin über
die &os;-Ports-Sammlung (genauer den Port net/mrouted) verfügbar.LoaderMarcFonvieilleMurrayStokelyDrahtlose NetzwerkeNetzwerke, drahtlos802.11drahtlose NetzwerkeGrundlagenDie meisten drahtlosen Netzwerke basieren auf dem
Standard &ieee; 802.11. Sie bestehen aus Stationen, die
in der Regel im 2,4 GHz- oder im 5 GHz-Band
miteinander kommunizieren. Es ist aber auch
möglich, dass regional andere Frequenzen,
beispielsweise im 2,3 GHz- oder 4,9 GHz-Band,
verwendet werden.802.11-Netzwerke können auf zwei verschiedene
Arten aufgebaut sein: Im
Infrastruktur-Modus agiert eine
- Station als Master, mit dem sich alle andere Stationen
+ Station als Master, mit dem sich alle anderen Stationen
verbinden. Die Summe aller Stationen wird als BSS
(Basic Service Set), die Master-Station hingegen als
Access Point (AP) bezeichnet. In einem BSS läuft
jedwede Kommunikation über den Access Point. Die
zweite Form drahtloser Netzwerke sind die sogenannten
Ad-hoc-Netzwerke (auch als IBSS
bezeichnet), in denen es keinen Access Point gibt und
in denen die Stationen direkt miteinander
kommunizieren.Die ersten 802.11-Netzwerke arbeiteten im
- 2,4 GHz-Band und nutzten dazu Prokolle der
+ 2,4 GHz-Band und nutzten dazu Protokolle der
&ieee;-Standards 802.11 sowie 802.11b. Diese Standards
legen unter anderem Betriebsfrequenzen sowie Merkmale
des MAC-Layers (wie Frames und Transmissionsraten) fest.
Später kam der Standard 802.11a hinzu, der im
5 GHz-Band, im Gegensatz zu den ersten beiden
Standards aber mit unterschiedlichen Signalmechanismen
und höheren Transmissionsraten arbeitet. Der
neueste Standard 802.11g implementiert die Signal- und
Transmissionsmechanismen von 802.11a im 2,4 GHz-Band,
ist dabei aber abwärtskompatibel zu
802.11b-Netzwerken.Unabhängig von den zugrundeliegenden
Transportmechanismen verfügen 802.11-Netzwerke
über diverse Sicherheitsmechanismen. Der
ursprüngliche 802.11-Standard definierte lediglich
ein einfaches Sicherheitsprotokoll namens WEP. Dieses
Protokoll verwendet einen fixen (gemeinsam verwendeten)
Schlüssel sowie die RC4-Kryptografie-Chiffre,
um Daten verschlüsselt über das drahtlose
Netzwerk zu senden. Alle Stationen des Netzwerks
müssen sich auf den gleichen fixen Schlüssel
einigen, um miteinander kommunizieren zu können. Dieses
Schema ist sehr leicht zu knacken und wird deshalb heute
kaum mehr eingesetzt. Aktuelle Sicherheitsmechanismen
bauen auf dem Standard &ieee; 802.11i auf, der neue
kryptografische Schlüssel (Chiffren), ein neues
Protokoll für die Anmeldung von Stationen an einem
- Access Point sowie Mechanismen zum Austausch von
+ Access Point, sowie Mechanismen zum Austausch von
Schlüsseln als Vorbereitung der Kommunikation zwischen
verschiedenen Geräten festlegt. Kryptografische
Schlüssel werden regelmäßig getauscht.
Außerdem gibt es Mechanismen, um Einbruchsversuche
zu entdecken (und Gegenmaßnahmen ergreifen zu können).
Ein weiteres häufig verwendetes Sicherheitsprotokoll ist
WPA. Dabei handelt es sich um einen Vorläufer von 802.11i,
der von einem Industriekonsortium als Zwischenlösung bis
zur endgültigen Verabschiedung von 802.11i entwickelt
wurde. WPA definiert eine Untergruppe der Anforderungen des
802.11i-Standards und ist für den Einsatz in älterer
Hardware vorgesehen. WPA benötigt nur den (auf dem
ursprünglichen WEP-Code basierenden) TKIP-Chiffre. 802.11i
erlaubt zwar auch die Verwendung von TKIP, fordert aber
zusätzlich eine stärkere Chiffre (AES-CCM)
für die Datenverschlüsselung. (AES war für
WPA nicht vorgesehen, weil man es als zu rechenintensiv
für den Einsatz in älteren Geräten ansah.)Neben den weiter oben erwähnten Standards ist auch
der Standard 802.11e von großer Bedeutung. Dieser
definiert Protokolle zur Übertragung von
Multimedia-Anwendungen wie das Streaming von Videodateien
oder Voice-over-IP (VoIP) in einem 802.11-Netzwerk. Analog
zu 802.11i verfügt auch 802.11e über eine
vorläufige Spezifikation namens WMM (ursprünglich
WME), die von einem Industriekonsortium als Untergruppe
von 802.11e spezifiziert wurde, um Multimedia-Anwendungen
bereits vor der endgültigen Verabschiedung des
802.11e-Standards implementieren zu können. 802.11e
sowie WME/WMM erlauben eine Prioritätenvergabe beim
Datentransfer im einem drahtlosen Netzwerk. Möglich
wird dies durch den Einsatz von Quality of Service-Protokollen
(QoS) und erweiterten Medienzugriffsprotokollen. Werden
diese Protokolle korrekt implementiert, erlauben sie daher
hohe Datenübertragungsraten und einen priorisierten
Datenfluss.&os; unterstützt seit der Version 6.0 die Standards
802.11a, 802.11b, sowie 802.11g. Ebenfalls unterstützt
werden WPA sowie die Sicherheitsprotokolle gemäß
802.11i (dies sowohl für 11a, 11b als auch 11g). QoS und
- Verkehrpriorisierung, die von den WME/WMM-Protokollen
+ Verkehrspriorisierung, die von den WME/WMM-Protokollen
benötigt werden, werden ebenfalls (allerdings nicht
für alle drahtlosen Geräte) unterstützt.BasiskonfigurationKernelkonfigurationUm ein drahtloses Netzwerk zu nutzen, benötigen
- Sie eine drahtlose Netzkarte und einen Kernel, der
+ Sie eine drahtlose Netzwerkkarte und einen Kernel, der
drahtlose Netzwerke unterstützt. Der &os;-Kernel
unterstützt den Einsatz von Kernelmodulen. Daher
müssen Sie nur die Unterstützung für die
von Ihnen verwendeten Geräte aktivieren.Als Erstes benötigen Sie ein drahtloses Gerät.
Die meisten drahtlosen Geräte verwenden Bauteile von
Atheros und werden deshalb vom &man.ath.4;-Treiber
unterstützt. Um diesen Treiber zu verwenden,
nehmen Sie die folgende Zeile in die Datei
/boot/loader.conf auf:if_ath_load="YES"Der Atheros-Treiber besteht aus drei Teilen:
dem Treiber selbst (&man.ath.4;), dem
Hardware-Support-Layer für die
chip-spezifischen Funktionen (&man.ath.hal.4;)
sowie einem Algorithmus zur Auswahl der korrekten
Frame-Übertragungsrate (ath_rate_sample).
Wenn Sie die Unterstützung für diesen
Treiber als Kernelmodul laden, kümmert sich
dieses automatisch um diese Aufgaben. Verwenden
Sie ein Nicht-Atheros-Gerät, so müssen
Sie hingegen das für dieses Gerät geeignete
Modul laden, beispielsweiseif_wi_load="YES"für Geräte, die auf Bauteilen von
Intersil Prism basieren und daher den Treiber
&man.wi.4; voraussetzen.In den folgenden Abschnitten wird der
&man.ath.4;-Treiber verwendet. Verwenden Sie ein
anderes Gerät, müssen Sie diesen Wert
daher an Ihre Konfiguration anpassen. Eine Liste aller
verfügbaren Treiber für drahtlose Geräte
finden Sie in der Manualpage &man.wlan.4;. Gibt es
keinen nativen &os;-Treiber für Ihr drahtloses
Gerät, können Sie möglicherweise mit
NDIS einen
&windows;-Treiber verwenden.Neben dem korrekten Treiber benötigen Sie auch
die Unterstützung für 802.11-Netzwerke. Für
den &man.ath.4;-Treiber werden dazu mindestens die
Module &man.wlan.4;, wlan_scan_ap
sowie wlan_scan_sta benötigt.
Das &man.wlan.4;-Kernelmodul wird automatisch mit dem
Treiber des drahtlosen Geräts geladen, die beiden
anderen Module werden jeweils durch einen Eintrag in der
Datei /boot/loader.conf beim Systemstart
geladen:wlan_scan_ap_load="YES"
wlan_scan_sta_load="YES"Die beiden Module wlan_scan_ap und
wlan_scan_sta werden von &os; 7.X
- benötigt, andere &os; Versionen brauchen diese hingegen
+ benötigt, andere &os;-Versionen brauchen diese hingegen
nicht.Zusätzlich
benötigen Sie noch Module zur Verschlüsselung
ihres drahtlosen Netzwerks. Diese werden normalerweise
dynamisch vom &man.wlan.4;-Modul geladen. Im folgenden
Beispiel erfolgt allerdings eine manuelle Konfiguration.
Folgende Module sind verfügbar: &man.wlan.wep.4;,
&man.wlan.ccmp.4; sowie &man.wlan.tkip.4;. Sowohl
&man.wlan.ccmp.4; als auch &man.wlan.tkip.4; werden nur
benötigt, wenn Sie WPA und/oder die Sicherheitsprotokolle
von 802.11i verwenden wollen. Wollen Sie Ihr Netzwerk
hingegen offen betreiben (also völlig ohne
Verschlüsselung), benötigen Sie nicht einmal
die &man.wlan.wep.4;-Unterstützung. Um alle drei
Module beim Systemstart zu laden, fügen Sie folgende
Zeilen in die Datei /boot/loader.conf
ein:wlan_wep_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"Die beiden Module wlan_scan_ap und
wlan_scan_sta werden von &os; 7.X
- benötigt, andere &os; Versionen brauchen diese hingegen
+ benötigt, andere &os;-Versionen brauchen diese hingegen
nicht.Danach müssen Sie Ihr &os;-System neu starten.
Alternativ können Sie die Kernelmodule aber auch
manuell mit &man.kldload.8; laden.Wollen Sie keine Kernelmodule verwenden, können
Sie die benötigten Treiber auch in Ihren Kernel
kompilieren. Daz nehmen Sie folgende Zeilen in Ihre
Kernelkonfigurationsdatei auf:device ath # Atheros IEEE 802.11 wireless network driver
device ath_hal # Atheros Hardware Access Layer
options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors
device ath_rate_sample # SampleRate tx rate control for ath
device wlan # 802.11 support
device wlan_scan_ap # 802.11 AP mode scanning
device wlan_scan_sta # 802.11 STA mode scanning
device wlan_wep # 802.11 WEP support
device wlan_ccmp # 802.11 CCMP support
device wlan_tkip # 802.11 TKIP supportDanach bauen Sie den neuen Kernel und starten Ihr
&os;-System neu.Während des Systemstarts sollten nun einige
Informationen ähnlich den folgenden über das von
Ihnen verwendete drahtlose Gerät ausgegeben
werden:ath0: <Atheros 5212> mem 0xff9f0000-0xff9fffff irq 17 at device 2.0 on pci2
ath0: Ethernet address: 00:11:95:d5:43:62
ath0: mac 7.9 phy 4.5 radio 5.6Infrastruktur-ModusDrahtlose Netzwerke werden in der Regel im
Infrastruktur-Modus (auch BSS-Modus genannt) betrieben.
Dazu werden mehrere drahtlose Access Points zu einem
gemeinsamen drahtlosen Netzwerk verbunden. Jedes dieser
drahtlosen Netzwerke hat einen eigenen Namen, der als
SSID bezeichnet wird. Alle Clients
eines drahtlosen Netzwerks verbinden sich in diesem Modus
mit einem Access Point.&os;-ClientsEinen Access Point finden
- Um nach drahtlosen Netzwerken zu suchen, verwenden Sie
+ Um nach drahtlosen Netzwerken zu suchen verwenden Sie
ifconfig. Dieser Scanvorgang kann einige
Zei in Anspruch nehmen, da dazu jede verfügbare
Frequenz auf verfügbare Access Points hin
überprüft werden muss. Um die Suche zu starten,
müssen Sie als Super-User angemeldet sein:&prompt.root; ifconfig ath0 up scan
SSID BSSID CHAN RATE S:N INT CAPS
dlinkap 00:13:46:49:41:76 6 54M 29:3 100 EPS WPA WME
freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS WPAIhre Netzwerkkarte muss in den Status
versetzt werden, bevor Sie den ersten
Scanvorgang starten können. Für spätere
Scans ist dies aber nicht mehr erforderlich.Als Ergebnis erhalten Sie eine Liste mit allen
gefundenen BSS/IBSS-Netzwerken. Zusätzlich zur
SSID (dem Namen des Netzwerks) wird
auch die BSSID ausgegeben. Dabei
handelt es sich um MAC-Adresse des Access Points. Das
Feld CAPS gibt den Typ des Netzwerks
sowie die Fähigkeiten der Stationen innerhalb des
Netzwerks an:EExtended Service Set (ESS). Zeigt an, dass die
Station Teil eines Infrastruktur-Netzwerks ist (und
nicht eines IBSS/Ad-hoc-Netzwerks).IIBSS/Ad-hoc-Netzwerk. Die Station ist Teil eines
Ad-hoc-Netzwerks (und nicht eines
ESS-Netzwerks).PPrivacy. Alle Datenframes, die innerhalb des
BSS ausgetauscht werden, sind verschlüsselt.
Dieses BSS verwendet dazu kryptografische Verfahren
wie WEP, TKIP oder AES-CCMP.SShort Preamble. Das Netzwerk verwendet eine
kurze Präambel (definiert in 802.11b High
Rate/DSSS PHY). Eine kurze Präambel verwendet
ein 56 Bit langes Sync-Feld (im Gegensatz
zu einer langen Präambel, die ein
128 Bit langes Sync-Feld verwendet).sShort slot time. Das 802.11g-Netzwerk verwendet
eine kurze Slotzeit, da es in diesem Netzwerk keine
veralteten (802.11b) Geräte gibt.Um eine Liste der bekannten Netzwerke auszugeben,
verwenden Sie den folgenden Befehl:&prompt.root; ifconfig ath0 list scanDiese Liste kann entweder automatisch durch das
drahtlose Gerät oder manuell durch eine
-Aufforderung aktualisiert werden.
Veraltete Informationen werden dabei automatisch
entfernt.BasiseinstellungenDieser Abschnitt beschreibt, wie Sie ein einfaches
drahtloses Netzerk ohne Verschlüsselung unter &os;
einrichten. Nachdem Sie sich mit den Informationen dieses
Abschnitts vertraut gemacht haben, sollten Sie Ihr
drahtloses Netzwerk mit WPA
verschlüsseln.Das Einrichten eines drahtlosen Netzwerks erfolgt
in drei Schritten: Der Auswahl eines Access Points, der
Anmeldung Ihrer Station sowie der Konfiguration Ihrer
IP-Adresse.Einen Access Point auswählenIm Normalfall wird sich Ihre Station automatisch mit
einem der zur Verfügung stehenden Access Points
verbinden. Sie müssen dazu lediglich Ihr
drahtloses Gerät aktivieren. Alternativ können
Sie auch einen Eintrag ähnlich dem folgenden in
/etc/rc.conf aufnehmen:ifconfig_ath0="DHCP"Wollen Sie sich hingegen mit einem bestimmten
Access Point verbinden, müssen Sie dessen
SSID angeben:ifconfig_ath0="ssid Ihre_SSID DHCP"Gibt es in Ihrem Netzwerk mehrere Access Points
mit der gleichen SSID (was der Einfachheit wegen
häufig der Fall ist), können Sie sich dennoch
mit einem bestimmten Access Point verbinden. Dazu
müssen Sie lediglich die BSSID des Access Points
angeben (die Angabe der SSID ist in diesem Fall nicht
erforderlich):ifconfig_ath0="ssid Ihre_SSID bssid xx:xx:xx:xx:xx:xx DHCP"Es gibt noch weitere Möglichkeiten, den Zugriff
auf bestimmte Access Point zu beschränken,
beispielsweise durch die Begrenzung der Frequenzen, auf
- denen eine Station nach einem Acces Point sucht. Sinnvoll
+ denen eine Station nach einem Access Point sucht. Sinnvoll
ist ein solches Vorgehen beispielsweise, wenn Ihr
drahtloses Gerät in verschiedenen Frequenzbereichen
arbeiten kann, da in diesem Fall das Prüfen aller
Frequenzen sehr zeitintensiv ist. Um nur innerhalb eines
bestimmten Frequenzbereichs nach einem Access Point zu
suchen, verwenden Sie die Option :ifconfig_ath0="mode 11g ssid Ihre_SSID DHCP"Dadurch sucht Ihr drahtloses Gerät nur im
2,4 GHz-Band (802.11g), aber nicht innerhalb des
5 GHz-Bandes nach einem Access Point. Mit der
Option können Sie eine
bestimmte Frequenz vorgeben, auf der gesucht werden
soll. Die Option erlaubt
die Angabe mehrerer erlaubter Frequenzen. Eine
umfassende Beschreibung dieser Optionen finden Sie in
der Manualpage &man.ifconfig.8;.AuthentifizierungWenn Sie einen Access Point gefunden haben, muss
sich Ihrem Station am Access Point anmelden, bevor
Sie Daten übertragen kann. Dazu gibt es
verschiedene Möglichkeiten. Am häufigsten
wird nach wie vor die sogenannte offene
Authentifizierung verwendet. Dabei wird
es jeder Station erlaubt, sich mit einem Netzwerk
zu verbinden und Daten zu übertragen. Aus
Sicherheitsgründen sollte diese Methode allerdings
nur zu Testzwecken bei der erstmaligen Einrichtung
eines drahtlosen Netzwerks verwendet werden. Andere
Authentifizierungsmechanismen erfordern den Austausch
kryptografischer Informationen, bevor Sie die
Übertragung von Daten erlauben. Dazu gehören
der Austausch fixer (vorher vereinbarter) Schlüssel
oder Kennwörter sowie der Einsatz komplexerer
Verfahren mit Backend-Diensten wie RADIUS. Die meisten
Netzwerke nutzen allerdings nach wie vor die offene
Authentifizierung, da dies die Voreinstellung ist. Am
zweithäufigsten kommt das weiter unten beschriebene
WPA-PSK
(das auch als WPA Personal
bezeichnet wird) zum Einsatz.Verwenden Sie eine
&apple; &airport; Extreme-Basisstation als Access Point,
benötigen Sie wahrscheinlich sowohl die
Shared-Key-Authentifizierung als auch einen
WEP-Schlüssel. Die entsprechende Konfiguration
erfolgt entweder in der Datei
/etc/rc.conf oder über das
Programm &man.wpa.supplicant.8;. Verwenden Sie nur
eine einzige &airport;-Basisstation, benötigen
Sie einen Eintrag ähnlich dem folgenden:ifconfig_ath0="authmode shared wepmode on weptxkey 1 wepkey 01234567 DHCP"Normalerweise sollten Sie
Shared-Key-Authentifizierung aber nicht verwenden,
da diese die Sicherheit des WEP-Schlüssel noch
weiter verringert. Müssen Sie WEP einsetzen
(beispielsweise weil Sie zu veralteten Geräten
kompatibel bleiben müssen), sollten Sie WEP
nur zusammen mit der offenen Authentifizierung
(open authentication) verwenden.
WEP wird im näher
beschrieben.Eine IP-Adresse über DHCP beziehenNachdem Sie einen Access Point gefunden und sich
authentifiziert haben, benötigen Sie noch eine
IP-Adresse, die Sie in der Regel über DHCP
zugewiesen bekommen. Dazu müssen Sie lediglich
die Option DHCP in Ihre
in der Datei /etc/rc.conf
vorhandene Konfiguration Ihres drahtlosen Geräts
aufnehmen:ifconfig_ath0="DHCP"Nun können Sie Ihr drahtloses Gerät
starten:&prompt.root; /etc/rc.d/netif startNachdem Sie das Gerät aktiviert haben,
können Sie mit ifconfig den
Status des Geräts ath0
abfragen:&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/54Mbps)
status: associated
ssid dlinkap channel 6 bssid 00:13:46:49:41:76
authmode OPEN privacy OFF txpowmax 36 protmode CTS bintval 100status: associated besagt, dass
sich Ihr Gerät mit dem drahtlosen Netzwerk verbunden
hat (konkret mit dem Netzwerk dlinkap).
bssid 00:13:46:49:41:76 gibt die
MAC-Adresse Ihres Access Points aus und die Zeile mit
authmode informiert Sie darüber,
dass Ihre Kommunikation nicht verschlüsselt wird
(OPEN).Statische IP-AdressenAlternativ zu dynamischen IP-Adressen
können Sie auch eine statische IP-Adresse verwenden.
Dazu ersetzen Sie in Ihrer Konfiguration
DHCP durch die zu verwendende
IP-Adresse. Beachten Sie dabei, dass Sie die anderen
Konfigurationsparameter nicht versehentlich
verändern:ifconfig_ath0="ssid Ihre_ssid inet 192.168.1.100 netmask 255.255.255.0"WPABei WPA (Wi-Fi Protected Access) handelt es sich um ein
Sicherheitsprotokoll, das in 802.11-Netzwerken verwendet
wird, um die Nachteile von WEP (fehlende
Authentifizierung und schwache Verschlüsselung)
zu vermeiden. WPA stellt das aktuelle
802.1X-Authentifizierungsprotokoll dar und verwendet
eine von mehreren Chiffren, um die Datensicherheit
zu gewährleisten. Die einzige Chiffre, die von
WPA verlangt wird, ist TKIP (Temporary
Key Integrity Protocol), eine Chiffre,
die die von WEP verwendete RC4-Chiffre um Funktionen
zur Prüfung der Datenintegrität und zur
Erkennung und Bekämpfung von Einbruchsversuchen
erweitert.
TKIP ist durch Softwaremodifikationen auch unter
veralteter Hardware lauffähig. Im Vergleich zu
WEP ist WPA zwar sehr viel sicherer, es ist aber dennoch
nicht völlig immun gegen Angriffe. WPA definiert
mit AES-CCMP noch eine weitere Chiffre als Alternative
zu TKIP. AES-CCMP (das häufig als WPA2 oder RSN
bezeichnet wird) sollte, wenn möglich, eingesetzt
werden.WPA definiert Authentifizierungs- und
Verschlüsselungsprotokolle. Die Authentifizierung
erfolgt in der Regel über eine der folgenden
Techniken: 802.1X gemeinsam mit einem
Backend-Authentifizierungsdienst wie RADIUS, oder durch
einen Minimal-Handshake zwischen der Station und dem
Access Point mit einem vorher vereinbarten gemeinsamen
Schlüssel. Die erste Technik wird als
WPA Enterprise, die zweite
hingegen als WPA Personal
bezeichnet. Da sich der Aufwand für das Aufsetzen
eines RADIUS-Backend-Servers für die meisten
drahtlosen Netzwerke nicht lohnt, wird WPA in der Regel
als WPA-PSK (WPA, Pre-Shared-Key) konfiguriert.Die Kontrolle der drahtlosen Verbindung sowie die
vorangehende Authentifizierung (über Schlüssel
oder durch die Kommunikation mit einem Server) erfolgt
über das Programm &man.wpa.supplicant.8;, das
über die Datei
/etc/wpa_supplicant.conf
eingerichtet wird. Ausführliche Informationen
zur Konfiguration des Programms finden sich in der
Manualpage &man.wpa.supplicant.conf.5;.WPA-PSKWPA-PSK oder WPA-Personal basiert auf einem
gemeinsamen (vorher vereinbarten) Schlüssel (PSK),
der aus einem Passwort generiert und danach als
Master-Key des drahtlosen Netzwerks verwendet wird.
Jeder Benutzer des drahtlosen Netzwerks verwendet daher
den gleichen Schlüssel. WPA-PSK
sollte nur in kleinen Netzwerken eingesetzt werden, in
denen die Konfiguration eines Authentifizierungsservers
nicht möglich oder erwünscht ist.Achten Sie darauf, dass Sie immer starke
Passwörter verwenden, die ausreichend lang
sind und, wenn möglich, auch Sonderzeichen
enthalten, damit diese nicht leicht erraten und/oder
- geknackt werden können.
+ umgangen werden können.
Der erste Schritt zum Einsatz von WPA-PSK ist die
Konfiguration der SSID und des gemeinsamen Schlüssels
Ihres Netzwerks in der Datei
/etc/wpa_supplicant.conf:network={
ssid="freebsdap"
psk="freebsdmall"
}Danach geben Sie in /etc/rc.conf
an, dass WPA zur Verschlüsselung eingesetzt werden
soll und dass die IP-Adresse über DHCP bezogen
wird:ifconfig_ath0="WPA DHCP"Nun können Sie Ihr Netzgerät aktivieren:&prompt.root; /etc/rc.d/netif start
Starting wpa_supplicant.
DHCPDISCOVER on ath0 to 255.255.255.255 port 67 interval 5
DHCPDISCOVER on ath0 to 255.255.255.255 port 67 interval 6
DHCPOFFER from 192.168.0.1
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.254 -- renewal in 300 seconds.
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/36Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit txpowmax 36
protmode CTS roaming MANUAL bintval 100Alternativ können Sie die Konfiguration von
WPA-PSK
auch manuell durchführen, wobei Sie wiederum die
Konfigurationsdatei
/etc/wpa_supplicant.conf
verwenden:&prompt.root; wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf
Trying to associate with 00:11:95:c3:0d:ac (SSID='freebsdap' freq=2412 MHz)
Associated with 00:11:95:c3:0d:ac
WPA: Key negotiation completed with 00:11:95:c3:0d:ac [PTK=TKIP GTK=TKIP]Im zweiten Schritt starten Sie nun
dhclient, um eine IP-Adresse vom
DHCP-Server zu beziehen:&prompt.root; dhclient ath0
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.254 -- renewal in 300 seconds.
&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/48Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit txpowmax 36
protmode CTS roaming MANUAL bintval 100Enthält Ihre /etc/rc.conf
bereits die Zeile ifconfig_ath0="DHCP",
müssen Sie dhclient nicht mehr
manuell aufrufen, da dhclient in
diesem Fall automatisch gestartet wird, nachdem
wpa_supplicant die Schlüssel
übergibt.Sollte der Einsatz von DHCP nicht möglich sein,
können Sie auch eine statische IP-Adresse
angeben, nachdem wpa_supplicant Ihre
Station authentifiziert hat:&prompt.root; ifconfig ath0 inet 192.168.0.100 netmask 255.255.255.0
&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/36Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit txpowmax 36
protmode CTS roaming MANUAL bintval 100Verwenden Sie DHCP nicht, müssen Sie
zusätzlich noch das Standard-Gateway sowie
den/die Nameserver manuell festlegen:&prompt.root; route add default your_default_router
&prompt.root; echo "nameserver your_DNS_server" >> /etc/resolv.confWPA und EAP-TLSDie zweite Möglichkeit, WPA einzusetzen, ist
die Verwendung eines
802.1X-Backend-Authentifizierungsservers. Diese
Variante wird als WPA-Enterprise bezeichnet, um sie
vom weniger sicheren WPA-Personal abzugrenzen, das
auf dem Austausch gemeinsamer (und vorher vereinbarter
Schlüssel) basiert. Die bei WPA-Enterprise
verwendete Authentifizierung basiert auf EAP
(Extensible Authentication
Protocol).EAP selbst bietet keine Verschlüsselung,
sondern operiert in einem verschlüsselten
Tunnel. Es gibt verschiedene, auf EAP basierende
Authentifizierungsmethoden, darunter EAP-TLS,
EAP-TTLS sowie EAP-PEAP.Bei EAP-TLS (EAP with Transport Layers
Security) handelt es sich um sehr gut
unterstütztes Authentifizierungsprotokoll, da es
sich dabei um die erste EAP-Methode handelt, die von
der Wi-Fi
Alliance zertifiziert wurde. EAP-TLS
erfordert drei Zertifikate: Das (auf allen Rechnern
installierte) CA-Zertifikat, das Server-Zertifikat
Ihres Authentifizierungsservers, sowie ein
Client-Zertifikat für jeden drahtlosen Client.
Sowohl der Authentifizierungsservers als auch die
drahtlosen Clients authentifizieren sich gegenseitig
durch ihre Zertifikate, wobei sie überprüfen,
ob diese Zertifikate auch von der
Zertifizierungs-Authorität (CA) des jeweiligen
Unternehmens signiert wurden.Die Konfiguration erfolgt (analog zu WPA-PSK)
über die Datei
/etc/wpa_supplicant.conf:network={
ssid="freebsdap"
proto=RSN
key_mgmt=WPA-EAP
eap=TLS
identity="loader"
ca_cert="/etc/certs/cacert.pem"
client_cert="/etc/certs/clientcert.pem"
private_key="/etc/certs/clientkey.pem"
private_key_passwd="freebsdmallclient"
}Der Name des Netzwerks (die SSID).Das RSN/WPA2-Protokoll (&ieee; 802.11i) wird
verwendet.Die key_mgmt-Zeile bezieht
sich auf das verwendete Key-Management-Protokoll.
In diesem Beispiel wird WPA gemeinsam mit der
EAP-Authentifizierung verwendet
(WPA-EAP).Die für die Verbindung verwendete
EAP-Methode.Das identity-Feld enthält
den von EAP verwendeten Identifizierungsstring.Das Feld ca_cert gibt den Pfad
zum CA-Zertifikat an. Dieses Datei wird benötigt,
um das Server-Zertifikat zu verifizieren.Die client_cert-Zeile gibt den
Pfad zum Client-Zertifikat an. Jeder Client hat ein
- eigenes, innerhalb des Netzwerks eindeutiges
+ eigenes, innerhalb des Netzwerks eindeutiges,
Zertifikat.Das Feld private_key gibt den
Pfad zum privaten Schlüssel des
Client-Zertifikat an.Das Feld private_key_passwd
enthält die Passphrase für den privaten
Schlüssel.Danach fügen Sie die folgende Zeile in
/etc/rc.conf ein:ifconfig_ath0="WPA DHCP"Nun können Sie Ihr drahtloses Gerät
über das rc.d-System
aktivieren:&prompt.root; /etc/rc.d/netif start
Starting wpa_supplicant.
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.20
bound to 192.168.0.254 -- renewal in 300 seconds.
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (DS/11Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA2/802.11i privacy ON deftxkey UNDEF TKIP 2:128-bit
txpowmax 36 protmode CTS roaming MANUAL bintval 100Alternativ können Sie Ihr drahtloses Gerält
wiederum manuell über
wpa_supplicant und
ifconfig aktivieren.WPA und EAP-TTLSBei EAP-TLS müssen sowohl der
Authentifizierungsserver als auch die Clients jeweils
ein eigenes Zertifikat aufweisen. Setzen Sie hingegen
EAP-TTLS (EAP-Tunneled
Transport Layer Security) ein, ist das
Client-Zertifikat optional. EAP-TTLS geht dabei
ähnlich vor wie verschlüsselte Webseiten,
bei denen der Webserver einen sicheren SSL-Tunnel
erzeugen kann, ohne dass der Besucher dabei über
ein client-seitiges Zertifikat verfügen muss.
EAP-TTLS verwendet einen verschlüsselten
TLS-Tunnel zum sicheren Transport der
Authentifizierungsdaten.Die Konfiguration von EAP-TTLS erfolgt in der
Datei /etc/wpa_supplicant.conf:network={
ssid="freebsdap"
proto=RSN
key_mgmt=WPA-EAP
eap=TTLS
identity="test"
password="test"
ca_cert="/etc/certs/cacert.pem"
phase2="auth=MD5"
}Die für die Verbindung verwendete
EAP-Methode.Das identity-Feld enthält
den Identifizierungsstring für die
EAP-Authentifizierung innerhalb des
verschlüsselten TlS-Tunnels.Das password-Feld enthält
die Passphrase für die
EAP-Authentifizierung.Das Feld ca_cert gibt den
Pfad zum CA-Zertifikat an, das benötigt wird,
um das Server-Zertifikat zu verifizieren.Die innerhalb des verschlüsselten TLS-Tunnels
verwendete Authentifizierungsmethode. In unserem
Beispiel handelt es sich dabei um EAP und MD5. Diese
Phase der inneren Authentifizierung wird
oft als phase2 bezeichnet.Folgende Zeile muss zusätzlich in die Datei
/etc/rc.conf aufgenommen werden:ifconfig_ath0="WPA DHCP"Nun können Sie Ihr drahtloses Gerät
aktivieren:&prompt.root; /etc/rc.d/netif start
Starting wpa_supplicant.
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.20
bound to 192.168.0.254 -- renewal in 300 seconds.
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (DS/11Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA2/802.11i privacy ON deftxkey UNDEF TKIP 2:128-bit
txpowmax 36 protmode CTS roaming MANUAL bintval 100WPA und EAP-PEAPPEAP (Protected EAP)
wurde als Alternative zu EAP-TTLS entwickelt. Es gibt
zwei verschiedene PEAP-Methoden, wobei es sich bei
PEAPv0/EAP-MSCHAPv2 um die häufiger verwendete
Methode handelt. In den folgenden Ausführungen
wird der Begriff PEAP synonym für diese
EAP-Methode verwendet. PEAP ist nach EAP-TLS der
am häufigsten verwendete und am besten
unterstützte EAP-Standard.PEAP arbeitet ähnlich wie EAP-TTLS: Es
verwendet ein server-seitiges Zertifikat, um
einen verschlüsselten TLS-Tunnel zu erzeugen,
über den die sichere Authentifizierung zwischen
den Clients und dem Authentifizierungsserver erfolgt.
In Sachen Sicherheit unterscheiden sich EAP-TTLS und
PEAP allerdings: PEAP überträgt den
Benutzernamen im Klartext und verschlüsselt nur
das Passwort, während EAP-TTLS sowohl den
Benutzernamen als auch das Passwort über den
TLS-Tunnel überträgt.Um EAP-PEAP einzurichten, müssen Sie die
Konfigurationsdatei
/etc/wpa_supplicant.conf
anpassen:network={
ssid="freebsdap"
proto=RSN
key_mgmt=WPA-EAP
eap=PEAP
identity="test"
password="test"
ca_cert="/etc/certs/cacert.pem"
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
}Die für die Verbindung verwendete
EAP-Methode.Das identity-Feld enthält
den Identifizierungsstring für die innerhalb
des verschlüsselten TLS-Tunnels erfolgende
EAP-Authentifizierung.Das Feld password enthält
die Passphrase für die EAP-Authentifizierung.Das Feld ca_cert gibt den Pfad
zum CA-Zertifikat an, das zur Verifizierung des
Server-Zertifikats benötigt wird.Dieses Feld enthält die Parameter für
die erste Phase der Authentifizierung (also den
TLS-Tunnel). Je nach dem, welchen
Authentifizierungsserver Sie verwenden, müssen
Sie hier einen unterschiedlichen Wert angeben.
In den meisten Fällen wird dieses Feld den
Wert client EAP encryption aufweisen,
der durch die Angabe von
peaplabel=0 gesetzt wird. Weitere
Informationen zur Konfiguration von PEAP finden Sie
in der Manualpage &man.wpa.supplicant.conf.5;.Das innerhalb des verschlüsselten TLS-Tunnels
verwendete Authentifizierungsprotokoll. In unserem
Beispiel handelt es sich dabei um
auth=MSCHAPV2.Danach fügen Sie die folgende Zeile in
/etc/rc.conf ein:ifconfig_ath0="WPA DHCP"
- Zuletzt müssen Sie die Netzkarte noch
+ Zuletzt müssen Sie die Netzwerkkarte noch
aktivieren:&prompt.root; /etc/rc.d/netif start
Starting wpa_supplicant.
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.20
bound to 192.168.0.254 -- renewal in 300 seconds.
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (DS/11Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA2/802.11i privacy ON deftxkey UNDEF TKIP 2:128-bit
txpowmax 36 protmode CTS roaming MANUAL bintval 100WEPWEP (Wired Equivalent Privacy) ist Teil des
ursprünglichen 802.11-Standards. Es enthält
keinen Authentifzierungsmechanismus und verfügt
lediglich über eine schwache Zugriffskontrolle,
- die sehr leicht geknackt werden kann.
+ die sehr leicht umgangen werden kann.
WEP kann über ifconfig
aktiviert werden:&prompt.root; ifconfig ath0 ssid my_net wepmode on weptxkey 3 wepkey 3:0x3456789012 \
inet 192.168.1.100 netmask 255.255.255.0 Mit weptxkey geben Sie an,
welcher WEP-Schlüssel für für die
Datenübertragung verwendet wird (in unserem
Beispiel ist dies der dritte Schlüssel). Der
gleiche Schlüssel muss auch am Access Point
eingestellt sein. Kennen Sie den vom Access Point
verwendeten Schlüssel nciht, sollten Sie zuerst
den Wert 1 (d.h. den ersten
Schlüssel) für diese Variable verwenden.Mit wepkey legen Sie den zu
verwendenden WEP-Schlüssel in der Form
Nummer:Schlüssel fest.
Ist der Schlüssel "Nummer" nicht vorhanden, wird
automatisch Schlüssel 1
verwendet. Die Angabe von "Nummer" ist zwingend
nötig, wenn Sie einen anderen als den ersten
Schlüssel verwenden wollen.In Ihrer Konfiguration müssen Sie
0x3456789012 durch den an
Ihrem Access Point konfigurierten Schlüssel
ersetzen.Weitere Informationen finden Sie in der Manualpage
&man.ifconfig.8;.Das Programm wpa_supplicant
eignet sich ebenfalls dazu, WEP für Ihr drahtloses
Gerät zu aktivieren. Obige Konfiguration lässt
sich dabei durch die Aufnahme der folgenden Zeilen in die
Datei /etc/wpa_supplicant.conf
realisieren:network={
ssid="my_net"
key_mgmt=NONE
wep_key3=3456789012
wep_tx_keyidx=3
}Danach müssen Sie das Programm noch aufrufen:&prompt.root; wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf
Trying to associate with 00:13:46:49:41:76 (SSID='dlinkap' freq=2437 MHz)
Associated with 00:13:46:49:41:76Ad-hoc-ModusDer IBSS-Modus (auch als Ad-hoc-Modus bezeichnet), ist
für Punkt-zu-Punkt-Verbindungen vorgesehen. Um
beispielsweise eine Ad-hoc-Verbindung zwischen den Rechnern
A und B aufzubauen,
benötigen Sie lediglich zwei IP-Adressen und eine
SSID.Auf dem Rechner A geben Sie Folgendes
ein:&prompt.root; ifconfig ath0 ssid freebsdap mediaopt adhoc inet 192.168.0.1 netmask 255.255.255.0
&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4
ether 00:11:95:c3:0d:ac
media: IEEE 802.11 Wireless Ethernet autoselect <adhoc> (autoselect <adhoc>)
status: associated
ssid freebsdap channel 2 bssid 02:11:95:c3:0d:ac
authmode OPEN privacy OFF txpowmax 36 protmode CTS bintval 100Der adhoc-Parameter gibt an, dass die
Schnittstelle im IBSS-Modus läuft.Rechner B sollte nun in der Lage sein,
Rechner A zu finden:&prompt.root; ifconfig ath0 up scan
SSID BSSID CHAN RATE S:N INT CAPS
freebsdap 02:11:95:c3:0d:ac 2 54M 19:3 100 ISDer Wert I (Spalte CAPS) gibt an,
dass sich Rechner A im Ad-hoc-Modus befindet.
Nun müssen Sie nur noch Rechner B eine
unterschiedliche IP-Adresse zuweisen:&prompt.root; ifconfig ath0 ssid freebsdap mediaopt adhoc inet 192.168.0.2 netmask 255.255.255.0
&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect <adhoc> (autoselect <adhoc>)
status: associated
ssid freebsdap channel 2 bssid 02:11:95:c3:0d:ac
authmode OPEN privacy OFF txpowmax 36 protmode CTS bintval 100Damit sind die Rechner A und
B bereit und können untereinander
Daten austauschen.
-
+
&os; Host Access Points
+
+ &os; kann als Access Point (AP) agieren. Dies verhindert,
+ dass man sich einen Hardware AP kaufen oder ein ad-hoc
+ Netzwerk laufen lassen muss. Dies kann sinnvoll sein,
+ falls Ihre &os;-Computer als Gateway zu einem anderen
+ Netzwerk (z.B. Internet) fungiert.
+
+
+ Grundeinstellungen
+
+ Bevor Sie ihren &os;-Computer als einen AP konfigurieren,
+ muss der Kernel mit dem für ihre Wireless-Karte
+ entsprechenden Treibern konfiguriert werden. Sie
+ müssen ebenfalls die Sicherheitsprotokolle, die Sie
+ nutzen wollen, dem Kernel hinzufügen. Für
+ weitere Informationen siehe:
+ .
+
+
+ Die Verwendung der NDIS und &windows; Treiber erlauben
+ zur Zeit keinen AP-Modus. Nur die nativen
+ &os;-Wireless-Treiber unterstüten den AP Modus.
+
+
+ Nachdem die Unterstützung für ihr drahtloses
+ Netzwerk geladen ist, können Sie überprüfen, ob
+ Ihr Wireless-Gerät den hostbasierenden Access-Point Modus
+ (auch bekannt als hostap Modus) unterstützt:
+
+ &prompt.root; ifconfig ath0 list caps
+ath0=783ed0f<WEP,TKIP,AES,AES_CCM,IBSS,HOSTAP,AHDEMO,TXPMGT,SHSLOT,SHPREAMBLE,MONITOR,TKIPMIC,WPA1,WPA2,BURST,WME>
+
+ Diese Ausgabe zeigt die Möglichkeiten der Karte. Das
+ Wort HOSTAP bestätigt, dass diese
+ Wireless-Karte als Access Point agieren kann. Die
+ verschiedenen unterstützten Algorithmen
+ (z.B. WEP, TKIP, WPA2, usw.) werden ebenfalls angezeigt.
+ Diese Informationen sind wichtig, wenn Sie wissen wollen,
+ welche Sicherheitsprotokolle auf diesem Access Point
+ verwendbar sind.
+
+ Das Wireless-Gerät kann nun in den hostap Modus
+ gesetzt werden und mit der korrekten SSID und IP-Adresse
+ konfiguriert werden:
+
+ &prompt.root; ifconfig ath0 ssid freebsdap mode 11g mediaopt hostap inet 192.168.0.1 netmask 255.255.255.0
+
+ Benutzen Sie nochmals den Befehl ifconfig,
+ um den Status von der
+ ath0-Schnittstelle abzufragen:
+
+ &prompt.root; ifconfig ath0
+ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
+ inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4
+ ether 00:11:95:c3:0d:ac
+ media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
+ status: associated
+ ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
+ authmode OPEN privacy OFF txpowmax 38 bmiss 7 protmode CTS burst dtimperiod 1 bintval 100
+
+ Die hostap-Parameter geben die
+ Schnittselle an, die im hostbasierenden Access Point Modus
+ läuft.
+
+ Die Konfiguration der Schnittstelle kann durch
+ Hinzufügen der folgenden Zeile in die
+ /etc/rc.conf automatisch während
+ des Bootvorganges erfolgen:
+
+ ifconfig_ath0="ssid freebsdap mode 11g mediaopt hostap inet 192.168.0.1 netmask 255.255.255.0"
+
+
+
+ Hostbasierender Access Point ohne Authentifizierung
+ oder Verschlüsselung
+
+ Obwohl es nicht empfohlen wird, einen AP ohne jegliche
+ Authentifizierung oder Verschlüsselung laufen zu lassen,
+ ist es eine einfache Art zu testen, ob der AP funktioniert.
+ Diese Konfiguration ist auch wichtig für die Fehlersuche
+ bei Client-Problemen.
+
+ Nachdem Sie den AP, wie oben beschrieben, konfiguriert
+ haben, ist es möglich von einem anderen drahtlosen
+ Computer eine Suche nach dem AP zu starten:
+
+ &prompt.root; ifconfig ath0 up scan
+SSID BSSID CHAN RATE S:N INT CAPS
+freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 ES
+
+ Der Client-Rechner fand den Access Point und kann mit ihm
+ verbunden werden:
+
+ &prompt.root; ifconfig ath0 ssid freebsdap inet 192.168.0.2 netmask 255.255.255.0
+&prompt.root; ifconfig ath0
+ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
+ inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
+ ether 00:11:95:d5:43:62
+ media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/54Mbps)
+ status: associated
+ ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
+ authmode OPEN privacy OFF txpowmax 36 protmode CTS bintval 100
+
+
+
+ WPA-basierender Host-Access Point
+
+ Dieser Abschnitt beschäftigt sich mit dem Konfigurieren
+ eines &os;-Access-Points mit dem WPA-Sicherheitsprotokoll.
+ Weitere Einzelheiten zu WPA und der Konfiguration von Clients mit
+ WPA finden Sie im
+ .
+
+ Der hostapd-Dienst wird genutzt,
+ um die Client-Authentifizierung und das Schlüsselmanagement
+ auf dem Access Point mit aktiviertem WPA zu nutzen.
+
+ In den folgenden Abschnitten werden allen Konfigurationen
+ auf dem &os;-Computer ausgeführt, der als AP agiert.
+ Nachdem der AP korrekt arbeitet, sollte
+ hostapd automatisch beim Booten
+ durch folgende Zeile in der /etc/rc.conf
+ aktiviert werden:
+
+ hostapd_enable="YES"
+
+ Bevor Sie versuchen hostapd
+ zu konfigurieren, stellen Sie sicher, dass die
+ Grundeinstellungen, wie in
+ beschrieben,
+ ausgeführt wurden.
+
+
+ WPA-PSK
+
+ WPA-PSK ist für kleine Netzwerke gedacht, in denen die
+ Verwendung eines Authentifizierungs-Backend-Server nicht
+ möglich oder erwünscht ist.
+
+ Die Konfiguration wird in
+ /etc/hostapd.conf
+ durchgeführt:
+
+ interface=ath0
+debug=1
+ctrl_interface=/var/run/hostapd
+ctrl_interface_group=wheel
+ssid=freebsdap
+wpa=1
+wpa_passphrase=freebsdmall
+wpa_key_mgmt=WPA-PSK
+wpa_pairwise=CCMP TKIP
+
+
+
+ Dieses Feld zeigt die Wireless-Schnittstelle an, die
+ für den Access Point verwendet wird an.
+
+
+
+ Dieses Feld legt den debuglevel von
+ hostapd während der
+ Ausführung fest. Ein Wert von 1
+ ist der kleinste zulässige Wert.
+
+
+
+ Das ctrl_interface-Feld gibt
+ den Pfadnamen des Verzeichnisses an, der von
+ hostapd dazu genutzt wird,
+ um die domain socket Dateien zu speichern, die für
+ die Kommunikation mit externen Programmen,
+ wie z.B. &man.hostapd.cli.8;, benutzt werden.
+ Hier wurden die Standardwerte benutzt.
+
+
+
+ Die Zeile ctrl_interface_group
+ legt fest, welche Gruppe (hier ist es die
+ wheel-Gruppe) die Erlaubnis hat,
+ die Schnittstellendateien zu kontrollieren.
+
+
+
+ Dieses Feld setzt den Netzwerknamen.
+
+
+
+ Das wpa-Feld aktiviert WPA und
+ gibt an welches WPA-Authentifizierungprotokoll
+ benötigt wird. Ein Wert von 1
+ konfiguriert den AP mit WPA-PSK.
+
+
+
+ Das wpa_passphrase-Feld
+ beinhaltet das ASCII-Passwort für die
+ WPA-Authentifikation.
+
+
+
+ Verwenden Sie immer sichere Passwörter,
+ die ausreichend lang sind und aus vielen
+ unterschiedlichen Zeichen bestehen, damit sie nicht
+ erraten werden oder umgangen werden können.
+
+
+
+
+
+ Die wpa_key_mgmt Zeile bestimmt
+ das Schlüsselmanagement-Protokoll, das benutzt wird.
+ In unserem Fall ist es WPA-PSK.
+
+
+
+ Das wpa_pairwise Feld zeigt die
+ zulässigen Verschlüsselungs-Algorithmen
+ des Access Points. Hier werden beide, TKIP (WPA) und
+ CCMP (WPA2), akzeptiert. CCMP-Verschlüsselung ist
+ eine Alternative zu TKIP und sollte wenn möglich
+ eingesetzt werden. TKIP sollte nur da eingesetzt werden,
+ wo kein CCMP möglich ist.
+
+
+
+ Als nächstes wird der
+ hostapd gestartet:
+
+ &prompt.root /etc/rc.d/hostapd forcestart
+
+ &prompt.root; ifconfig ath0
+ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2290
+ inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
+ inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4
+ ether 00:11:95:c3:0d:ac
+ media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
+ status: associated
+ ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
+ authmode WPA2/802.11i privacy MIXED deftxkey 2 TKIP 2:128-bit txpowmax 36 protmode CTS dtimperiod 1 bintval 100
+
+ Der Access Point ist nun am laufen, die Clients
+ können mit ihm verbunden werden. Weitere
+ Informationen finden Sie im
+ . Es ist möglich
+ zu sehen, welche Stationen mit dem AP verbunden sind.
+ Dazu geben Sie den Befehl
+ ifconfig ath0 list sta
+ ein.
+
+
+
+
+ WEP hostbasierender Access Point
+
+ Es ist nicht empfehlenswert, einen Access Point mit
+ WEP zu konfigurieren, da es keine
+ Authentifikationsmechanismen gibt und WEP leicht zu
+ knacken ist. Einige ältere WLAN-Karten
+ unterstützen nur WEP als Sicherheitsprotokoll. Für
+ solche Karten ist es notwendig den AP ohne
+ Authentifikation, Verschlüsselung oder mit dem
+ WEP-Protokoll zu konfigurieren.
+
+ Das Wireless-Gerät kann nun in den hostap Modus
+ versetzt werden und mit der korrekten SSID und IP-Adresse
+ konfiguriert werden:
+
+ &prompt.root; ifconfig ath0 ssid freebsdap wepmode on weptxkey 3 wepkey 3:0x3456789012 mode 11g mediaopt hostap \
+inet 192.168.0.1 netmask 255.255.255.0
+
+
+
+ Der weptxkey gibt an,
+ welcher WEP-Schlüssel bei der Übertragung
+ benutzt wird. Hier nutzen wir den 3. Schlüssel
+ (die Nummerierung der Schlüssel beginnt bei
+ 1). Dieses Parameter muss angegeben
+ sein, damit die Daten wirklich verschlüsselt
+ werden.
+
+
+
+ Der wepkey gibt den
+ gewählten WEP-Schlüssel an. Er sollte im
+ folgenden Format index:key
+ vorliegen. Wenn kein Index vorhanden ist, wird der
+ Schlüssel 1 benutzt. Das bedeutet
+ wir brauchen einen Index, falls wir einen anderen
+ Schlüssel als den ersten nutzen wollen.
+
+
+
+ Benutzen Sie den Befehl ifconfig
+ noch einmal um den Status von der
+ ath0-Schnittstelle zu sehen:
+
+ &prompt.root; ifconfig ath0
+ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
+ inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4
+ ether 00:11:95:c3:0d:ac
+ media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
+ status: associated
+ ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
+ authmode OPEN privacy ON deftxkey 3 wepkey 3:40-bit txpowmax 36 protmode CTS dtimperiod 1 bintval 100
+
+ Es ist möglich von einem anderen drahtlosen
+ Computer eine Suche nach dem AP zu starten:
+
+ &prompt.root; ifconfig ath0 up scan
+SSID BSSID CHAN RATE S:N INT CAPS
+freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS
- Dieser Abschnitt ist noch nicht übersetzt.
- Lesen Sie bitte
- das Original in englischer Sprache. Wenn Sie helfen
- wollen, diesen Abschnitt zu übersetzen, senden Sie bitte
- eine E-Mail an die Mailingliste &a.de.translators;.
+ Der Client-Rechner fand den Access Point und kann
+ mit den korrekten Parametern (Schlüssel usw.)
+ mit ihm verbunden werden. Weitere Informationen gibt es in
+ folgendem
+
+
+
+
+ Benutzung von drahtgebundenen und drahtlosen
+ Verbindungen
+
+ Eine Verbindung per Kabel bietet eine bessere Leistung
+ und eine höhere Zuverlässigkeit, während die
+ Wireless-Verbindung eine höhere Flexibilität
+ und Mobilität bietet. Benutzer von Laptops wollen
+ normalerweise beides nutzen und zwischen beiden hin und her
+ schalten.
+
+ Unter &os; ist es möglich zwei oder mehr
+ Netzwerkschnittstellen in einem failover-Mode zu
+ kombinieren, so dass automatisch die beste verfügbare Verbindung
+ aus der Gruppe ausgewählt wird, sobald der Linkstatus
+ wechselt.
+
+ Wir behandeln Link-Aggregation und Failover in dem Kapitel
+ . Dort gibt es auch ein
+ Beispiel ()
+ für die Verwendung von sowohl kabelgebundenen wie
+ auch drahtlosen Verbindungen.ProblembehandlungDie folgenden Auflistung zeigt, wie Sie einige
häufig auftretende Probleme bei der Einrichtung
Ihres drahtlosen Netzwerks beheben können.Wird Ihr Access Point bei der Suche nicht gefunden,
sollten Sie überprüfen, ob Sie bei Konfiguration
Ihres drahtlosen Geräts die Anzahl der Kanäle
beschränkt haben.Wenn Sie sich nicht mit Ihrem Access Point verbinden
können, sollten Sie überprüfen, ob die
Konfiguration Ihrer Station auch der des Access Points
entspricht. Achten Sie dabei speziell auf die
Authentifzierungsmethode und die Sicherheitsprotokolle.
Halten Sie Ihre Konfiguration so einfach wie möglich.
Verwenden Sie ein Sicherheitsprotokoll wie WPA oder WEP,
sollten Sie testweise Ihren Access Point auf
offene Authentifizierung und
keine Sicherheit einstellen.
Danach versuchen Sie sich erneut mit Ihren Access Point
zu verbinden.Nachdem Sie sich mit dem Access Point verbinden
können, prüfen Sie die Sicherheitseinstellungen,
beginnend mit einfachen Werkzeugen wie &man.ping.8;.Das Programm wpa_supplicant
kann Ihnen bei der Fehlersuche helfen. Dazu starten
Sie es manuell mit der Option und
durchsuchen anschließend die Protokollinformationen
nach eventuellen Fehlermeldungen.Zusätzlich gibt es auch zahlreiche
Low-Level-Debugging-Werkzeuge. Die Ausgabe von
Debugging-Informationen des 802.11 Protocol Support Layers
lassen sich mit dem Programm wlandebug
(das sich unter
/usr/src/tools/tools/net80211
befindet) aktivieren. Um beispielsweise während
der Suche nach Access Points und des Aufbaus von
802.11-Verbindungen
(Handshake) auftretende
Systemmeldungen auf die Konsole auszugeben, verwenden
Sie den folgenden Befehl:&prompt.root; wlandebug -i ath0 +scan+auth+debug+assoc
net.wlan.0.debug: 0 => 0xc80000<assoc,auth,scan>Der 802.11-Layer liefert umfangreiche Statistiken,
die Sie mit dem Werkzeug wlanstats
abrufen können. Diese Statistiken sollten alle
Fehler identifizieren, die im 802.11-Layer auftreten.
Beachten Sie aber, dass einige Fehler bereits im
darunterliegenden Gerätetreiber auftreten und
daher in diesen Statistiken nicht enthalten sind. Wie
Sie Probleme des Gerätetreibers identifizieren,
entnehmen Sie bitte der Dokumentation Ihres
Gerätetreibers.Können Sie Ihr Problem durch diese
Maßnahmen nicht lösen, sollten Sie einen
Problembericht (PR) erstellen und die Ausgabe der weiter
oben genannten Werkzeuge in den Bericht aufnehmen.PavLucistnikBeigetragen von pav@FreeBSD.orgBluetoothBluetoothÜbersichtBluetooth ermöglicht die Bildung von persönlichen
Netzwerken über drahtlose Verbindungen bei einer maximalen
Reichweite von 10 Metern und operiert im unlizensierten
2,4-GHz-Band. Solche Netzwerke werden normalerweise spontan
gebildet, wenn sich mobile Geräte, wie Mobiltelefone,
Handhelds oder Notebooks miteinander verbinden. Im Gegensatz zu
Wireless LAN ermöglicht Bluetooth auch höherwertige
Dienste, wie FTP-ähnliche Dateiserver, Filepushing,
Sprachübertragung, Emulation von seriellen Verbindungen
und andere mehr.Der Bluetooth-Stack von &os; verwendet das
Netgraph-Framework (&man.netgraph.4;). Viele
Bluetooth-USB-Adapter werden durch den &man.ng.ubt.4;-Treiber
unterstützt. Auf dem Chip BCM2033
von Broadcom basierende Bluetooth-Geräte werden von den
Treibern &man.ubtbcmfw.4; sowie &man.ng.ubt.4; unterstützt.
Die Bluetooth-PC-Card 3CRWB60-A von 3Com verwendet den
&man.ng.bt3c.4;-Treiber. Serielle sowie auf UART basierende
Bluetooth-Geräte werden von &man.sio.4;, &man.ng.h4.4;
sowie &man.hcseriald.8; unterstützt. Dieses Kapitel
beschreibt die Verwendung von USB-Bluetooth-Adaptern.Die Bluetooth-Unterstützung aktivierenBluetooth-Unterstützung ist in der Regel als
Kernelmodul verfügbar. Damit ein Gerät funktioniert,
muss der entsprechende Treiber im Kernel geladen werden:&prompt.root; kldload ng_ubtIst das Bluetooth-Gerät beim Systemstart angeschlossen,
kann das entsprechende Modul auch von
/boot/loader.conf geladen werden:ng_ubt_load="YES"Schließen Sie Ihren USB-Adapter an, sollte eine
Meldung ähnlich der folgenden auf der Konsole (oder in
syslog) erscheinen:ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2
ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3,
wMaxPacketSize=49, nframes=6, buffer size=294Zum Starten und Beenden des Bluetooth-Stacks verwenden Sie
das Skript /etc/rc.d/bluetooth. Es ist
empfehlenswert, den Bluetooth-Stack zu beenden, bevor Sie den
Adapter entfernen. Selbst wenn Sie dies nicht tun, kommt es
(normalerweise) zu keinem fatalen Fehler. Wenn Sie den
Bluetooth-Stack starten, erhalten Sie eine Meldung ähnlich
der folgenden:&prompt.root; /etc/rc.d/bluetooth start ubt0
BD_ADDR: 00:02:72:00:d4:1a
Features: 0xff 0xff 0xf 00 00 00 00 00
<3-Slot> <5-Slot> <Encryption> <Slot offset>
<Timing accuracy> <Switch> <Hold mode> <Sniff mode>
<Park mode> <RSSI> <Channel quality> <SCO link>
<HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD>
<Paging scheme> <Power control> <Transparent SCO data>
Max. ACL packet size: 192 bytes
Number of ACL packets: 8
Max. SCO packet size: 64 bytes
Number of SCO packets: 8HCIDas Host Controller Interface (HCI)Das Host Controller Interface
(HCI) bietet eine Befehlsschnittstelle zum Basisbandcontroller
und Linkmanager, sowie Zugriff auf den Hardwarestatus und die
Kontrollregister. Dadurch wird ein einheitlicher Zugriff auf
die Fähigkeiten des Bluetooth-Basisbands möglich. Die
HCI-Layer des Rechners tauschen Daten und Befehle mit der
HCI-Firmware der Bluetooth-Geräte aus. Über den
Host Controller Transport Layer-Treiber (also den physikalischen
Bus) können beide HCI-Layer miteinander
kommunizieren.Eine einzelne Netgraph-Gerätedatei vom Typ
hci wird für ein einzelnes
Bluetooth-Gerät erzeugt. Die HCI-Gerätedatei ist
normalerweise mit der Bluetooth-Gerätetreiberdatei
(downstream) sowie der L2CAP-Gerätedatei (upstream)
verbunden. Alle HCI-Operationen müssen über die
HCI-Gerätedatei und nicht über die Treiberdatei
erfolgen. Der Standardname für die HCI-Gerätedatei
(die in &man.ng.hci.4; beschrieben wird) lautet
devicehci.Eine der wichtigsten Aufgaben ist das Auffinden von sich
in Reichweite befindenden Bluetooth-Geräten. Diese
Funktion wird als inquiry bezeichnet.
Inquiry sowie andere mit HCI in Verbindung stehende Funktionen
werden von &man.hccontrol.8; zur Verfügung gestellt. Das
folgende Beispiel zeigt, wie man herausfindet, welche
Bluetooth-Geräte sich in Reichweite befinden. Eine solche
Abfrage dauert nur wenige Sekunden. Beachten Sie, dass ein
Gerät nur dann antwortet, wenn es sich im Modus
discoverable befindet.&prompt.user; hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
BD_ADDR: 00:80:37:29:19:a4
Page Scan Rep. Mode: 0x1
Page Scan Period Mode: 00
Page Scan Mode: 00
Class: 52:02:04
Clock offset: 0x78ef
Inquiry complete. Status: No error [00]BD_ADDR stellt, ähnlich der
- MAC-Adresse einer Netzkarte, die eindeutige Adresse eines
+ MAC-Adresse einer Netzwerkkarte, die eindeutige Adresse eines
Bluetooth-Gerätes dar. Diese Adresse ist für die
Kommunikation mit dem Gerät nötig. Es ist aber auch
möglich, BD_ADDR einen Klartextnamen zuzuweisen. Die
Datei /etc/bluetooth/hosts enthält
Informationen über die bekannten Bluetooth-Rechner. Das
folgende Beispiel zeigt, wie man den Klartextnamen eines
entfernten Geräts in Erfahrung bringen kann:&prompt.user; hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4
BD_ADDR: 00:80:37:29:19:a4
Name: Pav's T39Wenn Sie ein entferntes Bluetooth-Gerät abfragen, wird
dieses Ihren Rechner unter dem Namen
your.host.name (ubt0) finden. Dieser Name kann
aber jederzeit geändert werden.Bluetooth ermöglicht Punkt-zu-Punkt-Verbindungen (an
denen nur zwei Bluetooth-Geräte beteiligt sind), aber auch
Punkt-zu-Multipunkt-Verbindungen, bei denen eine Verbindung von
mehreren Bluetooth-Geräten gemeinsam genutzt wird. Das
folgende Beispiel zeigt, wie man die aktiven
Basisbandverbindungen des lokalen Gerätes anzeigen kann:&prompt.user; hccontrol -n ubt0hci read_connection_list
Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State
00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPENEin connection handle ist für die
Beendigung einer Basisbandverbindung nützlich. Im
Normalfall werden inaktive Verbindungen aber automatisch vom
Bluetooth-Stack getrennt.&prompt.root; hccontrol -n ubt0hci disconnect 41
Connection handle: 41
Reason: Connection terminated by local host [0x16]Rufen Sie hccontrol help auf, wenn Sie
eine komplette Liste aller verfügbaren HCI-Befehle
benötigen. Die meisten dieser Befehle müssen nicht
als root ausgeführt werden.L2CAPDas Logical Link Control and Adaptation Protocol (L2CAP)Das Logical Link Control and Adaptation
Protocol (L2CAP) bietet
höherwertigen Protokollen verbindungsorientierte und
verbindungslose Datendienste an. Dazu gehören auch
Protokollmultiplexing, Segmentierung und Reassemblierung.
L2CAP erlaubt höherwertigen Protokollen und Programmen den
Versand und Empfang von L2CAP-Datenpaketen mit einer Länge
von bis zu 64 Kilobytes.L2CAP arbeitet kanalbasiert. Ein
Kanal ist eine logische Verbindung innerhalb einer
Basisbandverbindung. Jeder Kanal ist dabei an ein einziges
Protokoll gebunden. Mehrere Geräte können an das
gleiche Protokoll gebunden sein, es ist aber nicht möglich,
einen Kanal an mehrere Protokolle zu binden. Jedes über
einen Kanal ankommende L2CAP-Paket wird an das entsprechende
höherwertige Protokoll weitergeleitet. Mehrere Kanäle
können sich die gleiche Basisbandverbindung teilen.Eine einzelne Netgraph-Gerätedatei vom Typ
l2cap wird für ein einzelnes
Bluetooth-Gerät erzeugt. Die L2CAP-Gerätedatei ist
normalerweise mit der Bluetooth-HCI-Gerätedatei
(downstream) sowie der Bluetooth-Socket-Gerätedatei
(upstream) verbunden. Der Standardname für die
L2CAP-Gerätedatei, die in &man.ng.l2cap.4; beschrieben
wird, lautet devicel2cap.Ein nützlicher Befehl zum Anpingen von anderen
Geräten ist &man.l2ping.8;. Einige Bluetooth-Geräte
senden allerdings nicht alle erhaltenen Daten zurück. Die
Ausgabe 0 bytes ist also kein Fehler:&prompt.root; l2ping -a 00:80:37:29:19:a4
0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0
0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0
0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0
0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0Das Programm &man.l2control.8; liefert Informationen
über L2CAP-Dateien. Das folgende Beispiel zeigt, wie man
die Liste der logischen Verbindungen (Kanäle) sowie die
Liste der Basisbandverbindungen abfragen kann:&prompt.user; l2control -a 00:02:72:00:d4:1a read_channel_list
L2CAP channels:
Remote BD_ADDR SCID/ DCID PSM IMTU/ OMTU State
00:07:e0:00:0b:ca 66/ 64 3 132/ 672 OPEN
&prompt.user; l2control -a 00:02:72:00:d4:1a read_connection_list
L2CAP connections:
Remote BD_ADDR Handle Flags Pending State
00:07:e0:00:0b:ca 41 O 0 OPEN&man.btsockstat.1; ist ein weiteres Diagnoseprogramm. Es
funktioniert analog zu &man.netstat.1;, arbeitet aber mit
Bluetooth-Datenstrukturen. Das folgende Beispiel zeigt die
gleiche Liste der logischen Verbindungen wie &man.l2control.8;
im vorherigen Beispiel.&prompt.user; btsockstat
Active L2CAP sockets
PCB Recv-Q Send-Q Local address/PSM Foreign address CID State
c2afe900 0 0 00:02:72:00:d4:1a/3 00:07:e0:00:0b:ca 66 OPEN
Active RFCOMM sessions
L2PCB PCB Flag MTU Out-Q DLCs State
c2afe900 c2b53380 1 127 0 Yes OPEN
Active RFCOMM sockets
PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State
c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPENDas RFCOMM-ProtokollRFCOMMDas RFCOMM-Protokoll emuliert serielle Verbindungen
über das L2CAP-Protokoll. Es basiert auf dem ETSI-Standard
TS 07.10. Bei RFCOMM handelt es sich um ein einfaches
Transportprotokoll, das um Funktionen zur Emulation der
9poligen Schaltkreise von mit RS-232 (EIATIA-232-E) kompatiblen
seriellen Ports ergänzt wurde. RFCOMM erlaubt bis zu 60
simultane Verbindungen (RFCOMM-Kanäe) zwischen zwei
Bluetooth-Geräten.Eine RFCOMM-Kommunikation besteht aus zwei Anwendungen (den
Kommunikationsendpunkten), die über das
Kommunikationssegment miteinander verbunden sind. RFCOMM
unterstützt Anwendungen, die auf serielle Ports angewiesen
sind. Das Kommunikationssegment entspricht der (direkten)
Bluetooth-Verbindung zwischen den beiden Geräten.RFCOMM kümmert sich um die direkte Verbindung von zwei
Geräten, oder um die Verbindung zwischen einem Gerät
und einem Modem (Netzwerkverbindung). RFCOMM unterstützt
auch andere Konfigurationen. Ein Beispiel dafür sind
Module, die drahtlose Bluetooth-Geräte mit einer
verkabelten Schnittstelle verbinden können.Unter &os; wurde das RFCOMM-Protokoll im Bluetooth Socket-Layer
implementiert.PairingErstmaliger Verbindungsaufbau zwischen zwei
Bluetooth-Geräten (Pairing)
In der Voreinstellung nutzt Bluetooth keine
Authentifizierung, daher kann sich jedes Bluetoothgerät mit
jedem anderen Gerät verbinden. Ein Bluetoothgerät
(beispielsweise ein Mobiltelefon) kann jedoch für einen
bestimmten Dienst (etwa eine Einwählverbindung) eine
Authentifizierung anfordern. Bluetooth verwendet zu diesem
Zweck PIN-Codes. Ein PIN-Code ist ein
maximal 16 Zeichen langer ASCII-String. Damit eine Verbindung
zustande kommt, muss auf beiden Geräten der gleiche
PIN-Code verwendet werden. Nachdem der Code eingegeben wurde,
erzeugen beide Geräte einen link key,
der auf den Geräten gespeichert wird. Beim nächsten
Verbindungsaufbau wird der zuvor erzeugte Link Key verwendet.
Diesen Vorgang bezeichnet man als
Pairing. Geht der Link Key auf
einem Gerät verloren, muss das Pairing wiederholt
werden.Der &man.hcsecd.8;-Daemon verarbeitet alle
Bluetooth-Authentifzierungsanforderungen und wird über die
Datei /etc/bluetooth/hcsecd.conf
konfiguriert. Der folgende Ausschnitt dieser Datei zeigt die
Konfiguration für ein Mobiltelefon, das den PIN-Code
1234 verwendet:device {
bdaddr 00:80:37:29:19:a4;
name "Pav's T39";
key nokey;
pin "1234";
}Von der Länge abgesehen, unterliegen PIN-Codes keinen
Einschränkungen. Einige Geräte, beispielsweise
Bluetooth-Headsets, haben einen festen PIN-Code eingebaut. Die
Option sorgt dafür, dass der
&man.hcsecd.8;-Daemon im Vordergrund läuft. Dadurch kann
der Ablauf einfach verfolgt werden. Stellen Sie das entfernte
Gerät auf receive pairing
und initiieren Sie die Bluetoothverbindung auf dem entfernten
Gerät. Sie erhalten die Meldung, dass Pairing akzeptiert
wurde und der PIN-Code benötigt wird. Geben Sie den
gleichen PIN-Code ein, den Sie in
hcsecd.conf festgelegt haben. Ihr Computer
und das entfernte Gerät sind nun miteinander verbunden.
Alternativ können Sie das Pairing auch auf dem entfernten
Gerät initiieren.Unter &os; 5.5, 6.1 und neuer können Sie
hcsecd durch das Einfügen der
folgenden Zeile in /etc/rc.conf
beim Systemstart automatisch aktivieren:hcsecd_enable="YES"Es folgt nun eine beispielhafte Ausgabe
des hcsecd-Daemons:hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist
hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists
hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4SDPDas Service Discovery Protocol (SDP)Das Service Discovery Protocol
(SDP) erlaubt es Clientanwendungen, von Serveranwendungen
angebotene Dienste sowie deren Eigenschaften abzufragen. Zu
diesen Eigenschaften gehören die Art oder die Klasse der
angebotenen Dienste sowie der Mechanismus oder das Protokoll,
die zur Nutzung des Dienstes notwendig sind.SDP ermöglicht Verbindungen zwischen einem SDP-Server
und einem SDP-Client. Der Server enthält eine Liste mit
den Eigenschaften der vom Server angebotenen Dienste. Jeder
Eintrag beschreibt jeweils einen einzigen Serverdienst. Ein
Client kann diese Informationen durch eine SDP-Anforderung
vom SDP-Server beziehen. Wenn der Client oder eine Anwendung
des Clients einen Dienst nutzen will, muss eine seperate
Verbindung mit dem Dienstanbieter aufgebaut werden. SDP bietet
einen Mechanismus zum Auffinden von Diensten und deren
Eigenschaften an, es bietet aber keine Mechanismen zur Verwendung
dieser Dienste.Normalerweise sucht ein SDP-Client nur nach Diensten, die
bestimmte geforderte Eigenschaften erfüllen. Es ist aber
auch möglich, anhand der Dienstbeschreibungen eine
allgemeine Suche nach den von einem Server angebotenen Diensten
durchzuführen. Diesen Vorgang bezeichnet man als
Browsing.Der Bluetooth-SDP-Server &man.sdpd.8; und der
Kommandozeilenclient &man.sdpcontrol.8; sind bereits in der
Standardinstallation von &os; enthalten. Das folgende Beispiel
zeigt, wie eine SDP-Abfrage durchgeführt wird:&prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec browse
Record Handle: 00000000
Service Class ID List:
Service Discovery Server (0x1000)
Protocol Descriptor List:
L2CAP (0x0100)
Protocol specific parameter #1: u/int/uuid16 1
Protocol specific parameter #2: u/int/uuid16 1
Record Handle: 0x00000001
Service Class ID List:
Browse Group Descriptor (0x1001)
Record Handle: 0x00000002
Service Class ID List:
LAN Access Using PPP (0x1102)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 1
Bluetooth Profile Descriptor List:
LAN Access Using PPP (0x1102) ver. 1.0
... und so weiter. Beachten Sie, dass jeder Dienst eine
Liste seiner Eigenschaften (etwa den RFCOMM-Kanal)
zurückgibt. Je nach dem, welche Dienste Sie
benötigen, sollten Sie sich einige dieser Eigenschaften
notieren. Einige Bluetooth-Implementationen unterstützen
kein Service Browsing und geben
daher eine leere Liste zurück. Ist dies der Fall, ist es
dennoch möglich, nach einem bestimmten Dienst zu suchen.
Das folgende Beispiel demonstriert die Suche nach dem
OBEX Object Push (OPUSH) Dienst:&prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec search OPUSHUnter &os; ist es die Aufgabe des &man.sdpd.8;-Servers,
Bluetooth-Clients verschiedene Dienste anzubieten. Unter
&os; 5.5, 6.1 und neuer können Sie dazu die folgende
Zeile in die Datei /etc/rc.conf
einfügen:sdpd_enable="YES"Nun kann der sdpd-Daemon durch
folgene Eingabe gestartet werden:&prompt.root; /etc/rc.d/sdpd startDer lokale Server, der den entfernten Clients
Bluetooth-Dienste anbieten soll, bindet diese Dienste an den
lokalen SDP-Daemon. Ein Beispiel für eine solche
Anwendung ist &man.rfcomm.pppd.8;. Einmal gestartet, wird der
Bluetooth-LAN-Dienst an den lokalen SDP-Daemon gebunden.Die Liste der vorhandenen Dienste, die am lokalen SDP-Server
registriert sind, lässt sich durch eine SDP-Abfrage
über einen lokalen Kontrollkanal abfragen:&prompt.root; sdpcontrol -l browseEinwahlverbindungen (Dial-Up Networking (DUN)) oder
Netzwerkverbindungen mit PPP (LAN)-Profilen einrichtenDas
Dial-Up Networking (DUN)-Profil
wird vor allem für Modems und Mobiltelefone verwendet.
Dieses Profil ermöglicht folgende Szenarien:Die Verwendung eines Mobiltelefons oder eines
Modems durch einen Computer als drahtloses Modem, um sich
über einen Einwahlprovider mit dem Internet zu verbinden
oder andere Einwahldienste zu benutzen.Die Verwendung eines Mobiltelefons oder eines
Modems durch einen Computers, um auf Datenabfragen zu
reagieren.Der Zugriff auf ein Netzwerk über das PPP (LAN)-Profil
kann in folgenden Situationen verwendet werden:Den LAN-Zugriff für ein einzelnes
Bluetooth-GerätDen LAN-Zugriff für mehrere
Bluetooth-GeräteEine PC-zu-PC-Verbindung (unter Verwendung
einer PPP-Verbindung über eine emulierte serielle
Verbindung)Beide Profile werden unter &os; durch &man.ppp.8; sowie
&man.rfcomm.pppd.8; implementiert - einem Wrapper, der
RFCOMM Bluetooth-Verbindungen unter PPP nutzbar macht. Bevor
ein Profil verwendet werden kann, muss ein neuer PPP-Abschnitt
in /etc/ppp/ppp.conf erzeugt werden.
Beispielkonfigurationen zu diesem Thema finden Sie in
&man.rfcomm.pppd.8;.Im folgenden Beispiel verwenden wir &man.rfcomm.pppd.8;, um
eine RFCOMM-Verbindung zu einem entfernten Gerät mit der
BD_ADDR 00:80:37:29:19:a4 auf dem
RFCOMM-Kanal DUN aufzubauen. Die aktuelle
RFCOMM-Kanalnummer erhalten Sie vom entfernten Gerät
über SDP. Es ist auch möglich, manuell einen
RFCOMM-Kanal festzulegen. In diesem Fall führt
&man.rfcomm.pppd.8; keine SDP-Abfrage durch. Verwenden Sie
&man.sdpcontrol.8;, um die RFCOMM-Kanäle des entfernten
Geräts herauszufinden.&prompt.root; rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialupDer &man.sdpd.8;-Server muss laufen, damit ein Netzzugriff
mit dem PPP (LAN)-Profil möglich ist. Außerdem muss
für den LAN-Client ein neuer Eintrag in
/etc/ppp/ppp.conf erzeugt werden.
Beispielkonfigurationen zu diesem Thema finden Sie in
&man.rfcomm.pppd.8;. Danach starten Sie den RFCOMM PPP-Server
über eine gültige RFCOMM-Kanalnummer. Der
RFCOMM PPP-Server bindet dadurch den Bluetooth-LAN-Dienst an den
lokalen SDP-Daemon. Das folgende Beispiel zeigt Ihnen, wie man
den RFCOMM PPP-Server startet.&prompt.root; rfcomm_pppd -s -C 7 -l rfcomm-serverOBEXDas Profil OBEX-Push (OPUSH)OBEX ist ein häufig verwendetes Protokoll für den
Dateitransfer zwischen Mobilgeräten. Sein Hauptzweck ist
die Kommunikation über die Infrarotschnittstelle. Es dient
daher zum Datentransfer zwischen Notebooks oder PDAs sowie zum
Austausch von Visitenkarten oder Kalendereinträgen zwischen
Mobiltelefonen und anderen Geräten mit PIM-Funktionen.Server und Client von OBEX werden durch das Softwarepaket
obexapp bereitgestellt, das als Port
comms/obexapp verfügbar
ist.Mit dem OBEX-Client werden Objekte zum OBEX-Server geschickt
oder angefordert. Ein Objekt kann etwa eine Visitenkarte oder
ein Termin sein. Der OBEX-Client fordert über SDP die
Nummer des RFCOMM-Kanals vom entfernten Gerät an. Dies
kann auch durch die Verwendung des Servicenamens anstelle der
RFCOMM-Kanalnummer erfolgen. Folgende Dienste werden
unterstützt: IrMC, FTRN und OPUSH. Es ist möglich,
den RFCOMM-Kanal als Nummer anzugeben. Es folgt nun ein
Beispiel für eine OBEX-Sitzung, bei der ein
Informationsobjekt vom Mobiltelefon angefordert und ein neues
Objekt (hier eine Visitenkarte) an das Telefonbuch des
Mobiltelefons geschickt wird:&prompt.user; obexapp -a 00:80:37:29:19:a4 -C IrMC
obex> get telecom/devinfo.txt
Success, response: OK, Success (0x20)
obex> put new.vcf
Success, response: OK, Success (0x20)
obex> di
Success, response: OK, Success (0x20)Um OBEX-Push-Dienste anbieten zu können, muss der
sdpd-Server gestartet sein. Ein
Wurzelverzeichnis, in dem alle ankommenden Objekt gespeichert
werden, muss zusätzlich angelegt werden. In der
Voreinstellung ist dies /var/spool/obex.
Starten Sie den OBEX-Server mit einer gültigen Kanalnummer.
Der OBEX-Server registriert nun den OBEX-Push-Dienst mit dem
lokalen SDP-Daemon. Um den OBEX-Server zu starten, geben Sie
Folgendes ein:&prompt.root; obexapp -s -C 10Das Profil Serial-Port (SPP)Durch dieses Profil können Bluetooth-Geräte RS232-
(oder damit kompatible) serielle Kabelverbindungen emulieren.
Anwendungen sind dadurch in der Lage, über eine virtuelle
serielle Verbindung Bluetooth als Ersatz für eine
Kabelverbindung zu nutzen.Das Profil Serial-Port wird durch &man.rfcomm.sppd.1;
verwirklicht. Pseudo-tty wird hier als virtuelle serielle
Verbindung verwendet. Das folgende Beispiel zeigt, wie man sich
mit einem entfernten Serial-Port-Dienst verbindet. Beachten
Sie, dass Sie den RFCOMM-Kanal nicht angeben müssen, da
&man.rfcomm.sppd.1; diesen über SDP vom entfernten
Gerät abfragen kann. Wenn Sie dies nicht wollen,
können Sie einen RFCOMM-Kanal auch manuell festlegen.&prompt.root; rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6
rfcomm_sppd[94692]: Starting on /dev/ttyp6...Sobald die Verbindung hergestellt ist, kann pseudo-tty als
serieller Port verwenden werden.&prompt.root; cu -l ttyp6ProblembehandlungEin entferntes Gerät kann keine Verbindung
aufbauenEinige ältere Bluetooth-Geräte unterstützen
keinen Rollentausch. Wenn &os; eine neue Verbindung
akzeptiert, wird versucht, die Rolle zu tauschen, um zum
Master zu werden. Geräte, die dies nicht
unterstützen, können keine Verbindung aufbauen.
Beachten Sie, dass der Rollentausch ausgeführt wird,
sobald eine neue Verbindung aufgebaut wird, daher ist es
nicht möglich, das entfernte Gerät zu fragen, ob es
den Rollentausch unterstützt. Dieses Verhalten von &os;
kann aber durch eine HCI-Option geändert werden:&prompt.root; hccontrol -n ubt0hci write_node_role_switch 0Wo finde ich genaue Informationen darüber, was
schiefgelaufen ist?Verwenden Sie hcidump,
das Sie über den Port comms/hcidump installieren
können. hcidump hat
Ähnlichkeiten mit &man.tcpdump.1;. Es dient zur Anzeige
der Bluetooth-Pakete in einem Terminal oder zur Speicherung
der Pakete in einer Datei (Dump).AndrewThompsonGeschrieben von LAN-Kopplung mit einer BridgeEinführungSubnetzBridgeManchmal ist es nützlich, ein physikalisches Netzwerk
(wie ein Ethernetsegment) in zwei separate Netzwerke
aufzuteilen, ohne gleich IP-Subnetze zu erzeugen, die über
einen Router miteinander verbunden sind. Ein Gerät, das
zwei Netze auf diese Weise verbindet, wird als
Bridge bezeichnet. Jedes FreeBSD-System
- mit zwei Netzkarten kann als Bridge fungieren.
+ mit zwei Netzwerkkarten kann als Bridge fungieren.
Die Bridge arbeitet, indem sie die MAC Layeradressen
(Ethernet Adressen) der Geräte in ihren
Netzwerksegmenten lernt. Der Verkehr wird nur dann zwischen
zwei Segmenten weitergeleitet, wenn sich Sender und
Empfänger in verschiedenen Netzwerksegmenten
befinden.In vielerlei Hinsicht entspricht eine Bridge daher einem
Ethernet-Switch mit sehr wenigen Ports.Situationen, in denen Bridging
angebracht istEs gibt zahlreiche Situationen, in denen der Einsatz
einer Bridge sinnvoll ist:Verbinden von NetzwerkenDie Hauptaufgabe einer Bridge ist die Verbindung von zwei
oder mehreren Netzwerksegmenten zu einem gemeinsamen Netzwerk.
Es ist oft sinnvoller, eine hostbasierte Bridge anstelle
normaler Netzwerkkomponenten (wie Kabelverbindungen),
Firewalls oder Pseudonetzwerken über die
Schnittstelle einer virtuellen Maschine einzusetzen.
Eine Bridge kann außerdem ein drahtloses Gerät mit
einem Kabelnetzwerk verbinden. Diese Fähigkeit der
Bridge wird als HostAP-Modus
bezeichnet. Die Bridge agiert in diesem Fall als
Access Point für das drahtlose Gerät.Filtering/Traffic Shaping FirewallFirewallNATHäufig kommt es vor, dass Firewallfunktionen
benötigt werden, ohne dass Routing oder
Network Adress Translation
(NAT) verwendet werden soll.Ein Beispiel dafür wäre ein kleines Unternehmen,
das über DSL oder ISDN an seinen ISP angebunden ist. Es
verfügt über 13 weltweit erreichbare IP-Adressen,
sein Netzwerk besteht aus 10 Rechnern. In dieser Situation
ist der Einsatz von Subnetzen sowie einer routerbasierten
Firewall schwierig.RouterDSLISDNEine brigdebasierte Firewall kann konfiguriert und in den
ISDN/DSL-Downstreampfad ihres Routers eingebunden werden, ohne
dass Sie sich um IP-Adressen kümmern müssen.NetzwerküberwachungEine Bridge kann zwei Netzwerksegmente miteinander
verbinden und danach alle Ethernet-Rahmen überprüfen,
die zwischen den beiden Netzwerksegmenten ausgetauscht werden.
Dazu verwendet man entweder &man.bpf.4;/&man.tcpdump.1; auf
dem Netzgerät der Bridge oder schickt Kopien aller
Rahmen an ein zusätzliches Netzgerät (den sogenannten
Span Port).Layer 2-VPNZwei Ethernetnetzwerke können über einen IP-Link
miteinander verbunden werden, indem Sie die beiden Netzwerke
über einen EtherIP-Tunnel koppeln oder eine
&man.tap.4;-basierte Lösung wie OpenVPN einsetzen.Layer 2-RedundanzDie Systeme eines Netzwerks können redundant
miteinander verbunden sein. In diesem Fall verwenden Sie das
Spanning Tree Protocol, um
redundante Pfade zu blockieren. Damit ein Ethernetnetzwerk
korrekt arbeitet, darf immer nur ein aktiver Pfad zwischen
zwei Geräten des Netzwerks existieren. Aufgabe des
Spanning Tree Protocols ist es daher, Schleifen zu entdecken
und redundante Links in den Status
blockiert zu versetzen. Fällt ein
aktiver Link aus, so berechnet das Protokoll einen neuen
Pfad. Dazu wird ein blockierter Pfad in den Status
aktiv versetzt, damit alle Systeme des
Netzwerks wieder miteinander kommunizieren können.KernelkonfigurationDieser Abschnitt beschreibt nur die
&man.if.bridge.4;-Bridge-Implementierung. Ein
Netgraph-Bridge-Treiber ist ebenfalls verfügbar, wird
hier aber nicht behandelt. Lesen Sie die Manualpage
&man.ng.bridge.4;, wenn Sie diesen Treiber einsetzen
wollen.Bei diesem Treiber handelt es sich um ein
Kernelmodul, das von &man.ifconfig.8; automatisch geladen
wird, wenn ein Bridge-Interface erzeugt wird. Alternativ ist
es aber auch möglich, die Unterstützung für
den Treiber in Ihren Kernel zu kompilieren. Dazu fügen
Sie die Zeile device if_bridge in Ihre
Kernelkonfigurationsdatei ein und bauen danach den Kernel
neu.Paketfilter können mit allen Firewallpaketen verwendet
werden, die das &man.pfil.9;-Framework benutzen. Die Firewall
kann dabei entweder als Kernelmodul geladen oder in den Kernel
kompiliert werden.Eine Bridge kann auch als Traffic
Shaper verwendet werden, wenn Sie
&man.altq.4; oder &man.dummynet.4; einsetzen.Die LAN-Kopplung aktivierenEine Bridge wird durch das Klonen von Schnittstellen
erzeugt. Um eine Bridge zu erzeugen, verwenden Sie den Befehl
&man.ifconfig.8;. Ist der Bridge-Treiber nicht in Ihren Kernel
kompiliert, wird er automatisch geladen.&prompt.root; ifconfig bridge create
bridge0
&prompt.root; ifconfig bridge0
bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 96:3d:4b:f1:79:7a
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0Im obigen Beispiel wird die Bridge erzeugt und erhält
automatisch eine zufällig generierte Ethernet-Adresse
zugewiesen. Die Parameter maxaddr sowie
timeout legen fest, wie viele MAC-Adressen
die Bridge in ihrer Forward-Tabelle halten kann beziehungsweise
wie viele Sekunden jeder Eintrag erhalten bleiben soll, nachdem
er zuletzt verwendet wurde. Die restlichen Parameter sind
für die Konfiguration von Spanning Tree notwendig.Im nächsten Schritt werden die Schnittstellen, die
die Bridge verbinden soll, zugewiesen. Damit die Bridge
Datenpakete weiterleiten kann, müssen sowohl die Bridge
als auch die Schnittstellen (der zu verbindenden
Netzwerksegmente) aktiviert sein:&prompt.root; ifconfig bridge0 addm fxp0 addm fxp1 up
&prompt.root; ifconfig fxp0 up
&prompt.root; ifconfig fxp1 upDanach ist die Bridge in der Lage, Ethernet-Rahmen zwischen
den Schnittstellen fxp0 und
fxp1 weiterzuleiten. Um diese
Konfiguration beim Systemstart automatisch zu aktivieren,
müssen Sie folgende Einträge in die Datei
/etc/rc.conf aufnehmen:cloned_interfaces="bridge0"
ifconfig_bridge0="addm fxp0 addm fxp1 up"
ifconfig_fxp0="up"
ifconfig_fxp1="up"Benötigen Sie für die Bridge eine IP-Adresse,
müssen Sie diese der Schnittstelle der Bridge zuweisen
(und nicht einer der Schnittstellen der gekoppelten
Netzwerksegmente). Dabei können Sie die IP-Adresse
sowohl statisch als auch dynamisch über DHCP
zuweisen:&prompt.root; ifconfig bridge0 inet 192.168.0.1/24Sie können der Bridge-Schnittstelle auch eine
IPv6-Adresse zuweisen.FirewallsfirewallNachdem ein Paketfilter aktiviert wurde, können
Datenpakete, die von den Schnittstellen der gekoppelten
Netzwerksegmente gesendet und empfangen werden, über
die Bridge weitergeleitet oder nach bestimmten Regeln
gefiltert oder auch komplett geblockt werden. Ist die
Richtung des Paketflusses wichtig, ist es am besten, eine
Firewall auf den Schnittstellen der einzelnen
Netzwerksegmente einzurichten und nicht auf der Bridge
selbst.Eine Bridge verfügt über verschiedene Optionen,
über die Sie die Weiterleitung von Nicht-IP- und
ARP-Paketen sowie den Einsatz von Layer 2-Firewalls
(mit IPFW) steuern können. Lesen Sie die Manualpage
&man.if.bridge.4;, wenn Sie diese Funktionen
benötigen.Spanning TreeDer Bridge-Treiber implementiert das Rapid
Spanning Tree Protocol (RSTP oder 802.1w), das
abwärtskompatibel zum veralteten Spanning
Tree Protocol (STP) ist. Spanning Tree
dient dazu, Schleifen in einer Netzwerktopologie zu entdecken
und zu entfernen. RSTP arbeitet dabei schneller als das
veraltete STP. RSTP tauscht Informationen mit
benachbarten Switchen aus, um Pakete korrekt weiterzuleiten
und eine Schleifenbildung zu verhindern.Die folgende Tabelle listet die von den verschiedenen
&os;-Versionen unterstützten Betriebsmodi auf:&os;-VersionSTP-ModusStandardmodus&os; 5.4—&os; 6.2STPSTP&os; 6.3+RSTP oder STPSTP&os; 7.0+RSTP oder STPRSTPSpanning Tree kann auf den Schnittstellen der
durch die Bridge verbundenen Netzwerksegmente über die
Option stp aktiviert werden. Für eine
Bridge, die die Schnittstellen fxp0 und
fxp1 verbindet, aktivieren Sie STP wie
folgt:&prompt.root; ifconfig bridge0 stp fxp0 stp fxp1
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether d6:cf:d5:a0:94:6d
id 00:01:02:4b:d4:50 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:01:02:4b:d4:50 priority 32768 ifcost 0 port 0
member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
port 3 priority 128 path cost 200000 proto rstp
role designated state forwarding
member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
port 4 priority 128 path cost 200000 proto rstp
role designated state forwardingDiese Bridge hat die Spanning-Tree-ID
00:01:02:4b:d4:50 und die Priorität
32768. Da diese ID mit der
Root-ID identisch ist, handelt es sich um die
Root-Bridge dieses Netzwerks.Auf einer anderen Bridge des Netzwerks ist Spanning Tree
ebenfalls aktiviert:bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 96:3d:4b:f1:79:7a
id 00:13:d4:9a:06:7a priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:01:02:4b:d4:50 priority 32768 ifcost 400000 port 4
member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
port 4 priority 128 path cost 200000 proto rstp
role root state forwarding
member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
port 5 priority 128 path cost 200000 proto rstp
role designated state forwardingDie Zeile root id 00:01:02:4b:d4:50 priority 32768
ifcost 400000 port 4 zeigt an, dass die Root-Bridge wie
im obigen Beispiel die ID 00:01:02:4b:d4:50
hat. Die Pfadkosten hin zur Root-Bridge betragen
400000, wobei der Pfad zur Root-Bridge
über Port 4 geht (der wiederum
der Schnittstelle fxp0
entspricht).Fortgeschrittene FunktionenDen Datenfluss rekonstruierenDie Bridge unterstützt den Monitormodus. Dabei
werden alle Pakete verworfen, nachdem sie von &man.bpf.4;
verarbeitet wurden. In diesem Modus erfolgt keine weitere
Bearbeitung und auch keine Weiterleitung von Datenpaketen.
Es ist daher möglich, die Eingabe von zwei oder mehr
Netzwerkschnittstellen in einen einzigen gemeinsamen
&man.bpf.4;-Stream zu vereinen. Ein solcher Datenstrom
ist beispielsweise nützlich, um den Datenverkehr für
""network taps"" zu rekonstruieren, die ihre RX/TX-Signale
über verschiedene Schnittstellen senden.Um die Eingabe von vier Netzwerkschnittstellen in einzigen
gemeinsamen Datenstrom zu vereinen, geben Sie Folgendes
ein:&prompt.root; ifconfig bridge0 addm fxp0 addm fxp1 addm fxp2 addm fxp3 monitor up
&prompt.root; tcpdump -i bridge0Span PortsEine Kopie jedes Ethernet-Rahmens, der an der Bridge
ankommt, wird über einen festgelegten
Span Port verschickt.
Auf einer Bridge können
beliebig viele Span Ports festgelegt werden. Wird
eine Schnittstelle als Span Port konfiguriert, kann
sie nicht mehr als normaler Bridge-Port verwendet werden.
Eine derartige Konfiguration ist beispielsweise sinnvoll,
um den Datenverkehr, der in einem Netzwerk über die
Bridge läuft, auf einen Rechner zu übertragen,
der mit einem Span Port der Bridge verbunden
ist.Um eine Kopie aller Ethernet-Rahmen über die
Schnittstelle fxp4 zu verschicken,
geben Sie Folgendes ein:&prompt.root; ifconfig bridge0 span fxp4Private SchnittstellenEine private Schnittstelle leitet keine Daten an einen
Port weiter, bei dem es sich ebenfalls um eine private
Schnittstelle handelt. Der Datenverkehr wird dabei komplett
blockiert, auch Ethernet-Rahmen und ARP-Pakete werden nicht
weitergeleitet. Wollen Sie hingegen nur spezifische
Datenpakete blockieren, sollten Sie eine Firewall
einsetzen.Schnittstellen als sticky
kennzeichnenWenn die Schnittstelle eines über eine Bridge
verbundenen Netzwerksegments als
sticky gekennzeichnet wird,
werden alle dynamisch gelernten Adressen als statische Adressen
behandelt, sobald sie in den Forward-Cache der Bridge
aufgenommen wurden. Sticky-Einträge werden niemals aus
dem Cache entfernt oder ersetzt. Selbst dann nicht, wenn die
Adresse von einer anderen Schnittstelle verwendet wird. Sie
können dadurch die Vorteile statischer Adresseinträge
nutzen, ohne die Forward-Tabelle vor dem Einsatz der Bridge
mit statischen Einträgen füllen zu müssen.
Clients, die sich in einem bestimmten von der Bridge
verwalteten Segmente befinden, können dabei nicht in ein
anderes Segment wechseln.Ein weiteres Beispiel für den Einsatz von
Sticky-Adressen wäre die Kombination einer Bridge mit
mehreren VLANs, um einen Router zu konfigurieren, der in
in der Lage ist, einzelne Kundennetzwerke voneinander zu
trennen, ohne IP-Adressbereiche zu verschwenden. Für das
folgende Beispiel nehmen wir an, dass sich der Client
CustomerA im VLAN
vlan100 und der Client
CustomerB im VLAN
vlan101 befinden. Die Bridge hat die
IP-Adresse 192.168.0.1 und ist
als Internet-Router konfiguriert.&prompt.root; ifconfig bridge0 addm vlan100 sticky vlan100 addm vlan101 sticky vlan101
&prompt.root; ifconfig bridge0 inet 192.168.0.1/24Beide Clients sehen 192.168.0.1 als Ihr Default-Gateway.
Da der Brücken-Cache sticky ist,
sind Sie nicht dazu in der Lage, die MAC-Adresse des
anderen Kunden zu spoofen und dessen Datenverkehr
abzufangen.Sie können die Kommunikation zwischen den VLANs
vollständig unterbinden, wenn Sie private Schnittstellen
(oder eine Firewall) einsetzen:&prompt.root; ifconfig bridge0 private vlan100 private vlan101Die Kunden sind nun komplett voneinander isoliert und
der komplette /24-Adressbereich
kann zugewiesen werden, ohne dass Sie Subnetze einsetzen
müssen.Adressen-LimitierungDie maximale mögliche Anzahl an eindeutigen
MAC-Adressen hinter einer Schnittstelle kann festgelegt werden.
Sobald das Limit erreicht ist, werden Pakete mit einer
unbekannten Quell-Adresse solange verworfen, bis ein
exisitierender Eintrag gelöscht wird oder
abläuft.Das folgende Beispiel setzt die maximale Anzahl von
Netzgeräten für
CustomerA für
das VLAN vlan100 auf 10.&prompt.root; ifconfig bridge0 ifmaxaddr vlan100 10SNMP-MonitoringDie Schnittstelle der Bridge sowie die STP-Parameter
können durch den bereits im Basissystem enthaltenen
SNMP-Daemon überwacht werden. Die exportierten
Bridge-MIBs entsprechen den IETF-Standards, daher können
Sie einen beliebigen SNMP-Client oder ein beliebiges
Monitoring-Werkzeug einsetzen, um die benötigten Daten
zu erhalten.Auf dem Rechner, auf dem die Bridge konfiguriert ist,
aktivieren Sie die Zeile
begemotSnmpdModulePath."bridge" = "/usr/lib/snmp_bridge.so"
in der Datei /etc/snmp.config und starten
danach den bsnmpd-Daemon.
Eventuell benötigen Sie noch weitere
Konfigurationsparameter wie Community-Namen und
Zugriffslisten. Die Konfiguration dieser Parameter wird
in den Manualpages &man.bsnmpd.1; sowie &man.snmp.bridge.3;
beschrieben.Die folgenden Beispiele verwenden das Softwarepaket
Net-SNMP (net-mgmt/net-snmp), um die Bridge
abzufragen. Alternativ können Sie dafür auch den
Port net-mgmt/bsnmptools
einsetzen. Auf dem SNMP-Client fügen Sie danach die
folgenden Zeilen in die Datei
$HOME/.snmp/snmp.conf ein, um die
MIB-Definitionen der Bridge in
Net-SNMP zu importieren:mibdirs +/usr/share/snmp/mibs
mibs +BRIDGE-MIB:RSTP-MIB:BEGEMOT-MIB:BEGEMOT-BRIDGE-MIBUm eine einzelne Bridge über den IETF BRIDGE-MIB
(RFC4188) zu überwachen, geben Sie Folgendes ein:&prompt.user; snmpwalk -v 2c -c public bridge1.example.com mib-2.dot1dBridge
BRIDGE-MIB::dot1dBaseBridgeAddress.0 = STRING: 66:fb:9b:6e:5c:44
BRIDGE-MIB::dot1dBaseNumPorts.0 = INTEGER: 1 ports
BRIDGE-MIB::dot1dStpTimeSinceTopologyChange.0 = Timeticks: (189959) 0:31:39.59 centi-seconds
BRIDGE-MIB::dot1dStpTopChanges.0 = Counter32: 2
BRIDGE-MIB::dot1dStpDesignatedRoot.0 = Hex-STRING: 80 00 00 01 02 4B D4 50
...
BRIDGE-MIB::dot1dStpPortState.3 = INTEGER: forwarding(5)
BRIDGE-MIB::dot1dStpPortEnable.3 = INTEGER: enabled(1)
BRIDGE-MIB::dot1dStpPortPathCost.3 = INTEGER: 200000
BRIDGE-MIB::dot1dStpPortDesignatedRoot.3 = Hex-STRING: 80 00 00 01 02 4B D4 50
BRIDGE-MIB::dot1dStpPortDesignatedCost.3 = INTEGER: 0
BRIDGE-MIB::dot1dStpPortDesignatedBridge.3 = Hex-STRING: 80 00 00 01 02 4B D4 50
BRIDGE-MIB::dot1dStpPortDesignatedPort.3 = Hex-STRING: 03 80
BRIDGE-MIB::dot1dStpPortForwardTransitions.3 = Counter32: 1
RSTP-MIB::dot1dStpVersion.0 = INTEGER: rstp(2)Der Wert der Variable
dot1dStpTopChanges.0 ist hier 2, die
STP-Topologie der Bridge wurde also bereits zweimal
geändert. Unter einer Änderung versteht man dabei
die Anpassung eines oder mehrerer Links und die Kalkulation
eines neuen Baums. Der Wert der Variable
dot1dStpTimeSinceTopologyChange.0 gibt an,
wann dies zuletzt geschah.Um mehrere Bridge-Schnittstellen zu überwachen,
können Sie den privaten BEGEMOT-BRIDGE-MIB
einsetzen:&prompt.user; snmpwalk -v 2c -c public bridge1.example.com
enterprises.fokus.begemot.begemotBridge
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge0" = STRING: bridge0
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge2" = STRING: bridge2
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge0" = STRING: e:ce:3b:5a:9e:13
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge2" = STRING: 12:5e:4d:74:d:fc
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge0" = INTEGER: 1
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge2" = INTEGER: 1
...
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge0" = Timeticks: (116927) 0:19:29.27 centi-seconds
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge2" = Timeticks: (82773) 0:13:47.73 centi-seconds
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge0" = Counter32: 1
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge2" = Counter32: 1
BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge0" = Hex-STRING: 80 00 00 40 95 30 5E 31
BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge2" = Hex-STRING: 80 00 00 50 8B B8 C6 A9Um die über den
mib-2.dot1dBridge-Subtree überwachte
Bridge-Schnittstelle zu ändern, geben Sie Folgendes
ein:&prompt.user; snmpset -v 2c -c private bridge1.example.com
BEGEMOT-BRIDGE-MIB::begemotBridgeDefaultBridgeIf.0 s bridge2AndrewThompson
- Written by
+ Geschrieben von BenedictReuschlingÜbersetzt von SharonBahagi
- Link Aggregation und Failover
+ Link-Aggregation und FailoverlaggfailoverfeclacploadbalanceroundrobinEinleitungDie &man.lagg.4;-Schnittstelle erlaubt die Aggregation von
mehreren Netzwerkadaptern als eine virtuelle Schnittstelle mit dem
Ziel, Ausfallsicherheit (Failover) und Hochgeschwindigkeitsverbindungen
bereitzustellen.AnwendungsoptionenAusfallsicherheit (Failover)Sendet und empfängt Netzwerkverkehr nur auf dem
Masterport. Sollte der Masterport nicht zur Verfügung stehen,
wird der nächste aktive Port verwendet. Der zuerst
hinzugefügte Adapter wird zum Masterport, jeder weitere Adapter
dient als Gerät zur Ausfallsicherheit.&cisco; Fast ðerchannel;&cisco; Fast ðerchannel; (FEC), ist eine statische
Konfiguration und handelt weder Aggregation mit der Gegenstelle aus,
noch werden Frames zur Überwachung der Verbindung ausgetauscht.
Wenn der Switch LACP unterstützt, sollte diese Option auch
verwendet werden.FEC balanciert den ausgehenden Verkehr
über die aktiven Ports, basierend auf gehashten
Protokollheaderinformationen und akzeptiert eingehenden Verkehr auf
jedem aktiven Port. Der Hash enthält die Ethernet-Quell- und
Zieladresse, und, falls verfügbar, den VLAN-Tag, sowie die
IPv4/IPv6 Quell- und Zieladresse.LACP
- Das &ieee; 802.3ad Link Aggregation Control Protokoll
+ Das &ieee; 802.3ad Link-Aggregation Control Protokoll
(LACP) und das Marker Protocol. LACP wird eine Menge von
aggregierbaren Verbindungen mit der Gegenstelle in einer oder
mehreren Link Aggregated Groups (LAG) aushandeln. Jede LAG besteht
aus Ports der gleichen Geschwindigkeit, eingestellt auf
Voll-Duplex-Betrieb. Der Verkehr wird über die Ports
in der LAG mit der größten Gesamtgeschwindigkeit
balanciert, in den meisten Fällen wird es nur eine LAG geben,
die alle Ports enthält. Im Falle von Änderungen in der
- physischen Anbindung wird die Link Aggregation schnell zu einer
+ physischen Anbindung wird die Link-Aggregation schnell zu einer
neuen Konfiguration konvergieren.LACP balanciert ausgehenden Verkehr
über die aktiven Ports basierend auf der gehashten
Protokollheaderinformation und akzeptiert eingehenden Verkehr auf
jedem aktiven Port. Der Hash beinhaltet die Ethernet-Quell- und
Zieladresse, und, soweit verfügbar, den VLAN-Tag, sowie die
IPv4/IPv6 Quell- und Zieladresse.Lastverteilung (Loadbalance)Dabei handelt es sich um einen Alias des
FEC-Modus.Round-RobinVerteilt ausgehenden Verkehr mittels einer Round-Robin-Zuteilung
über alle aktiven Ports und akzeptiert eingehenden Verkehr auf
jedem aktiven Port. Dieser Modus verletzt die Reihenfolge von
Ethernet-Frames und sollte mit Vorsicht eingesetzt werden.BeispieleLACP Aggregation mit einem Switch von &cisco;Dieses Beispiel verbindet zwei Adapter auf einer &os;-Maschine
mit dem Switch als eine einzelne, lastverteilte und ausfallsichere
Verbindung. Weitere Adapter können hinzugefügt werden, um
den Durchsatz zu erhöhen und die Ausfallsicherheit zu steigern.
Da die Reihenfolge der Frames bei Ethernet zwingend eingehalten
werden muss, fließt auch jeglicher Verkehr zwischen zwei
Stationen über den gleichen physischen Kanal, was die maximale
Geschwindigkeit der Verbindung auf die eines einzelnen Adapters
beschränkt. Der Übertragungsalgorithmus versucht, so viele
Informationen wie möglich zu verwenden, um die verschiedenen
Verkehrsflüsse zu unterscheiden und balanciert diese über
die verfügbaren Adapter.Fügen Sie auf dem &cisco;-Switch die Adapter
FastEthernet0/1 und
FastEthernet0/2 zu der
channel-group 1 hinzu:interface FastEthernet0/1
channel-group 1 mode active
channel-protocol lacp
!
interface FastEthernet0/2
channel-group 1 mode active
channel-protocol lacpAuf der Maschine mit &os; erstellen Sie die
&man.lagg.4;-Schnittstelle unter Verwendung von
fxp0 und
fxp1:&prompt.root; ifconfig lagg0 create
&prompt.root; ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1Überprüfen Sie den Status der Schnittstelle, indem
Sie folgendes eingeben:&prompt.root; ifconfig lagg0Ports, die als ACTIVE markiert sind, sind
Teil der aktiven Aggregations-Gruppe, die mit dem Switch
ausgehandelt wurde und der Verkehr wird über diese
übertragen und empfangen. Benutzen Sie die ausführliche
Ausgabe von &man.ifconfig.8;, um sich die LAG-Identifikatoren
anzeigen zu lassen.lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:05:5d:71:8d:b8
media: Ethernet autoselect
status: active
laggproto lacp
laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>Um den Status der Ports auf dem Switch anzuzeigen, geben Sie
show lacp neighbor ein:switch# show lacp neighbor
Flags: S - Device is requesting Slow LACPDUs
F - Device is requesting Fast LACPDUs
A - Device is in Active mode P - Device is in Passive mode
Channel group 1 neighbors
Partner's information:
LACP port Oper Port Port
Port Flags Priority Dev ID Age Key Number State
Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D
Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3DBenutzen Sie das Kommando show lacp neighbor
detail, um weitere Informationen zu erhalten.Ausfallsicherer ModusDer ausfallsichere Modus kann verwendet werden, um zu einer
zweiten Schnittstelle zu wechseln, sollte die Verbindung mit der
Master-Schnittstelle ausfallen. Erstellen und konfigurieren Sie die
- lagg0-Schnittstelle, mit
+ lagg0-Schnittstelle mit
fxp0 als Master und
fxp1 als die sekundäre
Schnittstelle:&prompt.root; ifconfig lagg0 create
&prompt.root; ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1Die Schnittstelle wird so ähnlich wie im folgenden
aussehen, mit dem großen Unterschied, dass die
MAC-Adresse und die Gerätenamen
unterschiedlich sein werden:&prompt.root; ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:05:5d:71:8d:b8
media: Ethernet autoselect
status: active
laggproto failover
laggport: fxp1 flags=0<>
laggport: fxp0 flags=5<MASTER,ACTIVE>Der Verkehr wird auf fxp0
übertragen und empfangen. Wenn die Verbindung auf
fxp0 abbricht, so wird
fxp1 die Verbindung übernehmen.
Sobald die Verbindung auf der Master-Schnittstelle wiederhergestellt
ist, wird diese auch wieder als aktive Schnittstelle genutzt.
+
+
+ Failover Modus zwischen drahtgebundenen und drahtlosen
+ Schnittstellen
+
+ Für Laptop-Benutzer ist es normalerweise
+ wünschenswert, wireless als sekundäre Schnittstelle
+ einzurichten, die verwendet wird, wenn die Verbindung via Kabel
+ nicht verfügbar ist. Mit &man.lagg.4; ist es möglich,
+ eine IP-Adresse für die Kabelverbindung zu verwenden.
+ Sie ist leistungsfähig und sicher. Gleichzeitig haben Sie
+ die Möglichkeit Daten über die drahtlose Verbindung
+ zu übertragen.
+
+ In dieser Konfiguration, müssen wir die zugrunde
+ liegenden MAC-Adresse der WLAN-Schnittstelle
+ überschreiben, damit sie zur Adresse von &man.lagg.4; passt,
+ welche von der drahtgebundenen Masterschnittstelle vererbt
+ wurde.
+
+ In dieser Konfiguration behandeln wir die drahtgebundene
+ Schnittstelle bge0 als die Master und
+ die drahtlose Schnittstelle wlan0 als
+ die Failover-Schnittstelle. Die wlan0
+ wurde von der iwn0 mit der
+ MAC-Adresse der kabelgebundenen eingerichtet.
+ Im ersten Schritt erhalten wir die MAC-Adresse
+ der kabelgebundenen Schnittstelle:
+
+ &prompt.root; ifconfig bge0
+bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
+ options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
+ ether 00:21:70:da:ae:37
+ inet6 fe80::221:70ff:feda:ae37%bge0 prefixlen 64 scopeid 0x2
+ nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
+ media: Ethernet autoselect (1000baseT <full-duplex>)
+ status: active
+
+ Sie können bge0 in
+ ihre tatsächliche ändern und werden eine andere
+ ether-Zeile mit der
+ MAC-Adresse ihrer kabelgebundenen
+ Schnittstelle erhalten. Nun ändern wir die zugrunde liegende
+ drahtlose Schnittstelle iwn0:
+
+ &prompt.root; ifconfig iwn0 ether 00:21:70:da:ae:37
+
+ Starten Sie den Wireless-Schnittstelle, aber ohne
+ IP-Adresse:
+
+ &prompt.root; ifconfig create wlan0 wlandev iwn0 ssid my_router up
+
+ Erstellen Sie die &man.lagg.4; Schnittstelle mit
+ bge0 als Master und
+ wlan0 als Failover falls
+ notwendig:
+
+ &prompt.root; ifconfig lagg0 create
+&prompt.root; ifconfig lagg0 up laggproto failover laggport bge0 laggport wlan0
+
+ Die Schnittstelle sieht änhlich aus, die Hauptunterschiede
+ werden die MAC-Adresse und die Gerätenamen
+ sein:
+
+ &prompt.root; ifconfig lagg0
+lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
+ options=8<VLAN_MTU>
+ ether 00:21:70:da:ae:37
+ media: Ethernet autoselect
+ status: active
+ laggproto failover
+ laggport: wlan0 flags=0<>
+ laggport: bge0 flags=5<MASTER,ACTIVE>
+
+ Um zu vermeiden, dass Sie dies nach jedem Neustart machen müssen, können Sie
+ etwas in der Art in ihre /etc/rc.conf
+ Datei schreiben:
+
+ ifconfig_bge0="up"
+ifconfig_iwn0="ether 00:21:70:da:ae:37"
+wlans_iwn0="wlan0"
+ifconfig_wlan0="WPA"
+cloned_interfaces="lagg0"
+ifconfig_lagg0="laggproto failover laggport bge0 laggport wlan0 DHCP"
+
+ Jean-FrançoisDockèsAktualisiert von AlexDupreReorganisiert und erweitert von Start und Betrieb von FreeBSD über ein Netzwerkplattenloser Arbeitsplatzplattenloser BetriebFreeBSD kann über ein Netzwerk starten und arbeiten, ohne
eine lokale Festplatte zu verwenden, indem es Dateisysteme eines
NFS-Servers in den eigenen Verzeichnisbaum
einhängt. Dazu sind, von den Standardkonfigurationsdateien
abgesehen, keine Systemänderungen nötig. Ein solches
System kann leicht installiert werden, da alle notwendigen
Elemente bereits vorhanden sind:Es gibt mindestens zwei Möglichkeiten, den Kernel
über das Netzwerk zu laden:PXE: Das
Preboot eXecution Environment System von
&intel; ist eine Art intelligentes Boot-ROM, das in
- einigen Netzkarten oder Hauptplatinen verwendet wird.
+ einigen Netzwerkkarten oder Hauptplatinen verwendet wird.
Weitere Informationen finden Sie in &man.pxeboot.8;.
Der Port
Etherboot
(net/etherboot)
erzeugt ROM-fähigen Code, um einen Kernel über
das Netzwerk zu laden. Dieser Code kann entweder auf ein
- Boot-PROM einer Netzkarte gebrannt werden, was von vielen
- Netzkarten unterstützt wird. Oder er kann von einer
+ Boot-PROM einer Netzwerkkarte gebrannt werden, was von vielen
+ Netzwerkkarten unterstützt wird. Oder er kann von einer
lokalen Diskette, Festplatte oder von einem laufenden
&ms-dos;-System geladen werden.Das Beispielskript
/usr/share/examples/diskless/clone_root
erleichtert die Erzeugung und die Wartung des
root-Dateisystems auf dem Server. Das Skript muss
wahrscheinlich angepasst werden, dennoch werden Sie schnell zu
einem Ergebnis kommen.Die Startdateien, die einen plattenlosen Systemstart
erkennen und unterstützen, sind nach der Installation
in /etc vorhanden.Dateiauslagerungen können sowohl via
NFS als auch auf die lokale Platte
erfolgen.Es gibt verschiedene Wege, einen plattenlosen Rechner
einzurichten. Viele Elemente sind daran beteiligt, die fast
immer an den persönlichen Geschmack angepasst werden
können. Im folgenden Abschnitt wird die Installation
eines kompletten Systems beschrieben, wobei der
Schwerpunkt auf Einfachheit und Kompatibilität zu den
Standardstartskripten von FreeBSD liegt. Das beschriebene
System hat folgende Eigenschaften:Die plattenlosen Rechner haben ein gemeinsames
/- sowie ein gemeinsames
/usr-Dateisystem, die jeweils
schreibgeschützt sind.Das root-Dateisystem ist eine Kopie
eines Standardwurzelverzeichnisses von FreeBSD
(üblicherweise das des Servers), bei dem einige
Konfigurationsdateien durch für den plattenlosen
Betrieb geeignete Versionen ersetzt wurden.Für die Bereiche des root-Dateisystems, die
beschreibbar sein müssen, werden mit &man.md.4;
virtuelle Dateisysteme erzeugt. Dies bedeutet aber auch, dass
alle Veränderungen verloren gehen, wenn das System neu
gestartet wird.Der Kernel wird, in Abhängigkeit von der jeweiligen
Situation, entweder von Etherboot
oder von PXE transferiert und geladen.
Das hier beschriebene System ist nicht sicher. Es
sollte nur in einem gesicherten Bereich eines Netzwerks verwendet
werden und für andere Rechner nicht erreichbar sein.Alle Informationen in diesem Abschnitt wurden unter
&os; 5.2.1-RELEASE getestet.HintergrundinformationenDie Einrichtung von plattenlosen Rechnern ist einfach, aber
auch fehleranfällig. Der Grund dafür sind auftretende
Fehler, die sich oft nur schwer zuordnen lassen. Unter anderem
sind dafür folgende Umstände verantwortlich:Kompilierte Optionen haben zur Laufzeit unterschiedliche
Auswirkungen.Fehlermeldungen sind oft kryptisch oder fehlen
vollständig.Daher ist es nützlich, über die im Hintergrund
ablaufenden Mechanismen Bescheid zu wissen. Dadurch wird es
einfacher, eventuell auftretende Fehler zu beheben.Verschiedene Operationen müssen ausgeführt werden,
um ein System erfolgreich zu starten:Der Rechner benötigt einige Startparameter, wie
seine IP-Adresse, die Namen ausführbarer Dateien, den
Servernamen sowie den root-Pfad. Für die
Übermittlung dieser Informationen wird entweder das
DHCP- oder das BOOTP-Protokoll verwendet.
Bei DHCP handelt es sich um eine
abwärtskompatible Erweiterung von BOOTP, die die
gleichen Portnummern und das gleiche Paketformat verwendet.
Es ist möglich, das System so zu konfigurieren,
dass es nur BOOTP verwendet. Das Serverprogramm
&man.bootpd.8; ist bereits im &os;-Basissystem enthalten.
DHCP hat im Vergleich zu BOOTP
allerdings mehrere Vorteile (bessere Konfigurationsdateien,
die Möglichkeit zur Verwendung von
PXE, sowie viele andere, die nicht in
direktem Zusammenhang mit dem plattenlosen Betrieb stehen).
Dieser Abschnitt beschreibt die Konfiguration mittels
DHCP. Wenn möglich, werden aber
entsprechende Beispiele für &man.bootpd.8;
angeführt. Die Beispielkonfiguration nutzt das
Softwarepaket ISC DHCP.Der Rechner muss ein oder mehrere Programme in den
lokalen Speicher laden. Dazu wird entweder
TFTP oder NFS
verwendet. Die Auswahl zwischen TFTP und
NFS erfolgt über das Setzen von
verschiedenen Kompilieroptionen. Ein häufig gemachter
Fehler ist es, Dateinamen für das falsche Protokoll
anzugeben: TFTP transferiert
normalerweise alle Dateien aus einem einzigen Verzeichnis
des Servers, und erwartet einen Pfad relativ zu diesem
Verzeichnis. NFS verlangt hingegen
absolute Dateipfade.Die möglichen Bootstrap-Programme und der Kernel
müssen initialisiert und ausgeführt werden. Dabei
gibt es zwei Möglichkeiten:PXE lädt &man.pxeboot.8;.
Dabei handelt es sich um eine modifizierte Version des
&os;-Laders der Boot-Phase drei. Der &man.loader.8;
beschafft alle für den Systemstart notwendigen
Parameter, und hinterlegt diese in der Kernelumgebung,
bevor er die Kontrolle übergibt. Es ist hier
möglich, den GENERIC-Kernel
zu verwenden.Etherboot lädt den
Kernel hingegen direkt. Dafür müssen Sie
allerdings einen Kernel mit spezifischen Optionen
erzeugen.PXE und
Etherboot sind zwar im
Großen und Ganzen gleichwertig, da der Kernel
aber viele Aufgaben an &man.loader.8; übergibt, sollte
bevorzugt PXE eingesetzt werden.
- Wenn Ihr BIOS und Ihre Netzkarten
+ Wenn Ihr BIOS und Ihre Netzwerkkarten
PXE unterstützen, sollten Sie es
auch verwenden.Zuletzt muss der Rechner auf seine Dateisysteme
zugreifen können. Dafür wird stets
NFS verwendet.Weitere Informationen finden Sie in &man.diskless.8;.InstallationsanweisungenKonfiguration unter Verwendung von
ISC DHCPDHCPplattenloser BetriebDer ISC DHCP-Server kann
Anfragen sowohl von BOOTP als auch von DHCP beantworten.
isc-dhcp 3.0 ist nicht Teil
des Basissystems. Sie müssen es daher zuerst
installieren. Verwenden Sie dazu den Port
net/isc-dhcp30-server
oder das entsprechende Paket.Nachdem ISC DHCP installiert
ist, muss das Programm konfiguriert werden (normalerweise in
/usr/local/etc/dhcpd.conf). Im
folgenden Beispiel verwendet Rechner margauxEtherboot, während Rechner
corbieres PXE verwendet:
default-lease-time 600;
max-lease-time 7200;
authoritative;
option domain-name "example.com";
option domain-name-servers 192.168.4.1;
option routers 192.168.4.1;
subnet 192.168.4.0 netmask 255.255.255.0 {
use-host-decl-names on;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.4.255;
host margaux {
hardware ethernet 01:23:45:67:89:ab;
fixed-address margaux.example.com;
next-server 192.168.4.4;
filename "/tftpboot/kernel.diskless";
option root-path "192.168.4.4:/data/misc/diskless";
}
host corbieres {
hardware ethernet 00:02:b3:27:62:df;
fixed-address corbieres.example.com;
next-server 192.168.4.4;
filename "pxeboot";
option root-path "192.168.4.4:/data/misc/diskless";
}
}
Diese Option
weist dhcpd an, den Wert der
host-Deklaration als Rechnernamen des
plattenlosen Rechners zu senden. Alternativ kann man der
host-Deklaration Folgendes
hinzufügen: option host-name
margauxDie Anweisung
next-server bestimmt den
TFTP- oder
NFS-Server, von dem der Loader oder
der Kernel geladen werden (in der Voreinstellung ist das
der DHCP-Server selbst).Die Anweisung
filename bestimmt die Datei, die
Etherboot als nächstes
lädt. Das genaue Format hängt von der
gewählten Transfermethode ab.
Etherboot kann sowohl mit
NFS als auch mit
TFTP kompiliert werden. In der
Voreinstellung wird der &os;-Port mit
NFS-Unterstützung kompiliert.
PXE verwendet TFTP,
daher wird im Beispiel ein relativer Dateipfad verwendet.
Dies kann aber, je nach Konfiguration des
TFTP-Servers, auch anders sein.
Beachten Sie, dass PXE
pxeboot lädt, und nicht den
Kernel. Es ist auch möglich, das Verzeichnis
/boot einer
&os;-CD-ROM von pxeboot laden zu
lassen. &man.pxeboot.8; kann einen
GENERIC-Kernel laden, dadurch ist es
möglich, PXE von einer entfernten
CD-ROM zu starten.Die Option
root-path bestimmt den Pfad des
root-Dateisystems in normaler NFS-Schreibweise. Wird
PXE verwendet, ist es möglich,
die IP-Adresse des Rechners wegzulassen, solange nicht
die Kerneloption BOOTP aktiviert wird. Der
NFS-Server entspricht in diesem Fall
dem TFTP-Server.Konfiguration bei Verwendung von BOOTPBOOTPplattenloser BetriebEs folgt nun eine der Konfiguration von DHCP
entsprechende Konfiguration (für einen Client) für
bootpd. Zu finden ist die
Konfigurationsdatei unter /etc/bootptab.
Beachten Sie bitte, dass
Etherboot mit der Option
NO_DHCP_SUPPORT kompiliert werden muss,
damit BOOTP verwendet werden kann. PXE
hingegen benötigt
DHCP. Der einzige offensichtliche
Vorteil von bootpd ist, dass es
bereits im Basissystem vorhanden ist..def100:\
:hn:ht=1:sa=192.168.4.4:vm=rfc1048:\
:sm=255.255.255.0:\
:ds=192.168.4.1:\
:gw=192.168.4.1:\
:hd="/tftpboot":\
:bf="/kernel.diskless":\
:rp="192.168.4.4:/data/misc/diskless":
margaux:ha=0123456789ab:tc=.def100Ein Startprogramm unter Verwendung von
Etherboot erstellenEtherbootDie
Internetseite von Etherboot enthält
ausführliche Informationen, die zwar vor allem
für Linux gedacht sind, aber dennoch nützliche
Informationen enthalten. Im Folgenden wird daher nur grob
beschrieben, wie Sie Etherboot auf
einem FreeBSD-System einsetzen können.Als Erstes müssen Sie
net/etherboot als Paket
oder als Port installieren.Sie können Etherboot so
konfigurieren, dass TFTP anstelle von
NFS verwendet wird, indem Sie die Datei
Config im Quellverzeichnis von
Etherboot bearbeiten.Für unsere Installation verwenden wir eine
Startdiskette. Für Informationen zu anderen Methoden
(PROM oder &ms-dos;-Programme) lesen Sie bitte die
Dokumentation zu Etherboot.Um eine Startdiskette zu erzeugen, legen Sie eine Diskette
in das Laufwerk des Rechners ein, auf dem Sie
Etherboot installiert haben. Danach
wechseln Sie in das Verzeichnis src des
Etherboot-Verzeichnisbaums und geben
Folgendes ein:&prompt.root; gmake bin32/devicetype.fd0devicetype hängt vom Typ
der Ethernetkarte ab, über die der plattenlose Rechner
verfügt. Lesen Sie dazu NIC im
gleichen Verzeichnis, um den richtigen Wert für
devicetype zu bestimmen.Das System mit PXE startenIn der Voreinstellung lädt der
&man.pxeboot.8;-Loader den Kernel über
NFS. Soll stattdessen
TFTP verwendet werden, muss beim
Kompilieren die Option
LOADER_TFTP_SUPPORT in der Datei
/etc/make.conf eingetragen sein. Sehen
Sie sich die Datei
/usr/share/examples/etc/make.conf
für weitere Anweisungen an.Es gibt zwei Optionen für
make.conf, die nützlich sein
können, wenn Sie eine plattenlose serielle Konsole
einrichten wollen:
BOOT_PXELDR_PROBE_KEYBOARD, und
BOOT_PXELDR_ALWAYS_SERIAL.Um PXE beim Systemstart zu verwenden,
müssen Sie im BIOS des Rechner die
Option Über das Netzwerk starten
aktivieren. Alternativ können Sie während der
PC-Initialisierung auch eine Funktionstaste drücken.
Serverkonfiguration - TFTP und
NFSTFTPplattenloser BetriebNFSplattenloser BetriebWenn Sie PXE oder
Etherboot so konfiguriert haben,
dass diese TFTP verwenden, müssen
Sie auf dem Dateiserver tftpd
aktivieren:Erzeugen Sie ein Verzeichnis, in dem
tftpd seine Dateien ablegt,
beispielsweise /tftpboot.Fügen Sie folgende Zeile in
/etc/inetd.conf ein:tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpbootAnscheinend benötigen zumindest einige
PXE-Versionen die
TCP-Version von
TFTP. Sollte dies bei Ihnen der
Fall sein, fügen Sie eine zweite Zeile ein, in der
Sie dgram udp durch
stream tcp ersetzen.Weisen Sie inetd an, seine
Konfiguration erneut einzulesen (Damit der folgende
Befehl funktioniert, muss die Option
in der Datei
/etc/rc.conf vorhanden sein.):&prompt.root; /etc/rc.d/inetd restartSie können das Verzeichnis
/tftpboot an einem beliebigen Ort auf dem
Server ablegen. Stellen Sie aber sicher, dass Sie diesen Ort
sowohl in inetd.conf als auch in
dhcpd.conf eingetragen haben.Außerdem müssen Sie NFS aktivieren und die
entsprechenden Verzeichnisse exportieren.Fügen Sie folgende Zeile in
/etc/rc.conf ein:nfs_server_enable="YES"Exportieren Sie das Verzeichnis, in dem sich das
Wurzelverzeichnis für den plattenlosen Betrieb
befindet, indem Sie folgende Zeile in
/etc/exports einfügen (passen
Sie dabei den mountpoint
an und ersetzen Sie
margaux corbieres durch den
Namen Ihres plattenlosen Rechners):/data/misc -alldirs -ro margauxWeisen sie nun mountd an,
seine Konfigurationsdatei erneut einzulesen. Wenn Sie
NFS erst in der Datei
/etc/rc.conf aktivieren mussten,
sollten Sie stattdessen den Rechner neu starten. Dadurch
wird die Konfigurationsdatei ebenfalls neu eingelesen.
&prompt.root; /etc/rc.d/mountd restartEinen plattenlosen Kernel erzeugenplattenloser BetriebKernelkonfigurationWenn Sie Etherboot verwenden,
müssen Sie in die Kernelkonfigurationsdatei Ihres
plattenlosen Clients zusätzlich folgende Optionen
einfügen:options BOOTP # Use BOOTP to obtain IP address/hostname
options BOOTP_NFSROOT # NFS mount root file system using BOOTP infoAußerdem können Sie die Optionen
BOOTP_NFSV3,
BOOT_COMPAT sowie
BOOTP_WIRED_TO verwenden (sehen Sie sich
dazu auch die Datei NOTES an).Die Namen dieser Optionen sind historisch bedingt.
Sie ermöglichen eine unterschiedliche Verwendung von
DHCP und BOOTP innerhalb des Kernels.
Es ist auch möglich, eine strikte Verwendung von BOOTP
oder DHCP zu erzwingen.Erzeugen Sie den neuen Kernel (lesen Sie dazu auch
) und kopieren Sie ihn an den
in dhcpd.conf festgelegten Ort.Wenn Sie PXE verwenden, ist die
Erzeugung eines Kernels zwar nicht unbedingt nötig, sie
wird allerdings dennoch empfohlen. Die Aktivierung dieser
Optionen bewirkt, dass die Anzahl der möglichen
DHCP-Anforderungen während des
Kernelstarts erhöht wird. Ein kleiner Nachteil sind
eventuell auftretende Inkonsistenzen zwischen den neuen
Werten und den von &man.pxeboot.8; erhaltenen Werten. Der
große Vorteil dieser Variante ist es, dass dabei der
Rechnername gesetzt wird, den Sie ansonsten durch eine
andere Methode, beispielsweise in einer clientspezifischen
rc.conf-Datei festlegen müssten.
Damit der Kernel von
Etherboot geladen werden kann,
müssen device hints im
Kernel einkompiliert sein. Dazu setzen Sie normalerweise
folgende Option in die Kernelkonfigurationsdatei (sehen Sie
sich dazu auch die kommentierte Datei
NOTES an):hints "GENERIC.hints"Das root-Dateisystem erzeugenRoot-Dateisystemplattenloser BetriebSie müssen für den plattenlosen Rechner ein
root-Dateisystem erzeugen, und zwar an dem in
dhcpd.conf als
root-path festgelegten Ort.make world zum Füllen des
Dateisystems einsetzenDiese schnelle Methode installiert ein komplettes
jungfräuliches System (und nicht nur ein
root-Dateisystem) nach DESTDIR. Dazu
müssen Sie lediglich das folgende Skript
ausführen:#!/bin/sh
export DESTDIR=/data/misc/diskless
mkdir -p ${DESTDIR}
cd /usr/src; make buildworld && make buildkernel
cd /usr/src/etc; make distributionDanach müssen Sie noch die dadurch in
DESTDIR erzeugten Dateien
/etc/rc.conf sowie
/etc/fstab Ihren Wünschen
anpassen.Den Auslagerungsbereich konfigurierenFalls nötig, kann eine auf dem
NFS-Server liegende Datei als
Auslagerungsdatei eingerichtet werden.Eine NFS-Auslagerungsdatei
einrichtenDer Kernel unterstützt beim Systemstart keine
NFS-Auslagerungsdatei. Diese muss daher
in den Startskripten aktiviert werden, indem ein
beschreibbares Dateisystem eingehängt wird, um dort
die Auslagerungsdatei zu erzeugen und zu aktivieren. Um
eine Auslagerungsdatei zu erzeugen, gehen Sie wie folgt
vor:&prompt.root; dd if=/dev/zero of=/path/to/swapfile bs=1k count=1 oseek=100000Um die Auslagerungsdatei zu aktivieren, fügen Sie
folgende Zeile in rc.conf ein:swapfile=/path/to/swapfileVerschiedenesSchreibgeschütztes Dateisystem
/usrplattenloser Betrieb/usr schreibgeschütztWenn am plattenlosen Rechner X läuft, müssen
Sie die Konfigurationsdatei von
XDM anpassen, da Fehlermeldungen
in der Voreinstellung auf /usr
geschrieben werden.Der Server läuft nicht unter FreeBSDWenn das root-Dateisystem nicht auf einem
FreeBSD-Rechner liegt, muss das Dateisystem zuerst unter
FreeBSD erzeugt werden. Anschließend wird es
beispielsweise mit tar oder
cpio an den gewünschten Ort
kopiert.Dabei kann es Probleme mit den Gerätedateien
in /dev geben, die durch eine
unterschiedliche Darstellung der Major- und Minor-Number
von Geräten auf beiden Systemen hervorgerufen werden.
Eine Problemlösung besteht darin, das root-Verzeichnis
auf einem FreeBSD-Rechner einzuhängen und die
Gerätedateien dort mit &man.devfs.5; zu erzeugen.ISDN – diensteintegrierendes digitales NetzwerkISDNEine gute Quelle für Informationen zu ISDN ist die
ISDN-Seite von Dan Kegel.Welche Informationen finden Sie in diesem Abschnitt?Wenn Sie in Europa leben, könnte der Abschnitt
über ISDN-Karten für Sie interessant sein.Wenn Sie ISDN hauptsächlich dazu verwenden wollen, um
sich über einen Anbieter ins Internet einzuwählen,
sollten Sie den Abschnitt über Terminaladapter lesen.
Dies ist die flexibelste Methode, die auch die wenigsten
Probleme verursacht.Wenn Sie zwei Netzwerke miteinander verbinden, oder sich
über eine ISDN-Standleitung mit dem Internet verbinden
wollen, finden Sie entsprechende Informationen im Abschnitt
über Router und Bridges.Bei der Wahl der gewünschten Lösung sind die
entstehenden Kosten ein entscheidender Faktor. Die folgenden
Beschreibungen reichen von der billigsten bis zur teuersten
Variante.HellmuthMichaelisBeigetragen von ISDN-KartenISDNKartenDas ISDN-Subsystem von FreeBSD unterstützt den
DSS1/Q.931- (oder Euro-ISDN)-Standard nur für passive
Karten. Zusätzlich werden aber auch einige
aktive Karten unterstützt, bei denen die Firmware auch
andere Signalprotokolle unterstützt; dies schließt
auch die erste ISDN-Karte mit
Primärmultiplex-Unterstützung mit ein.isdn4bsd ermöglicht es
Ihnen, sich unter Nutzung von
IP over raw HDLC oder
synchronem PPP mit anderen ISDN-Routern zu
verbinden. Dazu verwenden Sie entweder Kernel-&man.ppp.8;
(via isppp, einem modifizierten
sppp-Treiber), oder Sie benutzen User-&man.ppp.8;. Wenn Sie
User-&man.ppp.8; verwenden, können Sie zwei oder mehrere
ISDN-B-Kanäle bündeln. Im Paket enthalten ist auch
ein Programm mit Anrufbeantworterfunktion sowie verschiedene
Werkzeuge, wie ein Softwaremodem, das 300 Baud
unterstützt.FreeBSD unterstützt eine ständig wachsende Anzahl
von PC-ISDN-Karten, die weltweit erfolgreich eingesetzt werden.
Von FreeBSD unterstützte passive ISDN-Karten enthalten
fast immer den ISAC/HSCX/IPAC ISDN-Chipsatz von Infineon
(ehemals Siemens). Unterstützt werden aber auch Karten mit
Cologne Chip (diese allerdings nur für den ISA-Bus),
PCI-Karten mit Winbond W6692 Chipsatz, einige Karten mit dem
Tiger 300/320/ISAC Chipsatz sowie einige Karten mit einem
herstellerspezifischen Chipsatz, wie beispielsweise die
Fritz!Card PCI V.1.0 und die Fritz!Card PnP von AVM.An aktiven ISDN-Karten werden derzeit die AVM B1 BRI-Karten
(ISA und PCI-Version) sowie die AVM T1 PRI-Karten (PCI-Version)
unterstützt.Informationen zu isdn4bsd finden
Sie im Verzeichnis
/usr/share/examples/isdn/ Ihres
FreeBSD-Systems, oder auf der
Internetseite
von isdn4bsd. Dort finden Sie auch
Verweise zu Tipps, Korrekturen, sowie weiteren Informationen,
wie dem
isdn4bsd-Handbuch.
Falls Sie an der Unterstützung eines zusätzlichen
ISDN-Protokolls, einer weiteren ISDN-Karte oder an einer anderen
Erweiterung von isdn4bsd interessiert
sind, wenden Sie sich bitte an &a.hm;.Für Fragen zur Installation, Konfiguration und zu
sonstigen Problemen von isdn4bsd gibt
es die Mailingliste &a.isdn.name;.ISDN-TerminaladapterTerminaladapterTerminaladapter (TA) sind für ISDN, was Modems für
analoge Telefonleitungen sind.ModemDie meisten Terminaladapter verwenden den
Standardbefehlssatz für Modems von Hayes (AT-Kommandos) und
können daher als Modemersatz verwendet werden.Ein Terminaladapter funktioniert prinzipiell wie ein Modem,
allerdings erfolgt der Verbindungsaufbau um einiges schneller.
Die Konfiguration von PPP entspricht
dabei exakt der eines Modems. Stellen Sie dabei allerdings
die serielle Geschwindigkeit so hoch wie möglich ein.
PPPDer Hauptvorteil bei der Verwendung eines Terminaladapters
zur Verbindung mit einem Internetanbieter ist die
Möglichkeit zur Nutzung von dynamischem PPP. Da
IP-Adressen immer knapper werden, vergeben die meisten Provider
keine statischen IP-Adressen mehr. Die meisten Router
unterstützen allerdings keine dynamische Zuweisung von
IP-Adressen.Der PPP-Daemon bestimmt die Stabilität und
Eigenschaften der Verbindung, wenn Sie einen Terminaladapter
verwenden. Daher können Sie unter FreeBSD einfach von
einer Modemverbindung auf eine ISDN-Verbindung wechseln, wenn
Sie PPP bereits konfiguriert haben. Allerdings bedeutet
dies auch, das bereits bestehende Probleme mit PPP auch unter
ISDN auftreten werden.Wenn Sie an maximaler Stabilität interessiert sind,
verwenden Sie Kernel-PPP, und
nicht das User-PPP.Folgende Terminaladapter werden von FreeBSD
unterstützt:Motorola BitSurfer und Bitsurfer ProAdtranDie meisten anderen Terminaladapter werden wahrscheinlich
ebenfalls funktionieren, da die Hersteller von Terminaladaptern
darauf achten, dass ihre Produkte den Standardbefehlssatz
möglichst gut unterstützen.Das wirkliche Problem mit einem externen Terminaladapter ist,
dass, ähnlich wie bei Modems, eine gute serielle Karte
eine Grundvoraussetzung ist.Sie sollten sich die
Anleitung für die Nutzung serieller Geräte unter
FreeBSD ansehen, wenn Sie detaillierte Informationen
über serielle Geräte und die Unterschiede zwischen
asynchronen und synchronen seriellen Ports benötigen.
Ein Terminaladapter, der an einem (asynchronen)
seriellen Standardport angeschlossen ist, beschränkt
Sie auf 115,2 Kbs. Dies
selbst dann, wenn Sie eine Verbindung mit 128 Kbs haben.
Um die volle Leistungsfähigkeit von ISDN (128 Kbs)
nutzen zu können, müssen Sie den Terminaladapter
daher an eine synchrone serielle Karte anschließen.Kaufen Sie keinen internen Terminaladapter in der Hoffnung,
damit das synchron/asynchron-Problem vermeiden zu können.
Interne Terminaladapter haben einen (asynchronen) seriellen
Standardportchip eingebaut. Der einzige Vorteil interner
Terminaladapter ist es, dass Sie ein serielles sowie ein
Stromkabel weniger benötigen.Eine synchrone Karte mit einem Terminaladapter ist
mindestens so schnell wie ein autonomer ISDN-Router,
und, in Kombination mit einem einfachen 386-FreeBSD-System,
wahrscheinlich flexibler.Die Entscheidung zwischen synchroner Karte/Terminaladapter
und einem autonomen ISDN-Router ist beinahe eine religiöse
Angelegenheit. Zu diesem Thema gibt es viele Diskussionen
in den Mailinglisten. Suchen Sie in den
Archiven
danach, wenn Sie an der kompletten Diskussion interessiert
sind.ISDN-Bridges und RouterISDNAutonome Bridge/RouterISDN-Bridges und Router sind keine Eigenheit von
FreeBSD oder eines anderen Betriebssystems. Für eine
vollständigere Beschreibung von Routing und
Netzwerkkopplungen mit einer Bridge informieren Sie sich
bitte durch weiterführende Literatur.In diesem Abschnitt werden die Begriffe Router und
Bridge synonym verwendet.ISDN-Router und Bridges werden immer günstiger und
damit auch immer beliebter. Ein ISDN-Router ist eine kleine
Box, die direkt an Ihr lokales Ethernet-Netzwerk angeschlossen
wird und sich mit einem Router oder einer Bridge verbindet.
Die eingebaute Software ermöglicht die Kommunikation
über PPP oder andere beliebte Protokolle.Ein Router ermöglicht einen deutlich höheren
Datendurchsatz als ein herkömmlicher Terminaladapter,
da er eine vollsynchrone ISDN-Verbindung nutzt.Das Hauptproblem mit ISDN-Routern und Bridges ist,
dass die Zusammenarbeit zwischen Geräten verschiedener
Hersteller nach wie vor ein Problem ist. Wenn Sie sich auf
diese Weise mit einem Internetanbieter verbinden wollen,
klären Sie daher vorher ab, welche Anforderungen Ihre
Geräte erfüllen müssen.Eine ISDN-Bridge ist eine einfache und wartungsarme
Lösung, zwei Netze, beispielsweise Ihr privates Netz
und Ihr Firmennetz, miteinander zu verbinden. Da Sie die
technische Ausstattung für beide Seiten kaufen müssen,
ist sichergestellt, dass die Verbindung funktionieren
wird.Um beispielsweise einen privaten Computer oder eine
Zweigstelle mit dem Hauptnetzwerk zu verbinden, könnte
folgende Konfiguration verwendet werden:Kleines Netzwerk (Privatnetz)10 base 2Das Netzwerk basiert auf der Bustopologie mit 10base2
Ethernet (Thinnet). Falls nötig, stellen
Sie die Verbindung zwischen Router und Netzwerkkabel mit einem
AUI/10BT-Transceiver her.
---Sun Workstation
|
---FreeBSD Rechner
|
---Windows 95
|
Autonomer Router
|
ISDN BRI Verbindung
10Base2 - EthernetWenn Sie nur einen einzelnen Rechner verbinden wollen,
können Sie auch ein Twisted-Pair-Kabel (Cross-Over)
verwenden, das direkt an den Router angeschlossen wird.Großes Netzwerk (Firmennetz)10 base TDieses Netzwerk basiert auf der Sterntopologie und 10baseT
Ethernet (Twisted Pair).
-------Novell Server
| H |
| ---Sun
| |
| U ---FreeBSD
| |
| ---Windows 95
| B |
|___---Autonomer Router
|
ISDN BRI Verbindung
ISDN NetzwerkdiagrammEin großer Vorteil der meisten Router und Bridges
ist es, dass man gleichzeitig zwei
unabhängige PPP-Verbindungen
zu zwei verschiedenen Zielen aufbauen kann. Diese
Funktion bieten die meisten Terminaladapter nicht. Die
Ausnahme sind spezielle (meist teure) Modelle, die über
zwei getrennte serielle Ports verfügen. Verwechseln Sie
dies aber nicht mit Kanalbündelung oder MPP.Dies kann sehr nützlich sein, wenn Sie eine
ISDN-Standleitung in Ihrem Büro haben, die sie
aufteilen wollen, ohne eine zusätzliche ISDN-Leitung
zu installieren. Ein ISDN-Router kann über einen B-Kanal
(64 Kbps) eine dedizierte Verbindung ins Internet aufbauen,
und gleichzeitig den anderen B-Kanal für eine separate
Datenverbindung nutzen. Der zweite B-Kanal kann beispielsweise
für ein- oder ausgehende Verbindungen verwendet werden.
Sie können ihn aber auch dynamisch mit dem ersten B-Kanal
bündeln, um Ihre Bandbreite zu erhöhen.IPX/SPXEine Ethernet-Bridge kann Daten nicht nur im IP-Protokoll,
sondern auch in beliebigen anderen Protokollen versenden.ChernLeeBeigetragen von NAT - Network Address TranslationÜberblicknatd&man.natd.8;, der Network-Address-Translation-Daemon von
FreeBSD, akzeptiert ankommende Raw-IP-Pakete, ändert den
Sender der Daten in den eigenen Rechner und leitet diese Pakete
in den ausgehenden IP-Paketstrom um, indem IP-Adresse und Port
des Senders so geändert werden, dass bei einer Antwort der
ursprüngliche Sender wieder bestimmt und die Daten an
ihn weitergeleitet werden können.Internet connection sharingNATDer häufigste Grund für die Verwendung von NAT ist
die gemeinsame Nutzung einer Internetverbindung.EinrichtungWegen der begrenzten Verfügbarkeit von IPv4-Adressen
und der gestiegenen Anzahl von Breitbandverbindungen über
Kabelmodem oder DSL, wird die gemeinsame Nutzung von
Internetverbindungen immer wichtiger. Der &man.natd.8;-Daemon
ermöglicht die Anbindung von mehreren Rechnern an das
Internet unter Nutzung einer gemeinsamen Verbindung und einer
IP-Adresse.Häufig soll ein über Kabelmodem oder DSL und eine
IP-Adresse an das Internet angebundener Rechner mehreren
Rechnern eines lokalen Netzwerks Internetdienste anbieten.Um dies zu ermöglichen, muss der FreeBSD-Rechner als
- Gateway fungieren. Dazu sind zwei Netzkarten notwendig. Eine
+ Gateway fungieren. Dazu sind zwei Netzwerkkarten notwendig. Eine
für die Verbindung zum Internet, die zweite für die
Verbindung mit dem lokalen Netzwerk. Sämtliche Rechner
des lokalen Netzwerks sind über einen Hub oder einen Switch
miteinander verbunden.Es gibt verschiedene Möglichkeiten, ein LAN über
ein &os;-Gateway an das Internet anzubinden. Das folgende
Beispiel beschreibt ein Gateway, das zumindest zwei
Netzwerkkarten enthält. _______ __________ ________
| | | | | |
| Hub |-----| Client B |-----| Router |----- Internet
|_______| |__________| |________|
|
____|_____
| |
| Client A |
|__________|Network LayoutEine derartige Netzwerkkonfiguration wird vor allem zur
gemeinsamen Nutzung einer Internetverbindung verwendet. Ein
Rechner des lokalen Netzwerks (LAN) ist mit
dem Internet verbunden. Alle anderen Rechner des lokalen
Netzwerks haben nur über diesen
Gateway-Rechner Zugriff auf das Internet.boot loaderconfigurationBoot Loader KonfigurationDie Kerneleigenschaften für Network Address Translation mit
&man.natd.8; sind im GENERIC-Kernel nicht
aktiviert, können aber bereits zur Bootzeit geladen werden, indem
ein paar Zeilen in die Datei /boot/loader.conf
hinzugefügt werden:ipfw_load="YES"
ipdivert_load="YES"Zusätzlich kann die Option
net.inet.ip.fw.default_to_accept auf
1 gesetzt werden:net.inet.ip.fw.default_to_accept="1"Es ist eine gute Idee, diese Option während den ersten
Versuchen, eine Firewall und ein NAT-Gateway aufzusetzen, zu
aktivieren. Damit ist die Standardvorgehensweise von &man.ipfw.8;
diejenige, allow ip from any to any, anstatt der
weniger freizügigen deny ip from any to any.
Es wird dadurch etwas schwieriger, sich aus Versehen nach einem
Neustart aus dem System auszusperren.KernelkonfigurationKernelKonfigurationWenn Module nicht in Frage kommen oder Sie bevorzugen, alle
notwendigen Eigenschaften in den laufenden Kernel einzubauen,
müssen die folgenden Optionen in die Kernelkonfigurationsdatei
eingetragen werden:options IPFIREWALL
options IPDIVERTDie folgende Optionen können ebenfalls eingetragen
werden:options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSESystem BootkonfigurationUm Firewall- und NAT-Unterstützung zur Bootzeit zu aktivieren,
tragen Sie Folgendes in /etc/rc.conf ein:gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="fxp0"
natd_flags="" Richtet den Rechner als Gateway ein. Die
Ausführung von
sysctl net.inet.ip.forwarding=1
hätte den gleichen Effekt.Aktiviert die Firewallregeln in
/etc/rc.firewall beim
Systemstart.Ein vordefinierter Satz von Firewallregeln, der alle
Pakete durchlässt. Sehen Sie sich
/etc/rc.firewall an, wenn Sie diese
Option verwenden wollen.
- Die Netzkarte, die Pakete weiterleitet (und mit dem
+ Die Netzwerkkarte, die Pakete weiterleitet (und mit dem
Internet verbunden ist).Zusätzliche Konfigurationsoptionen, die beim
Systemstart an &man.natd.8; übergeben werden.Durch die Definition dieser Optionen in
/etc/rc.conf wird die Anweisung
natd -interface fxp0 beim Systemstart
ausgeführt. Dies kann aber auch manuell erfolgen.Falls Sie viele Optionen an &man.natd.8; übergeben
müssen, können Sie auch eine Konfigurationsdatei
verwenden. Dazu fügen Sie folgende Zeile in
/etc/rc.conf ein:natd_flags="-f /etc/natd.conf"Die Datei /etc/natd.conf enthält
verschiedene Konfigurationsoptionen, wobei jede Option in einer
Zeile steht. Das Beispiel im nächsten Abschnitt würde
folgende Konfigurationsdatei verwenden:redirect_port tcp 192.168.0.2:6667 6667
redirect_port tcp 192.168.0.3:80 80Wenn Sie eine Konfigurationsdatei verwenden wollen, sollten
Sie sich die Handbuchseite zu &man.natd.8; durchlesen,
insbesondere den Abschnitt über die Nutzung der Option
.Jedem Rechner und jeder Schnittstelle des lokalen Netzwerks
sollte eine IP-Adresse des im RFC 1918
definierten privaten Adressraums zugewiesen werden. Der
Standardgateway entspricht der internen IP-Adresse des
natd-Rechners.Im Beispiel werden den LAN-Clients A und
B die IP-Adressen
192.168.0.2 und
192.168.0.3 zugewiesen,
- während die LAN-Netzkarte des
+ während die LAN-Netzwerkkarte des
natd-Rechners die IP-Adresse
192.168.0.1 erhält. Der
natd-Rechner mit der IP-Adresse
192.168.0.1 wird als
Standardgateway für die Clients A und
- B gesetzt. Die externe Netzkarte des
+ B gesetzt. Die externe Netzwerkkarte des
natd-Rechners muss für die
korrekte Funktion von &man.natd.8; nicht konfiguriert
werden.Ports umleitenWenn Sie &man.natd.8; verwenden, sind Ihre LAN-Clients von
aussen nicht erreichbar. LAN-Clients können zwar
Verbindungen nach aussen aufbauen, sind aber für
ankommende Verbindungen nicht erreichbar. Wenn Sie
Internetdienste auf einem LAN-Client anbieten wollen, haben Sie
daher ein Problem. Eine einfache Lösung ist die Umleitung
von bestimmten Internetports des
natd-Rechners auf einen LAN-Client.Beispielsweise könnte ein IRC-Server auf Client
A und ein Webserver auf Client
B laufen. Damit diese Konfiguration
funktioniert, müssen Verbindungen, die auf den Ports 6667
(IRC) und 80 (Web) ankommen, auf die entsprechenden Clients
umgeleitet werden.Dazu wird die Option unter
Nutzung folgender Syntax an &man.natd.8; übergeben: -redirect_port proto targetIP:targetPORT[-targetPORT]
[aliasIP:]aliasPORT[-aliasPORT]
[remoteIP[:remotePORT[-remotePORT]]]Für unser Beispiel heißt das: -redirect_port tcp 192.168.0.2:6667 6667
-redirect_port tcp 192.168.0.3:80 80Dadurch werden die entsprechenden
tcp-Ports auf die jeweiligen LAN-Clients
umgeleitet.Mit können auch ganze
Portbereiche statt einzelner Ports umgeleitet werden. So werden
mit tcp 192.168.0.2:2000-3000
2000-3000 alle Verbindungen, die auf den Ports
2000 bis 3000 ankommen, auf die entsprechenden Ports des Clients
A umgeleitet.Diese Optionen können während des Betriebs von
&man.natd.8; oder über die Option
natd_flags="" in
/etc/rc.conf gesetzt werden.Eine ausführliche Konfigurationsanleitung finden Sie
in &man.natd.8;.Adressen umleitenaddress redirectionDie Umleitung von Adressen ist nützlich, wenn mehrere
IP-Adressen verfügbar sind, die aber alle auf einem Rechner
verbleiben sollen. In diesem Fall kann &man.natd.8; jedem
LAN-Client eine eigene externe IP-Adresse zuweisen. Ausgehende
Pakete eines LAN-Clients werden so der entsprechenden
externen IP-Adresse des Clients zugeordnet. Ankommender Verkehr
für diese IP-Adresse wird automatisch an den entsprechenden
LAN-Client weitergeleitet. Diesen Vorgang bezeichnet man
auch als statisches NAT. Dem
natd-Gatewayrechner könnten
beispielsweise die IP-Adressen
128.1.1.1,
128.1.1.2 sowie
128.1.1.3 zugewiesen werden.
128.1.1.1 wird als die externe
IP-Adresse des natd-Gatewayrechners
verwendet, während 128.1.1.2
und 128.1.1.3 an die LAN-Clients
A und B weitergegeben werden.
benutzt folgende
Syntax:-redirect_address localIP publicIPlocalIPDie interne IP-Adresse des LAN-ClientspublicIPDie externe IP-Adresse des LAN-ClientsFür unser Beispiel hieße dies:-redirect_address 192.168.0.2 128.1.1.2
-redirect_address 192.168.0.3 128.1.1.3Analog zur Option
können Sie diese Argumente auch in der Option
natd_flags="" in
/etc/rc.conf angeben. Bei der Nutzung
der Adressumleitung ist die Portumleitung überflüssig,
weil alle für eine bestimmte IP-Adresse ankommenden Daten
umgeleitet werden.Die externe IP-Adresse des
natd-Rechners muss aktiv sein und
- der externen Netzkarte zugewiesen sein. Weitere Informationen
+ der externen Netzwerkkarte zugewiesen sein. Weitere Informationen
zu diesem Thema finden Sie in &man.rc.conf.5;.PLIP – Parallel Line IPPLIPParallel Line IPPLIPPLIP ermöglicht TCP/IP-Verbindungen zwischen zwei
Rechnern, die über ihre parallelen Schnittstellen
verbunden sind. Eine solche Verbindung ist nützlich,
- wenn zwei Rechner nicht mit Netzkarten ausgestattet sind,
+ wenn zwei Rechner nicht mit Netzwerkkarten ausgestattet sind,
oder wenn eine Installation auf einem Laptop erfolgen soll.
Dieser Abschnitt behandelt folgende Themen:Die Herstellung eines parallelen (Laplink-) KabelsDie Verbindung von zwei Computern über PLIPEin paralleles Kabel herstellenEin paralleles (Laplink-)Kabel können Sie in fast jedem
Computergeschäft kaufen. Falls dies nicht möglich
sein sollte, oder Sie einfach wissen wollen, wie ein solches
Kabel aufgebaut ist, sollten Sie sich die folgende Tabelle
ansehen. Sie beschreibt die Herstellung eines parallelen
Netzwerkkabels aus einem gewöhnlichen parallelen
Druckerkabel.
PLIP einrichtenAls Erstes benötigen Sie ein Laplink-Kabel. Danach
müssen Sie sicherstellen, dass beide Computerkernel den
&man.lpt.4;-Treiber unterstützen:&prompt.root; grep lp /var/run/dmesg.boot
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven portDer Parallelport muss Interrupt-gesteuert sein, daher
sollte die Datei /boot/device.hints
zwei Zeilen ähnlich den folgenden enthalten:hint.ppc.0.at="isa"
hint.ppc.0.irq="7"Danach überprüfen Sie, ob die
Kernelkonfigurationsdatei die Zeile
device plip enthält, oder ob das
Kernelmodul plip.ko geladen wurde. In
beiden Fällen sollte die parallele Schnittstelle
von &man.ifconfig.8; angezeigt werden:&prompt.root; ifconfig plip0
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500Verbinden Sie die parallelen Schnittstellen der beiden
Computer über das (Laplink-)Kabel.Konfigurieren Sie die Netzwerkparameter auf beiden Rechnern
als root. Wenn Sie beispielsweise den Rechner
host1 mit dem Rechner host2
verbinden wollen, gehen Sie folgendermaßen vor: host1 <-----> host2
IP Address 10.0.0.1 10.0.0.2Richten Sie die parallele Schnittstelle von
host1 ein, indem Sie Folgendes eingeben:&prompt.root; ifconfig plip0 10.0.0.1 10.0.0.2Danach richten Sie die parallele Schnittstelle von
host2 ein:&prompt.root; ifconfig plip0 10.0.0.2 10.0.0.1Sie sollten nun über eine funktionierende Verbindung
verfügen. Bei Problemen lesen Sie bitte die Hilfeseiten
&man.lp.4; sowie &man.lpt.4;.Zusätzlich sollten beide Rechner in
/etc/hosts eingetragen werden:127.0.0.1 localhost.my.domain localhost
10.0.0.1 host1.my.domain host1
10.0.0.2 host2.my.domain host2Um die Verbindung zu überprüfen, pingen Sie jeden
Rechner vom anderen Rechner aus an. Auf host1
gehen Sie dazu folgendermaßen vor:&prompt.root; ifconfig plip0
plip0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000
&prompt.root; netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
host2 host1 UH 0 0 plip0
&prompt.root; ping -c 4 host2
PING host2 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms
64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms
--- host2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 msAaronKaplanBeigetragen von TomRhodesÜberarbeitet und erweitert von BradDavisErweitert von IPv6 – Internet Protocol Version 6Bei IPv6 (auch als IPng oder
IP next generation
bekannt) handelt es sich um die neueste Version des bekannten
IP-Protokolls (das auch als IPv4 bezeichnet
wird). FreeBSD enthält, genauso wie die anderen frei
erhältlichen BSD-Systeme, die IPv6-Referenzimplementation
von KAME. FreeBSD erfüllt damit bereits
alle für die Nutzung von IPv6 nötigen Voraussetzungen.
Dieser Abschnitt konzentriert sich daher auf die Konfiguration
und den Betrieb von IPv6.Anfang der 90er Jahre wurde man auf den stark steigenden
Verbrauch von IPv4-Adressen aufmerksam. Im Hinblick auf das
Wachstums des Internets gab es zwei Hauptsorgen:Die drohende Knappheit von IPv4-Adressen. Dieses Problem
konnte durch die Einführung von privaten
Adressräumen gemäß RFC1918 (mit Adressen wie
10.0.0.0/8,
172.16.0.0/12, oder
192.168.0.0/16) sowie der
Entwicklung von Network Address
Translation (NAT)
weitestgehend entschärft werden.Die immer größer werdenden Einträge in
Router-Tabellen. Dieses Problem ist auch heute noch
aktuell.IPv6 ist in der Lage, diese, aber auch viele andere Probleme
zu lösen:IPv6 hat einen 128 Bit großen Adressraum. Es sind
also theoretisch
340.282.366.920.938.463.463.374.607.431.768.211.456 Adressen
verfügbar. In anderen Worten: Für jeden
Quadratmeter der Erdoberfläche sind etwa
6,67 * 10^27 IPv6-Adressen verfügbar.Router speichern nur noch Netzwerk-Aggregationsadressen in
Ihren Routingtabellen. Dadurch reduziert sich die
durchschnittliche Größe einer Routingtabelle auf
8192 Einträge.Weitere nützliche Eigenschaften von IPv6 sind:Die automatische Konfiguration von Adressen, die im
RFC2462
beschrieben wird.Anycast-Adressen (eine-von-vielen)Verpflichtende Multicast-AdressenDie Unterstützung von IPsec (IP-Security)Eine vereinfachte HeaderstrukturMobile IP-AdressenDie Umwandlung von IPv4- in IPv6-AdressenWeitere Informationsquellen:Beschreibung von IPv6 auf
playground.sun.comKAME.netHintergrundinformationen zu IPv6-AdressenEs gibt verschiedene Arten von IPv6-Adressen: Unicast-,
Anycast- und Multicast-Adressen.Unicast-Adressen sind die herkömlichen Adressen. Ein
Paket, das an eine Unicast-Adresse gesendet wird, kommt nur an
der Schnittstelle an, die dieser Adresse zugeordnet ist.Anycast-Adressen unterscheiden sich in ihrer Syntax nicht
von Unicast-Adressen, sie wählen allerdings aus
mehreren Schnittstellen eine Schnittstelle aus.
Ein für eine Anycast-Adresse
bestimmtes Paket kommt an der nächstgelegenen
(entsprechend der Router-Metrik) Schnittstelle
an. Anycast-Adressen werden nur von Routern verwendet.Multicast-Adressen bestimmen Gruppen, denen mehrere
Schnittstellen angehören. Ein
Paket, das an eine Multicast-Adresse geschickt wird, kommt an
allen Schnittstellen an, die zur Multicast-Gruppe gehören.Die von IPv4 bekannte Broadcast-Adresse
(normalerweise
xxx.xxx.xxx.255) wird bei IPv6
durch Multicast-Adressen verwirklicht.
Reservierte IPv6-AdressenIPv6-AdressePräfixlängeBeschreibungAnmerkungen::128 Bitnicht festgelegtentspricht 0.0.0.0
bei IPv4::1128 BitLoopback-Adresseentspricht 127.0.0.1
bei IPv4::00:xx:xx:xx:xx96 BitEingebettete IPv4-AdresseDie niedrigen 32 Bit entsprechen der IPv4-Adresse.
Wird auch als IPv4-kompatible IPv6-Adresse
bezeichnet.::ff:xx:xx:xx:xx96 BitEine auf IPv6 abgebildete IPv4-AdresseDie niedrigen 32 Bit entsprechen der IPv4-Adresse.
Notwendig für Rechner, die IPv6 nicht
unterstützen.fe80:: - feb::10 Bitlink-localEntspricht der Loopback-Adresse bei IPv4fec0:: - fef::10 Bitsite-localff::8 BitMulticast001
(im Dualsystem)3 BitGlobaler UnicastAlle globalen Unicastadressen stammen aus diesem
Pool. Die ersten 3 Bit lauten 001.
IPv6-Adressen verstehenDie kanonische Form von IPv6-Adressen lautet
x:x:x:x:x:x:x:x, jedes
x steht dabei für einen
16-Bit-Hexadezimalwert. Ein Beispiel für eine IPv6-Adresse
wäre etwa
FEBC:A574:382B:23C1:AA49:4592:4EFE:9982.Eine IPv6-Adresse enthält oft Teilzeichenfolgen aus lauter
Nullen. Eine solche Zeichenfolge kann zu ::
verkürzt werden. Bis zu drei führende Nullen eines
Hexquads können ebenfalls weggelassen werden.
fe80::1 entspricht also der Adresse
fe80:0000:0000:0000:0000:0000:0000:0001.
Eine weitere Möglichkeit ist die Darstellung der
letzten 32 Bit in der bekannten (dezimalen) IPv4-Darstellung,
bei der Punkte (.) zur Trennung verwendet werden.
2002::10.0.0.1 ist also nur eine
andere Schreibweise für die (hexadezimale) kanonische Form
2002:0000:0000:0000:0000:0000:0a00:0001,
die wiederum der Adresse
2002::a00:1 entspricht.Sie sollten nun in der Lage sein, die folgende Ausgabe zu
verstehen:&prompt.root; ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
ether 00:00:21:03:08:e1
media: Ethernet autoselect (100baseTX )
status: activeBei
fe80::200:21ff:fe03:8e1%rl0
handelt es sich um eine automatisch konfigurierte
link-local-Adresse. Sie
wird im Rahmen der automatischen Konfiguration aus der
MAC-Adresse erzeugt.Weitere Informationen zum Aufbau von IPv6-Adressen finden
Sie im
RFC3513.Eine IPv6-Verbindung herstellenEs gibt derzeit vier Möglichkeiten, sich mit anderen
IPv6-Rechnern oder Netzwerken zu verbinden:Fragen Sie Ihren Internetprovider, ob er IPv6
bereits unterstützt.SixXS
bietet weltweit IPv6-Tunnelverbindungen an.Die Verwendung eines 6-nach-4-Tunnels
(RFC3068).Die Verwendung des Ports
/usr/ports/net/freenet6 bei der Einwahl
ins Internet.DNS in der IPv6-WeltUrsprünglich gab es zwei verschiedene DNS-Einträge
für IPv6. Da A6-Einträge von der IETF für
obsolet erklärt wurden, sind AAAA-Einträge nun
Standard.Weisen Sie die erhaltene IPv6-Adresse Ihrem Rechnernamen zu,
indem Sie den EintragMYHOSTNAME AAAA MYIPv6ADDRin Ihre primäre DNS-Zonendatei einfügen. Falls
Sie nicht für Ihre DNS-Zone
verantwortlich sind, bitten Sie den dafür
Zuständigen, diese Änderung durchzuführen.
Die aktuellen Versionen von bind
(Version 8.3 oder 9) sowie
dns/djbdns (bei Verwendung
des IPv6-Patches) unterstützen AAAA-Einträge./etc/rc.conf für die Nutzung von
IPv6 anpassenEinen Client unter IPv6 einrichtenDieser Abschnitt beschreibt die Konfiguration eines
Rechners, der in Ihrem LAN als Client, aber nicht als Router
verwendet wird. Um die Schnittstelle während des
Systemstarts mit &man.rtsol.8; automatisch einzurichten,
fügen Sie folgende Zeile in
/etc/rc.conf ein:ipv6_enable="YES"Durch die folgende Zeile weisen Sie Ihrer Schnittstelle
fxp0 die statische IP-Adresse 2001:471:1f11:251:290:27ff:fee0:2093
zu:ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093"Um 2001:471:1f11:251::1
als Standardrouter festzulegen, fügen Sie folgende Zeile
in /etc/rc.conf ein:ipv6_defaultrouter="2001:471:1f11:251::1"Gateways und Router unter IPv6 einrichtenDieser Abschnitt beschreibt, wie Sie Ihren Rechner mit
Hilfe der von Ihrem Tunnel-Anbieter erhaltenen
Anweisungen dauerhaft für die Nutzung von IPv6
einrichten. Um den Tunnel beim Systemstart
wiederherzustellen, passen Sie
/etc/rc.conf wie folgt an:Listen Sie die einzurichtenden Tunnelschnittstellen
(hier gif0) auf:gif_interfaces="gif0"Um den lokalen Endpunkt
MY_IPv4_ADDR über diese
Schnittstelle mit dem entfernten Endpunkt
REMOTE_IPv4_ADDR zu
verbinden, verwenden Sie folgende Zeile:gifconfig_gif0="MY_IPv4_ADDR REMOTE_IPv4_ADDR"Um die Ihnen zugewiesene IPv6-Adresse als Endpunkt Ihres
IPv6-Tunnels zu verwenden, fügen Sie folgende Zeile
ein:ipv6_ifconfig_gif0="MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR"Nun müssen Sie nur noch die IPv6-Standardroute
angeben. Diese legt das andere Ende des IPv6-Tunnels
fest.ipv6_defaultrouter="MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR"Einen IPv6-Tunnel einrichtenWenn Ihr Server IPv6-Verkehr zwischen Ihrem Netzwerk und
der Außenwelt routen muss, benötigen Sie
zusätzlich die folgenden Zeilen in Ihrer
/etc/rc.conf:ipv6_gateway_enable="YES"Bekanntmachung von Routen und automatische
RechnerkonfigurationDieser Abschnitt beschreibt die Einrichtung von
&man.rtadvd.8;, das Sie bei der Bekanntmachung der
IPv6-Standardroute unterstützt.Um &man.rtadvd.8; zu aktivieren, fügen Sie folgende
Zeile in /etc/rc.conf ein:rtadvd_enable="YES"Es ist wichtig, die Schnittstelle anzugeben, über die
IPv6-Routen bekanntgemacht werden sollen. Soll &man.rtadvd.8;
fxp0 verwenden, ist folgender Eintrag
nötig:rtadvd_interfaces="fxp0"Danach erzeugen Sie die Konfigurationsdatei
/etc/rtadvd.conf. Dazu ein Beispiel:fxp0:\
:addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether:Ersetzen Sie dabei fxp0 durch die
zu verwendende Schnittstelle.Anschließend ersetzen Sie
2001:471:1f11:246:: durch das
Präfix der Ihnen zugewiesenen Verbindung.Wenn Sie eine /64-Netzmaske
verwenden, müssen Sie keine weiteren Anpassungen vornehmen.
Anderenfalls müssen Sie prefixlen#
auf den korrekten Wert setzen.HartiBrandtBeigetragen von ATM - Asynchronous Transfer ModeClassical IP over ATM
als PVC-Verbindung einrichtenClassical IP over ATM
(CLIP) ist die einfachste Möglichkeit,
um IP-Verkehr über ATM (Asynchronous
Transfer Mode-Verbindungen zu übertragen.
CLIP kann sowohl mit geschalteten Verbindungen (SVCs) als auch
mit permanenten Verbindungen (PVCs) verwendet werden. Dieser
Abschnitt beschreibt die Einrichtung eines PVC-basierten
Netzwerks.Ein vollständig vermaschtes Netzwerk aufbauenBei einem vollständig vermaschten
(fully meshed) Netzwerk ist
jeder Rechner über eine dezidierte Verbindung mit jedem
anderen Rechner des Netzwerks verbunden. Die Konfiguration
ist - vor allem für kleinere Netzwerke - relativ einfach.
Unser Beispielnetzwerk besteht aus vier Rechnern, die jeweils
über eine
ATM-Adapterkarte
mit dem
ATM-Netzwerk
verbunden sind. Als ersten Konfigurationsschritt planen wir
die Vergabe von IP-Adressen sowie die anzulegenden
ATM-Verbindungen:
RechnerIP-AdressehostA192.168.173.1hostB192.168.173.2hostC192.168.173.3hostD192.168.173.4Um ein vollständiges Netz aufzubauen, benötigen
wir für jedes Rechnerpaar eine eigene ATM-Verbindung:RechnerpaarVPI.VCI-PaarhostA - hostB0.100hostA - hostC0.101hostA - hostD0.102hostB - hostC0.103hostB - hostD0.104hostC - hostD0.105Die Werte VPI und VCI an den Verbindungsenden können
natürlich unterschiedlich sein. Wir nehmen hier aber an,
dass sie gleich sind. Nun müssen wir die
ATM-Schnittstellen auf jedem Rechner einrichten:hostA&prompt.root; ifconfig hatm0 192.168.173.1 up
hostB&prompt.root; ifconfig hatm0 192.168.173.2 up
hostC&prompt.root; ifconfig hatm0 192.168.173.3 up
hostD&prompt.root; ifconfig hatm0 192.168.173.4 upDabei setzen wir voraus, dass
hatm0 auf allen Rechnern die
ATM-Schnittstelle darstellt. Danach werden, beginnend mit
hostA, die PVCs auf den einzelnen Rechnern
eingerichtet (Wir nehmen an, dass die PVCs auf den
ATM-Switches bereits eingerichet sind. Lesen Sie die
entsprechenden Handbücher, wenn Sie einen Switch
einrichten müssen.):hostA&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr
hostA&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr
hostA&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr
hostB&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr
hostB&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr
hostB&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr
hostC&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr
hostC&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr
hostC&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr
hostD&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr
hostD&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr
hostD&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubrStatt UBR können auch andere
traffic contracts verwendet
werden. Voraussetzung ist allerdings, dass diese von Ihrem
ATM-Adapter unterstützt werden. Ist dies der Fall,
folgen auf den Namen des
traffic contracts die
entsprechenden Konfigurationsparameter. Weitere Informationen
zur Konfiguration von ATM-Adapterkarten erhalten Sie über
den Befehl&prompt.root; atmconfig help natm addoder durch das Lesen von &man.atmconfig.8;.Die Konfiguration von ATM-Adaptern kann auch über die
Datei /etc/rc.conf erfolgen. Für
hostA sähe die Konfiguration so
aus:network_interfaces="lo0 hatm0"
ifconfig_hatm0="inet 192.168.173.1 up"
natm_static_routes="hostB hostC hostD"
route_hostB="192.168.173.2 hatm0 0 100 llc/snap ubr"
route_hostC="192.168.173.3 hatm0 0 101 llc/snap ubr"
route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr"Mit dem folgenden Befehl lässt sich der derzeitige
Status aller CLIP-Routen anzeigen:hostA&prompt.root; atmconfig natm showTomRhodesBeigetragen von CARP - Common Address Redundancy ProtocolCARPCommon Address Redundancy Protocol (CARP)Das Common Address Redundancy
Protocol (CARP) erlaubt es,
mehreren Rechnern die gleiche IP-Adresse
zuzuweisen. Durch ein solches Vorgehen läßt sich
beispielsweise die Verfügbarkeit bestimmter Dienste
verbessern oder die Last zwischen einzelnen Systemen besser
verteilen. Den auf diese Art und Weise konfigurierten Systemen
kann zusätzlich eine eigene (im Netzwerk eindeutige)
IP-Adresse zugewiesen werden (wie dies auch
im folgenden Beispiel erfolgt).Um CARP zu aktivieren, müssen Sie die
&os;-Kernelkonfigurationsdatei um die folgende Option erweitern
und danach den &os;-Kernel neu bauen:device carpDanach ist CARP auf Ihrem System
verfügbar und kann über verschiedene
sysctl-Optionen (OIDs)
gesteuert werden.OIDBeschreibungnet.inet.carp.allowAkzeptiert ankommende CARP-Pakete.
In der Voreinstellung aktiviert.net.inet.carp.preemptDiese Option deaktiviert alle
CARP-Geräte, sobald eines von
ihnen ausfällt. In der Voreinstellung
deaktiviert.net.inet.carp.logHat diese Variable den Wert 0, wird
kein Protokoll generiert, während mit dem Wert
1 nur inkorrekte
CARP-Pakete protokolliert werden. Hat
die Variable einen Wert größer
1, werden nur die Statuswechsel von
CARP-Geräten protokolliert. In der
Voreinstellung hat diese Variable den Wert
1.net.inet.carp.arpbalanceGleicht die Netzwerklast im lokalen Netzwerk durch
den Einsatz von ARP aus. In der
Voreinstellung deaktiviert.net.inet.carp.suppress_preemptEine nur lesbare OID, die
den Preemption Suppression-Status
anzeigt. Preemption kann verhindert werden. Dies auch dann,
wenn ein Gerät ausfällt. Hat die Variable
den Wert 0, bedeutet dies, dass Preemption
nicht verhindert wird. Tritt ein Problem auf, wird der Wert
dieser OID um 1
erhöht.Das CARP-Gerät selbst erzeugen Sie mit dem
ifconfig-Befehl:&prompt.root; ifconfig carp0 createDamit Sie dieses Protokoll in Ihrem Netzwerk einsetzen
- können, muss jede Netzkarte eine eindeutige
+ können, muss jede Netzwerkkarte eine eindeutige
Identifikationsnummer, die sogenannte VHID
(Virtual Host Identification),
besitzen, da sich ansonsten die Rechner Ihres Netzwerks nicht
voneinander unterscheiden lassen.Die Serververfügbarkeit mit CARP
verbessernWie bereits weiter oben erwähnt wurde, können Sie
CARP dazu verwenden, die Verfübarkeit
Ihrer Server zu verbessern. Im folgenden Bespiel werden
insgesamt drei Server (mit jeweils eigener, eindeutiger
IP-Adresse), die alle den gleichen Inhalt
anbieten, in einer Round Robin
DNS-Konfiguration eingerichtet.
Der Backup-Server verfügt über zwei
CARP-Schnittstellen (für die beiden
IP-Adressen der Content-Server). Tritt bei
einem Content-Server ein Problem auf, übernimmt der
Backup-Server die IP-Adresse des
ausgefallenen Servers. Dadurch sollte die Auswahl eines Servers
vom Anwender nicht bemerkt werden. Der Backup-Server muss
identisch konfiguriert sein und die gleichen Daten und Dienste
anbieten wie das System, das er ersetzen soll.Die beiden Content-Server werden (abgesehen von ihren
jeweiligen Hostnamen und VHIDs) identisch
konfiguriert und heißen in unserem Beispiel
hosta.example.org beziehungsweise
hostb.example.org. Damit Sie
CARP einsetzen können, müssen
Sie als Erstes die Datei rc.conf auf
beiden Systemen anpassen. Für das System
hosta.example.org nehmen Sie dazu folgende
Zeilen in rc.conf auf:hostname="hosta.example.org"
ifconfig_fxp0="inet 192.168.1.3 netmask 255.255.255.0"
cloned_interfaces="carp0"
ifconfig_carp0="vhid 1 pass testpass 192.168.1.50/24"Für das System hostb.example.org
benötigen Sie zusätzlich folgende Zeilen in
rc.conf:hostname="hostb.example.org"
ifconfig_fxp0="inet 192.168.1.4 netmask 255.255.255.0"
cloned_interfaces="carp0"
ifconfig_carp0="vhid 2 pass testpass 192.168.1.51/24"Achten Sie unbedingt darauf, dass die durch die Option
an ifconfig
übergebenen Passwörter auf beiden Systemen
identisch sind, da
carp-Geräte nur mit Systemen
kommunizieren können, die über ein korrektes Passwort
verfügen. Beachten Sie weiters, dass sich die
VHIDs der beiden Systeme unterscheiden
müssen.Nun richten Sie noch das dritte System,
provider.example.org, ein, das aktiviert
wird, wenn eines der beiden zuvor konfigurierten Systeme
ausfällt. Dieses dritte System benötigt zwei
carp-Geräte, um bei Bedarf
eines der beiden anderen
Systeme ersetzen zu können. Dazu konfigurieren Sie
rc.conf analog zur folgenden
Beispielkonfiguration:hostname="provider.example.org"
ifconfig_fxp0="inet 192.168.1.5 netmask 255.255.255.0"
cloned_interfaces="carp0 carp1"
ifconfig_carp0="vhid 1 advskew 100 pass testpass 192.168.1.50/24"
ifconfig_carp1="vhid 2 advskew 100 pass testpass 192.168.1.51/24"Durch die beiden carp-Geräte
ist es provider.example.org möglich,
festzustellen, ob eines der beiden anderen Systeme nicht mehr
reagiert. In diesem Fall übernimmt
provider.example.org die
IP-Adresse des betroffenen Systems.Ist im installierten &os;-Kernel die Option
"preemption" aktiviert, kann es sein, dass
provider.example.org die übernommene
IP-Adresse nicht mehr an den
Content-Server zurückgibt (wenn dieser wieder
funktioniert). In diesem Fall muss ein Administrator die
entsprechende Schnittstelle dazu zwingen, dies zu tun.
Dazu gibt er auf dem Rechner
provider.example.org den folgenden
Befehl ein:&prompt.root; ifconfig carp0 down && ifconfig carp0 upDieser Befehl muss auf das
carp-Gerät ausgeführt
werden, das dem betroffenen System zugeordnet ist.Damit ist CARP vollständig
konfiguriert und der Testbetrieb kann beginnen. Zuvor
müssen Sie allerdings noch alle Systeme neu starten
(beziehungsweise die Netzwerkkonfiguration auf allen
Systemen neu einlesen), um die Einstelllungen zu
übernehmen.Für weitere Informtionen lesen Sie bitte die Manualpage
&man.carp.4;.
diff --git a/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml b/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml
index 00c3f6c45c..b294903ff4 100644
--- a/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml
@@ -1,5748 +1,5749 @@
MurrayStokelyÜberarbeitet von JohannKoisÜbersetzt von NetzwerkserverÜbersichtDieses Kapitel beschreibt einige der häufiger verwendeten
Netzwerkdienste auf &unix;-Systemen. Beschrieben werden
Installation und Konfiguration sowie Test und Wartung
verschiedener Netzwerkdienste. Zusätzlich sind im ganzen
Kapitel Beispielkonfigurationsdateien vorhanden, von denen Sie
sicherlich profitieren werden.Nachdem Sie dieses Kapitel gelesen haben, werden SieDen inetd-Daemon konfigurieren
können.Wissen, wie man ein Netzwerkdateisystem einrichtet.Einen Network Information
Server einrichten können, um damit
Benutzerkonten im Netzwerk zu verteilen.Rechner durch Nutzung von DHCP automatisch für ein
Netzwerk konfigurieren können.In der Lage sein, einen Domain Name
Server 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 man den Standard-Protokollierungsdienst,
syslogd, konfiguriert, um Protokolle von
anderen Hosts zu akzeptieren.Bevor Sie dieses Kapitel lesen, sollten SieDie Grundlagen der /etc/rc-Skripte
verstanden haben.Mit der grundlegenden Netzwerkterminologie vertraut sein.Wissen, wie man zusätzliche Softwarepakete von
Drittherstellern installiert ().ChernLeeBeigetragen von Aktualisiert für &os; 6.1-RELEASE vom &os; Documentation ProjectDer inetdSuper-ServerÜberblick&man.inetd.8; wird manchmal auch als Internet
Super-Server bezeichnet, weil er Verbindungen für
mehrere Dienste verwaltet. Wenn eine Verbindung eintrifft,
bestimmt inetd, welches Programm
für die eingetroffene Verbindung zuständig ist,
aktiviert den entsprechenden Prozess und reicht den Socket an
ihn weiter (der Socket dient dabei als Standardein- und -ausgabe
sowie zur Fehlerbehandlung). Der Einsatz des
inetd-Daemons 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 direkt verwaltet. Dazu gehören
chargen,
auth, sowie
daytime.Dieser Abschnitt beschreibt die Konfiguration von
inetd durch Kommandozeilenoptionen
sowie die Konfigurationsdatei
/etc/inetd.conf.Einstellungeninetd wird durch das
&man.rc.8;-System initialisiert. Die Option
inetd_enable ist in der Voreinstellung zwar
auf NO gesetzt, sie kann aber in
Abhängigkeit von der vom Benutzer bei der Installation
gewählten Konfiguration von
sysinstall aktiviert werden.
Die Verwendung voninetd_enable="YES"oderinetd_enable="NO"in /etc/rc.conf deaktiviert oder startet
inetd beim Systemstart. Über
den Befehl&prompt.root; /etc/rc.d/inetd rcvarkönnen Sie die aktuelle Konfiguration
abfragen.Weitere Optionen können über die Option
inetd_flags an
inetd übergeben werden.KommandozeilenoptionenWie die meisten anderen Server-Daemonen lässt
sich auch inetd über
verschiedene Optionen steuern. Die vollständige Syntax
für inetd lautet:inetdDie verschiedenen Optionen können über die Option
inetd_flags der Datei
/etc/rc.conf an
inetd übergeben werden. In
der Voreinstellung hat diese Option den Wert
-wW -C 60. Durch das Setzen dieser Werte
wird das TCP-Wrapping für alle
inetd-Dienste aktiviert.
Zusätzlich kann eine einzelne IP-Adresse jeden Dienst
nur maximal 60 Mal pro Minute anfordern.Für Einsteiger ist es erfreulich, dass diese Parameter
in der Regel nicht angepasst werden müssen. Da diese
Parameter aber dennoch von Interesse sein können
(beispielsweise, wenn Sie eine enorme Anzahl von
Verbindungsanfragen erhalten), werden einige dieser
einschränkenden Parameter im Folgenden näher
erläutert. Eine vollständige Auflistung aller
Optionen finden Sie hingegen in &man.inetd.8;.-c maximumLegt die maximale Anzahl von parallen Aufrufen eines
Dienstes fest; in der Voreinstellung gibt es keine
Einschränkung. Diese Einstellung kann für jeden
Dienst durch Setzen des
-Parameters 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 Setzen des
Parameters
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
angepasst werden.inetd.confDie Konfiguration von inetd
erfolgt über die Datei
/etc/inetd.conf.Wenn /etc/inetd.conf geändert
wird, kann inetd veranlasst werden,
seine Konfigurationsdatei neu einzulesen.Die inetd-Konfiguration neu
einlesen&prompt.root; /etc/rc.d/inetd reloadJede Zeile der Konfigurationsdatei beschreibt jeweils einen
Daemon. Kommentare beginnen mit einem #. Ein
Eintrag der Datei /etc/inetd.conf hat
folgenden Aufbau: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-argumentsEin Eintrag für den IPv4 verwendenden
&man.ftpd.8;-Daemon könnte so aussehen:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -lservice-nameDer Dienstname eines bestimmten Daemons. Er muss
einem in /etc/services aufgelisteten
Dienst entsprechen. In dieser Datei wird festgelegt,
welchen Port inetd abhören
muss. Wenn ein neuer Dienst erzeugt wird, muss er zuerst
in die Datei /etc/services
eingetragen werden.socket-typeEntweder stream,
dgram, raw, oder
seqpacket. stream
muss für verbindungsorientierte TCP-Daemonen
verwendet werden, während dgram
das UDP-Protokoll verwaltet.protocolEines der folgenden:ProtokollBedeutungtcp, tcp4TCP (IPv4)udp, 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]]] gibt an, ob der von
inetd aktivierte Daemon seinen
eigenen Socket verwalten kann oder nicht.
-Sockets müssen die Option
verwenden, während Daemonen mit
Stream-Sockets, die normalerweise auch aus mehreren
Threads bestehen, die Option
verwenden sollten. Die Option
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, sollte
der Wert /10 hinter die Option
gesetzt werden. Geben Sie
hingegen den Wert /0 an, gibt es
keine Beschränkung.Zusätzlich zu kann
die maximale Anzahl von Verbindungen eines Rechners mit
einem bestimmten Daemon durch zwei weitere Optionen
beschränkt werden. Die Option
legt die maximale Anzahl von Verbindungsversuchen fest,
die von einer bestimmten IP-Adresse aus unternommen werden
können. Ein Wert von zehn würde die maximale
Anzahl von Verbindungsversuchen einer IP-Adresse mit einem
bestimmten Dienst auf zehn Versuche in der Minute
beschränken. Durch die Angabe der Option
können Sie hingegen
- festlegen, wieviele Child-Daemonen von einer bestimmten
+ festlegen, wie viele Child-Daemonen von einer bestimmten
IP-Adresse aus gestartet werden können. Durch diese
Optionen lassen sich ein absichtlicher oder unabsichtlicher
Ressourcenverbrauch sowie die Auswirkungen eines
Denial of Service (DoS)-Angriffs auf
einen Rechner begrenzen.Sie müssen hier entweder
oder angeben. Die Angabe von
,
und
ist hingegen
optional.Ein multithread-Daemon vom Streamtyp ohne die Optionen
,
oder
sieht so aus:
nowaitDer gleiche Daemon mit einer maximal möglichen
Anzahl von 10 parallelen Daemonen würde so aussehen:
nowait/10Wird zusätzlich die Anzahl der möglichen
Verbindungen pro Minute für jede IP-Adresse auf
20 sowie die mögliche Gesamtzahl von Childdaemonen
auf 10 begrenzt, so sieht der Eintrag so aus:
nowait/10/20All diese Optionen werden vom
&man.fingerd.8;-Daemon bereits in der Voreinstellung
verwendet:finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -sWill man die maximale Anzahl von Child-Daemonen auf
100 beschränken, wobei von jeder IP-Adresse aus
maximal 5 Child-Daemonen gestartet werden dürfen,
verwendet man den folgenden Eintrag:
nowait/100/0/5.userDer Benutzername, unter dem der jeweilige Daemon
laufen soll. Meistens laufen Daemonen als User
root. Aus Sicherheitsgründen
laufen einige Server aber auch als User
daemon, oder als am wenigsten
privilegierter User nobody.server-programDer vollständige Pfad des Daemons, der eine
Verbindung entgegennimmt. Wird der Daemon von
inetd intern bereitgestellt,
sollte die Option verwendet
werden.server-program-argumentsDieser Eintrag legt (gemeinsam mit
und beginnend mit
argv[0]), die Argumente fest, die bei
der Aktivierung an den Daemon übergeben werden.
Wenn die Anweisung auf der Kommandozeile also
mydaemon -d lautet, wäre
mydaemon -d auch der Wert der Option
. Wenn es sich
beim Daemon um einen internen Dienst handelt, sollte
wiederum die Option verwendet
werden.SicherheitAbhängig von der bei der Installation festgelegten
Konfiguration werden viele der von
inetd verwalteten Dienste automatisch
aktiviert! Wenn Sie einen bestimmten Daemon nicht
benötigen, sollten Sie ihn deaktivieren! Dazu kommentieren
Sie den jeweiligen Daemon in /etc/inetd.conf
mit einem # aus, um danach die
inetd-Konfiguration neu
einzulesen. Einige Daemonen, zum Beispiel
fingerd, sollten generell deaktiviert
werden, da sie zu viele Informationen an einen potentiellen
Angreifer liefern.Einige Daemonen haben unsichere Einstellungen, etwa
große oder nichtexistierende Timeouts für
Verbindungsversuche, die es einem Angreifer erlauben, über
lange Zeit langsam Verbindungen zu einem bestimmten Daemon
aufzubauen, um dessen verfügbare Ressourcen zu verbrauchen.
Es ist daher eine gute Idee, diese Daemonen durch die Optionen
,
sowie
zu beschränken, wenn
Sie sehr viele Verbindungsversuche mit Ihrem System
registrieren.TCP-Wrapping ist in der Voreinstellung aktiviert. Lesen Sie
&man.hosts.access.5;, wenn Sie weitere Informationen zum
Setzen von TCP-Beschränkungen für verschiedene von
inetd aktivierte Daemonen
benötigen.VerschiedenesBei daytime,
time,
echo,
discard,
chargen, und
auth handelt es sich um intern
von inetd bereitgestellte Dienste.
Der auth-Dienst bietet
Identifizierungsdienste über das Netzwerk
an und ist bis zu einem bestimmten Grad konfigurierbar,
während die meisten anderen Dienste nur aktiviert
oder deaktiviert werden können.Eine ausführliche Beschreibung finden Sie in
&man.inetd.8;.TomRhodesReorganisiert und erweitert von BillSwingleGeschrieben von NFS – Network File SystemNFSEines der vielen von FreeBSD unterstützten Dateisysteme
ist das Netzwerkdateisystem, das auch als NFS
bekannt ist. NFS
ermöglicht es einem System, Dateien und Verzeichnisse
über ein Netzwerk mit anderen zu teilen. Über
NFS können
Benutzer und Programme auf Daten entfernter Systeme zugreifen, und
zwar genauso, wie wenn es sich um lokale Daten handeln würde.
Einige der wichtigsten Vorteile von NFS
sind:Lokale Arbeitsstationen benötigen weniger
Plattenplatz, da gemeinsam benutzte Daten nur auf einem
einzigen Rechner vorhanden sind. Alle anderen Stationen
greifen über das Netzwerk auf diese Daten zu.Benutzer benötigen nur noch ein zentrales
Heimatverzeichnis auf einem NFS-Server.
Diese Verzeichnisse sind über das Netzwerk auf allen
Stationen verfügbar.Speichergeräte wie Disketten-, CD-ROM- oder
&iomegazip;-Laufwerke können über das Netzwerk von
anderen Arbeitstationen genutzt werden. Dadurch sind für
das gesamte Netzwerk deutlich weniger Speichergeräte
nötig.Wie funktioniert NFS?NFS besteht aus zwei Hauptteilen: Einem
Server und einem oder mehreren Clients. Der Client greift
über das Netzwerk auf die Daten zu, die auf dem Server
gespeichert sind. Damit dies korrekt funktioniert, müssen
einige Prozesse konfiguriert und gestartet werden:Der Server benötigt folgende Daemonen:NFSServerDateiserverUnix-ClientsrpcbindmountdnfsdDaemonBeschreibungnfsdDer NFS-Daemon. Er bearbeitet
Anfragen der NFS-Clients.mountdDer NFS-Mount-Daemon. Er
bearbeitet die Anfragen, die &man.nfsd.8; an ihn
weitergibt.rpcbind Der Portmapper-Daemon. Durch ihn erkennen die
NFS-Clients, welchen Port der
NFS-Server verwendet.Der Client kann ebenfalls einen Daemon aufrufen, und zwar
den nfsiod-Daemon. Der
nfsiod-Daemon bearbeitet Anfragen vom
NFS-Server. Er ist optional und verbessert
die Leistung des Netzwerks. Für eine normale und korrekte
Arbeit ist er allerdings nicht erforderlich. Mehr erfahren
Sie in der Hilfeseite &man.nfsiod.8;.NFS einrichtenNFSeinrichtenNFS lässt sich leicht
einrichten. Die nötigen Prozesse werden durch einige
Änderungen in /etc/rc.conf bei
jedem Systemstart gestartet.Stellen Sie sicher, dass auf dem
NFS-Server folgende Optionen in der Datei
/etc/rc.conf gesetzt sind:rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"mountd läuft automatisch,
wenn der NFS-Server aktiviert ist.Auf dem Client muss in /etc/rc.conf
folgende Option gesetzt sein:nfs_client_enable="YES"/etc/exports legt fest, welche
Dateisysteme NFS exportieren (manchmal auch
als teilen bezeichnet) soll. Jede Zeile in
/etc/exports legt ein Dateisystem sowie
die Arbeitsstationen, die darauf Zugriff haben, fest.
Außerdem ist es möglich, Zugriffsoptionen
festzulegen. Es gibt viele verschiedene Optionen, allerdings
werden hier nur einige von ihnen erwähnt. Wenn Sie
Informationen zu weiteren Optionen benötigen, lesen Sie
&man.exports.5;.Nun folgen einige Beispieleinträge für
/etc/exports:NFSExport von DateisystemenDie folgenden Beispiele geben Ihnen Anhaltspunkte zum
Exportieren von Dateisystemen, obwohl diese Einstellungen
natürlich von Ihrer Arbeitsumgebung und Ihrer
Netzwerkkonfiguration abhängen. Das nächste
Beispiel exportiert das Verzeichnis /cdrom
für drei Rechner, die sich in derselben Domäne wie
der Server befinden oder für die entsprechende
Einträge in /etc/hosts existieren.
Die Option kennzeichnet das
exportierte Dateisystem als schreibgeschützt. Durch dieses
Flag ist das entfernte System nicht in der Lage, das exportierte
Dateisystem zu verändern./cdrom -ro host1 host2 host3Die nächste Zeile exportiert /home
auf drei durch IP-Adressen bestimmte Rechner. Diese Einstellung
ist nützlich, wenn Sie über ein privates Netzwerk ohne
DNS-Server verfügen. Optional
könnten interne Rechnernamen auch in
/etc/hosts konfiguriert werden.
Benötigen Sie hierzu weitere Informationen, lesen Sie bitte
&man.hosts.5;. Durch das Flag wird es
möglich, auch Unterverzeichnisse als Mountpunkte
festzulegen. Dies bedeutet aber nicht, dass alle
Unterverzeichnisse eingehängt werden, vielmehr wird es dem
Client ermöglicht, nur diejenigen Verzeichnisse
einzuhängen, die auch benötigt werden./home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4Die nächste Zeile exportiert /a,
damit Clients von verschiedenen Domänen auf das Dateisystem
zugreifen können. Das -Flag
erlaubt es dem Benutzer root des entfernten
Systems, als root auf das exportierte
Dateisystem zu schreiben. Wenn dieses Flag nicht gesetzt ist,
kann selbst root nicht auf das exportierte
Dateisystem schreiben./a -maproot=root host.example.com box.example.orgDamit ein Client auf ein exportiertes Dateisystem zugreifen
kann, muss ihm dies explizit gestattet werden. Stellen Sie also
sicher, dass der Client in /etc/exports
aufgeführt wird.Jede Zeile in /etc/exports entspricht
der Exportinformation für ein Dateisystem auf einen
Rechner. Ein entfernter Rechner kann für jedes Dateisystem
nur einmal festgelegt werden, und kann auch nur einen
Standardeintrag haben. Nehmen wir an, dass
/usr ein einziges Dateisystem ist. Dann
wären folgende Zeilen ungültig:#Nicht erlaubt, wenn /usr ein einziges Dateisystem ist
/usr/src client
/usr/ports clientDas Dateisystem /usr wird hier zweimal
auf den selben Rechner (client)
exportiert. Dies ist aber nicht zulässig. Der korrekte
Eintrag sieht daher so aus:/usr/src /usr/ports clientDie Eigenschaften eines auf einen anderen Rechner
exportierten Dateisystems müssen alle in einer Zeile
stehen. Zeilen, in denen kein Rechner festgelegt wird, werden
als einzelner Rechner behandelt. Dies schränkt die
Möglichkeiten zum Export von Dateisystemen ein, für
die meisten Anwender ist dies aber kein Problem.Eine gültige Exportliste, in der
/usr und /exports
lokale Dateisysteme sind, sieht so aus:# 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 -roDer Daemon mountd muss
die Datei /etc/exports nach jeder
Änderung neu einlesen, damit die Änderungen
wirksam werden. Dies kann durch das Senden des
HUP-Signals an den mountd-Prozess
erfolgen:&prompt.root; kill -HUP `cat /var/run/mountd.pid`Alternativ können Sie das
mountd-&man.rc.8;-Skript auch mit dem
passenden Parameter aufrufen:&prompt.root; /etc/rc.d/mountd onereloadLesen Sie bitte
des Handbuchs für Informationen zum Einsatz der
rc-Skripte.Eine weitere Möglichkeit, diese Änderungen zu
übernehmen, wäre der Neustart des Systems. Dies ist
allerdings nicht nötig. Wenn Sie die folgenden
Befehle als root ausführen, sollte
alles korrekt gestartet werden.Auf dem NFS-Server:&prompt.root; rpcbind
&prompt.root; nfsd -u -t -n 4
&prompt.root; mountd -rAuf dem NFS-Client:&prompt.root; nfsiod -n 4Nun sollte alles bereit sein, um ein entferntes Dateisystem
einhängen zu können. In unseren Beispielen nennen wir
den Server server, den Client
client. Wenn Sie ein entferntes Dateisystem
nur zeitweise einhängen wollen, oder nur Ihre Konfiguration
testen möchten, führen Sie auf dem Client als
root einen Befehl ähnlich dem
folgenden aus:NFSDateisysteme einhängen&prompt.root; mount server:/home /mntDadurch wird das Verzeichnis /home des
Servers auf dem Client unter /mnt
eingehängt. Wenn alles korrekt konfiguriert wurde, sehen
Sie auf dem Client im Verzeichnis /mnt alle
Dateien des Servers.Wenn Sie ein entferntes Dateisystem nach jedem Systemstart
automatisch einhängen wollen, fügen Sie das
Dateisystem in /etc/fstab ein. Dazu ein
Beispiel:server:/home /mnt nfs rw 0 0Eine Beschreibung aller Optionen enthält
die Hilfeseite &man.fstab.5;.Dateien sperren (Locking)Einige Anwendungen (beispielsweise
mutt) erfordern die Sperrung von
Dateien, damit sie korrekt arbeiten. Verwenden Sie
NFS, so können Sie für die
Sperrung von Dateien rpc.lockd
einsetzen. Um diesen Daemon zu aktivieren, müssen Sie
in /etc/rc.conf (sowohl auf Client- als
auch auf Serverseite) folgende Zeilen aufnehmen (wobei
vorausgesetzt wird, dasss NFS auf beiden
Systemen bereits konfiguriert ist):rpc_lockd_enable="YES"
rpc_statd_enable="YES"Danach starten Sie die Anwendung zur Verwaltung der
Dateisperren durch folgenden Befehl:&prompt.root; /etc/rc.d/lockd start
&prompt.root; /etc/rc.d/statd startBenötigen Sie keine echten Dateisperren zwischen den
NFS-Clients und dem
NFS-Server, können Sie den
NFS-Client durch die Übergabe der
Option an &man.mount.nfs.8; zu einer lokalen
Sperrung von Dateien zwingen. Lesen Sie dazu auch die
Manualpage &man.mount.nfs.8;.Praktische AnwendungenNFS ist in vielen Situationen
nützlich. Einige Anwendungsbereiche finden Sie in der
folgenden Liste:NFSAnwendungsbeispieleMehrere Maschinen können sich ein CD-ROM-Laufwerk
oder andere Medien teilen. Dies ist billiger und
außerdem praktischer, um Programme auf mehreren
Rechnern zu installieren.In größeren Netzwerken ist es praktisch,
einen zentralen NFS-Server einzurichten,
auf dem die Heimatverzeichnisse der Benutzer gespeichert
werden. Diese Heimatverzeichnisse werden über das
Netzwerk exportiert. Dadurch haben die Benutzer immer das
gleiche Heimatverzeichnis zur Verfügung,
unabhängig davon, an welchem Arbeitsplatz sie sich
anmelden.Verschiedene Rechner können auf ein gemeinsames
Verzeichnis /usr/ports/distfiles
zugreifen. Wenn Sie nun einen Port auf mehreren Rechnern
installieren wollen, greifen Sie einfach auf dieses
Verzeichnis zu, ohne die Quelldateien auf jede Maschine
zu kopieren.WylieStilwellBeigetragen von ChernLeeÜberarbeitet von AMDamdAutomatic 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.
amd ist eine einfache
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ängenSie können sich die verfügbaren Mountpunkte
eines entfernten Rechners mit showmount
ansehen. Wollen Sie sich die Mountpunkte des Rechners
foobar ansehen, so verwenden Sie:&prompt.user; showmount -e foobar
Exports list on foobar:
/usr 10.10.10.0
/a 10.10.10.0
&prompt.user; cd /host/foobar/usrWie Sie an diesem Beispiel erkennen können, zeigt
showmount/usr
als exportiertes Dateisystem an. Wenn man in das Verzeichnis
/host/foobar/usr wechselt, versucht
amd den Rechnernamen
foobar aufzulösen und den gewünschten
Export in den Verzeichnisbaum einzuhängen.amd kann durch das Einfügen
der folgenden Zeile in /etc/rc.conf
automatisch gestartet werden:amd_enable="YES"Mit der Option amd_flags kann
amd angepasst werden.
Die Voreinstellung für amd_flags sieht
so aus:amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"/etc/amd.map legt die Standardoptionen
fest, mit denen exportierte Dateisysteme in den Verzeichnisbaum
eingehängt werden. /etc/amd.conf
hingegen legt einige der erweiterten Optionen von
amd fest.Weitere Informationen finden Sie in den Hilfeseiten
&man.amd.8; und &man.amd.conf.5;.JohnLindBeigetragen von Integrationsprobleme mit anderen SystemenBestimmte ISA-Ethernetadapter haben Beschränkungen, die
zu ernsthaften Netzwerkproblemen, insbesondere mit NFS
führen können. Es handelt sich dabei nicht um ein
FreeBSD-spezifisches Problem, aber FreeBSD-Systeme sind davon
ebenfalls betroffen.Das Problem tritt fast ausschließlich dann auf, wenn
(FreeBSD)-PC-Systeme mit Hochleistungsrechnern verbunden werden,
wie Systemen von Silicon Graphics, Inc. oder
Sun Microsystems, Inc. Das Einhängen via NFS
funktioniert problemlos, auch einige Dateioperationen
können erfolgreich sein. Plötzlich aber wird der
Server nicht mehr auf den Client reagieren, obwohl Anfragen von
anderen Rechnern weiterhin bearbeitet werden. Dieses
Problem betrifft stets den Client, egal ob es sich beim Client
um das FreeBSD-System oder den Hochleistungsrechner handelt.
Auf vielen Systemen gibt es keine Möglichkeit mehr, den
Client ordnungsgemäß zu beenden. Die einzige
Lösung ist es oft, den Rechner neu zu starten, da dieses
NFS-Problem nicht mehr behoben werden kann.Die korrekte Lösung für dieses
Problem ist es, sich eine schnellere Ethernetkarte für
FreeBSD zu kaufen. Allerdings gibt es auch eine einfache und
meist zufriedenstellende Lösung, um dieses Problem zu
umgehen. Wenn es sich beim FreeBSD-System um den
Server handelt, verwenden Sie beim
Einhängen in den Verzeichnisbaum auf der Clientseite
zusätzlich die Option . Wenn es
sich beim FreeBSD-System um den Client
handelt, dann hängen Sie das NFS-Dateisystem mit der
zusätzlichen Option ein.
Diese Optionen können auf der Clientseite auch durch
das vierte Feld der Einträge in
/etc/fstab festgelegt werden, damit die
Dateisysteme automatisch eingehängt werden. Um die
Dateisysteme manuell einzuhängen, verwendet man bei
&man.mount.8; zusätzlich die Option
.Es gibt ein anderes Problem, das oft mit diesem verwechselt
wird. Dieses andere Problem tritt auf, wenn sich über NFS
verbundene Server und Clients in verschiedenen Netzwerken
befinden. Wenn dies der Fall ist, stellen Sie
sicher, dass Ihre Router die
nötigen UDP-Informationen weiterleiten,
oder Sie werden nirgends hingelangen, egal was Sie machen.In den folgenden Beispielen ist fastws der
Name des Hochleistungsrechners (bzw. dessen Schnittstelle),
freebox hingegen ist der Name des
FreeBSD-Systems, das über eine Netzkarte mit geringer
Leistung verfügt. /sharedfs ist das
exportierte NFS -Dateisystem (lesen Sie dazu auch
&man.exports.5;). Bei /project handelt es
sich um den Mountpunkt, an dem das exportierte Dateisystem auf
der Clientseite eingehängt wird. In allen Fällen
können zusätzliche Optionen, wie z.B.
, oder
wünschenswert sein.FreeBSD als Client (eingetragen in
/etc/fstab auf freebox):
fastws:/sharedfs /project nfs rw,-r=1024 0 0Manuelles Einhängen auf
freebox:&prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project&os; als Server (eingetragen in
/etc/fstab auf fastws):
freebox:/sharedfs /project nfs rw,-w=1024 0 0Manuelles Einhängen auf fastws:&prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /projectNahezu alle 16-bit Ethernetadapter erlauben Operationen
ohne obengenannte Einschränkungen auf die Lese- oder
Schreibgröße.Für alle technisch Interessierten wird nun beschrieben,
was passiert, wenn dieser Fehler auftritt, und warum er
irreversibel ist. NFS arbeitet üblicherweise mit einer
Blockgröße von 8 kByte (obwohl
es kleinere Fragmente zulassen würde). Da die maximale
Rahmengröße von Ethernet 1500 Bytes
beträgt, wird der NFS-Block in einzelne
Ethernetrahmen aufgeteilt, obwohl es sich nach wie vor um eine
Einheit handelt, die auch als Einheit empfangen, verarbeitet
und bestätigt werden muss. Der
Hochleistungsrechner verschickt die Pakete, aus denen der
NFS-Block besteht, so eng hintereinander, wie es der Standard
erlaubt. Auf der anderen Seite (auf der sich die langsamere
Netzkarte befindet), überschreiben die späteren
Pakete ihre Vorgänger, bevor diese vom System verarbeitet
werden (Überlauf!). Dies hat zur Folge, dass der NFS-Block
nicht mehr rekonstruiert und bestätigt werden kann. Als
Folge davon glaubt der Hochleistungsrechner, dass der andere
Rechner nicht erreichbar ist (Timeout!) und versucht die
Sendung zu wiederholen. Allerdings wird wiederum der komplette
NFS-Block verschickt, so dass sich der ganze Vorgang wiederholt,
und zwar immer wieder (oder bis zum Systemneustart).Indem wir die Einheitengröße unter der maximalen
Größe der Ethernetpakete halten, können wir
sicherstellen, dass jedes vollständig erhaltene
Ethernetpaket individuell angesprochen werden kann und vermeiden
die Blockierung des Systems.Überläufe können zwar nach wie vor auftreten,
wenn ein Hochleistungsrechner Daten auf ein PC-System
transferiert. Durch die besseren (und schnelleren) Netzkarten
treten solche Überläufe allerdings nicht mehr
zwingend auf, wenn
NFS-Einheiten übertragen werden. Tritt nun
ein Überlauf auf, wird die betroffene Einheit erneut
verschickt, und es besteht eine gute Chance, dass sie nun
erhalten, verarbeitet und bestätigt werden kann.BillSwingleBeigetragen von EricOgrenErweitert von UdoErdelhoffNIS/YP – Network Information ServiceWas ist NIS?NISSolarisHP-UXAIXLinuxNetBSDOpenBSDNIS
wurde von Sun Microsystems entwickelt, um &unix;-Systeme
(ursprünglich &sunos;) zentral verwalten zu können.
Mittlerweile hat es sich zu einem Industriestandard entwickelt,
der von allen wichtigen &unix;-Systemen (&solaris;, HP-UX,
&aix;, Linux, NetBSD, OpenBSD, FreeBSD und anderen)
unterstützt wird.yellow pagesNISNIS war
ursprünglich als Yellow Pages bekannt,
aus markenrechtlichen Gründen wurde der Name aber
geändert. Die alte Bezeichnung (sowie die Abkürzung YP)
wird aber nach wie vor häufig verwendet.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. Ein Systemadministrator wird dadurch
in die Lage versetzt, NIS-Clients mit minimalem Aufwand
einzurichten, sowie Änderungen an der Systemkonfiguration
von einem zentralen Ort aus durchzuführen.Windows NTDie Funktion entspricht dem Domänensystem von
&windowsnt;; auch wenn sich die interne Umsetzung unterscheidet,
sind die Basisfunktionen vergleichbar.Wichtige Prozesse und BegriffeEs gibt verschiedene Begriffe und Anwenderprozesse, auf die
Sie stoßen werden, wenn Sie NIS unter FreeBSD einrichten,
egal ob Sie einen Server oder einen Client konfigurieren:rpcbindBegriffBeschreibungNIS-DomänennameEin NIS-Masterserver sowie alle Clients
(inklusive der Slaveserver) haben einen
NIS-Domänennamen. Dieser hat (ähnlich den
&windowsnt;-Domänennamen) nichts mit DNS zu tun.
rpcbindMuss laufen, damit RPC (Remote Procedure Call, ein
von NIS verwendetes Netzwerkprotokoll) funktioniert.
NIS-Server sowie Clients funktionieren ohne
rpcbind nicht.ypbindBindet 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 >ypbind
auf einem Client beendet, ist dieser nicht mehr in der
Lage, auf den NIS-Server zuzugreifen.ypservSollte nur auf dem NIS-Server laufen, da es sich um
den Serverprozess selbst handelt. Wenn &man.ypserv.8;
nicht mehr läuft, kann der Server nicht mehr auf
NIS-Anforderungen reagieren (wenn ein Slaveserver
existiert, kann dieser als Ersatz fungieren). Einige
NIS-Systeme (allerdings nicht das von FreeBSD) versuchen
allerdings erst gar nicht, sich mit einem anderen Server
zu verbinden, wenn der bisher verwendete Server nicht
mehr reagiert. Die einzige Lösung dieses Problems
besteht dann darin, den Serverprozess (oder gar den
Server selbst) oder den
ypbind-Prozess auf dem Client
neu zu starten.rpc.yppasswddEin weiterer Prozess, der nur auf dem
NIS-Masterserver laufen sollte. Es handelt sich um einen
Daemonprozess, der es NIS-Clients ermöglicht, sich
auf dem NIS-Masterserver anzumelden, um ihr Passwort zu
ändern.Wie funktioniert NIS?In einer NIS-Umgebung gibt es drei Rechnerarten:
Masterserver, Slaveserver und Clients. Server dienen als
zentraler Speicherort für Rechnerkonfigurationen.
Masterserver speichern die maßgebliche Kopie dieser
Informationen, während Slaveserver diese Informationen
aus Redundanzgründen spiegeln. Die Clients beziehen
ihre Informationen immer vom Server.Auf diese Art und Weise 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.Arten von NIS-RechnernNISMasterserverEin NIS-Masterserver verwaltet,
ähnlich einem &windowsnt;-Domänencontroller, die
von allen NIS-Clients gemeinsam verwendeten Dateien.
passwd, group,
sowie verschiedene andere von den Clients verwendete
Dateien existieren auf dem Masterserver.Ein Rechner kann auch für mehrere
NIS-Domänen als Masterserver fungieren. Dieser
Abschnitt konzentriert sich im Folgenden allerdings auf
eine relativ kleine NIS-Umgebung.NISSlaveserverNIS-Slaveserver. Ähnlich
einem &windowsnt;-Backupdomänencontroller, verwalten
NIS-Slaveserver Kopien der Daten des NIS-Masterservers.
NIS-Slaveserver bieten die Redundanz, die für
kritische Umgebungen benötigt wird. Zusätzlich
entlasten Slaveserver den Masterserver: NIS-Clients
verbinden sich immer mit dem NIS-Server, der zuerst
reagiert. Dieser Server kann auch ein Slaveserver sein.
NISClientNIS-Clients. NIS-Clients
identifizieren sich gegenüber dem NIS-Server
(ähnlich den &windowsnt;-Workstations), um sich am
Server anzumelden.NIS/YP konfigurierenDieser Abschnitt beschreibt an Hand eines Beispiels die
Einrichtung einer NIS-Umgebung.PlanungNehmen wir an, Sie seien der Administrator eines kleinen
Universitätsnetzes. Dieses Netz besteht aus
fünfzehn FreeBSD-Rechnern, für die derzeit keine
zentrale Verwaltung existiert, jeder Rechner hat also eine
eigene Version von /etc/passwd und
/etc/master.passwd. Diese Dateien werden
manuell synchron gehalten; legen Sie einen neuen Benutzer an,
so muss dies auf allen fünfzehn Rechnern manuell
erledigt werden (unter Verwendung von
adduser). Da diese Lösung sehr
ineffizient ist, soll das Netzwerk in Zukunft NIS verwenden,
wobei zwei der Rechner als Server dienen sollen.In Zukunft soll das Netz also 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 Sie NIS das erste Mal einrichten, ist es ratsam, sich
zuerst über die Vorgangsweise Gedanken zu machen.
Unabhängig von der Größe Ihres Netzwerks
müssen Sie stets einige Entscheidungen treffen.Einen NIS-Domänennamen wählenNISDomänennameDies muss nicht der Domainname sein. Es
handelt sich vielmehr um den NIS-Domainnamen.
Wenn ein Client Informationen anfordert, ist in dieser
Anforderung der Name der NIS-Domäne enthalten.
Dadurch weiß jeder Server im Netzwerk, auf welche
Anforderung er antworten muss. Stellen Sie sich den
NIS-Domänennamen als den Namen einer Gruppe von
Rechnern vor, die etwas gemeinsam haben.Manchmal wird der Name der Internetdomäne auch
für die NIS-Domäne verwendet. Dies ist allerdings
nicht empfehlenswert, da dies bei der Behebung von Problemen
verwirrend sein kann. Der Name der NIS-Domäne sollte
innerhalb Ihres Netzwerks einzigartig sein. Hilfreich ist
es, wenn der Name die Gruppe der in ihr zusammengefassten
Rechner beschreibt. Die Kunstabteilung von Acme Inc.
hätte daher die NIS-Domäne
acme-art. Für unser Beispiel verwenden
wir den NIS-Domänennamen
test-domain.SunOSEs gibt jedoch auch Betriebssysteme (vor allem &sunos;),
die als NIS-Domänennamen den Name der
Internetdomäne verwenden. Wenn dies für einen
oder mehrere Rechner Ihres Netzwerks zutrifft,
müssen Sie den Namen der
Internetdomäne als Ihren NIS-Domänennamen
verwenden.Anforderungen an den ServerWenn Sie einen NIS-Server einrichten wollen, müssen
Sie einige Dinge beachten. Eine unangenehme Eigenschaft
von NIS ist die Abhängigkeit der Clients vom Server.
Wenn sich der Client nicht über den Server mit seiner
NIS-Domäne verbinden kann, wird der Rechner oft
unbenutzbar, da das Fehlen von Benutzer- und
Gruppeninformationen zum Einfrieren des Clients führt.
Daher sollten Sie für den Server einen Rechner
auswählen, der nicht regelmäßig neu
gestartet werden muss und der nicht für Testversuche
verwendet wird. Idealerweise handelt es sich um einen
alleinstehenden Rechner, dessen einzige Aufgabe es ist, als
NIS-Server zu dienen. Wenn Sie ein Netzwerk haben, das
nicht zu stark ausgelastet ist, ist es auch möglich,
den NIS-Server als weiteren Dienst auf einem anderen Rechner
laufen zu lassen. Denken Sie aber daran, dass ein Ausfall
des NIS-Servers alle NIS-Clients
betrifft.NIS-ServerDie verbindlichen Kopien aller NIS-Informationen befinden
sich auf einem einzigen Rechner, dem NIS-Masterserver. Die
Datenbanken, in denen die Informationen gespeichert sind,
bezeichnet man als NIS-Maps. Unter FreeBSD werden diese
Maps unter /var/yp/[domainname]
gespeichert, wobei [domainname] der
Name der NIS-Domäne ist. Ein einzelner NIS-Server
kann gleichzeitig mehrere NIS-Domänen verwalten, daher
können auch mehrere Verzeichnisse vorhanden sein. Jede
Domäne verfügt über ein eigenes Verzeichnis
sowie einen eigenen, von anderen Domänen
unabhängigen Satz von NIS-Maps.NIS-Master- und Slaveserver verwenden den
ypserv-Daemon, um NIS-Anfragen zu
bearbeiten. ypserv empfängt
eingehende Anfragen der NIS-Clients, ermittelt aus der
angeforderten Domäne und Map einen Pfad zur
entsprechenden Datenbank, und sendet die angeforderten
Daten von der Datenbank zum Client.Einen NIS-Masterserver einrichtenNISServerkonfigurationAbhängig von Ihren Anforderungen ist die
Einrichtung eines NIS-Masterservers relativ einfach, da
NIS von FreeBSD bereits in der Standardkonfiguration
unterstützt wird. Sie müssen nur folgende
Zeilen in /etc/rc.conf einfügen:
nisdomainname="test-domain"Diese Zeile setzt den NIS-Domänennamen auf
test-domain, wenn Sie das Netzwerk
initialisieren (beispielsweise nach einem Systemstart).
nis_server_enable="YES"
Dadurch werden die NIS-Serverprozesse gestartet.nis_yppasswdd_enable="YES"
Durch diese Zeile wird der
rpc.yppasswdd-Daemon aktiviert, der,
wie bereits erwähnt, die Änderung von
NIS-Passwörtern von einem Client aus
ermöglicht.In Abhängigkeit von Ihrer NIS-Konfiguration
können weitere Einträge erforderlich sein.
Weitere Informationen finden Sie im Abschnitt
NIS-Server, die
auch als NIS-Clients arbeiten.Nun müssen Sie nur noch
/etc/netstart als Superuser
ausführen, um alles entsprechend Ihren Vorgaben in
/etc/rc.conf einzurichten.Die NIS-Maps initialisierenNISmapsNIS-Maps sind Datenbanken, die
sich im Verzeichnis /var/yp befinden.
Sie werden am NIS-Masterserver aus den Konfigurationsdateien
unter /etc erzeugt. Einzige Ausnahme:
/etc/master.passwd. Dies ist auch
sinnvoll, da Sie die Passwörter für Ihr
root- oder andere
Administratorkonten nicht an alle Server der NIS-Domäne
verteilen wollen. Bevor Sie also die NIS-Maps des
Masterservers einrichten, sollten Sie Folgendes tun:&prompt.root; cp /etc/master.passwd /var/yp/master.passwd
&prompt.root; cd /var/yp
&prompt.root; vi master.passwdEntfernen Sie alle Systemkonten
(wie bin, tty,
kmem oder games),
sowie alle Konten, die Sie nicht an die NIS-Clients
weitergeben wollen (beispielsweise root
und alle Konten mit der UID 0 (=Superuser).Stellen Sie sicher, dass
/var/yp/master.passwd weder von der
Gruppe noch von der Welt gelesen werden kann (Zugriffsmodus
600)! Ist dies nicht der Fall, ändern Sie dies mit
chmod.Tru64 UNIXNun können Sie die NIS-Maps initialisieren.
FreeBSD verwendet dafür das Skript
ypinit (lesen Sie dazu auch
&man.ypinit.8;). Dieses Skript ist auf fast allen
UNIX-Betriebssystemen verfügbar. Bei
Digitals Unix/Compaq Tru64 UNIX nennt es sich allerdings
ypsetup. Da wir Maps für einen
NIS-Masterserver erzeugen, verwenden wir
ypinit mit der Option
. Nachdem Sie die beschriebenen
Aktionen durchgeführt haben, erzeugen Sie nun die
NIS-Maps: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 you don't, something might not work.
At this point, we have to construct a list of this domains YP servers.
rod.darktech.org is already known as master server.
Please continue to add any slave servers, one per line. When you are
done with the list, type a <control D>.
master server : ellington
next host to add: 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 der Datei
/var/yp/Makefile.dist.
Durch diese Datei wird festgelegt, dass Sie in einer
NIS-Umgebung mit nur einem Server arbeiten und dass alle
Clients unter FreeBSD laufen. Da
test-domain aber auch über einen
Slaveserver verfügt, müssen Sie
/var/yp/Makefile entsprechend anpassen:
ellington&prompt.root; vi /var/yp/MakefileSie sollten die ZeileNOPUSH = "True"auskommentieren (falls dies nicht bereits der Fall ist).Einen NIS-Slaveserver einrichtenNISSlaveserverEin NIS-Slaveserver ist noch einfacher einzurichten als
ein Masterserver. Melden Sie sich am Slaveserver an und
ändern Sie /etc/rc.conf analog
zum Masterserver. Der einzige Unterschied besteht in der
Verwendung der Option , wenn Sie
ypinit aufrufen. Die Option
erfordert den Namen des
NIS-Masterservers, daher sieht unsere Ein- und Ausgabe wie
folgt aus: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 you don't, something might not work.
There will be no further questions. The remainder of the procedure
should take a few minutes, to copy the databases from ellington.
Transferring netgroup...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byuser...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byhost...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring group.bygid...
ypxfr: Exiting: Map successfully transferred
Transferring group.byname...
ypxfr: Exiting: Map successfully transferred
Transferring services.byname...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.byname...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.byname...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring netid.byname...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring ypservers...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byname...
ypxfr: Exiting: Map successfully transferred
coltrane has been setup as an YP slave server without any errors.
Don't forget to update map ypservers on ellington.Sie sollten nun über das Verzeichnis
/var/yp/test-domain verfügen.
Die Kopien der NIS-Masterserver-Maps sollten sich in diesem
Verzeichnis befinden. Allerdings müssen Sie diese
auch aktuell halten. Die folgenden Einträge in
/etc/crontab erledigen diese Aufgabe:
20 * * * * root /usr/libexec/ypxfr passwd.byname
21 * * * * root /usr/libexec/ypxfr passwd.byuidDiese zwei Zeilen zwingen den Slaveserver, seine Maps
mit denen des Masterservers zu synchronisieren. Diese
Einträge sind nicht zwingend, da der Masterserver
versucht, alle Änderungen seiner NIS-Maps an seine
Slaveserver weiterzugeben. Da Passwortinformationen aber
für vom Server abhängige Systeme vital sind, ist
es eine gute Idee, diese Aktualisierungen zu erzwingen.
Besonders wichtig ist dies in stark ausgelasteten Netzen,
in denen Map-Aktualisierungen unvollständig sein
könnten.Führen Sie nun /etc/netstart
auch auf dem Slaveserver aus, um den NIS-Server erneut zu
starten.NIS-ClientsEin NIS-Client bindet sich unter
Verwendung des ypbind-Daemons an einen
NIS-Server. ypbind prüft die
Standarddomäne des Systems (die durch
domainname gesetzt wird), und beginnt
RPCs über das lokale Netzwerk zu verteilen (broadcast).
Diese Anforderungen legen den Namen der Domäne fest,
für die ypbind eine Bindung erzeugen
will. Wenn der Server der entsprechenden Domäne eine
solche Anforderung erhält, schickt er eine Antwort an
ypbind. ybind speichert
daraufhin die Adresse des Servers. Wenn mehrere Server
verfügbar sind (beispielsweise ein Master- und mehrere
Slaveserver), verwendet ypbind die erste
erhaltene Adresse. Ab diesem Zeitpunkt richtet der Client 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.Einen NIS-Client konfigurierenNISClient konfigurierenEinen FreeBSD-Rechner als NIS-Client einzurichten, ist
recht einfach.Fügen Sie folgende Zeilen in
/etc/rc.conf ein, um den
NIS-Domänennamen festzulegen, und um
ypbind 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 und fügen
mit vipw folgende Zeile am Ende der
Datei ein:+:::::::::Diese Zeile legt für alle gültigen
Benutzerkonten der NIS-Server-Maps einen Zugang an.
Es gibt verschiedene Wege, Ihren NIS-Client durch
Änderung dieser Zeile zu konfigurieren. Lesen
Sie dazu auch den Abschnitt über
Netzgruppen weiter
unten. Weitere detaillierte Informationen finden Sie
im Buch Managing NFS and NIS von
O'Reilly.Sie sollten zumindest ein lokales Benutzerkonto,
das nicht über NIS importiert wird, in Ihrer
/etc/master.passwd behalten.
Dieser Benutzer sollte außerdem ein Mitglied der
Gruppe wheel sein. Wenn es
mit NIS Probleme gibt, können Sie diesen Zugang
verwenden, um sich anzumelden,
root zu werden und das Problem
zu beheben.Um alle möglichen Gruppeneinträge vom
NIS-Server zu importieren, fügen sie folgende Zeile
in /etc/group ein:+:*::Nachdem Sie diese Schritte erledigt haben, sollten Sie
mit ypcat passwd die
passwd-Map des NIS-Servers anzeigen
können.Sicherheit unter NISNISSicherheitIm Allgemeinen kann jeder entfernte Anwender einen RPC an
&man.ypserv.8; schicken, um den Inhalt Ihrer NIS-Maps abzurufen,
falls er Ihren NIS-Domänennamen kennt. Um solche
unautorisierten Transaktionen zu verhindern, unterstützt
&man.ypserv.8; securenets, durch die man den
Zugriff auf bestimmte Rechner beschränken kann.
&man.ypserv.8; versucht, beim Systemstart die Informationen
über securenets aus der Datei
/var/yp/securenets zu laden.Die Datei securenets kann auch
in einem anderen Verzeichnis stehen, das mit der Option
angegeben wird. Diese Datei
enthält Einträge, die aus einer Netzwerkadresse und
einer Netzmaske bestehen, die durch Leerzeichen getrennt
werden. Kommentarzeilen beginnen mit #.
/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
/var/yp/securenets nicht vorhanden ist,
erlaubt ypserv Verbindungen von jedem Rechner
aus.ypserv unterstützt auch das
TCP-Wrapper-Paket von Wietse Venema.
Mit diesem Paket kann der Administrator für
Zugriffskontrollen die Konfigurationsdateien von
TCP-Wrapper anstelle von
/var/yp/securenets verwenden.Während beide Kontrollmechanismen einige Sicherheit
gewähren, beispielsweise durch privilegierte Ports, sind
sie gegenüber IP spoofing-Attacken
verwundbar. Jeder NIS-Verkehr sollte daher von Ihrer Firewall
blockiert werden.Server, die /var/yp/securenets
verwenden, können Schwierigkeiten bei der Anmeldung von
Clients haben, die ein veraltetes TCP/IP-Subsystem
besitzen. Einige dieser TCP/IP-Subsysteme setzen alle
Rechnerbits auf Null, wenn Sie einen
Broadcast durchführen und/oder
können die Subnetzmaske nicht auslesen, wenn sie die
Broadcast-Adresse berechnen. Einige Probleme können
durch Änderungen der Clientkonfiguration behoben werden.
Andere hingegen lassen sich nur durch das Entfernen des
betreffenden Rechners aus dem Netzwerk oder den Verzicht auf
/var/yp/securenets umgehen.Die Verwendung von /var/yp/securenets
auf einem Server mit einem solch veralteten
TCP/IP-Subsystem ist eine sehr schlechte Idee, die zu
einem Verlust der NIS-Funktionalität für große
Teile Ihres Netzwerks führen kann.TCP-WrapperDie Verwendung der TCP-Wrapper
verlangsamt die Reaktion Ihres NIS-Servers. Diese
zusätzliche Reaktionszeit kann in Clientprogrammen zu
Timeouts führen. Dies vor allem in Netzwerken, die
stark ausgelastet sind, oder nur über langsame NIS-Server
verfügen. Wenn ein oder mehrere Ihrer Clientsysteme
dieses Problem aufweisen, sollten Sie die betreffenden Clients
in NIS-Slaveserver umwandeln, und diese an sich selbst binden.
Bestimmte Benutzer an der Anmeldung hindernNISBenutzer blockierenIn unserem Labor gibt es den Rechner basie,
der nur für Mitarbeiter der Fakultät bestimmt ist.
Wir wollen diesen Rechner nicht aus der NIS-Domäne
entfernen, obwohl passwd des
NIS-Masterservers Benutzerkonten sowohl für
Fakultätsmitarbeiter als auch für Studenten
enthält. Was können wir also tun?Es gibt eine Möglichkeit, bestimmte Benutzer an der
Anmeldung an einem bestimmten Rechner zu hindern, selbst wenn
diese in der NIS-Datenbank vorhanden sind. Dazu müssen
Sie lediglich an diesem Rechner den Eintrag
-Benutzername an
das Ende von /etc/master.passwd setzen,
wobei Benutzername der zu
blockierende Benutzername ist. Diese Änderung sollte
bevorzugt durch vipw erledigt werden, da
vipw Ihre Änderungen an
/etc/master.passwd auf Plausibilität
überprüft und nach erfolgter Änderung die
Passwortdatenbank automatisch aktualisiert. Um also den
Benutzer bill an der Anmeldung am Rechner
basie zu hindern, gehen wir wie folgt vor:
basie&prompt.root; vipw[add -bill to the end, exit]
vipw: rebuilding the database...
vipw: done
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;UdoErdelhoffBeigetragen von Netzgruppen verwendenNetzgruppenDie im letzten Abschnitt beschriebene Methode eignet sich
besonders, wenn Sie spezielle Regeln für wenige
Benutzer oder wenige Rechner benötigen. In großen
Netzwerken werden Sie allerdings
mit Sicherheit vergessen, einige Benutzer
von der Anmeldung an bestimmten Rechnern auszuschließen.
Oder Sie werden gezwungen sein, jeden Rechner einzeln zu
konfigurieren. Dadurch verlieren Sie aber den Hauptvorteil von
NIS, die zentrale Verwaltung.Die Lösung für dieses Problem sind
Netzgruppen. Ihre Aufgabe und Bedeutung
ist vergleichbar mit normalen, von UNIX-Dateisystemen
verwendeten Gruppen. Die Hauptunterschiede sind das Fehlen
einer numerischen ID sowie die Möglichkeit, Netzgruppen
zu definieren, die sowohl Benutzer als auch andere Netzgruppen
enthalten.Netzgruppen wurden entwickelt, um große, komplexe
Netzwerke mit Hunderten Benutzern und Rechnern zu verwalten.
Sie sind also von Vorteil, wenn Sie von dieser Situation
betroffen sind. Andererseits ist es dadurch beinahe
unmöglich, Netzgruppen mit einfachen Beispielen zu
erklären. Das hier verwendete Beispiel veranschaulicht
dieses Problem.Nehmen wir an, dass Ihre erfolgreiche Einführung von
NIS die Aufmerksamkeit Ihrer Vorgesetzten geweckt hat. Ihre
nächste Aufgabe besteht nun darin, Ihre NIS-Domäne
um zusätzliche Rechner zu erweitern. Die folgenden
Tabellen enthalten die neuen Benutzer und Rechner inklusive
einer kurzen Beschreibung.Benutzername(n)Beschreibungalpha,
betaBeschäftigte der IT-Abteilungcharlie,
deltaDie neuen Lehrlinge der IT-Abteilungecho,
foxtrott,
golf, ...Normale Mitarbeiterable,
baker, ...Externe MitarbeiterRechnername(n)Beschreibungwar, death,
famine, pollutionIhre wichtigsten Server. Nur IT-Fachleute
dürfen sich an diesen Rechnern anmelden.pride, greed,
envy, wrath,
lust, slothWeniger wichtige Server. Alle Mitarbeiter der
IT-Abteilung dürfen sich auf diesen Rechnern
anmelden.one, two,
three, four, ...Gewöhnliche Arbeitsrechner. Nur die
wirklichen Mitarbeiter dürfen
diese Rechner verwenden.trashcanEin sehr alter Rechner ohne kritische Daten. Sogar
externe Mitarbeiter dürfen diesen Rechner
verwenden.Wollten Sie diese Einschränkungen umsetzen, indem Sie
jeden Benutzer einzeln blockieren, müssten Sie auf jedem
System für jeden Benutzer eine entsprechende Zeile in
passwd einfügen. Wenn Sie nur einen
Eintrag vergessen, haben Sie ein Problem. Es mag noch angehen,
dies während der ersten Installation zu erledigen, im
täglichen Betrieb werden Sie allerdings
mit Sicherheit einmal vergessen, die
entsprechenden Einträge anzulegen. Vergessen Sie nicht:
Murphy war Optimist.Die Verwendung von Netzgruppen hat in dieser Situation
mehrere Vorteile. Sie müssen nicht jeden Benutzer einzeln
verwalten; weisen Sie stattdessen den Benutzer einer Netzgruppe
zu und erlauben oder verbieten Sie allen Mitglieder dieser
Gruppe die Anmeldung an einem Server. Wenn Sie einen neuen
Rechner hinzufügen, müssen Sie
Zugangsbeschränkungen nur für die Netzgruppen
festlegen. Legen Sie einen neuen Benutzer an, müssen Sie
ihn nur einer oder mehrere Netzgruppen zuweisen. Diese
Veränderungen sind voneinander unabhängig; Anweisungen
der Form für diese Kombination aus Benutzer und
Rechner mache Folgendes ... sind nicht mehr nötig.
Wenn Sie die Einrichtung von NIS sorgfältig geplant haben,
müssen Sie nur noch eine zentrale Konfigurationsdatei
bearbeiten, um den Zugriff auf bestimmte Rechner zu erlauben
oder zu verbieten.Der erste Schritt ist die Initialisierung der NIS-Maps
der Netzgruppe. &man.ypinit.8; kann dies unter FreeBSD nicht
automatisch durchführen. Sind die Maps aber erst einmal
erzeugt, werden sie jedoch von NIS problemlos unterstützt.
Um eine leere Map zu erzeugen, geben Sie Folgendes ein:ellington&prompt.root; vi /var/yp/netgroupDanach legen Sie die Einträge an. Für unser
Beispiel benötigen wir mindestens vier Netzgruppen:
IT-Beschäftige, IT-Lehrlinge, normale Beschäftigte
sowie Externe.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)Bei IT_EMP, IT_APP
usw. handelt es sich um Netzgruppennamen. In den Klammern
werden diesen Netzgruppen jeweils ein oder mehrere
Benutzerkonten hinzugefügt. Die drei Felder in der
Klammer haben folgende Bedeutung:Der Name des Rechners, auf dem die folgenden Werte
gültig sind. Legen Sie keinen Rechnernamen fest, ist
der Eintrag auf allen Rechnern gültig. Dadurch
gehen Sie vielen Problemen aus dem Weg.Der Name des Benutzerkontos, der zu dieser Netzgruppe
gehört.Die NIS-Domäne für das Benutzerkonto. Sie
können Benutzerkonten von anderen NIS-Domänen in
Ihre Netzgruppe importieren, wenn Sie mehrere
NIS-Domänen verwalten.Jedes Feld kann Wildcards enthalten. Die Einzelheiten
entnehmen Sie bitte &man.netgroup.5;.NetzgruppenNetzgruppennamen sollten nicht länger als 8 Zeichen
sein, vor allem dann, wenn Sie Rechner mit verschiedenen
Betriebssystemen in Ihrer NIS-Domäne haben. Es wird
zwischen Groß- und Kleinschreibung unterschieden.
Die Verwendung von Großbuchstaben für
Netzgruppennamen ermöglicht eine leichte Unterscheidung
zwischen Benutzern, Rechnern und Netzgruppen.Einige NIS-Clients (dies gilt nicht für FreeBSD)
können keine Netzgruppen mit einer großen Anzahl
von Einträgen verwalten. Einige ältere Versionen
von &sunos; haben beispielsweise Probleme, wenn Netzgruppen
mehr als fünfzehn Einträge
enthalten. Sie können dieses Problem umgehen, indem Sie
mehrere Subnetzgruppen mit weniger als fünfzehn Benutzern
anlegen und diese Subnetzgruppen wiederum in einer Netzgruppe
zusammenfassen:BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]
BIGGRP2 (,joe16,domain) (,joe17,domain) [...]
BIGGRP3 (,joe31,domain) (,joe32,domain)
BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3Sie können diesen Vorgang wiederholen, wenn Sie mehr
als 255 Benutzer in einer einzigen Netzgruppe benötigen.
Das Aktivieren und Verteilen Ihre neuen NIS-Map ist
einfach: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 Ihrer 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 Sie rechnerspezifische
Netzgruppen erzeugt haben. Der dritte Befehl gibt die
Netzgruppen nach Benutzern sortiert aus.Die Einrichtung der Clients ist einfach. Sie müssen
lediglich auf dem Server war
&man.vipw.8; aufrufen und die Zeile+:::::::::durch+@IT_EMP:::::::::ersetzen.Ab sofort werden nur noch die Daten der in der Netzgruppe
IT_EMP vorhandenen Benutzer in die
Passwortdatenbank von war importiert.
Nur diese Benutzer dürfen sich am Server anmelden.Unglücklicherweise gilt diese Einschränkung auch
für die ~-Funktion der Shell und
für alle Routinen, die auf Benutzernamen und numerische
Benutzer-IDs zugreifen. Oder anders formuliert,
cd ~user 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 Sie alle Benutzereinträge
importieren, ohne ihnen jedoch zu erlauben, sich an
Ihrem Server anzumelden.Dazu fügen Sie eine weitere Zeile in
/etc/master.passwd ein. Diese Zeile sollte
ähnlich der folgenden aussehen:+:::::::::/sbin/nologin, was in etwa
Importiere alle Einträge, aber ersetze die Shell in
den importierten Einträgen durch
/sbin/nologin entspricht. Sie
können jedes Feld dieses Eintrages ersetzen, indem Sie
einen Standardwert in /etc/master.passwd
eintragen.Stellen Sie sicher, dass die Zeile
+:::::::::/sbin/nologinnach der Zeile
+@IT_EMP::::::::: eingetragen ist. Sonst
haben alle via NIS importierten Benutzerkonten
/sbin/nologin als Loginshell.Danach müssen Sie nur mehr eine einzige NIS-Map
ändern, wenn ein neuer Mitarbeiter berücksichtigt
werden muss. Für weniger wichtige Server gehen Sie analog
vor, indem Sie den alten Eintrag +:::::::::
in den lokalen Versionen von
/etc/master.passwd durch folgende
Einträge ersetzen:+@IT_EMP:::::::::
+@IT_APP:::::::::
+:::::::::/sbin/nologinDie entsprechenden Zeilen für normale Arbeitsplätze
lauten:+@IT_EMP:::::::::
+@USERS:::::::::
+:::::::::/sbin/nologinAb jetzt wäre alles wunderbar, allerdings ändert
sich kurz darauf die Firmenpolitik: Die IT-Abteilung beginnt
damit, externe Mitarbeiter zu beschäftigen. Externe
dürfen sich an normalen Arbeitsplätzen sowie an den
weniger wichtigen Servern anmelden. Die IT-Lehrlinge
dürfen sich nun auch an den Hauptservern anmelden. Sie
legen also die neue Netzgruppe IT_INTERN an,
weisen Ihr die neuen IT-Externen als Benutzer zu und beginnen
damit, die Konfiguration auf jedem einzelnen Rechner zu
ändern ... Halt. Sie haben gerade die alte Regel
Fehler in der zentralisierten Planung führen zu
globaler Verwirrung. bestätigt.Da NIS in der Lage ist, Netzgruppen aus anderen Netzgruppen
zu bilden, lassen sich solche Situationen leicht vermeiden.
Eine Möglichkeit ist die Erzeugung rollenbasierter
Netzgruppen. Sie könnten eine Netzgruppe
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 normalen
Arbeitsplatzrechner. Jede dieser Netzgruppen enthält die
Netzgruppen, die sich auf diesen Rechnern anmelden dürfen.
Die Einträge der Netzgruppen in der NIS-Map sollten
ähnlich den folgenden aussehen:BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERSDiese Methode funktioniert besonders gut, wenn Sie
Rechner in Gruppen mit identischen Beschränkungen einteilen
können. Unglücklicherweise ist dies die Ausnahme und
nicht die Regel. Meistens werden Sie die Möglichkeit zur
rechnerspezischen Zugangsbeschränkung benötigen.
Rechnerspezifische Netzgruppen sind die zweite
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. Die Zeilen
sollten also ähnlich den folgenden aussehen:+@BOXNAME:::::::::
+:::::::::/sbin/nologinWenn Sie dies für alle Rechner erledigt haben, werden
Sie die lokalen Versionen von
/etc/master.passwd nie mehr verändern
müssen. Alle weiteren Änderungen geschehen über
die NIS-Maps. Nachfolgend ein Beispiel für eine
mögliche Netzgruppen-Map, die durch einige Besonderheiten
erweitert wurde:# 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]
Wenn Sie eine Datenbank verwenden, um Ihre Benutzerkonten zu
verwalten, sollten Sie den ersten Teil der NIS-Map mit Ihren
Datenbanktools erstellen können. Auf diese Weise haben
neue Benutzer automatisch Zugriff auf die Rechner.Eine letzte Warnung: Es ist nicht immer ratsam,
rechnerbasierte Netzgruppen zu verwenden. Wenn Sie Dutzende
oder gar Hunderte identische Rechner einrichten müssen,
sollten Sie rollenbasierte Netzgruppen verwenden, um die
Grösse der NISs-Maps in Grenzen zu halten.Weitere wichtige PunkteNachdem Sie Ihre NIS-Umgebung eingerichtet haben,
müssen Sie einige Dinge anders als bisher erledigen.Jedes Mal, wenn Sie einen neuen Benutzer anlegen wollen,
tun Sie dies ausschließlich am
NIS-Masterserver. Außerdem
müssen Sie anschließend die
NIS-Maps neu erzeugen. Wenn Sie diesen Punkt vergessen,
kann sich der neue Benutzer nur am
NIS-Masterserver anmelden. Wenn Sie also den neuen Benutzer
jsmith anlegen, gehen Sie
folgerndermassen vor:&prompt.root; pw useradd jsmith
&prompt.root; cd /var/yp
&prompt.root; make test-domainStatt pw useradd jsmith könnten
Sie auch adduser jsmith verwenden.Tragen Sie die Administratorkonten nicht
in die NIS-Maps ein. Administratorkonten und
Passwörter dürfen nicht auf Rechnern verbreitet
werden, auf denen sich Benutzer anmelden können, die
auf diese Konten keine Zugriff haben sollen.Sichern Sie die NIS-Master- und Slaveserver
und minimieren Sie die Ausfallzeiten. Wenn
diese Rechner gehackt oder einfach nur ausgeschaltet werden,
haben viele Leute keinen Netzwerkzugriff mehr.Dies ist die größte Schwäche
jeder zentralen Verwaltung. Wenn Sie Ihre NIS-Server nicht
schützen, werden Sie viele verärgerte Anwender
haben.Kompatibilität zu NIS v1NISKompatibilität zu NIS v1ypserv unterstützt NIS v1
unter FreeBSD nur eingeschränkt. Die NIS-Implementierung
von FreeBSD verwendet nur NIS v2, andere Implementierungen
unterstützen aus Gründen der
Abwärtskompatibilität mit älteren Systemen auch
NIS v1. Die mit diesen Systemen gelieferten
ypbind-Daemonen versuchen, sich an
einen NIS-v1-Server zu binden (Dies selbst dann, wenn sie ihn
nie benötigen. Außerdem versuchen Sie auch dann,
einen v1-Server zu erreichen, wenn Sie zuvor eine Antwort von
einem v2-Server erhalten.). Während normale Clientaufrufe
unter FreeBSD unterstützt werden, sind Anforderungen zum
Transfer von v1-Maps nicht möglich. Daher kann FreeBSD
nicht als Client oder Server verwendet werden, wenn ein
NIS-Server vorhanden ist, der nur NIS v1 unterstützt.
Glücklicherweise sollte es heute keine Server mehr geben,
die nur NIS v1 unterstützen.NIS-Server, die auch als NIS-Clients arbeitenWenn Sie ypserv in einer
Multi-Serverdomäne verwenden, in der NIS-Server
gleichzeitig als NIS-Clients arbeiten, ist es eine gute Idee,
diese Server zu zwingen, sich an sich selbst zu binden. Damit
wird verhindert, dass Bindeanforderungen gesendet werden und
sich die Server gegenseitig binden. Sonst könnten seltsame
Fehler auftreten, wenn ein Server ausfällt, auf den andere
Server angewiesen sind. Letztlich werden alle Clients einen
Timeout melden, und versuchen, sich an andere Server zu binden.
Die dadurch entstehende Verzögerung kann beträchtlich
sein. Außerdem kann der Fehler erneut auftreten, da sich
die Server wiederum aneinander binden könnten.Sie können einen Rechner durch die Verwendung von
ypbind sowie der Option
zwingen, sich an einen bestimmten Server zu binden. Um diesen
Vorgang zu automatisieren, können Sie folgende Zeilen in
/etc/rc.conf einfügen:nis_client_enable="YES" # run client stuff as well
nis_client_flags="-S NIS domain,server"Lesen Sie &man.ypbind.8;, wenn Sie weitere Informationen
benötigen.PasswortformateNISPasswortformateUnterschiedliche Passwortformate sind das Hauptproblem,
das beim Einrichten eines NIS-Servers auftreten kann.
Wenn der NIS-Server mit DES verschlüsselte Passwörter
verwendet, werden nur Clients unterstützt, die ebenfalls
DES benutzen. Wenn sich auf Ihrem Netzwerk beispielsweise
&solaris; NIS-Clients befinden, müssen die Passwörter
mit DES verschlüsselt werden.Welches Format die Server und Clients verwenden,
steht in /etc/login.conf. Wenn ein
System Passwörter mit DES verschlüsselt,
enthält die default-Klasse einen
Eintrag wie den folgenden:default:\
:passwd_format=des:\
:copyright=/etc/COPYRIGHT:\
[weitere Einträge]Mögliche Werte für
passwd_format sind unter anderem
blf und md5 (mit
Blowfish und MD5 verschlüsselte Passwörter).Wenn die Datei /etc/login.conf
geändert wird, muss die Login-Capability Datenbank
neu erstellt werden. Geben Sie dazu als
root den folgenden Befehl ein:&prompt.root; cap_mkdb /etc/login.confDas Format der schon in
/etc/master.passwd befindlichen
Passwörter wird erst aktualisiert, wenn ein Benutzer
sein Passwort ändert, nachdem
die Datenbank neu erstellt wurde.Damit die Passwörter auch im gewählten
Format abgespeichert werden, muss mit
crypt_default in der Datei
/etc/auth.conf die richtige
Priorität der Formate eingestellt werden. Das
gewählte Format sollte als Erstes in der Liste
stehen. Sollen die Passwörter mit DES verschlüsselt
werden, verwenden Sie den folgenden Eintrag:crypt_default = des blf md5Wenn Sie alle &os; NIS-Server und NIS-Clients entsprechend
den obigen Schritten eingestellt haben, wird im ganzen
Netzwerk dasselbe Passwortformat verwendet. Falls Sie
Probleme mit der Authentifizierung eines NIS-Clients
haben, kontrollieren Sie die verwendeten Passwortformate.
In einer heterogenen Umgebung werden Sie DES benutzen
müssen, da dies der meist unterstützte Standard
ist.GregSutterGeschrieben von Automatische Netzwerkkonfiguration mit DHCPWas ist DHCP?Dynamic Host Configuration ProtocolDHCPInternet Software Consortium (ISC)Über DHCP, das Dynamic Host Configuration Protocol,
kann sich ein System mit einem Netzwerk verbinden und die
für die Kommunikation mit diesem Netzwerk nötigen
Informationen beziehen. &os;-Versionen vor 6.0 verwenden
die DHCP-Client-Implementierung (&man.dhclient.8;) von ISC
(Internet Software Consortium). Ab 6.0 wird der von
OpenBSD 3.7 stammende dhclient
zum Einsatz kommen. Die Informationen in diesem Abschnitt
beziehen sich daher sowohl auf den dhclient
von ISC als auch auf den von OpenBSD. Als DHCP-Server wird
in beiden Fällen der DHCP-Server der ISC-Distribution
verwendet.ÜbersichtDieser Abschnitt beschreibt sowohl die Clientseite des
ISC- als auch des OpenBSD-Clients sowie die
Serverseite des DHCP-Systems von ISC. Das Clientprogramm
dhclient ist in FreeBSD integriert, das
Serverprogramm kann über den Port
net/isc-dhcp3-server
installiert werden. Weiter Informationen finden Sie in
&man.dhclient.8;, &man.dhcp-options.5; sowie
&man.dhclient.conf.5;.Wie funktioniert DHCP?UDPDer DHCP-Client dhclient beginnt von
einem Clientrechner aus über den UDP-Port 68
Konfigurationsinformationen anzufordern. Der Server antwortet
auf dem UDP-Port 67, indem er dem Client eine IP-Adresse
zuweist und ihm weitere wichtige Informationen über das
Netzwerk, wie Netzmasken, Router und DNS-Server mitteilt. Diese
Informationen werden als
DHCP-Lease bezeichnet und
sind nur für eine bestimmte Zeit, die vom Administrator des
DHCP-Servers vorgegeben wird, gültig. Dadurch fallen
verwaiste IP-Adressen, deren Clients nicht mehr mit dem Netzwerk
verbunden sind, automatisch an den Server zurück.DHCP-Clients können sehr viele Informationen von einem
DHCP-Server erhalten. Eine ausführliche Liste finden Sie
in &man.dhcp-options.5;.Integration in FreeBSDIn Abhängigkeit von der eingesetzten &os;-Version wird
entweder der ISC-DHCP-Client oder der DHCP-Client von OpenBSD
in FreeBSD integriert. Sowohl während der Installation als
auch im Basissystem steht der DHCP-Client zur Verfügung.
In Netzen mit DHCP-Servern wird dadurch die Konfiguration von
Systemen erheblich vereinfacht. dhclient
ist seit der Version 3.2 in &os; enthalten.sysinstallDHCP wird von sysinstall
unterstützt. Wenn Sie eine Netzwerkkarte mit
sysinstall konfigurieren, lautet
die zweite Frage Do you want to try DHCP configuration
of the interface?. Wenn Sie diese Frage bejahen, wird
dhclient aufgerufen, und die Netzkarte wird
automatisch eingerichtet.Um DHCP beim Systemstart zu aktivieren, müssen Sie zwei
Dinge erledigen:DHCPAnforderungenStellen Sie sicher, dass bpf in
Ihren Kernel kompiliert ist. Dazu fügen Sie die Zeile
device bpf
in Ihre Kernelkonfigurationsdatei ein und erzeugen einen
neuen Kernel. Weitere Informationen zur Kernelkonfiguration
finden Sie in des Handbuchs.
Das Gerät bpf ist im
GENERIC-Kernel bereits enthalten.
Für die Nutzung von DHCP muss also kein angepasster
Kernel erzeugt werden.Wenn Sie um die Sicherheit Ihres Systems besorgt
sind, sollten Sie wissen, dass
bpf auch zur Ausführung
von Paketsniffern erforderlich ist (obwohl diese dennoch
als root ausgeführt werden
müssen). bpfmuss vorhanden sein, damit DHCP
funktioniert. Sind Sie sehr sicherheitsbewusst, sollten
Sie bpf aus Ihrem Kernel
entfernen, wenn Sie DHCP nicht verwenden.Fügen Sie folgende Zeile in
/etc/rc.conf ein:ifconfig_fxp0="DHCP"Ersetzen Sie fxp0 durch den
Eintrag für die Netzkarte, die Sie dynamisch
einrichten wollen. Lesen Sie dazu auch
.Wenn Sie dhclient an einem anderen
Ort installiert haben, oder zusätzliche Flags an
dhclient übergeben wollen,
fügen Sie auch folgende (entsprechend angepasste)
Zeilen ein:dhclient_program="/sbin/dhclient"
dhclient_flags=""DHCPServerDer DHCP-Server dhcpd ist als
Teil des Ports
net/isc-dhcp3-server
verfügbar. Dieser Port enthält die komplette
ISC-DHCP-Distribution, inklusive der Dokumentation.DateienDHCPKonfigurationsdateien/etc/dhclient.confdhclient benötigt die
Konfigurationsdatei /etc/dhclient.conf.
Diese Datei enthält normalerweise nur Kommentare, da
die Vorgabewerte zumeist ausreichend sind. Lesen Sie dazu
auch &man.dhclient.conf.5;./sbin/dhclientdhclient ist statisch gelinkt und
befindet sich in /sbin. Weitere
Informationen finden Sie in &man.dhclient.8;./sbin/dhclient-scriptBei dhclient-script handelt es sich
um das FreeBSD-spezifische Konfigurationsskript des
DHCP-Clients. Es wird in &man.dhclient-script.8;
beschrieben und kann meist unverändert übernommen
werden./var/db/dhclient.leasesDer DHCP-Client verfügt über eine Datenbank,
die alle derzeit gültigen Leases enthält und als
Logdatei erzeugt wird. Weitere Informationen finden Sie in
&man.dhclient.8;.Weitere InformationenDas DHCP-Protokoll wird vollständig im
RFC 2131
beschrieben. Eine weitere, lehrreiche Informationsquelle
existiert unter
.Einen DHCP-Server installieren und einrichtenÜbersichtDieser Abschnitt beschreibt die Einrichtung eines
FreeBSD-Systems als DHCP-Server. Dazu wird die
DHCP-Implementation von ISC (Internet Software Consortium)
verwendet.Der DHCP-Server ist nicht im Basissystem von FreeBSD
enthalten, daher müssen Sie als Erstes den Port
net/isc-dhcp3-server
installieren. Lesen Sie , wenn Sie
weitere Informationen zur Ports-Sammlung benötigen.
Den DHCP-Server installierenDHCPinstallierenStellen Sie sicher, dass &man.bpf.4; in Ihren Kernel
kompiliert ist. Dazu fügen Sie die Zeile
device bpf
Ihre Kernelkonfigurationsdatei ein und erzeugen einen neuen
Kernel. Die Kernelkonfiguration wird in
beschrieben.Das Gerät bpf ist im
GENERIC-Kernel bereits enthalten.
Für die Nutzung von DHCP muss also kein angepasster
Kernel erzeugt werden.Wenn Sie um die Sicherheit Ihres Systems besorgt
sind, sollten Sie wissen, dass
bpf auch zur Ausführung
von Paketsniffern erforderlich ist (obwohl diese dennoch
als root ausgeführt werden
müssen). bpfmuss vorhanden sein, damit DHCP
funktioniert. Sind Sie sehr sicherheitsbewusst, sollten
Sie bpf aus Ihrem Kernel
entfernen, wenn Sie DHCP nicht verwenden.Danach müssen Sie die vom Port
net/isc-dhcp3-server
erzeugte Vorlage für dhcpd.conf
anpassen. Die bei der Installation erzeugte Datei
/usr/local/etc/dhcpd.conf.sample
sollten Sie nach
/usr/local/etc/dhcpd.conf kopieren,
bevor Sie Veränderungen vornehmen.Den DHCP-Server einrichtenDHCPdhcpd.confdhcpd.conf besteht aus Festlegungen
zu Subnetzen und Rechnern und lässt sich am besten an
einem Beispiel erklären:option domain-name "example.com";
option domain-name-servers 192.168.4.100;
option subnet-mask 255.255.255.0;
default-lease-time 3600;
max-lease-time 86400;
ddns-update-style none;
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.129 192.168.4.254;
option routers 192.168.4.1;
}
host mailhost {
hardware ethernet 02:03:04:05:06:07;
fixed-address mailhost.example.com;
}Diese Option beschreibt die Domäne, die den
Clients als Standardsuchdomäne 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 den Clients zugewiesene Netzmaske.Ein Client kann eine Lease einer bestimmten Dauer
anfordern. Geschieht dies nicht, weist der Server eine
Lease mit einer vorgegebenen Ablaufdauer (in Sekunden)
zu.Die maximale Zeitdauer, für die der Server
Konfigurationsinformationen vergibt. Sollte ein Client
eine längere Zeitspanne anfordern, wird dennoch
nur der Wert max-lease-time in
Sekunden zugewiesen.Diese Option legt fest, ob der DHCP-Server eine
DNS-Aktualisierung versuchen soll, wenn
Konfigurationsdateien vergeben oder zurückgezogen
werden. In der ISC-Implementation
muss diese Option gesetzt sein.
Dadurch werden die IP-Adressen festgelegt, die den
Clients zugewiesen werden können. IP-Adressen
zwischen diesen Grenzen sowie die einschließenden
Adressen werden den Clients zugewiesen.Legt das Standard-Gateway fest, das den Clients
zugewiesen wird.Die (Hardware-)MAC-Adresse eines Rechners (durch die
der DHCP-Server den Client erkennt, der eine Anforderung
an ihn stellt).Einem Rechner soll immer die gleiche IP-Adresse
zugewiesen werden. Beachten Sie, dass hier auch ein
Rechnername gültig ist, da der DHCP-Server den
Rechnernamen auflöst, bevor er die
Konfigurationsinformationen zuweist.Nachdem Sie dhcpd.conf fertig
konfiguriert haben, sollten Sie den DHCP-Server aktivieren,
indem Sie folgende Zeilen in
/etc/rc.conf aufnehmen:dhcpd_enable="YES"
dhcpd_ifaces="dc0"Dabei müssen Sie den Geräteeintrag
dc0 durch die Gerätedatei (mehrere
Gerätedateien müssen durch Leerzeichen getrennt
werden) ersetzen, die Ihr DHCP-Server auf Anfragen von
DHCP-Clients hin überwachen soll.Danach können Sie den Server durch Eingabe des
folgenden Befehls starten:&prompt.root; /usr/local/etc/rc.d/isc-dhcpd.sh startSollten Sie die Konfiguration Ihres Servers einmal
verändern müssen, reicht es nicht aus, ein
SIGHUP-Signal an
dhcpd zu senden, weil damit die
Konfiguration nicht erneut geladen wird
(im Gegensatz zu den meisten Daemonen). Sie müssen
den Prozess vielmehr mit dem Signal
SIGTERM stoppen, um ihn
anschließend neu zu starten.DateienServerKonfigurationsdateien/usr/local/sbin/dhcpddhcpd ist statisch
gelinkt und befindet sich in
/usr/local/sbin. Lesen Sie auch die
mit dem Port installierte Hilfeseite &man.dhcpd.8;, wenn
Sie weitere Informationen zu
dhcpd benötigen./usr/local/etc/dhcpd.confdhcpd benötigt die
Konfigurationsdatei
/usr/local/etc/dhcpd.conf, damit
der Server den Clients seine Dienste anbieten kann.
Diese Datei muss alle Informationen enthalten, die an
die Clients weitergegeben werden soll. Außerdem
sind hier Informationen zur Konfiguration des Servers
enthalten. Die mit dem Port installierte Hilfeseite
&man.dhcpd.conf.5; enthält weitere Informationen.
/var/db/dhcpd.leasesDer DHCP-Server hat eine Datenbank, die alle
vergebenen Leases enthält. Diese wird als Logdatei
erzeugt. Weitere Informationen finden Sie in der vom
Port installierten Hilfeseite &man.dhcpd.leases.5;./usr/local/sbin/dhcrelaydhcrelay wird in
komplexen Umgebungen verwendet, in denen ein DHCP-Server
eine Anfrage eines Clients an einen DHCP-Server in einem
separaten Netzwerk weiterleitet. Wenn Sie diese
Funktion benötigen, müssen Sie den Port
net/isc-dhcp3-relay
installieren. Weitere Informationen zu diesem Thema
finden Sie in &man.dhcrelay.8;.ChernLeeBeigetragen von TomRhodesDanielGerzoDNS – Domain Name ServiceÜberblickBINDDNS ist das für die Umwandlung von Rechnernamen in
IP-Adressen zuständige Protokoll. &os; verwendet dazu
BIND (Berkeley Internet Name Domain), die am häufigsten
verwendete Implementierung von DNS).
Eine Anfrage nach www.FreeBSD.org gibt die
IP-Adresse des &os;-Webservers, eine Anfrage
nach ftp.FreeBSD.org die
IP-Adresse des entsprechenden
FTP-Servers zurück. Der umgekehrte Weg
ist ebenso möglich, eine IP-Adresse
kann also auch in ihren Rechnernamen aufgelöst werden. Um
eine DNS-Abfrage durchzuführen, muss auf
dem jeweiligen Rechner kein Nameserver installiert sein.&os; verwendet derzeit in der Voreinstellung
BIND9 als
DNS-Serversoftware. Unsere Installation
bietet Ihnen eine erhöhte Sicherheit, ein neues
Dateisystemlayout sowie eine automatisierte
&man.chroot.8;-Konfiguration.DNSIm Internet wird DNS durch ein komplexes
System von autoritativen Root-Nameservern,
Top Level Domain-Servern (TLD) sowie anderen
kleineren Nameservern verwaltet, die individuelle Rechnerinformationen
speichern und untereinander abgleichen.Derzeit wird BIND vom Internet Software Consortium
() verwaltet.BegriffsbestimmungenUm dieses Dokument besser verstehen zu können,
müssen einige DNS-spezifische
Begriffe genauer definiert werden.ResolverReverse-DNSRoot-ZoneBegriffBedeutungForward-DNSRechnernamen in IP-Adressen
umwandeln.Origin (Ursprung)Die in einer bestimmten Zonendatei beschriebene
Domäne.named, BIND,
NameserverGebräuchliche Namen für das unter &os;
verwendete BIND-Nameserverpaket.ResolverEin Systemprozess, durch den ein Rechner
Zoneninformationen von einem Nameserver anfordert.Reverse-DNSDas Gegenteil von Forward-DNS;
die 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:. ist die Root-Zone.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 192.168.1.*-IP-Adressraums.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) 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.Wie funktioniert DNS?Unter &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. Um den Server manuell zu starten,
verwenden Sie den folgenden Befehl:&prompt.root; /etc/rc.d/named forcestartUm 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. Wollen Sie die Startoptionen
von named unter &os; anpassen, sollten
Sie sich die
named_*-Flags in der
Datei /etc/defaults/rc.conf sowie die
Manualpage zu &man.rc.conf.5; näher ansehen. Zusätzliche
Informationen bietet Ihnen auch der Abschnitt des Handbuchs.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.make-localhost verwendenUm eine Master-Zone für den lokalen Rechner zu
erstellen, wechseln Sie in das Verzeichnis
/etc/namedb und
führen dort den folgenden Befehl aus:&prompt.root; sh make-localhostWenn es keine Probleme gab, sollte nun eine neue Datei
im Unterverzeichnis master vorhanden sein. Diese
heißt entweder localhost.rev
(für den lokalen Domain-Namen) oder
localhost-v6.rev (wenn Sie
IPv6 einsetzen). Als
Standardkonfigurationsdatei wird dabei
named.conf verwendet./etc/namedb/named.conf// $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 {
directory "/etc/namedb";
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; };
// In addition to the "forwarders" clause, you can force your name
// server to never initiate queries of its own, but always ask its
// forwarders only, by enabling the following line:
//
// forward only;
// If you've got a DNS server around at your upstream provider, enter
// its IP address here, and enable the line below. This will make you
// benefit from its cache, thus reduce overall DNS traffic in the
Internet.
/*
forwarders {
127.0.0.1;
};
*/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 Ihres
Internetproviders zuerst abgefragt, um von dessen
Cache zu profitieren. Wenn es sich um einen schnellen,
viel benutzten Nameserver handelt, kann dies zu einer
Geschwindigkeitssteigerung führen.127.0.0.1 funktioniert
hier nicht. Ändern Sie diese
Adresse in einen Nameserver Ihres Einwahlproviders. /*
* If there is a firewall between you and name servers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND versions 8 and later
* use a pseudo-random unprivileged UDP port by default.
*/
// query-source address * port 53;
};
// 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.
zone "." {
type hint;
file "named.root";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "master/localhost.rev";
};
// RFC 3152
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" {
type master;
file "master/localhost-v6.rev";
};
// 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
// primary.
//
// Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
// (This is named after the first bytes of the IP address, in reverse
// order, with ".IN-ADDR.ARPA" appended.)
//
// Before starting to set up a primary zone, make sure you fully
// understand how DNS and BIND works. There are sometimes
// non-obvious pitfalls. Setting up a slave zone is simpler.
//
// NB: Don't blindly enable the examples below. :-) Use actual names
// and addresses instead.
/* An example master zone
zone "example.net" {
type master;
file "master/example.net";
};
*/
/* An example dynamic zone
key "exampleorgkey" {
algorithm hmac-md5;
secret "sf87HJqjkqh8ac87a02lla==";
};
zone "example.org" {
type master;
allow-update {
key "exampleorgkey";
};
file "dynamic/example.org";
};
*/
/* Examples of forward and reverse slave zones
zone "example.com" {
type slave;
file "slave/example.com";
masters {
192.168.1.1;
};
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "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
example.org. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ; Minimum 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 @Beachten Sie, dass jeder mit einem .
endende Rechnername ein exakter Rechnername ist, während
sich alles ohne einen abschließenden .
auf den Ursprung bezieht. www steht daher
für
www.Ursprung.
In unserer fiktiven Zonendatei ist
example.org. der Ursprung, daher steht
www für
www.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
86400 ) ; Minimum TTL of 1 dayexample.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 unserem 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 localhost.example.org oder
192.168.1.1). Durch die Option
CNAME können Aliasnamen vergeben werden. Ein Rechnername
kann aber auch abwechselnd verschiedenen Rechnern zugewiesen
werden.MX-Eintrag
IN MX 10 mail.example.org.Die Option MX 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
3600 ) ; Minimum
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.Zwischenspeichernde (cachende) NameserverBINDZwischenspeichernde NameserverEin cachender Nameserver ist für keine Zonen
verantwortlich. Er stellt lediglich eigene Anfragen und
speichert deren Ergebnisse ab. Um einen solchen Nameserver
einzurichten, gehen Sie wie gewohnt vor, allerdings definieren
Sie keine Zonen.SicherheitObwohl BIND die am meisten verwendete (und kontrollierte)
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 FreeBSD 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;Offizielle ISC-Seite
zu BINDOffizielles Forum zu
ISC- BIND
BIND9 FAQsO'Reilly
DNS and BIND 5th EditionRFC1034
- Domain Names - Concepts and FacilitiesRFC1035
- Domain Names - Implementation and SpecificationMurrayStokelyBeigetragen von Der Apache HTTP-ServerWebserverkonfigurierenApacheÜberblickEinige der weltgrößten Internetauftritte laufen
unter &os;. Die Mehrzahl der Webserver im Internet nutzt
den Apache HTTP-Server. Die
Installationspakete für den
Apache sollten auf Ihrem
Installationsmedium vorhanden sein. Wenn Sie den
Apache noch nicht installiert haben,
können Sie dies jederzeit über den Port
www/apache13 oder
www/apache22 nachholen.Nachdem der Apache erfolgreich
installiert wurde, muss er noch konfiguriert werden.Dieser Abschnitt beschreibt die Version 1.3.X des
Apache HTTP-Servers, da diese Version
unter &os; am häufigsten verwendet wird.
Apache 2.X bringt zwar viele
Verbesserungen mit sich, wird hier aber nicht beschrieben.
Sollten Sie an Apache 2.X
interessiert sein, informieren Sie sich bitte auf
.KonfigurationApacheKonfigurationsdateiDer Apache HTTP-Server wird unter
&os; primär über die Datei
/usr/local/etc/apache/httpd.conf
konfiguriert. Bei dieser Datei handelt es sich um eine typische
&unix;-Konfigurationsdatei, in der Kommentarzeilen mit einem
#-Zeichen beginnen. Eine komplette
Beschreibung aller Optionen würde den Rahmen dieses
Handbuchs sprengen, daher beschreiben wir hier nur die am
häufigsten verwendeten Optionen.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 Verzeichnis
etc/apache
befinden.ServerAdmin you@your.addressDie E-Mail-Adresse, an die Mitteilungen über
Serverprobleme geschickt werden sollen. Diese Adresse
erscheint auf vom Server erzeugten Seiten, beispielsweise
auf Fehlerseiten.ServerName www.example.comÜber die Option ServerName
können Sie einen Rechnernamen festlegen, den Ihr
Server an die Clients sendet, wenn sich dieser von
tatsächlichen Rechnernamen unterscheidet (sie
könnten etwa www statt des richtigen
Rechnernamens verwenden).DocumentRoot "/usr/local/www/data"DocumentRoot: Das Verzeichnis, in
dem Sie Ihre Dokumente ablegen. In der Voreinstellung
befinden sich alle Seiten in diesem Verzeichnis, durch
symbolische Links oder Aliase lassen sich aber auch andere
Orte festlegen.Es ist empfehlenswert, eine Sicherungskopie Ihrer
Konfigurationsdatei anzulegen, bevor Sie Änderungen
durchführen. Nachdem Sie die Konfiguration beendet
haben, können Sie den
Apache starten.Den Apache betreibenApacheStarten oder BeendenDer Apache wird, im Gegensatz zu
vielen anderen Netzwerkservern, nicht vom
inetd-Super-Server verwaltet, sondern
wird als eigenständiger Server betrieben, um die
Leistung für eintreffende HTTP-Anfragen von den Clients
(also von Internetbrowsern) zu verbessern. Gestartet, beendet
oder neu gestartet wird der Server über einen
Shellskript-Wrapper. Um den Apache
erstmals zu starten, geben Sie einfach Folgendes ein:&prompt.root; /usr/local/sbin/apachectl startWenn Sie den Server beenden wollen, geben Sie Folgendes ein:&prompt.root; /usr/local/sbin/apachectl stopWenn Sie die Konfigurationsdatei verändern, müssen
Sie den Server neu starten:&prompt.root; /usr/local/sbin/apachectl restartUm den Apache ohne den Abbruch
bestehender Verbindungen neu zu starten, geben Sie Folgendes
ein:&prompt.root; /usr/local/sbin/apachectl gracefulDiese und weitere Optionen werden in
&man.apachectl.8; beschrieben.Um den Apache beim Systemstart
zu starten, fügen Sie folgende Zeile in
/etc/rc.conf ein:apache_enable="YES"Um Apache 2.2 zu starten,
fügen Sie hingegen folgende Zeile ein:apache22_enable="YES"Wenn Sie während des Systemstarts weitere Parameter an
den
Apache-httpd-Daemon
übergeben wollen, können Sie diese durch eine
zusätzliche Zeile in rc.conf
angeben:apache_flags=""Nachdem der Webserver gestartet ist, können Sie sich
Ihre Internetseite ansehen, indem Sie in Ihren Browser die
Adresse http://localhost/ eingeben. Die
vordefinierte Standardstartseite ist
/usr/local/www/data/index.html.Virtual HostingDer Apache unterstützt zwei
Formen des Virtual Hostings. Die
erste Möglichkeit bezeichnet man als namenbasiertes
virtuelles Hosting. Dabei wird der HTTP/1.1-Header der Clients
dazu verwendet, den Rechnernamen zu bestimmen. Dadurch wird es
möglich, mehrere Domains unter der gleichen IP-Adresse zu
betreiben.Damit der Apache namenbasierte
virtuelle Domains verwalten kann, fügen Sie die folgende
Zeile in httpd.conf ein:NameVirtualHost *Wenn Ihr Webserver
www.domain.tld heißt und Sie die
virtuelle Domain
www.someotherdomain.tld einrichten
wollen, 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>Ersetzen Sie dabei die Adressen sowie den Pfad zu den
Dokumenten durch Ihre eigenen Einstellungen.Ausführliche Informationen zum Einrichten von
virtuellen Domains finden Sie in der offiziellen
Apache-Dokumentation unter
.Häufig verwendete Apache-ModuleApacheModuleEs gibt viele verschiedene
Apache-Module, die den Server
um zusätzliche Funktionen erweitern. Die
FreeBSD-Ports-Sammlung ermöglicht es Ihnen, den
Apache gemeinsam mit einigen der
beliebtesten Zusatzmodule zu installieren.mod_sslWebserverVerschlüsselungSSLVerschlüsselungDas Modul mod_ssl verwendet die
OpenSSL-Bibliothek, um, unter Nutzung der Protokolle Secure
Sockets Layer (SSL v2/v3) sowie Transport Layer Security
(TLS v1) starke Verschlüsselung zu ermöglichen.
Durch dieses Modul können Sie ein signiertes Zertifikat
von einer Zertifizierungsstelle anfordern, damit Sie einen
sicheren Webserver unter &os; betreiben können.Wenn Sie den Apache 1.3.X noch
nicht installiert haben, können Sie über den
Port www/apache13-modssl eine
Apache-Version installieren, in die
mod_ssl als Modul einkompiliert
wurde. Bevorzugen Sie den
Apache 2.X, installieren Sie
stattdessen den Port
www/apache22, bei dem die
SSL-Unterstützung bereits in der Voreinstellung aktiviert
ist.SkriptsprachenFür die wichtigsten Skriptsprachen existieren Module,
die es erlauben, Apache-Module
nahezu vollständig in einer Skriptsprache zu programmieren.
Derartige Module dienen oft dazu, einen Sprach-Interpreter in
den Webserver einzubetten. Dadurch wird ein zusätzlicher
externer Interpreter überflüssig, was die Startzeit
von dynamischen Internetseiten deutlich verringert.Dynamische WebseitenWebserverdynamischIn den vergangenen Jahren haben immer mehr Unternehmen
das Internet als Mittel für die Steigerung ihrer
Einnahmen sowie für die Erhöhung ihrer Reichweite
entdeckt. Dadurch stieg auch die Nachfrage nach interaktiven
Internetinhalten. Neben einigen Unternehmen, darunter
µsoft;, die dafür proprietäre Produkte
entwickelt haben, hat auch die Open Source Community auf
diesen Umstand reagiert und unter anderem mit Django,
Ruby on Rails, mod_perl, und
mod_php Möglichkeiten zur
Generierung dynamischer Internetseiten geschaffen.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,
den Apache-Webserver sowie eine
SQL-Datenbank voraus. Für FreeBSD gibt es einen Port,
der alle Abhängigkeiten mit sinnvollen Optionen
konfiguriert und installiert.Django mit Apache2, mod_python3, und PostgreSQL
installieren&prompt.root; cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQLNachdem Django (sowie die abhängigen Pakete)
installiert ist, müssen Sie ein Projektverzeichnis
erstellen. Danach konfigurieren Sie Apache so, dass
der eingebettete Python-Interpreter spezifische URLs
Ihrer Seiten aufruft.Apache-Konfiguration für Django/mod_pythonSie müssen die Apache-Konfigurationsdatei
httpd.conf anpassen, damit Apache
Anfragen für bestimmte URLs an Ihre
Internet-Applikation übergibt:<Location "/">
SetHandler python-program
PythonPath "['/dir/to/your/django/packages/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonAutoReload On
PythonDebug On
</Location>Ruby on RailsRuby on RailsBei Ruby on Rails handelt
es sich um 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. Das
Framework kann über die Ports-Sammlung installiert
werden.&prompt.root; cd /usr/ports/www/rubygem-rails; make all install cleanmod_perlmod_perlPerlDie Kombination Apache/Perl
vereinigt die Vorteile der Programmiersprache Perl und des
Apache HTTP-Servers. Durch
das Modul mod_perl ist es
möglich, vollständig in Perl geschriebene
Apache-Module zu erzeugen.
Da der Perl-Interpreter in den Server eingebettet wird,
müssen Sie weder einen externen Interpreter noch
Perl zusätzlich aufrufen.mod_perl ist in verschiedenen
Versionen erhältlich. Bevor Sie
mod_perl einsetzen,denken Sie
bitte daran, dass mod_perl 1.0
nur mit Apache 1.3 und
mod_perl 2.0 nur mit
Apache 2.X zusammenarbeitet.
mod_perl 1.0 kann über
den Port www/mod_perl,
eine statisch kompilierte Version hingegen über den
Port www/apache13-modperl
installiert werden. Für die Installation von
mod_perl 2.0 schließlich
verwenden Sie den Port www/mod_perl2.TomRhodesGeschrieben von mod_phpmod_phpPHPBei PHP, dem Hypertext Preprocessor,
handelt es sich um eine vielseitig verwendbare Skriptsprache,
die besonders für die Internetprogrammierung 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, Internetprogrammierern
die rasche Erstellung von dynamisch erzeugten Internetseiten zu
ermöglichen.Damit Ihr System PHP5 unterstützt,
müssen Sie als Erstes den Apache
Webserver über den Port
lang/php5
installieren.Wenn Sie den Port lang/php5
das erste Mal installieren, werden die verfügbaren Optionen
(OPTIONS) automatisch angezeigt. Erscheint das
Konfigurationsmenü bei Ihnen nicht, so liegt dies daran,
dass Sie den Port lang/php5
schon einmal auf Ihrem System installiert hatten. Es ist aber
jederzeit möglich, dieses Menü aus dem
Ports-Verzeichnis heraus über folgenden Befehl erneut
aufzurufen:&prompt.root; make configIn diesem Konfigurationsmenü müssen Sie die
Option APACHE auswählen, damit
mod_php5 als ein vom
Apache-Webserver ladbares Modul
gebaut wird.Viele Seiten verwenden nach wie vor (beispielsweise wegen
der benötigten Kompatibilität zu bereits
vorhandenen Web-Applikationen) PHP4.
Ist dies bei Ihnen der Fall, so müssen Sie statt
mod_php5mod_php4 über den Port
lang/php4 installieren.
Der Port lang/php4
unterstützt viele der Konfigurations- und
Laufzeitoptionen von lang/php5.Dieser Port installiert und konfiguriert die Module, die
für die Unterstützung von dynamischen
PHP-Anwendungen benötigt werden.
Stellen Sie danach sicher, dass Ihre
/usr/local/etc/apache/httpd.conf die
folgenden Abschnitte enthält:LoadModule php5_module libexec/apache/libphp5.soAddModule mod_php5.c
<IfModule mod_php5.c>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>Nachdem dies erledigt ist, rufen Sie
apachectl auf, um das
PHP-Modul zu laden:&prompt.root; apachectl gracefulBei künftigen Upgrades von PHP
wird make config nicht mehr benötigt,
da die von Ihnen ursprünglich ausgewählten
Optionen (OPTIONS) vom
&os;-Ports-Framework automatisch gespeichert werden.Die PHP-Unterstützung von &os; ist
stark modular aufgebaut, daher verfügt eine
Basisinstallation nur über wenige Funktionen. Eine
Erweiterung um zusätzliche Funktionen ist allerdings sehr
einfach über den Port lang/php5-extensions möglich.
Der Port bietet Ihnen ein Auswahlmenü, über das Sie
verschiedene PHP-Erweiterungen installieren
können. Alternativ können Sie einzelne Erweiterungen
aber weiterhin direkt über den jeweiligen Port
installieren.Um beispielsweise die Unterstützung des
Datenbankservers MySQL in
PHP5 zu aktivieren, installieren Sie
den Port databases/php5-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.MurrayStokelyBeigetragen von FTP – File Transfer ProtocolFTP-ServerÜberblickDas 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. Daher sind Konfiguration und Betrieb
eines
FTP-Servers
unter FreeBSD relativ einfach.KonfigurationDer wichtigste Punkt ist hier die Entscheidung darüber,
welche Benutzer auf Ihren FTP-Server zugreifen dürfen.
Ein FreeBSD-System verfügt über diverse
Systembenutzerkonten, um einzelnen Daemonen den Zugriff auf
das System zu ermöglichen. Anonyme Benutzer sollten sich
allerdings nicht über diese Benutzerkonten anmelden
dürfen. Die Datei /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.Sie können den Zugriff für einige Benutzer
einschränken, ohne FTP komplett zu verbieten. Dazu
passen Sie /etc/ftpchroot entsprechend an.
Diese Datei enthält Benutzer und Gruppen sowie die für
sie geltenden FTP-Einschränkungen und wird in
&man.ftpchroot.5; ausführlich beschrieben.FTPanonymousWenn Sie einen anonymen FTP-Zugriff auf Ihren Server
ermöglichen wollen, müssen Sie den Benutzer
ftp auf Ihrem &os;-System anlegen.
Danach können sich Benutzer mit dem Benutzernamen
ftp oder anonymous
auf Ihrem FTP-Server anmelden. Das Passwort ist dabei
beliebig (allerdings wird dazu in der Regel eine E-Mail-Adresse
verwendet). Meldet sich ein anonymer Benutzer an, aktiviert
der FTP-Server &man.chroot.2;, um den Zugriff auf das
Heimatverzeichnis des Benutzers ftp
zu beschränken.Es gibt zwei Textdateien, deren Inhalt Sie bei der Anmeldung
an Ihrem FTP-Server anzeigen lassen können. 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 die Datei
~ftp/etc/ftpmotd angezeigt.Nachdem Sie den FTP-Server konfiguriert haben, müssen
Sie Ihn in /etc/inetd.conf aktivieren.
Dazu müssen Sie lediglich das Kommentarsymbol
# am Beginn der bereits vorhandenen
ftpd-Zeile entfernen:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -lNachdem Sie diese Änderung durchgeführt haben,
müssen Sie, wie in
beschrieben, die inetd-Konfiguration
neu einlesen. Lesen Sie bitte Abschnitt des Handbuchs für weitere
Informationen zur Aktivierung von
inetd auf Ihren System.Alternativ können Sie auch nur den
ftpd-Server starten. In diesem Fall
ist es ausreichend, die entsprechende Variable in der Datei
/etc/rc.conf zu setzen:ftpd_enable="YES"Nachdem Sie diese Variable gesetzt haben, wird künftig
beim Systemstart nur der FTP-Server gestartet. Alternativ
können Sie den Server auch manuell starten, indem Sie als
Benutzer root den folgenden Befehl
ausführen:&prompt.root; /etc/rc.d/ftpd startDanach können Sie sich auf Ihrem FTP-Server anmelden:&prompt.user; ftp localhostWartungsyslogLogdateienFTPDer ftpd-Daemon verwendet
&man.syslog.3;, um Protokolldateien zu erstellen. In der
Voreinstellung werden alle FTP betreffenden Nachrichten
in die Datei /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 Ihr Server zur
Verbreitung von illegaler oder nicht lizensierter Software
oder noch Schlimmeren missbraucht werden. Wollen Sie
anonyme Uploads dennoch erlauben, sollten Sie die
Zugriffsrechte so setzen, dass solche Dateien erst nach Ihrer
Zustimmung von anderen Benutzern heruntergeladen werden
können.MurrayStokelyBeigetragen von Mit Samba einen Datei- und Druckserver für
µsoft.windows;-Clients einrichtenSamba-ServerMicrosoft WindowsDateiserverWindows-ClientsDruckserverWindows-ClientsÜberblickSamba ist ein beliebtes
Open Source-Softwarepaket, das es Ihnen ermöglicht,
einen Datei- und Druckserver für
µsoft.windows;-Clients einzurichten. Clients können
sich dadurch mit einem FreeBSD-System verbinden und dessen
Speicherplatz oder dessen Drucker verwenden. Dies genauso, als
wenn es sich um lokale Drucker oder Festplatten handeln
würde.Samba sollte als Softwarepaket
auf Ihren Installationsmedien vorhanden sein. Wenn Sie
Samba noch nicht installiert haben,
können Sie dies jederzeit über den Port oder das
Paket net/samba3
nachholen.KonfigurationDie Standardkonfigurationsdatei von
Samba heißt
/usr/local/share/examples/samba/smb.conf.default.
Diese Datei muss nach /usr/local/etc/smb.conf
kopiert und angepasst werden, bevor
Samba verwendet werden kann.Die Datei smb.conf enthält
Laufzeitinformationen für
Samba, beispielsweise
Druckerdefinitionen oder
filesystem shares, also Bereiche
des Dateisystems, die Sie mit &windows;-Clients teilen wollen.
Die Konfiguration der Datei smb.conf
erfolgt webbasiert über das im
Samba-Paket enthaltene Programm
swat.Das Samba Web Administration Tool (SWAT) verwendenDas
Samba Web Administration Tool
(SWAT) wird als Daemon von inetd
aktiviert. Daher müssen Sie den Kommentar vor der
folgenden Zeile in /etc/inetd.conf
entfernen, bevor Sie swat zur
Konfiguration von Samba verwenden
können:swat stream tcp nowait/400 root /usr/local/sbin/swat swatWie bereits in
beschrieben, müssen Sie die
inetd-Konfiguration neu einlesen,
nachdem Sie diese Änderung durchgeführt haben.Nachdem swat in der Datei
inetd.conf aktiviert wurde, rufen Sie
in Ihrem Internetbrowser die Adresse
auf und melden sich
mit dem root-Benutzerkonto an.Nachdem Sie sich erfolgreich angemeldet haben, wird die
Hauptkonfigurationseite von Samba
geladen. Sie können nun die Dokumentation lesen, oder
durch einen Klick auf die
Globals-Karteikarte mit der Konfiguration
beginnen. Die Einstellungen, die Sie hier vornehmen
können, entsprechen denen des Abschnitts
[global] von
/usr/local/etc/smb.conf.Globale EinstellungenUnabhängig davon, ob Sie
swat verwenden, oder
/usr/local/etc/smb.conf direkt
editieren, sollten Sie zuerst folgende Einstellungen
anpassen:workgroupDer NT-Domänenname oder der Arbeitsgruppenname der
Rechner, die auf den Server Zugriff haben sollen.netbios nameNetBIOSLegt den 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 werden
soll, wenn mit net view oder
über andere Netzwerkprogramme Informationen
über den Server angefordert werden.Samba absichernZwei der wichtigsten Einstellungen in
/usr/local/etc/smb.conf betreffen
das zu verwendende Sicherheitsmodell sowie das
Backend-Passwortformat für die Benutzer der
Samba-Clients. Folgende Optionen sind dafür
verantwortlich:securityDie häufigsten Optionen sind
security = share und
security = user. Wenn Ihre Clients
Benutzernamen verwenden, die den Benutzernamen auf Ihrem
&os;-Rechner entsprechen, dann sollten Sie die
Einstellung user level
verwenden. Dies ist auch die Standardeinstellung.
Allerdings ist es dazu erforderlich, dass sich die
Clients auf Ihrem Rechner anmelden, bevor sie auf
gemeinsame Ressourcen zugreifen können.In der Einstellung
share level müssen
sich Clients nicht unter Verwendung eines gültigen
Logins auf Ihrem Rechner anmelden, bevor sie auf
gemeinsame Ressourcen zugreifen können. In
früheren Samba-Versionen
war dies die Standardeinstellung.passdb backendNIS+LDAPSQL databaseSamba erlaubt
verschiedene Backend-Authentifizierungsmodelle. Sie
können Clients durch LDAP, NIS+, eine SQL-Datenbank
oder eine Passwortdatei authentifizieren. In der
Voreinstellung wird smbpasswd
verwendet. Diese Methode wird im folgenden Abschnitt
näher beschrieben.Wenn Sie smbpasswd verwenden, müssen
Sie die Datei /usr/local/private/smbpasswd
erzeugen, damit Samba in der Lage
ist, Clients zu authentifizieren. Wenn Sie auf Ihrem
&unix;-Rechner vorhandenen Benutzern den Zugriff von einem
&windows;-Client aus ermöglichen wollen, verwenden Sie den
folgenden Befehl:&prompt.root; smbpasswd -a usernameSeit Samba 3.0.23c befinden
sich dessen Authentifizierungsdateien in der Voreinstellung
im Verzeichnis /usr/local/etc/samba. Als
Backend wird inzwischen tdbsam
empfohlen. Mit dem folgenden Befehl legen Sie neue
Benutzerkonten an:&prompt.root; pdbedit username
-
+
Ausführliche Informationen zur Konfiguration
von Samba finden Sie im
Official Samba HOWTO. Sie sollten aber bereits
nach dem Lesen dieses Abschnitts in der Lage sein,
Samba zu starten.Samba startenDer Port net/samba3
legt ein neues Startskript an, mit dem
Samba gesteuert (also etwa
gestartet oder beendet) werden kann. Um dieses Skript
zu aktivieren, fügen Sie folgende Zeile in
/etc/rc.conf ein:samba_enable="YES"Alternativ können Sie auch die folgenden
beiden Einträge verwenden:nmbd_enable="YES"smbd_enable="YES"Durch diese Einträge
Samba beim Systemstart
automatisch aktiviert.Danach können Sie Samba
jederzeit durch folgenden Befehl starten:&prompt.root; /usr/local/etc/rc.d/samba start
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.Weitere Informationen zu den rc-Startskripten finden
Sie im des Handbuchs.Samba verwendet drei Daemonen.
Beachten Sie, dass sowohl nmbd als
auch smbd durch das Skript
samba gestartet werden. Wenn Sie die
winbind name resolution services
in smb.conf aktiviert haben, wird
zusätzlich der winbindd-Daemon
gestartet.Sie können Samba jederzeit
durch den folgenden Befehl beenden:&prompt.root; /usr/local/etc/rc.d/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 umsehen.TomHukinsBeigetragen von Die Uhrzeit mit NTP synchronisierenNTPÜberblickDa die interne Uhrzeit eines Computers nie ganz exakt ist,
wurde mit NTP
(Network Time Protocol) eine
Möglichkeit geschaffen, die exakte Uhrzeit zu ermitteln
und festzulegen.Viele Internetdienste sind von einer exakten Uhrzeit
abhängig. Ein Webserver könnte beispielsweise die
Anforderung erhalten, eine Datei zu versenden, wenn sich diese
in einer bestimmten Zeitspanne geändert hat. In einem
lokalen Netzwerk ist es unbedingt notwendig, dass Rechner, die
Dateien von einem gemeinsamen Dateiserver beziehen, ihre
Uhrzeit synchronisieren, damit die Zeitstempel der Dateien
konstistent bleiben. Dienste wie &man.cron.8; führen
Befehle zu einem bestimmten Zeitpunkt aus. Ist die Uhrzeit
nicht korrekt, kann dies zu Problemen führen.NTPntpd&os; verwendet den &man.ntpd.8;-
NTP-Server,
um die genaue Uhrzeit von anderen
NTP-Servern
abzufragen, die eigene Systemzeit zu setzen, oder um diese
anderen Rechnern anzubieten.Einen passenden NTP-Server auswählenNTPServerwahlUm die Uhrzeit zu synchronisieren, müssen Sie sich mit
einem
NTP-Server
verbinden. Ihr Netzwerkadministrator oder Ihr Internetprovider
haben vielleicht schon einen NTP-Server eingerichtet. Lesen Sie
deren Dokumentation, um dies zu überprüfen. Es gibt
im Internet eine
Liste mit frei zugänglichen NTP-Servern, aus der
Sie sich einen in Ihrer Nähe gelegenen Server
auswählen können. Beachten Sie aber auf jeden Fall
die Nutzungsbedingungen des entsprechenden Servers, und fragen
Sie um Erlaubnis, wenn dies nötig ist.Die Auswahl von mehreren NTP-Servern kann sinnvoll sein,
wenn ein Server ausfällt oder falsche Zeiten liefert.
&man.ntpd.8; verwendet die Antworten anderer Server, um
zuverlässige Server zu bestimmen, die dann bevorzugt
abgefragt werden.NTP unter &os; einrichtenNTPKonfigurationNTP aktivierenntpdateWenn Sie Ihre Uhrzeit nur beim Systemstart
synchronisieren wollen, können Sie &man.ntpdate.8;
verwenden. Für Desktoprechner, die regelmäßig
neu gestartet werden und keine ständige Synchronisation
benötigen, ist dies akzeptabel. In allen anderen
Fällen sollten Sie jedoch &man.ntpd.8; verwenden.Die Ausführung von &man.ntpdate.8; während des
Systemstarts ist aber auch für Rechner, die &man.ntpd.8;
verwenden, sinnvoll. &man.ntpd.8; passt die Systemzeit nur
bei größeren Abweichungen an, während
&man.ntpdate.8; die Zeit immer synchronisiert, egal wie
groß die Differenz zwischen Systemzeit und korrekter
Zeit ist.Um &man.ntpdate.8; beim Systemstart zu aktivieren,
fügen Sie den Eintrag
ntpdate_enable="YES" in
/etc/rc.conf ein. Außerdem müssen
Sie alle Server, mit denen Sie sich synchronisieren wollen,
sowie alle an &man.ntpdate.8; zu übergebenden Optionen
in den ntpdate_flags angeben.NTPntp.confNTP einrichtenDie Konfiguration von NTP erfolgt über die Datei
/etc/ntp.conf, und wird in der
Hilfeseite &man.ntp.conf.5; beschrieben. Dazu ein
einfaches Beispiel:server ntplocal.example.com prefer
server timeserver.example.org
server ntp2a.example.net
driftfile /var/db/ntp.driftDie 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, wie dies hier bei
ntplocal.example.com der Fall
ist, wird dieser Server bevorzugt verwendet. Eine Antwort von
einem bevorzugten Server wird nur dann verworfen, wenn sie
signifikant von denen anderer Server abweicht, ansonsten wird
sie ohne Abfrage weiterer Server verwendet. Die Option
prefer wird gewöhnlich nur für
sehr zuverlässige und genaue Server verwendet, die
- über spezielle Hardware zur Zeitüberwachung
+ über eine spezielle Hardware zur Zeitüberwachung
verfügen.Die Option driftfile legt fest, in
welcher Datei die Abweichungen der Systemuhr protokolliert
werden. &man.ntpd.8; verwendet diese Datei, um die Systemzeit
automatisch anzupassen, selbst wenn kurzzeitig kein NTP-Server
zur Synchronisation verfügbar ist.Weiterhin legt die Option driftfile fest,
wo Informationen über frühere Antworten des von
Ihnen verwendeten NTP-Servers gespeichert werden sollen.
Diese Datei enthält NTP-interne Informationen, sie sollte
daher von anderen Prozessen nicht verändert werden.Den Zugang zu Ihrem NTP-Server beschränkenIn der Voreinstellung ist Ihr NTP-Server für alle
Rechner im Internet erreichbar. Über die Option
restrict in der Datei
/etc/ntp.conf können Sie den
Zugang zu Ihrem Server beschränken.Wenn Sie alle Rechner vom Zugriff auf Ihren NTP-Server
ausschließen wollen, fügen Sie folgende Zeile in
/etc/ntp.conf ein:restrict default ignoreDurch diesen Eintrag verhindern Sie den Zugriff Ihres
Servers auf alle auf Ihrem System konfigurierten Server.
Müssen Sie Ihren NTP-Server mit einem externen
NTP-Server synchronisieren, müssen Sie dies daher
dezidiert zulassen. Lesen Sie in diesem Fall die
Manualpage &man.ntp.conf.5;.Wenn Sie nur Rechnern Ihres eigenen Netzwerks die
Synchronisation mit Ihrem NTP-Server erlauben, gleichzeitig
aber verhindern wollen, dass diese den NTP-Server
konfigurieren oder als Server für andere Rechner dienen
können, fügen Sie folgende Zeile ein:restrict 192.168.1.0 mask 255.255.255.0 nomodify notrapBei 192.168.1.0 handelt es
sich um einen Rechner Ihres Netzwerks.
255.255.255.0 ist die
Netzmaske Ihres Netzwerks./etc/ntp.conf kann verschiedene
restrict-Optionen enthalten.
Weiteres erfahren Sie im Abschnitt
Access Control Support der
Hilfeseite &man.ntp.conf.5;.Den NTP-Server startenDamit der NTP-Server beim Systemstart automatisch gestartet
wird, fügen Sie den Eintrag
ntpd_enable="YES" in
/etc/rc.conf ein. Wenn Sie weitere
Argumente an &man.ntpd.8; übergeben wollen, passen Sie
die Option ntpd_flags in der Datei
/etc/rc.conf entsprechend an.Um den NTP-Server ohne einen Systemneustart zu starten,
rufen Sie ntpd mit den unter
ntpd_flags in
/etc/rc.conf festgelegten Parametern auf.
Hierzu ein Beispiel:&prompt.root; ntpd -p /var/run/ntpd.pidntpd mit einer Einwahlverbindung verwenden&man.ntpd.8; benötigt keine ständige
Internetverbindung. Wenn Sie sich ins Internet einwählen,
ist es sinnvoll, zu verhindern, dass NTP-Verkehr eine Verbindung
aufbauen oder aufrechterhalten kann. Wenn Sie user-PPP
verwenden, können Sie dies in den
filter-Direktiven von
/etc/ppp/ppp.conf festlegen. Sehen Sie
sich dazu das folgende Beispiel ein: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 Ihren Rechner nicht
erreichen werden.Weitere InformationenWeiterführende Dokumentation (im HTML-Format)
zum NTP-Server finden Sie unter
/usr/share/doc/ntp/.
-
- Tom
- Rhodes
- Contributed by
-
+
+ Tom
+ Rhodes
+ Beigetragen von
+
-
- Benedict
- Reuschling
- Übersetzt von
-
+
+ Benedict
+ Reuschling
+ Übersetzt von
+
-
+
Protokollierung von anderen Hosts mittels
syslogd
-
+
Die Interaktion mit Systemprotokollen ist ein wichtiger Aspekt,
sowohl was Sicherheit als auch Systemadministration anbelangt.
Überwachen der Protokolldateien von mehreren Hosts kann sehr
unhandlich werden, wenn diese Hosts über mittlere oder grosse
Netze verteilt sind oder wenn sie Teile von unterschiedlichen Netzwerken
sind. In diesen Fällen macht die Konfiguration der Protokollierung
von anderen Hosts diesen Prozess wesentlich komfortabler.
-
+
Die zentralisierte Protokollierung auf einen bestimmten
Protokollierungshost kann manche der administrativen Belastungen der
Protokolldateiadministration reduzieren. Protokolldateiaggregation,
-zusammenführung und -rotation kann an einer zentralen Stelle mit
den &os;-eigenen Werkzeugen wie &man.syslogd.8; und &man.newsyslog.8;
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. In realen
Konfigurationen benötigen beide Hosts passende Vorwärts- und
Umkehr-Einträge im DNS oder
in /etc/hosts. Andernfalls werden die Daten vom
Server abgelehnt.
-
+
Konfiguration des Protokollierungs-Servers
-
- Protokollierungs-Server sind Maschinen, die konfiguriert sind,
+
+ Protokollierungs-Server sind Maschinen, die konfiguriert sind,
Protokollinformationen von anderen Hosts zu akzeptieren. In den
meisten Fällen wird dies zur Vereinfachung der Konfiguration
eingesetzt, in anderen Fällen ist es einfach nur ein Schritt in
eine bessere Verwaltung. Was auch immer die Gründe sind, ein paar
Anforderungen müssen vorher erfüllt sein.
-
+
Ein richtig konfigurierter Protokollierungs-Server muss minimal die
folgenden Anforderungen erfüllen:
-
+
Das Regelwerk der Firewall muss UDP auf
Port 514 sowohl auf Client- als auch auf Serverseite
erlauben;
-
+
syslogd wurde so konfiguriert, dass es Nachrichten von anderen
Clientrechnern akzeptiert;
-
+
- Der syslogd-Server und all Clientrechner müssen
+ Der syslogd-Server und alle Clientrechner müssen
gültige Einträge für sowohl Vorwärts- als auch
- Umkehr-DNS besitzen, oder in
+ Umkehr-DNS besitzen, oder in
/etc/hosts korrekt eingetragen sein.
-
-
- Um den Protokollierungs-Server zu konfigurieren, muss der Client in
- /etc/syslog.conf eingetragen sein und der
- Verbindungsweg der Protokollierung muss spezifiziert sein:
-
- +logclient.example.com *.* /var/log/logclient.log
-
-
- Mehr Informationen über die verschiedenen unterstützten
- und verfügbaren Verbindungswege kann in
- der &man.syslog.conf.5; Manualpage nachgelesen werden.
-
-
- Einmal hinzugefügt, werden alle Nachrichten über
- den Verbindungsweg in die zuvor angegebene Datei,
- /var/log/logclient.log protokolliert.
-
- Der Server benötigt ausserdem die folgenden Zeilen in der
- /etc/rc.conf:
-
- syslogd_enable="YES"
+
+
+ Um den Protokollierungs-Server zu konfigurieren, muss der Client in
+ /etc/syslog.conf eingetragen sein und der
+ Verbindungsweg der Protokollierung muss spezifiziert sein:
+
+ +logclient.example.com
+*.* /var/log/logclient.log
+
+
+ Weitere Informationen zu den verschiedenen unterstützten
+ und verfügbaren Verbindungswegen finden
+ sich in der Manualpage &man.syslog.conf.5;.
+
+
+ Einmal hinzugefügt, werden alle Nachrichten über
+ den Verbindungsweg in die zuvor angegebene Datei,
+ /var/log/logclient.log protokolliert.
+
+ Der Server benötigt ausserdem die folgenden Zeilen in der
+ /etc/rc.conf:
+
+ syslogd_enable="YES"
syslogd_flags="-a logclient.example.com -vv"
- Die erste Option aktiviert den syslogd-Dienst
- während des Systemstarts und die zweite Option erlaubt es, Daten
- von dem spezifizierten Client auf diesem Server zu akzeptieren. Die
- Verwendung von im letzten Teil erhöht die
- Anzahl von Protokollnachrichten. Dies ist sehr hilfreich für die
- Feineinstellung der Verbindungspfade, da Administratoren auf diese Weise
- erkennen, welche Arten von Nachrichten unter welchen Einstellungen
- 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. Lesen Sie dazu die
- &man.syslog.3;-Manualpage, um eine vollständige Liste von
- möglichen Optionen zu erhalten.
-
- Zum Schluss muss noch die Protokolldatei erstellt werden. Auf
- welche Weise dies geschieht ist nicht wichtig, aber in den meisten
- Fällen funktioniert &man.touch.1; grossartig, wie hier
- dargestellt:
-
- &prompt.root; touch /var/log/logclient.log
-
- Zu diesem Zeitpunkt sollte der syslogd-Dienst
- neu gestartet und überprüft werden:
-
- &prompt.root; /etc/rc.d/syslogd restart
+ Die erste Option aktiviert den syslogd-Dienst
+ während des Systemstarts und die zweite Option erlaubt es, Daten
+ von dem spezifizierten Client auf diesem Server zu akzeptieren. Die
+ Verwendung von im letzten Teil erhöht die
+ Anzahl von Protokollnachrichten. Dies ist sehr hilfreich für die
+ Feineinstellung der Verbindungspfade, da Administratoren auf diese Weise
+ erkennen, welche Arten von Nachrichten unter welchen Einstellungen
+ 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. Lesen Sie dazu die
+ &man.syslog.3;-Manualpage, um eine vollständige Liste von
+ möglichen Optionen zu erhalten.
+
+ Zum Schluss muss noch die Protokolldatei erstellt werden. Auf
+ welche Weise dies geschieht ist nicht wichtig, aber in den meisten
+ Fällen funktioniert &man.touch.1; grossartig, wie hier
+ dargestellt:
+
+ &prompt.root; touch /var/log/logclient.log
+
+ Zu diesem Zeitpunkt sollte der syslogd-Dienst
+ neu gestartet und überprüft werden:
+
+ &prompt.root; /etc/rc.d/syslogd restart
&prompt.root; pgrep syslog
-
- Wenn eine PID zurückgegeben wird, ist der
- Server erfolgreich neu gestartet werden und die Clientkonfiguration kann
- beginnen. Wenn der Server nicht neu gestartet wurde, suchen Sie im
- /var/log/messages-Protokoll nach den
- Gründen.
-
-
-
- Konfiguration des Protokollierungs-Clients
-
- Ein Protokollierungs-Clients ist eine Maschine, die
- Protokollinformationen an einen Protokollierungs-Server sendet,
- zusätzlich zu ihren lokalen Kopien.
-
- Ähnlich wie Protokollierungs-Server müssen Clients auch
- ein paar minimale Anforderungen erfüllen:
-
-
-
- &man.syslogd.8; muss so konfiguriert sein, dass es Nachrichten
- eines bestimmten Typs an einen Protokollierungs-Server schickt,
- welcher diese akzeptieren muss;
-
-
-
- Die Firewall muss UDP-Pakete durch Port 514
- erlauben;
-
-
-
- Sowohl Vorwärts- als auch Umkehr-DNS
- muss konfiguriert sein oder es müssen passende Einträge in
- /etc/hosts vorhanden sein.
-
-
-
- Die Clientkonfiguration ist ein bisschen entspannter, verglichen mit
- der des Servers. Der Clientrechner muss ebenfalls die folgenden
- Einträge in der /etc/rc.conf besitzen:
-
- syslogd_enable="YES"
+
+ Wenn 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 im
+ /var/log/messages-Protokoll nach eventuellen
+ Fehlermeldungen.
+
+
+
+ Konfiguration des Protokollierungs-Clients
+
+ Ein Protokollierungs-Client ist eine Maschine, die
+ Protokollinformationen an einen Protokollierungs-Server sendet,
+ zusätzlich zu ihren lokalen Kopien.
+
+ Ähnlich wie Protokollierungs-Server müssen Clients auch
+ ein paar minimale Anforderungen erfüllen:
+
+
+
+ &man.syslogd.8; muss so konfiguriert sein, dass es Nachrichten
+ eines bestimmten Typs an einen Protokollierungs-Server schickt,
+ welcher diese akzeptieren muss;
+
+
+
+ Die Firewall muss UDP-Pakete durch Port 514
+ erlauben;
+
+
+
+ Sowohl Vorwärts- als auch Umkehr-DNS
+ muss konfiguriert sein oder es müssen passende Einträge in
+ /etc/hosts vorhanden sein.
+
+
+
+ Die Clientkonfiguration ist ein bisschen entspannter, verglichen mit
+ der des Servers. Der Clientrechner muss ebenfalls die folgenden
+ Einträge in der /etc/rc.conf besitzen:
+
+ syslogd_enable="YES"
syslogd_flags="-s -vv"
-
- Wie zuvor aktivieren diese Einträge den
- syslogd-Dienst während des Systemstarts und
- erhöhen die Anzahl der Protokollnachrichten. Die Option
- verhindert, dass dieser Client Protokolle von anderen
- Hosts akzeptiert.
-
- Verbindungspfade beschreiben den Systemteil, für den eine
- Nachricht generiert wird. Beispielsweise sind ftp und
- ipfw beides Verbindungspfade. Wenn
- Protokollnachrichten für diese beiden Dienste generiert werden,
- sind diese beiden Werkzeuge normalerweise in jeder Protokollnachricht
- enthalten. Verbindungspfade sind mit einer Priorität oder Stufe
- verbunden, die dazu verwendet wird, zu markieren, wie wichtig eine
- Nachricht im Protokoll ist. Die Häftigste ist
- warning und info. Bitte lesen Sie
- die &man.syslog.3; Manualpage, um eine komplette Liste der
- verfügbaren Verbindungspfade und Prioritäten zu
- erhalten.
-
- Der Protokollierungs-Server muss in der
- /etc/syslog.conf des Clients eingetragen sein. In
- diesem Beispiel wird das @-Symbol benutzt, um
- Protokolldaten an einen anderen Server zu senden. Der Eintrag sieht wie
- folgt aus:
-
- *.* @logserv.example.com
-
- Einmal hinzugefügt, muss syslogd neu
- gestartet werden, damit diese Änderungen wirksam werden:
-
- &prompt.root; /etc/rc.d/syslogd restart
-
- Um 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 Protokollierungs-Server
-
- In bestimmten Fällen ist die Fehlerbehebung notwendig, wenn
- Nachrichten nicht auf dem Protokollierungs-Server empfangen werden. Es
- gibt mehrere Gründe dafür, jedoch treten am häufigsten
- Probleme bei der Netzwerkverbindung und beim DNS auf.
- Um diese Fälle zu überprüfen, stellen Sie sicher, dass
- beide Hosts in der Lage sind, sich gegenseitig über den Hostnamen zu
- erreichen, der in /etc/rc.conf angegeben ist. Wenn
- das funktioniert, ist möglicherweise eine Änderung der
- syslogd_flags-Option in
- /etc/rc.conf notwendig.
-
- Im folgenden Beispiel ist /var/log/logclient.log
- leer und die /var/log/messages-Dateien enthalten
- keine Gründe für den Fehler. Um die Fehlerausgabe zu
- erhöhen, ändern Sie die syslogd_flags-Option
- so, dass diese wie in dem folgenden Beispiel aussieht und initiieren Sie
- dann einen Neustart:
-
- syslogd_flags="-d -a logclien.example.com -vv"
-
- &prompt.root; /etc/rc.d/syslogd restart
-
- Fehlerausgabedaten ähnlich der Folgenden werden sofort nach dem
- Neustart auf dem Bildschirm erscheinen:
-
- logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
+
+ Wie zuvor aktivieren diese Einträge den
+ syslogd-Dienst während des Systemstarts und
+ erhöhen die Anzahl der Protokollnachrichten. Die Option
+ verhindert, dass dieser Client Protokolle von anderen
+ Hosts akzeptiert.
+
+ Verbindungspfade beschreiben den Systemteil, für den eine
+ Nachricht generiert wird. Beispielsweise sind ftp und
+ ipfw beides Verbindungspfade. Wenn
+ Protokollnachrichten für diese beiden Dienste generiert werden,
+ sind diese beiden Werkzeuge normalerweise in jeder Protokollnachricht
+ enthalten. Verbindungspfade sind mit einer Priorität oder Stufe
+ verbunden, die dazu verwendet wird, zu markieren, wie wichtig eine
+ Nachricht im Protokoll ist. Die Häftigste ist
+ warning und info. Bitte lesen Sie
+ die &man.syslog.3; Manualpage, um eine komplette Liste der
+ verfügbaren Verbindungspfade und Prioritäten zu
+ erhalten.
+
+ Der Protokollierungs-Server muss in der
+ /etc/syslog.conf des Clients eingetragen sein. In
+ diesem Beispiel wird das @-Symbol benutzt, um
+ Protokolldaten an einen anderen Server zu senden. Der Eintrag sieht wie
+ folgt aus:
+
+ *.* @logserv.example.com
+
+ Einmal hinzugefügt, muss syslogd neu
+ gestartet werden, damit diese Änderungen wirksam werden:
+
+ &prompt.root; /etc/rc.d/syslogd restart
+
+ Um 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 Protokollierungs-Server
+
+ In bestimmten Fällen ist die Fehlerbehebung notwendig, wenn
+ Nachrichten nicht auf dem Protokollierungs-Server empfangen werden. Es
+ gibt mehrere Gründe dafür, jedoch treten am häufigsten
+ Probleme bei der Netzwerkverbindung und beim DNS auf.
+ Um diese Fälle zu überprüfen, stellen Sie sicher, dass
+ beide Hosts in der Lage sind, sich gegenseitig über den Hostnamen zu
+ erreichen, der in /etc/rc.conf angegeben ist. Wenn
+ das funktioniert, ist möglicherweise eine Änderung der
+ syslogd_flags-Option in
+ /etc/rc.conf notwendig.
+
+ Im folgenden Beispiel ist /var/log/logclient.log
+ leer und die /var/log/messages-Dateien enthalten
+ keine Gründe für den Fehler. Um die Fehlerausgabe zu
+ erhöhen, ändern Sie die syslogd_flags-Option
+ so, dass diese wie in dem folgenden Beispiel aussieht und initiieren Sie
+ dann einen Neustart:
+
+ syslogd_flags="-d -a logclien.example.com -vv"
+
+ &prompt.root; /etc/rc.d/syslogd restart
+
+ Fehlerausgabedaten ähnlich der Folgenden werden sofort nach dem
+ Neustart auf dem Bildschirm 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.
-
- Es scheint klar zu sein, dass die Nachrichten aufgrund eines
- fehlerhaften Namens abgewiesen werden. Nach genauer Untersuchung der
- Konfiguration, kommt ein Tippfehler in der folgenden Zeile der
- /etc/rc.conf als Fehler in Betracht:
-
- syslogd_flags="-d -a logclien.example.com -vv"
-
- Die Zeile sollte logclient und nicht
- logclien enthalten. Nachdem die entsprechenden
- Veränderungen gemacht wurden, ist ein Neustart fällig, mit den
- entsprechenden Ergebnissen:
-
- &prompt.root; /etc/rc.d/syslogd restart
+
+ Es scheint klar zu sein, dass die Nachrichten aufgrund eines
+ fehlerhaften Namens abgewiesen werden. Nach genauer Untersuchung der
+ Konfiguration, kommt ein Tippfehler in der folgenden Zeile der
+ /etc/rc.conf als Fehler in Betracht:
+
+ syslogd_flags="-d -a logclien.example.com -vv"
+
+ Die Zeile sollte logclient und nicht
+ logclien enthalten. Nachdem die entsprechenden
+ Veränderungen gemacht wurden, ist ein Neustart fällig, mit den
+ entsprechenden Ergebnissen:
+
+ &prompt.root; /etc/rc.d/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/messages
-
- Zu diesem Zeitpunkt werden die Nachrichten korrekt empfangen und in
- die richtige Datei geschrieben.
-
-
-
- Sicherheitsbedenken
-
- Wie mit jedem Netzwerkdienst, müssen Sicherheitsanforderungen in
- Betracht gezogen werden, bevor diese Konfiguration umgesetzt 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 Daten ü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. In diesen Fällen ist es absolut
- notwendig, die richtigen Berechtigungen auf diesen Dateien zu setzen.
- Das &man.newsyslog.8;-Werkzeug unterstützt das Setzen von
- Berechtigungen auf gerade erstellte oder rotierte Protokolldateien.
- Protokolldateien mit Zugriffsmodus 600 sollten
- verhindern, dass lokale Benutzer darin herumschnüffeln.
+
+ Zu diesem Zeitpunkt werden die Nachrichten korrekt empfangen und in
+ die richtige Datei geschrieben.
+
+
+
+ Sicherheitsbedenken
+
+ Wie mit jedem Netzwerkdienst, müssen Sicherheitsanforderungen in
+ Betracht gezogen werden, bevor diese Konfiguration umgesetzt 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 Daten ü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. In diesen Fällen ist es absolut
+ notwendig, die richtigen Berechtigungen auf diesen Dateien zu setzen.
+ Das &man.newsyslog.8;-Werkzeug unterstützt das Setzen von
+ Berechtigungen auf gerade erstellte oder rotierte Protokolldateien.
+ Protokolldateien mit Zugriffsmodus 600 sollten
+ verhindern, dass lokale Benutzer darin herumschnüffeln.