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 485c42fd7d..56ff96d4df 100644
--- a/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
@@ -1,4724 +1,4853 @@
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 unter &os; 5.X einrichten 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
Default-RouteStandardrouteDie 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).StandardroutenDefault-RouteStandardrouteWenn 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 (Default-Route). 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.Selbst wenn FreeBSD auf diese Art konfiguriert wurde,
entspricht es den Standardanforderungen an Internet-Router
nicht vollständig. Für den
normalen Gebrauch kommt es den Standards
aber nahe genug.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-Routingoptions MROUTING&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;.EricAndersonGeschrieben von Drahtlose Netzwerkedrahtlose Netzwerke802.11drahtlose NetzwerkeEinführungEs kann sehr nützlich sein, einen Computer zu
verwenden, ohne sich die ganze Zeit mit einem Netzwerkkabel
herumärgern zu müssen. FreeBSD kann auf drahtlose
Netzwerke (wireless LAN)
zugreifen und sogar als Zugangspunkt
(access point) für
drahtlose Netzwerke verwendet werden.Betriebsmodi drahtloser GeräteDrahtlose 802.11-Geräte können in zwei Modi
konfiguriert werden: BSS und IBSS.BSS-ModusÜblicherweise wird der BSS-Modus, der auch
Infrastruktur-Modus genannt wird, verwendet. In diesem Modus
sind die Zugangspunkte (access
points) mit einem Kabel-Netzwerk verbunden.
Jedes drahtlose Netzwerk besitzt einen Namen, der als die SSID
des Netzwerks bezeichnet wird.Drahtlose Clients benutzen ein im IEEE-802.11-Standard
beschriebenes Protokoll, um sich mit den Zugangspunkten zu
verbinden. Durch die Angabe einer SSID kann sich der Client
das Netzwerk, mit dem er sich verbinden will, aussuchen. Gibt
der Client keine SSID an, so wird er mit einem beliebigen
Netzwerk verbunden.IBSS-ModusDer IBSS-Modus, der auch ad-hoc-Modus genannt wird, wurde
für Punkt-zu-Punkt-Verbindungen entworfen. Es gibt zwei
Modi: Den IBSS-Modus, auch ad-hoc- oder IEEE-ad-hoc-Modus
(definiert im IEEE-802.11-Standard) sowie den demo-ad-hoc-Modus
oder Lucent-adhoc-Modus (der manchmal ebenfalls als
ad-hoc-Modus bezeichnet wird). Der zweite Modus stammt aus der
Zeit vor IEEE 802.11 und sollte nur noch mit alten
Installationen verwendet werden. Im folgenden wird keiner der
ad-hoc-Modi behandelt.Infrastruktur-ModusZugangspunkteZugangspunkte sind drahtlose Netzwerkgeräte, die es
einem oder mehreren Clients ermöglichen, diesen als
einen zentralen Verteiler (Hub) zu benutzen. Wenn ein
Zugangspunkt verwendet wird, kommunizieren alle Clients
über diesen Zugangspunkt. Oft werden mehrere
Zugangspunkte kombiniert, um ein ganzes Gebiet, wie ein
Haus, ein Unternehmen oder einen Park mit einem drahtlosen
Netzwerk zu versorgen.Üblicherweise haben Zugangspunkte mehrere
Netzwerkverbindungen: Die drahtlose Karte, sowie eine oder
mehrere Ethernetkarten, über die die Verbindung mit dem
restlichen Netzwerk hergestellt wird.Sie können einen vorkonfigurierten Zugangspunkt
kaufen, oder Sie können sich unter Verwendung von
FreeBSD und einer unterstützten drahtlosen Karte einen
eigenen bauen. Es gibt verschiedene Hersteller, die sowohl
Zugangspunkte als auch drahtlose Karten mit verschiedensten
Eigenschaften vertreiben.Einen FreeBSD-Zugangspunkt installierendrahtlose NetzwerkeZugangspunkteVoraussetzungenUm einen drahtlosen Zugangspunkt unter FreeBSD
einzurichten, müssen Sie über eine drahtlose
Karte verfügen. Zurzeit werden dafür von
FreeBSD nur Karten mit Prism-Chipsatz unterstützt.
Zusätzlich benötigen Sie eine von FreeBSD
unterstützte Ethernetkarte (diese sollte nicht schwer
zu finden sein, da FreeBSD eine Vielzahl von verschiedenen
Karten unterstützt). Für die weiteren
Erläuterungen nehmen wir an, dass Sie den ganzen
Verkehr zwischen dem drahtlosen Gerät und dem an die
Ethernetkarte angeschlossenen Kabel-Netzwerk über
die &man.bridge.4;-Funktion realisieren wollen.Die hostap-Funktion, mit der FreeBSD Zugangspunkte
implementiert, läuft am besten mit bestimmten
Firmware-Versionen. Prism 2-Karten sollten die
Firmwareversion 1.3.4 oder neuer verwenden.
Prism 2.5- und Prism 3-Karten sollten die
Firmwareversion 1.4.9 verwenden. Es kann sein,
dass auch ältere Versionen funktionieren. Zurzeit ist
es nur mit &windows;-Werkzeugen der Hersteller möglich,
die Firmware zu aktualisieren.EinrichtungStellen Sie als Erstes sicher, dass Ihr System die
drahtlose Karte erkennt:&prompt.root; ifconfig -a
wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
ether 00:09:2d:2d:c9:50
media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
status: no carrier
ssid ""
stationname "FreeBSD Wireless node"
channel 10 authmode OPEN powersavemode OFF powersavesleep 100
wepmode OFF weptxkey 1Kümmern Sie sich jetzt noch nicht um die Details,
sondern stellen Sie nur sicher, dass ihre drahtlose Karte
überhaupt erkannt und angezeigt wird. Wenn es sich
um eine PC Card handelt, die überhaupt nicht
erkannt wird, sollten Sie &man.pccardc.8; sowie
&man.pccardd.8; lesen.Danach müssen Sie ein Modul laden, um die
Bridge-Funktion von FreeBSD für den Zugangspunkt
vorzubereiten. Um das Modul &man.bridge.4; zu laden,
geben Sie Folgendes ein:&prompt.root; kldload bridgeDabei sollten beim Laden des Moduls keine
Fehlermeldungen auftreten. Geschieht dies doch, kann es
sein, dass Sie die Bridge-Funktion (&man.bridge.4;)
in Ihren Kernel kompilieren müssen. Der Abschnitt
LAN-Kopplung mit einer
Bridge dieses Handbuchs sollte Ihnen dabei
behilflich sein.Wenn die Bridge-Funktion aktiviert ist,
müssen wir FreeBSD mitteilen, welche Schnittstellen
über die Bridge verbunden werden sollen. Dazu
verwenden wir &man.sysctl.8;:&prompt.root; sysctl net.link.ether.bridge=1
&prompt.root; sysctl net.link.ether.bridge_cfg="wi0 xl0"
&prompt.root; sysctl net.inet.ip.forwarding=1Ab &os; 5.2-RELEASE müssen Sie
Folgendes eingeben:&prompt.root; sysctl net.link.ether.bridge.enable=1
&prompt.root; sysctl net.link.ether.bridge.config="wi0,xl0"
&prompt.root; sysctl net.inet.ip.forwarding=1Nun ist es an der Zeit, die drahtlose Karte zu
installieren. Der folgende Befehl konfiguriert einen
Zugangspunkt:&prompt.root; ifconfig wi0 ssid my_net channel 11 media DS/11Mbps mediaopt hostap up stationname "FreeBSD AP"Durch diese Zeile aktiviert &man.ifconfig.8; das
Gerät wi0, setzt die SSID auf
my_net sowie den Namen des
Zugangspunkts auf FreeBSD AP.
Mit wird die Karte in den
11 Mbps-Modus versetzt. Diese Option ist nötig,
damit -Optionen wirksam werden.
Durch wird die
Schnittstelle als Zugangspunkt konfiguriert. Der zu
benutzende 802.11b-Kanal wird durch
festgelegt. Weitere
Informationen zu gültigen Kanaloptionen finden Sie in
&man.wicontrol.8;.Nun sollten Sie über einen voll
funktionsfähigen und laufenden Zugangspunkt
verfügen. Weitere Informationen finden Sie
in den Hilfeseiten &man.wicontrol.8;, &man.ifconfig.8;
und &man.wi.4;.Außerdem ist es empfehlenswert, den folgenden
Abschnitt zu lesen, um sich über die Sicherung und
Verschlüsselung von Zugangspunkten zu
informieren.StatusinformationenWenn der Zugangspunkt eingerichtet ist und läuft,
können Sie die verbundenen Clients mit dem nachstehenden
Kommando abfragen:&prompt.root; wicontrol -l
1 station:
00:09:b7:7b:9d:16 asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15Das Beispiel zeigt eine verbundene Station und die
dazugehörenden Verbindungsparameter. Die angegebene
Signalstärke ist allerdings mit Vorsicht zu
genießen, da die Umrechnung in dBm oder andere
Einheiten von der eingesetzten Firmware-Version
abhängig ist.ClientsEin drahtloser Client ist ein System, das direkt auf
einen Zugangspunkt oder einen anderen Client
zugreift.Üblicherweise haben drahtlose Clients nur ein
Netzwerkgerät, die drahtlose Netzkarte.Es gibt verschiedene Möglichkeiten, einen
drahtlosen Client zu konfigurieren. Diese hängen von
den verschiedenen drahtlosen Betriebsmodi ab. Man
unterscheidet vor allem zwischen BSS (Infrastrukturmodus,
erfordert einen Zugangspunkt) und IBSS (ad-hoc,
Peer-to-Peer-Modus, zwischen zwei Clients, ohne
Zugangspunkt). In unserem Beispiel verwenden wir den weiter
verbreiteten BSS-Modus, um einen Zugangspunkt anzusprechen.
VoraussetzungenEs gibt nur eine Voraussetzung, um FreeBSD als
drahtlosen Client betreiben zu können: Sie brauchen
eine von FreeBSD unterstützte drahtlose Karte.Einen drahtlosen FreeBSD-Client einrichtenSie müssen ein paar Dinge über das drahtlose
Netzwerk wissen, mit dem Sie sich verbinden wollen, bevor
Sie starten können. In unserem Beispiel verbinden
wir uns mit einem Netzwerk, das den Namen
my_net hat, und bei dem die
Verschlüsselung deaktiviert ist.In unserem Beispiel verwenden wir keine
Verschlüsselung. Dies ist eine gefährliche
Situation. Im nächsten Abschnitt werden Sie daher
lernen, wie man die Verschlüsselung aktiviert, warum
es wichtig ist, dies zu tun, und warum einige
Verschlüsselungstechniken Sie trotzdem nicht
vollständig schützen.Stellen Sie sicher, dass Ihre Karte von FreeBSD
erkannt wird:&prompt.root; ifconfig -a
wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
ether 00:09:2d:2d:c9:50
media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
status: no carrier
ssid ""
stationname "FreeBSD Wireless node"
channel 10 authmode OPEN powersavemode OFF powersavesleep 100
wepmode OFF weptxkey 1Nun können wir die Einstellungen der Karte unserem
Netzwerk anpassen:&prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_netErsetzen Sie 192.168.0.20 und 255.255.255.0 durch eine
gültige IP-Adresse und Netzmaske ihres
Kabel-Netzwerks. Bedenken Sie außerdem, dass unser
Zugangspunkt als Bridge zwischen dem drahtlosen und
dem Kabel-Netzwerk fungiert. Für die anderen
Rechner Ihres Netzwerks befinden Sie sich, genauso wie
diese, im gleichen Kabel-Netzwerk, obwohl Sie zum
drahtlosen Netzwerk gehören.Nachdem Sie dies erledigt haben, sollten Sie andere
Rechner (Hosts) im Kabel-Netzwerk an&man.ping.8;en
können, genauso, wie wenn Sie über eine
Standardkabelverbindung mit ihnen verbunden
wären.Wenn Probleme mit Ihrer drahtlosen Verbindung
auftreten, stellen Sie sicher, dass Sie mit dem
Zugangspunkt verbunden sind:&prompt.root; ifconfig wi0sollte einige Informationen ausgeben und Sie sollten
Folgendes sehen:status: associatedWird associated nicht angezeigt, sind
Sie entweder außerhalb der Reichweite des
Zugangspunktes, haben die Verschlüsselung deaktiviert,
oder Sie haben ein anderes Konfigurationsproblem.Verschlüsselungdrahtlose NetzwerkeVerschlüsselungVerschlüsselung ist in einem drahtlosen Netzwerk
wichtig, da Sie das Netzwerk nicht länger in einem
geschützten Bereich betreiben können. Ihre Daten
verbreiten sich in der ganzen Nachbarschaft, das heißt
jeder, der es will, kann Ihre Daten lesen. Deshalb gibt es
die Verschlüsselung. Durch die Verschlüsselung der
durch die Luft versendeten Daten machen Sie es einem Dritten
sehr viel schwerer, Ihre Daten abzufangen oder auf diese
zuzugreifen.Die gebräuchlichsten Methoden, um Daten zwischen
Ihrem Client und dem Zugangspunkt zu verschlüsseln,
sind WEP und &man.ipsec.4;.WEPWEPWEP ist die Abkürzung für
Wired Equivalency
Protocol ("Verkabelung entsprechendes
Protokoll"). WEP war ein Versuch, drahtlose Netzwerke
ebenso sicher und geschützt zu machen wie verkabelte
Netzwerke. Unglücklicherweise wurde es bereits
geknackt, und ist relativ einfach auszuhebeln. Sie sollten
sich also nicht darauf verlassen, wenn Sie sensible Daten
verschlüsseln wollen.Allerdings ist eine schlechte Verschlüsselung
noch immer besser als gar keine Verschlüsselung.
Aktivieren Sie daher WEP für Ihren neuen
FreeBSD-Zugangspunkt:&prompt.root; ifconfig wi0 inet up ssid my_net wepmode on wepkey 0x1234567890 media DS/11Mbps mediaopt hostapAuf dem Client können Sie WEP wie folgt
aktivieren:&prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net wepmode on wepkey 0x1234567890Beachten Sie bitte, dass Sie
0x1234567890 durch einen besseren
Schlüssel ersetzen sollten.IPsec&man.ipsec.4; ist ein viel besseres und robusteres
Werkzeug, um Daten in einem Netzwerk zu
verschlüsseln und ist auch der bevorzugte Weg,
Daten in einem drahtlosen Netzwerk zu verschlüsseln.
Weitere Informationen zu &man.ipsec.4; sowie zu dessen
Implementierung enthält der Abschnitt
IPsec des Handbuches.WerkzeugeEs gibt einige Werkzeuge, die dazu dienen, Ihr
drahtloses Netzwerk zu installieren, und auftretende
Probleme zu beheben. Im folgenden Abschnitt werden die
wichtigsten von ihnen beschrieben.bsd-airtoolsDas Paket bsd-airtools
enthält einen kompletten Werkzeugsatz zum
Herausfinden von WEP-Schlüsseln, zum Auffinden von
Zugangspunkten, usw.Die bsd-airtools
können Sie über den Port
net/bsd-airtools
installieren. Wie ein Port installiert wird,
beschreibt des Handbuchs.Das Programm dstumbler ist ein
Werkzeug, das Sie beim Auffinden von Zugangspunkten
unterstützt, und das Signal-Rausch-Verhältnis
graphisch darstellen kann. Wenn Sie Probleme beim
Einrichten und Betreiben Ihres Zugangspunktes haben,
könnte dstumbler genau das
Richtige für Sie sein.Um die Sicherheit Ihres drahtlosen Netzwerks zu
überprüfen, könnten Sie das Paket
dweputils (dwepcrack,
dwepdump und
dwepkeygen) verwenden. Durch diese Tools
können Sie feststellen, ob WEP Ihren
Sicherheitsanforderungen genügt.wicontrol,
ancontrol und
raycontrolDies sind Werkzeuge, um das Verhalten Ihrer drahtlosen
Karte im drahtlosen Netzwerk zu kontrollieren. In den
obigen Beispielen haben wir &man.wicontrol.8; verwendet,
da es sich bei unser drahtlosen Karte um ein Gerät
der wi0-Schnittstelle handelt.
Hätten Sie eine drahtlose Karte von Cisco,
würden Sie diese über
an0 ansprechen, und daher
&man.ancontrol.8; verwenden.Das Kommando ifconfigifconfig&man.ifconfig.8; kennt zwar viele Optionen von
&man.wicontrol.8;, einige fehlen jedoch. Unter
&man.ifconfig.8; finden Sie Informationen zu
Parametern und Optionen.Unterstützte KartenZugangspunktDie einzigen Karten, die im BSS-Modus (das heißt
als Zugangspunkt) derzeit unterstützt werden, sind
solche mit Prism 2-, 2.5- oder 3-Chipsatz. Für
eine komplette Übersicht lesen Sie bitte &man.wi.4;.
ClientsBeinahe alle nach 802.11b arbeitenden drahtlosen
Karten werden von FreeBSD unterstützt. Die meisten
dieser Karten von Prism, Spectrum24, Hermes, Aironet und
Raylink arbeiten als drahtlose Netzkarten im IBSS-Modus
(ad-hoc, Peer-to-Peer und BSS).
+
+
+ 802.11a und 802.11g Clients
+
+ &man.ath.4; unterstützt sowohl 802.11a als auch
+ 802.11g. Wenn Ihre Karte auf dem Atheros-Chipsatz basiert,
+ können Sie also eventuell diesen Treiber
+ verwenden.
+
+ Leider stellen nach wie vor viele Unternehmen die
+ Spezifikationen ihrer Treiber der Open Source Gemeinde
+ nicht zur Verfügung, weil sie diese Informationen
+ als Geschäftsgeheimnisse betrachten. Daher haben die
+ Entwickler von FreeBSD und anderen Betriebssystemen nur
+ zwei Möglichkeiten. Entweder versuchen sie in einem
+ aufwändigen Prozess den Treiber durch
+ Reverse Engineering
+ nachzubauen, oder sie versuchen, die vorhandenen
+ Binärtreiber der µsoft.windows;-Plattform zu
+ verwenden. Die meisten Entwickler, darunter auch die an
+ FreeBSD beteiligten, haben sich für den zweiten Ansatz
+ entschieden.
+
+ Bill Paul (wpaul) ist es zu verdanken, dass es seit
+ FreeBSD 5.3-RELEASE eine
+ native Unterstützung der
+ Network Driver Interface
+ Specification (NDIS) gibt. Der
+ FreeBSD NDISulator (auch als Project Evil bekannt) nutzt
+ den binären &windows;-Treiber, indem er diesem vorgibt,
+ unter &windows; zu laufen. Obwohl diese Fähigkeit noch
+ relativ neu ist, arbeitet sie in den meisten Fällen
+ bereits zufriedenstellend.
+
+ Um den NDISulator zu verwenden, benötigen Sie drei
+ Dinge:
+
+
+
+ Die Kernelquellen
+
+
+
+ Den &windowsxp;-Binärtreiber
+ (mit der Erweiterung .SYS)
+
+
+
+ Die Konfigurationsdatei des &windowsxp;-Treibers
+ (mit der Erweiterung .INF)
+
+
+
+ Als erstes müssen Sie das Wrappermodul für
+ den &man.ndis.4; Miniport-Treiber kompilieren. Dazu geben
+ Sie als root Folgendes ein:
+
+ &prompt.root; cd /usr/src/sys/modules/ndis
+&prompt.root; make && make install
+
+ Suchen Sie die Dateien für Ihre Karte. Diese
+ befinden sich meistens auf einer beigelegten CD-ROM, oder
+ können von der Internetseite des Herstellers
+ heruntergeladen werden. In den folgenden Beispielen werden
+ die Dateien W32DRIVER.SYS und
+ W32DRIVER.INF verwendet.
+
+ Als Nächstes kompilieren Sie den binären
+ Treiber, um ein Kernelmodul zu erzeugen. Dazu wechseln Sie
+ als root ins Modulverzeichnis
+ if_ndis und kopieren den
+ &windows;-Treiber dorthin:
+
+ &prompt.root; cd /usr/src/sys/modules/if_ndis
+&prompt.root; cp /path/to/driver/W32DRIVER.SYS ./
+&prompt.root; cp /path/to/driver/W32DRIVER.INF ./
+
+ Danach nutzen wir ndiscvt, um die
+ Headerdatei ndis_driver_data.h mit
+ den Treiberdefinitionen zu erzeugen, die für den Bau
+ des Moduls benötigt wird:
+
+ &prompt.root; ndiscvt -i W32DRIVER.INF -s W32DRIVER.SYS -o ndis_driver_data.h
+
+ Die Optionen und
+ legen die Konfigurations- und Binärdateien fest. Durch
+ teilen wir
+ Makefile mit, wo sich diese für
+ den Bau des Moduls benötigte Datei befindet.
+
+
+ Einige &windows;-Treiber benötigen noch weitere
+ Dateien für einen fehlerfreien Betrieb. Ist dies bei
+ Ihnen der Fall, können Sie diese Dateien mit der Option
+ an ndiscvt
+ übergeben (lesen Sie dazu auch &man.ndiscvt.8;).
+
+
+ Nun können wir das Treibermodul kompilieren und
+ installieren:
+
+ &prompt.root; make && make install
+
+ Um den Treiber zu verwenden, müssen Sie die
+ entsprechenden Module laden:
+
+ &prompt.root; kldload ndis
+&prompt.root; kldload if_ndis
+
+ Der erste Befehl lädt den Wrapper für den
+ NDIS Miniport-Treiber, der zweite die betreffende
+ Netzwerkgerätedatei. Überprüfen Sie nun
+ &man.dmesg.8; auf eventuelle Fehlermeldungen. Wenn alles
+ klappt, sollte Sie eine Ausgabe ähnlich der folgenden
+ erhalten:
+
+ ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
+ndis0: NDIS API version: 5.0
+ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5
+ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
+ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps
+
+ Ab sofort können Sie ndis0
+ wie jedes andere drahtlose Gerät (beispielsweise
+ wi0) ansprechen. Lesen Sie sich
+ dazu die vorherigen Abschnitte dieses Kapitels nochmals
+ durch.
+
+ PavLucistnikBeigetragen von pav@oook.czBluetoothBluetoothÜ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. Bluetooth
wird seit der Version 5.0 von &os; unterstützt.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=294Kopieren Sie
/usr/share/examples/netgraph/bluetooth/rc.bluetooth
nach /etc/rc.bluetooth. Über dieses
Skript wird der Bluetooth-Stack gestartet und beendet. 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.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
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. 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:&prompt.root; sdpdDer 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
get: remote file> telecom/devinfo.txt
get: local file> devinfo-t39.txt
Success, response: OK, Success (0x20)
obex> put
put: local file> new.vcf
put: remote file> 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-1.5.
Dieses Paket kann unter
herunterladen werden. 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).StevePetersonGeschrieben 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.Die Bridge arbeitet, indem sie die MAC Layeradressen
(Ethernet Adressen) der Geräte in ihren Netzsegmenten
lernt. Der Verkehr wird nur dann zwischen zwei Netzsegmenten
weitergeleitet, wenn sich Sender und Empfänger in
verschiedenen Netzsegmenten befinden.In vielerlei Hinsicht entspricht eine Bridge daher einem
Ethernet-Switch mit sehr wenigen Ports.Situationen, in denen Bridging
angebracht istEine Bridge wird vor allem in folgenden zwei Situationen
verwendet:Hohes Datenaufkommen in einem SegmentIn der ersten Situation wird Ihr physisches Netz
mit Datenverkehr überschwemmt. Aus irgendwelchen
Gründen wollen Sie allerdings keine Subnetze verwenden,
die über einen Router miteinander verbunden sind.Stellen Sie sich einen Zeitungsverlag vor, in dem sich die
Redaktions- und Produktionsabteilungen in verschiedenen
Subnetzen befinden. Die Redaktionsrechner verwenden den
Server A für Dateioperationen, und die
Produktionsrechner verwenden den Server B.
Alle Benutzer sind über ein gemeinsames Ethernet-LAN
miteinander verbunden. Durch das hohe Datenaufkommen sinkt
die Geschwindigkeit des gesamten Netzwerks.Würde man die Redaktionsrechner und die
Produktionsrechner in separate Netzsegmente auslagern,
könnte man diese beiden Segmente über eine Bridge
verbinden. Nur der für Rechner im jeweils
anderen Segment bestimmte Verkehr wird
dann über die Brigde in das andere Netzsegment geleitet.
Dadurch verringert sich das Gesamtdatenaufkommen in beiden
Segmenten.Filtering/Traffic Shaping FirewallFirewallNetwork Adress TranslationDie zweite häufig anzutreffende Situation tritt auf,
wenn Firewallfunktionen benötigt werden, ohne dass
Network Adress Translation
(NAT) verwendet wird.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 die Verwendung von Subnetzen sowie einer routerbasierten
Firewall schwierig.RouterDSLISDNEine brigdebasierte Firewall kann konfiguriert und in den
ISDN/DSL-Downstreampfad ihres Routers eingebunden werden, ohne
sich um IP-Adressen kümmern zu müssen.Die LAN-Kopplung konfigurierenAuswahl der NetzkartenEine Bridge benötigt mindestens zwei Netzkarten.
Leider sind unter FreeBSD 4.X nicht alle verfügbaren
Netzkarten dafür geeignet. Lesen Sie &man.bridge.4;
für Informationen zu unterstützten Karten.Installieren und testen Sie beide Netzkarten, bevor Sie
fortfahren.Anpassen der KernelkonfigurationKernelkonfigurationKernelkonfigurationoptions BRIDGEUm die Kernelunterstützung für die LAN-Kopplung
zu aktivieren, fügen Sieoptions BRIDGEin Ihre Kernelkonfigurationsdatei ein, und erzeugen einen
neuen Kernel.FirewallunterstützungFirewallWenn Sie die Bridge als Firewall verwenden wollen,
müssen Sie zusätzlich die Option
IPFIREWALL einfügen. Die
Konfiguration einer Firewall wird in
des Handbuchs beschrieben.Wenn Sie Nicht-IP-Pakete (wie ARP-Pakete) durch Ihre
Bridge leiten wollen, müssen Sie eine zusätzliche
Option verwenden. Es handelt sich um
IPFIREWALL_DEFAULT_TO_ACCEPT.
Beachten Sie aber, dass Ihre Firewall durch diese Option per
Voreinstellung alle Pakete akzeptiert. Sie sollten sich also
über die Auswirkungen dieser Option im Klaren sein,
bevor Sie sie verwenden.Unterstützung für Traffic ShapingWenn Sie die Bridge als Traffic-Shaper verwenden wollen,
müssen Sie die Option DUMMYNET in
Ihre Kernelkonfigurationsdatei einfügen. Lesen Sie
&man.dummynet.4;, um weitere Informationen zu erhalten.Die LAN-Kopplung aktivierenFügen Sie die Zeilenet.link.ether.bridge=1in /etc/sysctl.conf ein, um die Bridge
zur Laufzeit zu aktivieren, sowie die Zeilenet.link.ether.bridge_cfg=if1,if2um die LAN-Kopplung für die festgelegten Geräte
zu ermöglichen (ersetzen Sie dazu
if1 und
if2 durch die Namen Ihrer
Netzkarten). Wenn Sie die Datenpakete via &man.ipfw.8; filtern
wollen, sollten Sie zusätzlich folgende Zeile
einfügen:net.link.ether.bridge_ipfw=1Ab &os; 5.2-RELEASE verwenden Sie die
folgenden Zeilen:net.link.ether.bridge.enable=1
net.link.ether.bridge.config=if1,if2
net.link.ether.bridge.ipfw=1Sonstige InformationenWenn Sie via &man.ssh.1; auf die Bridge zugreifen wollen,
können Sie einer der Netzkarten eine IP-Adresse zuzuweisen.
Es besteht Einigkeit darüber, dass es eine schlechte Idee
ist, beiden Karten eine IP-Adresse zuzuweisen.
Wenn Sie verschiedene Bridges in Ihrem Netzwerk haben, kann
es dennoch nicht mehr als einen Weg zwischen zwei
Arbeitsplätzen geben. Das heißt,
Spanning tree link Management
wird nicht unterstützt.Eine Bridge kann, besonders für Verkehr über
Segmente, die Laufzeiten von Paketen erhöhen.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.
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
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.mfs.8;
(&os; 4.X) oder &man.md.4; (&os; 5.X)
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; 4.9-RELEASE sowie 5.2.1-RELEASE getestet. Die
Beschreibungen beziehen sich aber vor allem auf die Version 4.X.
Falls nötig, wurden daher Hinweise auf eventuelle
Änderungen unter 5.X eingefügt.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.Auf 4.X-Systemen sind PXE und
Etherboot gleichwertig.
5.X-Kernel übergeben hingegen viele Aufgaben an den
&man.loader.8;, daher ist die Verwendung von
PXE auf 5.X-Systemen
empfehlenswert.Wenn Ihr BIOS und Ihre Netzkarten
PXE unterstützen, sollten Sie es
auch verwenden. Es ist allerdings nach wie vor
möglich, ein 5.X-System über
Etherboot zu starten.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-dhcp3-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 Dateien
/etc/defaults/make.conf (oder
/usr/share/examples/etc/make.conf
für 5.X-Systeme) für weitere Anweisungen an.Es gibt zwei nicht dokumentierte 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 (die zweite
Option existiert nur unter &os; 5.X).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:&prompt.root; kill -HUP `cat /var/run/inetd.pid`Sie 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; kill -HUP `cat /var/run/mountd.pid`Einen 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 filesystem using BOOTP infoAußerdem können Sie die Optionen
BOOTP_NFSV3,
BOOT_COMPAT sowie
BOOTP_WIRED_TO verwenden (sehen Sie sich
dazu auch LINT unter 4.X oder
NOTES unter 5.X 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 ein 5.X-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. Der
folgende Abschnitt beschreibt zwei Möglichkeiten, dies
zu tun.Das Skript clone_root
verwendenDie Verwendung dieses Skripts ist der schnellste Weg,
der allerdings nur unter &os; 4.X funktioniert. Das
Shellskript findet sich unter
/usr/share/examples/diskless/clone_root
und muss von Ihnen angepasst werden. Unbedingt nötig
ist der Ort, an dem das Dateisystem erzeugt werden soll.
Dazu setzen Sie die Variable DEST
entsprechend.Die Kommentare am Anfang des Skripts enthalten
weitere Informationen. Dort wird erklärt, wie das
Basisdateisystem erzeugt wird und wie einzelne Dateien durch
angepasste Versionen für den plattenlosen Betrieb,
für ein Subnetzwerk oder für einen speziellen
Rechner ersetzt werden. Ebenfalls enthalten sind Beispiele
für /etc/fstab und
/etc/rc.conf, die für den
plattenlosen Betrieb angepasst sind.Die README-Dateien unter
/usr/share/examples/diskless enthalten
sehr viele interessante Hintergrundinformationen. Gemeinsam
mit den Beispielen im Verzeichnis
diskless beschreiben sie allerdings
eine Konfigurationsmethode, die von
der in clone_root und den
Systemstartskripten unter
/etc abweicht. Dies
kann etwas verwirrend sein. Verwenden Sie diese Dateien
also nur zu Informationszwecken. Es sei denn, Sie wollen
die dort beschriebene Methode verwenden. In diesem Fall
müssen Sie allerdings die
rc-Skripte anpassen.Die Standardprozedur make world
verwendenDiese Methode funktioniert sowohl unter &os; 4.X
als auch unter 5.X und 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 world && make kernel
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. Dazu
müssen Sie auf 4.X und 5.X-Systemen
unterschiedlich vorgehen.Eine NFS-Auslagerungsdatei unter
&os; 4.X einrichtenGröße und Ort der Auslagerungsdatei werden
durch die &os;-spezifischen
BOOTP/DHCP-Optionen 128 und 129
festgelegt. Es folgen nun einige Beispielkonfigurationen
für ISC DHCP 3.0 sowie
bootpd:Fügen Sie folgende Zeilen in
dhcpd.conf ein:# Global section
option swap-path code 128 = string;
option swap-size code 129 = integer 32;
host margaux {
... # Standard lines, see above
option swap-path "192.168.4.4:/netswapvolume/netswap";
option swap-size 64000;
}swap-path legt den Pfad zum
Verzeichnis der Auslagerungsdatei fest. Jede Datei hat
den Namen
swap.client-ip.
Ältere
dhcpd-Versionen benutzen die
Syntax option option-128 "..., die
aber nicht mehr unterstützt wird./etc/bootptab würde
stattdessen folgende Syntax verwenden:T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00Die Größe der Auslagerungsdatei
wird in /etc/bootptab als
Hexadezimalzahl festgelegt.Erzeugen Sie die Auslagerungsdatei(en) auf dem
NFS-Dateiserver:&prompt.root; mkdir /netswapvolume/netswap
&prompt.root; cd /netswapvolume/netswap
&prompt.root; dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6
&prompt.root; chmod 0600 swap.192.168.4.6Bei 192.168.4.6 handelt
es sich um die IP-Adresse des plattenlosen Clients.
Fügen Sie auf dem
NFS-Dateiserver folgende Zeile in
/etc/exports ein:/netswapvolume -maproot=0:10 -alldirs margaux corbieresZuletzt weisen Sie mountd
erneut an, die exports-Datei neu
einzulesen.Eine NFS-Auslagerungsdatei unter
&os; 5.X 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 MAKEDEV
zu erzeugen (seit FreeBSD 5.0 werden Gerätedateien
allerdings mit &man.devfs.5; erzeugt, ein Ausführen von
MAKEDEV ist unter diesen Versionen
daher sinnlos).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. Seit FreeBSD 4.4 werden 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 sharingIP masqueradingDer 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
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. _______ __________ ________
| | | | | |
| 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.KernelKonfigurationKernelkonfigurationFolgende Optionen müssen in die
Kernelkonfigurationsdatei eingetragen werden:options IPFIREWALL
options IPDIVERTDie folgende Optionen können ebenfalls eingetragen
werden:options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSEIn /etc/rc.conf tragen Sie Folgendes
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
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
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
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
zu diesem Thema finden Sie in &man.rc.conf.5;.PLIP – Parallel Line IPPLIPParallel Line IPPLIP 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,
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 Ihre Kernelkonfigurationsdatei unter &os; 4.X eine
Zeile ähnlich der folgenden enthalten:device ppc0 at isa? irq 7Unter &os; 5.X sollte die Datei
/boot/device.hints hingegen folgende Zeilen
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. Unter &os; 4.X
sieht die Ausgabe in etwa so aus:&prompt.root; ifconfig lp0
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500Unter &os; 5.X erhalten Sie folgende Ausgabe:&prompt.root; ifconfig plip0
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500Die Gerätenamen der parallelen Schnittstelle
sind für &os; 4.X
(lpX)
und &os; 5.X
(plipX)
unterschiedlich.Verbinden 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, der unter &os; 4.X läuft, mit
dem unter &os; 5.X laufenden 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 lp0 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.domainUm 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 lp0
lp0: 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 lp0
&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
+ 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 (mit Adressen wie
10.0.0.0/8 oder
192.168.0.0/24) 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.net6bone.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-Adressen:IPv6-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:Die Teilnahme am experimentellen 6bone.Die Teilnahme am IPv6-Netzwerk Ihres Providers.
Wenn Sie daran interessiert sind, wenden Sie sich an Ihren
Provider.Die Verwendung eines 6-nach-4-Tunnels
(RFC3068).Die Verwendung des Ports
/usr/ports/net/freenet6 bei der Einwahl
ins Internet.In diesem Abschnitt wird die Einrichtung einer Verbindung
zum 6bone beschrieben, da dies derzeit der beliebteste Weg ist.Suchen Sie sich zuerst auf der Internetseite des
6bone-Projekts
einen 6bone-Knoten in Ihrer Nähe. Schreiben Sie an
die verantwortliche Person und mit etwas Glück erhalten
Sie entsprechende Anweisungen, um Ihre Verbindung einzurichten.
Dazu gehört üblicherweise die Einrichtung
eines GRE-(gif)-Tunnels.Typischerweise wird ein &man.gif.4;-Tunnels wie folgt
eingerichtet:&prompt.root; ifconfig gif0 create
&prompt.root; ifconfig gif0
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
&prompt.root; ifconfig gif0 tunnel MY_IPv4_ADDRHIS_IPv4_ADDR
&prompt.root; ifconfig gif0 inet6 alias MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDRErsetzen Sie die in Großbuchstaben geschriebenen
Werte durch die Informationen, die Sie für Ihren
6bone-Knoten erhalten haben.Die gezeigten Befehle bauen den Tunnel auf.
Überprüfen Sie die korrekte Funktion, indem Sie
ff02::1%gif0 an&man.ping6.8;en.
Sie sollten zwei Antworten erhalten.Bei ff02:1%gif0
handelt es sich um eine Multicast-Adresse.
%gif0 legt fest, dass die Multicast-Adresse
der Schnittstelle gif0 verwendet
werden soll. Da wir
eine Multicast-Adresse ange&man.ping6.8;t haben, sollte der
andere Endpunkt des Tunnels ebenfalls antworten.Eine Route zu Ihrem 6bone-Knoten können Sie
einfach wie folgt einrichten:&prompt.root; route add -inet6 default -interface gif0
&prompt.root; ping6 -n MY_UPLINK&prompt.root; traceroute6 www.jp.FreeBSD.org
(3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets
1 atnet-meta6 14.147 ms 15.499 ms 24.319 ms
2 6bone-gw2-ATNET-NT.ipv6.tilab.com 103.408 ms 95.072 ms *
3 3ffe:1831:0:ffff::4 138.645 ms 134.437 ms 144.257 ms
4 3ffe:1810:0:6:290:27ff:fe79:7677 282.975 ms 278.666 ms 292.811 ms
5 3ffe:1800:0:ff00::4 400.131 ms 396.324 ms 394.769 ms
6 3ffe:1800:0:3:290:27ff:fe14:cdee 394.712 ms 397.19 ms 394.102 msDiese Ausgabe kann auf Ihrem Rechner unterschiedlich sein.
Sie sollten aber jetzt die IPv6-Seite
www.kame.net erreichen
und die tanzende Schildkröte sehen können –
vorausgesetzt, Sie haben einen IPv6-fähigen Browser wie
www/mozilla,
Konqueror (als Teil des Pakets
x11/kdebase3) oder
www/epiphany
installiert.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, beispielsweise
6bone, 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"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 Mode unter &os; 5.XClassical 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 show
diff --git a/de_DE.ISO8859-1/books/handbook/config/chapter.sgml b/de_DE.ISO8859-1/books/handbook/config/chapter.sgml
index 5879afd161..acb2acf01b 100644
--- a/de_DE.ISO8859-1/books/handbook/config/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/config/chapter.sgml
@@ -1,3250 +1,3250 @@
ChernLeeGeschrieben von MikeSmithNach einem Tutorium von MattDillonBasiert ebenfalls auf tuning(7) von MartinHeinenÜbersetzt von Konfiguration und TuningÜbersichtSystem-KonfigurationSystem-OptimierungEin korrekt konfiguriertes System kann die Arbeit,
die bei der zukünftigen Pflege und bei Migrationen des Systems
entsteht, erheblich reduzieren. Dieses Kapitel beschreibt die
Konfiguration von &os; sowie Maßnahmen zur Leistungssteigerung
von &os;-Systemen.Nachdem Sie dieses Kapitel durchgearbeitet haben,
werden Sie Folgendes wissen:Wie Sie effizient Dateisysteme und
Swap-Partitionen auf Ihrer Festplatte einrichten.Die Grundlagen der Konfiguration mit
rc.conf und des Systems zum Starten
von Anwendungen in /usr/local/etc/rc.d.Wie Sie Netzwerkkarten konfigurieren und testen.Wie Sie virtuelle Hosts und Netzwerkgeräte
konfigurieren.Wie Sie die verschiedenen Konfigurationsdateien
in /etc benutzen.Wie Sie mit sysctl-Variablen &os;
einstellen können.Wie Sie die Platten-Performance einstellen und Kernel-Parameter
modifizieren können.Bevor Sie dieses Kapitel lesen, sollten Siedie Grundlagen von &unix; und &os; ()
verstehen.Damit vertraut sein, wie Sie einen Kernel konfigurieren
und kompilieren ().Vorbereitende KonfigurationLayout von PartitionenLayout von Partitionen/etc/var/usrPartitionenWenn Sie Dateisysteme mit &man.disklabel.8; oder
&man.sysinstall.8; anlegen, sollten Sie beachten, dass
Festplatten auf Daten in den äußeren Spuren
schneller zugreifen können als auf Daten in den
inneren Spuren. Daher sollten die kleineren oft benutzten
Dateisysteme, wie das Root-Dateisystem oder die Swap-Partition,
an den äußeren Rand der Platte gelegt werden.
Die größeren Partitionen wie /usr
sollten in die inneren Bereiche gelegt werden.
Es empfiehlt sich, die Partitionen in einer ähnlichen
Reihenfolge wie Root-Partition, Swap, /var
und /usr anzulegen.Die Größe von /var
ist abhängig vom Zweck der Maschine.
/var enthält hauptsächlich
Postfächer, den Spoolbereich zum Drucken und Logdateien.
Abhängig von der Anzahl der Systembenutzer und der
Aufbewahrungszeit für Logdateien, können gerade
die Postfächer und Logdateien zu ungeahnten Größen
wachsen. Oft werden Sie mit weniger als einem Gigabyte
auskommen, doch beachten Sie, dass
/var/tmp für Pakete ausreichend
dimensioniert ist.Die /usr-Partition enthält den
Hauptteil des Systems, die Ports-Sammlung (empfohlen) und die
Quellen (optional). Im Laufe der Installation haben Sie die
Möglichkeit, die Quellen und die Ports-Sammlung gleich mit
zu installieren. Für die
/usr-Partition sollten Sie mindestens
zwei Gigabyte vorsehen.Wenn Sie die Größe der Partitionen festlegen,
beachten Sie bitte das Wachstum Ihres Systems. Wenn Sie den
Platz auf einer Partition vollständig aufgebraucht haben,
eine andere Partition aber kaum benutzen, kann die Handhabung des
Systems schwierig werden.Die automatische Partitionierung von &man.sysinstall.8;
mit Auto-defaults legt manchmal zu kleine
/ und /var-Partition an.
Partitionieren Sie weise und großzügig.Swap PartitionSwap-PartitionGrößeSwap-PartitionAls Daumenregel sollten Sie doppelt soviel Speicher
für die Swap-Partition vorsehen, als Sie Hauptspeicher
haben. Verfügt die Maschine beispielsweise über
128 Megabyte Hauptspeicher, sollten Sie 256 Megabyte
für den Swap-Bereich vorsehen. Systeme mit weniger Speicher
werden wahrscheinlich mit viel mehr Swap mehr leisten. Es
wird nicht empfohlen, weniger als 256 Megabyte Swap einzurichten.
Außerdem sollten Sie künftige Speichererweiterungen
beachten, wenn Sie die Swap-Partition einrichten. Die
VM-Paging-Algorithmen im Kernel sind so eingestellt, dass
Sie am besten laufen, wenn die Swap-Partition mindestens
doppelt so groß wie der Hauptspeicher ist. Zu wenig
Swap kann zu einer Leistungsverminderung im
VM page scanning
Code führen, sowie Probleme verursachen, wenn Sie später
mehr Speicher in Ihre Maschine bauen.Auf größeren Systemen mit mehreren SCSI-Laufwerken
(oder mehreren IDE-Laufwerken an unterschiedlichen Controllern)
empfehlen wir Ihnen, Swap-Bereiche auf bis zu
vier Laufwerken einzurichten. Diese Swap-Partitionen sollten
ungefähr dieselbe Größe haben. Der Kernel
kann zwar mit beliebigen Größen umgehen, aber
die internen Datenstrukturen skalieren bis zur vierfachen
Größe der größten Partition. Ungefähr
gleich große Swap-Partitionen erlauben es dem Kernel,
den Swap-Bereich optimal über die Laufwerke zu verteilen.
Große Swap-Bereiche, auch wenn sie nicht oft gebraucht
werden, sind nützlich, da sich ein speicherfressendes
Programm unter Umständen auch ohne einen Neustart des Systems
beenden lässt.Warum partitionieren?Gegen eine einzelne Partition sprechen mehrere Gründe.
Jede Partition hat im Betrieb unterschiedliche Eigenschaften
und die Trennung der Partitionen erlaubt es, die Dateisysteme
an diese Eigenschaften anzupassen. Die Root- und
/usr-Partitionen weisen meist nur
lesende Zugriffe auf, während /var
und /var/tmp hauptsächlich
beschrieben werden.Indem Sie ein System richtig partitionieren, verhindern
Sie, dass eine Fragmentierung in den häufig beschriebenen
Partitionen auf die meist nur gelesenen Partitionen
übergreift. Wenn Sie die häufig beschriebenen
Partitionen an den Rand der Platte, legen, dann wird die
I/O-Leistung diesen Partitionen steigen.
Die I/O-Leistung ist natürlich auch für große
Partitionen wichtig, doch erzielen Sie eine größere
Leistungssteigerung, wenn Sie /var an den
Rand der Platte legen. Schließlich sollten Sie
noch die Stabilität des Systems beachten.
Eine kleine Root-Partition, auf die meist nur lesend
zugegriffen wird, überlebt einen schlimmen Absturz
wahrscheinlich eher als eine große Partition.Basiskonfigurationrc-Dateienrc.confInformationen zur Systemkonfiguration sind hauptsächlich
in /etc/rc.conf, die meist beim Start
des Systems verwendet wird, abgelegt. Der Name der Datei zeigt
ihren Zweck an: Sie enthält die Konfigurationen für
die rc* Dateien.In rc.conf werden die Vorgabewerte aus
/etc/defaults/rc.conf überschrieben.
Die Vorgabedatei sollte nicht nach /etc
kopiert werden, da sie die Vorgabewerte und keine Beispiele
enthält. Jede systemspezifische Änderung wird
in rc.conf vorgenommen.Um den administrativen Aufwand gering zu halten, existieren
in geclusterten Anwendungen mehrere Strategien,
globale Konfigurationen von systemspezifischen Konfigurationen
zu trennen. Der empfohlene Weg hält die globale Konfiguration
in einer separaten Datei z.B. rc.conf.site.
Diese Datei wird dann in /etc/rc.conf,
die nur systemspezifische Informationen enthält, eingebunden.Da rc.conf von &man.sh.1; gelesen
wird, ist das einfach zu erreichen:rc.conf: . rc.conf.site
hostname="node15.example.com"
network_interfaces="fxp0 lo0"
ifconfig_fxp0="inet 10.1.1.1"rc.conf.site: defaultrouter="10.1.1.254"
saver="daemon"
blanktime="100"rc.conf.site kann dann auf jedes
System mit rsync verteilt werden,
rc.conf bleibt dabei systemspezifisch.Bei einem Upgrade des Systems mit &man.sysinstall.8; oder
make world wird rc.conf
nicht überschrieben, so dass die Systemkonfiguration
erhalten bleibt.Konfiguration von AnwendungenInstallierte Anwendungen haben typischerweise
eigene Konfigurationsdateien, die eine eigene Syntax
verwenden. Damit diese Dateien leicht von der
Paketverwaltung gefunden und verwaltet werden können,
ist es wichtig, sie vom Basissystem zu trennen./usr/local/etcFür gewöhnlich werden diese Dateien in
/usr/local/etc installiert. Besitzt
eine Anwendung viele Konfigurationsdateien, werden
diese in einem separaten Unterverzeichnis abgelegt.Wenn ein Port oder ein Paket installiert wird, werden
normalerweise auch Beispiele für die Konfigurationsdateien
installiert. Diese erkennt man gewöhnlich an dem
Suffix .default. Wenn keine Konfigurationsdateien
für eine Anwendung existieren, werden sie durch
Kopieren der .default Dateien erstellt.Als Beispiel sei /usr/local/etc/apache
gezeigt:-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf
-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default
-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf
-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf.default
-rw-r--r-- 1 root wheel 12205 May 20 1998 magic
-rw-r--r-- 1 root wheel 12205 May 20 1998 magic.default
-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types
-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types.default
-rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf
-rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.defaultAnhand der Dateigröße erkennen Sie, dass sich
nur srm.conf geändert hat. Eine
spätere Aktualisierung des Apache-Ports
überschreibt diese Datei nicht.TomRhodesBeigetragen von Start von DienstenDiensteViele Benutzer installieren Software Dritter auf &os;
mithilfe der Ports-Collection. Häufig soll die
Software bei einem Systemstart mitgestartet werden.
Beispielsweise sollen die Dienste
mail/postfix oder
www/apache13 nach
einem Systemstart laufen. Dieser Abschnitt stellt
die Startprozeduren für Software Dritter vor.Unter &os; werden die meisten der im System enthaltenen
Dienste wie &man.cron.8; mithilfe von Systemskripten gestartet.
Diese Skripten sind abhängig von der &os;- oder
Hersteller-Version. Allerdings kann ein Dienst mit
einfachen Skripten gestartet werden.Früher legten Anwendungen einfach ein
Startskript im Verzeichnis
/usr/local/etc/rc.d
ab. Das Startskript wurde von den Systemskripten in
den letzten Phasen des Systemstarts ausgeführt.Mit dem Aufkommen von
rcNG wurde
klar, dass der Start von Anwendungen Dritter vereinfacht
werden konnte. Obwohl viele Startskripten auf das
neue System umgestellt wurden, gibt es noch Anwendungen,
die ein Startskript im eben erwähnten Verzeichnis
benötigen.
Die Startskripten müssen das Suffix
.sh tragen und ausführbar sein.
Sie machen ein Skript ausführbar, indem Sie mit
chmod die Rechte 755
vergeben. Das Skript sollte die Optionen
und akzeptieren, um die Anwendung
zu starten und zu stoppen.Ein einfaches Startskript sieht wie folgt aus:#!/bin/sh
echo -n ' utility'
case "$1" in
start)
/usr/local/bin/utility
;;
stop)
kill -9 `cat /var/run/utility.pid`
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0Das Skript akzeptiert die Optionen start
und stop zum Starten und Stoppen
einer Anwendung mit Namen utility.
In /etc/rc.conf könnte
für diese Anwendung die folgende Zeile stehen:utility_enable="YES"Manuell wird die Anwendung mit dem nachstehenden
Kommando gestartet:&prompt.root; /usr/local/etc/rc.d/utility.sh startObwohl nicht jede Anwendung die Zeile in
rc.conf benötigt, akzeptieren
immer mehr Ports diese Konfiguration. Prüfen Sie
die Ausgaben während der Installation einer
Anwendung, um herauszufinden, wie die Anwendung
gestartet wird. Einige Anwendungen stellen Startskripten
bereit, die zusammen rcNG (wird im nächsten
Abschnitt besprochen) benutzt werden.Dienste mit rcNG startenMit rcNG lässt sich der Start von Anwendungen
besser steuern als mit den vorher besprochenen
Startskripten. Mit den im Abschnitt
rcNG
besprochenen Schlüsselwörtern können
Anwendungen in einer bestimmten Reihenfolge (zum Beispiel
nach DNS) gestartet werden und
Optionen können in rc.conf
statt fest im Startskript der Anwendung festgelegt werden.
Ein einfaches Startskript sieht wie folgt aus:#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: FreeBSD shutdown
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
# SET THEM IN THE /etc/rc.conf FILE
#
utility_enable=${utility_enable-"NO"}
utility_flags=${utility_flags-""}
utility_pidfile=${utility_pidfile-"/var/run/utility.pid"}
. /etc/rc.subr
name="utility"
rcvar=`set_rcvar`
command="/usr/local/sbin/utility"
load_rc_config $name
pidfile="${utility_pidfile}"
start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utility_flags} ${command_args}"
run_rc_command "$1"Dieses Skript stellt sicher, dass
utility vor den
login-Diensten und nach den
daemon-Diensten gestartet wird.
Es stellt auch eine Methode bereit, die
Prozess-ID (PID)
der Anwendung in einer Datei zu speichern.Die neue Methode erleichtert den Umgang mit
Kommandozeilenargumenten, bindet Funktionen aus
/etc/rc.subr ein, ist kompatibel
zum Werkzeug &man.rcorder.8; und lässt sich
über rc.conf leichter
konfigurieren. Sie könnten dieses Skript auch
im Verzeichnis /etc/rc.d
ablegen, das würde aber wahrscheinlich bei
Aktualisierungen Probleme mit &man.mergemaster.8;
verursachen.Andere Arten, um Dienste zu startenDienste wie POP3 oder
IMAP können über den
&man.inetd.8; gestartet werden. Nach der Installation
der Anwendung aus der Ports-Collection muss eine
Konfigurationszeile in der Datei
/etc/inetd.conf hinzugefügt oder
aktiviert werden. Der Abschnitt
beschreibt den
inetd und dessen Konfiguration.Systemdienste können auch mit &man.cron.8; gestartet
werden. Dieser Ansatz hat einige Vorteile; nicht zuletzt, weil
&man.cron.8; die Prozesse unter dem Eigentümer der
crontab startet, ist es möglich, dass
Dienste von nicht-root Benutzern gestartet
und gepflegt werden können.Dies nutzt eine Eigenschaft von &man.cron.8;:
Für die Zeitangabe kann @reboot
eingesetzt werden. Damit wird das Kommando gestartet, wenn
&man.cron.8; kurz nach dem Systemboot gestartet wird.TomRhodesBeigetragen von Programme mit cron startencronEin sehr nützliches Werkzeug von &os; ist &man.cron.8;.
cron läuft im Hintergrund und
überprüft fortlaufend die Datei
/etc/crontab. Beim Start sucht
cron neue crontab-Dateien
im Verzeichnis /var/cron/tabs. In den
crontab-Dateien wird festgelegt, welche
Programme zu welchem Zeitpunkt laufen sollen.Das Werkzeug cron verwendet
zwei verschiedene Konfigurationsdateien: Die
System-crontab und die
Benutzer-crontab. Der einzige Unterschied
zwischen beiden Formaten ist das sechste Feld. In der
System-crontab gibt das sechste Feld das
Konto an, unter dem ein Kommando läuft. Aus der
System-crontab können daher
Kommandos unter beliebigen Konten gestartet werden.
In der Benutzer-crontab gibt das
sechste Feld das auszuführende Kommando an. Alle
Kommandos laufen unter dem Konto, unter dem die
crontab erstellt wurde (ein
wichtiges Sicherheitsmerkmal).Benutzer können mit Benutzer-crontabs
ohne root-Rechte Befehle terminieren.
Die Kommandos in Benutzer-crontabs laufen
unter dem Benutzer, der die crontab
erstellt hat.Der Benutzer root kann, wie
jeder andere Benutzer, eine Benutzer-crontab
besitzen. Die Benutzer-crontab von
root ist nicht mit der Datei
/etc/crontab, der
System-crontab, zu verwechseln.
Normalerweise besitzt root, wegen
der Existenz der System-crontab, keine
eigene Benutzer-crontab.Der folgende Auszug aus der System-crontab/etc/crontab zeigt den Aufbau
einer crontab-Datei:# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#
#minute hour mday month wday who command
#
#
*/5 * * * * root /usr/libexec/atrun Das Zeichen # leitet, wie in
den meisten Konfigurationsdateien, einen Kommentar ein.
Benutzen Sie Kommentare, um die Funktion eines Eintrags
zu erläutern. Kommentare müssen in einer
extra Zeile stehen. Sie können nicht in derselben
Zeile wie ein Kommando stehen, da sie sonst Teil des
Kommandos wären. Leerzeilen in dieser Datei
werden ignoriert.Umgebungsvariablen werden mit dem Gleichheits-Zeichen
(=) festgelegt. Im Beispiel werden
die Variablen SHELL, PATH
und HOME definiert. Wenn die Variable
SHELL nicht definiert wird, benutzt
cron die Shell sh.
Wird die Variable PATH nicht gesetzt,
müssen alle Pfadangaben absolut sein, da es keinen
Vorgabewert für PATH gibt. Der
Vorgabewert für HOME ist das
Heimatverzeichnis des Accounts, dem die
crontab gehört.In dieser Zeile werden sieben Felder beschrieben:
minute, hour,
mday, month,
wday, who
und command. Die ersten Felder
legen den Zeitpunkt fest, an dem ein Kommando laufen
soll. Das Feld minute legt die
Minute fest, das Feld hour die
Stunde, das Feld mday den Tag
des Monats. Im Feld month
wird der Monat und im Feld wday
der Wochentag festgelegt. Alle Felder müssen
numerische Werte enthalten und die Zeitangaben sind
im 24-Stunden-Format. Das Feld who
gibt es nur in der Datei /etc/crontab
und gibt den Account an, unter dem das Kommando laufen
soll. In den crontab-Dateien
einzelner Accounts existiert dieses Feld nicht. Im
letzten Feld wird schließlich das auszuführende
Kommando angegeben.Diese Zeile definiert die Zeitpunkte an denen das
Kommando atrun laufen soll. Beachten
Sie die Zeichenfolge */5 gefolgt von
mehreren *-Zeichen. Das Zeichen
* ist ein Platzhalter und steht
für jede mögliche Zeit.
Diese Zeile führt das Kommando atrun
unter dem root-Account alle fünf
Minuten aus. Mehr über das Kommando
atrun erfahren Sie in der
Hilfeseite &man.atrun.8;.Bei den Kommandos können beliebige Optionen
angegeben werden. Wenn das Kommando zu lang ist und
auf der nächsten Zeile fortgesetzt werden soll,
muss am Ende der Zeile das Fortsetzungszeichen
(\) angegeben werden.Bis auf das sechste Feld, das den Account angibt, sieht
jede crontab-Datei so wie das Beispiel
aus. Das sechste Feld existiert nur in der Systemdatei
/etc/crontab. In den restlichen
crontab-Dateien fehlt dieses Feld.crontab installierenDie nachstehende Prozedur gilt nur für
Benutzer-crontabs. Die
System-crontab können
Sie einfach mit Ihrem Lieblingseditor editieren.
Das Werkzeug cron bemerkt, dass
sich die Datei geändert hat und wird die neue
Version benutzen. Lesen Sie bitte auch die FAQ
zur Meldung root: not found.Eine Benutzer-crontab, beispielsweise
die Datei crontab, können Sie mit
jedem Editor erstellen. Die Benutzer-crontab
installieren Sie mit dem nachstehenden Befehl:&prompt.root; crontab crontabDas Argument zum Befehl crontab
ist die vorher erstellte Datei crontab.Der Befehl crontab -l zeigt
die installierte crontab-Datei an.Benutzer, die eine eigene crontab-Datei
ohne Vorlage erstellen wollen, können den Befehl
crontab -e verwenden. Dieser Befehl
ruft einen Editor auf und installiert beim Verlassen des
Editors die crontab-Datei.Wollen Sie die installierte
Benutzer-crontab entfernen, rufen Sie den
Befehl crontab mit der Option
auf.TomRhodesBeigetragen von Das rc-System für SystemdienstercNGDas rcNG-System von NetBSD zum
Start von Systemdiensten wurde in &os; integriert.
Die zu diesem System gehörenden Dateien sind im
Verzeichnis /etc/rc.d abgelegt.
Die Skripten in diesem Verzeichnis akzeptieren die
Optionen ,
und . Beispielsweise kann
&man.sshd.8; mit dem nachstehenden Kommando neu gestartet
werden:&prompt.root; /etc/rc.d/sshd restartAnalog können Sie andere Dienste starten und stoppen.
Normalerweise werden die Dienste über Einträge in
der Datei &man.rc.conf.5; gestartet. Der Network Address
Translation Dæmon wird zum Beispiel mit dem folgenden
Eintrag in /etc/rc.conf aktiviert:natd_enable="YES"Wenn dort bereits die Zeile
existiert, ändern Sie einfach in
. Die rc-Skripten starten, wie unten
beschrieben, auch abhängige Dienste.Da das rcNG-System primär
zum automatischen Starten und Stoppen von Systemdiensten
dient, funktionieren die Optionen ,
und nur,
wenn die entsprechenden Variablen in
/etc/rc.conf gesetzt sind. Beispielsweise
funktioniert das Kommando sshd restart
nur dann, wenn in /etc/rc.conf die
Variable sshd_enable auf
gesetzt wurde. Wenn Sie die Optionen ,
oder
unabhängig von den Einstellungen in
/etc/rc.conf benutzen wollen,
müssen Sie den Optionen mit dem Präfix
force verwenden. Um beispielsweise
sshd unabhängig von den
Einstellungen in /etc/rc.conf neu
zu starten, benutzen Sie das nachstehende Kommando:&prompt.root; /etc/rc.d/sshd forcerestartOb ein Dienst in /etc/rc.conf
aktiviert ist, können Sie leicht herausfinden, indem
Sie das entsprechende rc.d-Skript
mit der Option aufrufen. Ein
Administrator kann beispielsweise wie folgt prüfen, ob
der sshd-Dienst in
/etc/rc.conf aktiviert ist:&prompt.root; /etc/rc.d/sshd rcvar
# sshd
$sshd_enable=YESDie zweite Zeile (# sshd) wird
vom Kommando sshd ausgegeben; sie
kennzeichnet nicht die Eingabeaufforderung von
root.Ob ein Dienst läuft, kann mit der Option
abgefragt werden. Das folgende
Kommando überprüft, ob der sshd
auch wirklich gestartet wurde:&prompt.root; /etc/rc.d/sshd status
sshd is running as pid 433.Die Option initialisiert einen
Dienst neu. Dem Dienst wird über ein Signal mitgeteilt,
dass er seine Konfigurationsdateien neu einlesen soll.
Oft wird dazu das Signal SIGHUP
verwendet.Die meisten Systemdienste werden beim Systemstart vom
rcNG-System gestartet. Zum Beispiel
aktiviert das Skript bgfsck die Prüfung
von Dateisystemen im Hintergrund. Das Skript gibt die folgende
Meldung aus, wenn es gestartet wird:Starting background file system checks in 60 seconds.Viele Systemdienste hängen von anderen Diensten
ab. NIS und andere RPC-basierende Systeme hängen
beispielsweise von dem rpcbind-Dienst
(portmapper) ab. Im Kopf der Startskripten befinden sich
die Informationen über Abhängigkeiten von anderen
Diensten und weitere Metadaten. Mithilfe dieser Daten
bestimmt das Programm &man.rcorder.8; beim Systemstart die
Startreihenfolge der Dienste. Folgende Schlüsselwörter
werden im Kopf der Startskripten verwendet:PROVIDE: Gibt die Namen der Dienste an,
die mit dieser Datei zur Verfügung gestellt werden.REQUIRE: Gibt die Namen der Dienste an,
von denen dieser Dienst abhängt. Diese Datei wird
nach den angegebenen Diensten
ausgeführt.BEFORE: Zählt Dienste auf,
die auf diesen Dienst angewiesen sind. Diese Datei wird
vor den angegebenen Diensten
ausgeführt.KEYWORD: FreeBSD oder
NetBSD. Unterscheidet Funktionen,
die von der BSD-Variante abhängen.Mit diesem System kann ein Administrator den Start
von Systemdiensten einfach steuern, ohne mit den
Schwierigkeiten des runlevel-Systems
anderer &unix; Systeme kämpfen zu müssen.MarcFonvieilleBeigetragen von Einrichten von NetzwerkkartenNetzwerkkartenEin Rechner ohne Netzanschluss ist heute nicht mehr
vorstellbar. Die Konfiguration einer Netzwerkkarte gehört zu
den alltäglichen Aufgaben eines &os; Administrators.Bestimmen des richtigen TreibersNetzwerkkartenTreiberBevor Sie anfangen, sollten Sie das Modell Ihrer Karte kennen,
wissen welchen Chip die Karte benutzt und bestimmen, ob es sich
um eine PCI- oder ISA-Karte handelt. Eine Aufzählung der
unterstützten PCI- und ISA-Karten finden Sie in der
Liste der unterstützen Geräte. Schauen Sie nach, ob Ihre
Karte dort aufgeführt ist.Wenn Sie wissen, dass Ihre Karte unterstützt wird,
müssen Sie den Treiber für Ihre Karte bestimmen.
/usr/src/sys/i386/conf/LINT enthält eine
Liste der verfügbaren Treiber mit Informationen zu den
unterstützten Chipsätzen und Karten. Wenn Sie sich nicht
sicher sind, ob Sie den richtigen Treiber ausgewählt haben,
lesen Sie die Hilfeseite des Treibers. Die Hilfeseite enthält
weitere Informationen über die unterstützten Geräte
und macht auch auf mögliche Probleme aufmerksam.Wenn Sie eine gebräuchliche Karte besitzen, brauchen Sie
meistens nicht lange nach dem passenden Treiber zu suchen. Die
Treiber zu diesen Karten sind schon im
GENERIC-Kernel enthalten und die Karte sollte
während des Systemstarts erkannt werden:dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 at device 11.0 on pci0
dc0: Ethernet address: 00:a0:cc:da:da:da
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 at device 12.0 on pci0
dc1: Ethernet address: 00:a0:cc:da:da:db
miibus1: <MII bus> on dc1
ukphy1: <Generic IEEE 802.3u media interface> on miibus1
ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, autoIm Beispiel erkennt das System zwei Karten, die den
&man.dc.4; Treiber benutzen.Der richtige Treiber muss geladen sein, damit eine
Netzwerkkarte benutzt werden kann. Der Treiber kann auf zwei Arten
geladen werden: Am einfachsten laden Sie das Kernelmodul für
Ihre Karte mit &man.kldload.8;. Für manche Netzwerkkarten
gibt es kein Kernelmodul (beispielsweise für ISA-Karten, die
den &man.ed.4; Treiber benutzen). Die zweite Möglichkeit ist,
die Unterstützung für Ihre Karte fest in den Kernel
einzubinden. Schauen Sie sich dazu
/usr/src/sys/i386/conf/LINT und die Hilfeseite
des Treibers, den Sie in den Kernel einbinden möchten, an.
Die Übersetzung des Kernels wird in
beschrieben. Wenn Ihre Karte
während des Systemstarts vom Kernel
(GENERIC) erkannt wurde, müssen Sie den
Kernel nicht neu übersetzen.Konfiguration von NetzwerkkartenNetzwerkkartenkonfigurierenNachdem der richtige Treiber für die Karte geladen ist,
muss die Karte konfiguriert werden. Unter Umständen ist
die Karte schon während der Installation mit
sysinstall konfiguriert worden.Das nachstehende Kommando zeigt die Konfiguration der Karten
eines Systems an:&prompt.user; ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:a0:cc:da:da:da
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
ether 00:a0:cc:da:da:db
media: Ethernet 10baseT/UTP
status: no carrier
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500In alten Versionen von &os; müssen Sie vielleicht
noch auf der Kommandozeile von &man.ifconfig.8;
angeben. Hinweise zum Gebrauch von &man.ifconfig.8; entnehmen
Sie bitte der Hilfeseite. Beachten Sie, dass in diesem
Beispiel die IPv6-Ausgaben (inet6 etc.)
ausgelassen wurden.Im Beispiel werden Informationen zu den folgenden Geräten
angezeigt:dc0: Der erste
Ethernet-Adapterdc1: Der zweite
Ethernet-Adapterlp0: Die parallele
Schnittstellelo0: Das Loopback-Gerättun0: Das von
ppp benutzte Tunnel-GerätDer Name der Netzwerkkarte wird aus dem Namen des Treibers und
einer Zahl zusammengesetzt. Die Zahl gibt die Reihenfolge an, in
der die Geräte beim Systemstart erkannt wurden. Die dritte
Karte, die den &man.sis.4; Treiber benutzt, würde
beispielsweise sis2 heißen.Der Adapter dc0 aus dem Beispiel ist
aktiv. Sie erkennen das an den folgenden Hinweisen:UP bedeutet, dass die Karte
konfiguriert und aktiv ist.Der Karte wurde die Internet-Adresse (inet)
192.168.1.3 zugewiesen.Die Subnetzmaske ist richtig
(0xffffff00 entspricht
255.255.255.0).Die Broadcast-Adresse 192.168.1.255 ist richtig.Die MAC-Adresse der Karte (ether)
lautet 00:a0:cc:da:da:da.Die automatische Medienerkennung ist aktiviert
(media: Ethernet autoselect (100baseTX
<full-duplex>)). Der Adapter
dc1 benutzt das Medium
10baseT/UTP. Weitere Informationen
über die einstellbaren Medien entnehmen
Sie bitte der Hilfeseite des Treibers.Der Verbindungsstatus (status) ist
active, das heißt es wurde ein
Trägersignal entdeckt. Für
dc1 wird status: no
carrier angezeigt. Das ist normal, wenn kein Kabel
an der Karte angeschlossen ist.Wäre die Karte nicht konfiguriert, würde die Ausgabe
von &man.ifconfig.8; so aussehen:dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 00:a0:cc:da:da:daSie brauchen die Berechtigungen von root, um
Ihre Karte zu konfigurieren. Die Konfiguration kann auf der
Kommandozeile mit &man.ifconfig.8; erfolgen, allerdings
müsste sie dann nach jedem Neustart wiederholt werden.
Dauerhaft wird die Karte in /etc/rc.conf
konfiguriert.Öffnen Sie /etc/rc.conf mit Ihrem
Lieblingseditor und fügen Sie für jede Karte Ihres
Systems eine Zeile hinzu. In dem hier diskutierten Fall wurden
die nachstehenden Zeilen eingefügt:ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"Ersetzen Sie dc0,
dc1 usw. durch die Gerätenamen Ihrer
Karten und setzen Sie die richtigen IP-Adressen ein. Die
Hilfeseiten des Treibers und &man.ifconfig.8; enthalten weitere
Einzelheiten über verfügbare Optionen. Die Syntax von
/etc/rc.conf wird in &man.rc.conf.5;
erklärt.Wenn Sie das Netz während der Installation
konfiguriert haben, existieren vielleicht schon Einträge
für Ihre Karten. Überprüfen Sie
/etc/rc.conf bevor Sie weitere Zeilen
hinzufügen.In /etc/hosts können Sie die Namen
und IP-Adressen der Rechner Ihres LANs eintragen. Weitere
Informationen entnehmen Sie bitte &man.hosts.5; und
/usr/share/examples/etc/hosts.Test und FehlersucheNachdem Sie die notwendigen Änderungen in
/etc/rc.conf vorgenommen haben, führen
Sie einen Neustart Ihres Systems durch. Dadurch werden die Adapter
konfiguriert und Sie stellen sicher, dass der Start ohne
Konfigurationsfehler erfolgt.Wenn das System gestartet ist, sollten Sie die Netzwerkkarten
testen.Test der Ethernet-KarteNetzwerkkartenTestMit zwei Tests können Sie prüfen, ob die
Ethernet-Karte richtig konfiguriert ist. Testen Sie zuerst mit
ping den Adapter selbst und sprechen Sie dann
eine andere Maschine im LAN an.Zuerst, der Test des Adapters:&prompt.user; ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms
--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 msJetzt versuchen wir, eine andere Maschine im LAN zu
erreichen:&prompt.user; ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms
--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 msSie können auch den Namen der Maschine anstelle von
192.168.1.2 benutzen, wenn Sie
/etc/hosts entsprechend eingerichtet
haben.FehlersucheNetzwerkkartenFehlersucheFehler zu beheben, ist immer sehr mühsam.
Indem Sie die einfachen Sachen zuerst prüfen,
erleichtern Sie sich die Aufgabe. Steckt das Netwerkkabel?
Sind die Netzwerkdienste richtig konfiguriert? Funktioniert
die Firewall? Wird die Netwerkkarte von &os;
unterstützt? Lesen Sie immer die Hardware-Informationen
des Releases, bevor Sie einen Fehlerbericht einsenden.
Aktualisieren Sie Ihre &os;-Version
auf -STABLE. Suchen Sie in den Archiven der Mailinglisten
oder auf dem Internet nach bekannten Lösungen.Wenn die Karte funktioniert, die Verbindungen aber
zu langsam sind, lesen Sie bitte die Hilfeseite
&man.tuning.7;. Prüfen Sie auch die
Netzwerkkonfiguration, da falsche Einstellungen die
Ursache für langsame Verbindungen sein können.Wenn Sie viele device timeout
Meldungen in den Systemprotokollen finden, prüfen
Sie, dass es keinen Konflikt zwischen der Netzwerkkarte
und anderen Geräten Ihres Systems gibt.
Überprüfen Sie nochmals die Verkabelung.
Unter Umständen benötigen Sie eine neue
Netzwerkkarte.Wenn Sie in den Systemprotokollen
watchdog timeout Fehlermeldungen
finden, kontrollieren Sie zuerst die Verkabelung.
Überprüfen Sie dann, ob der PCI-Steckplatz der
Karte Bus Mastering unterstützt. Auf einigen
älteren Motherboards ist das nur für einen
Steckplatz (meistens Steckplatz 0) der Fall. Lesen Sie
in der Dokumentation Ihrer Karte und Ihres Motherboards
nach, ob das vielleicht die Ursache des Problems sein
könnte.Die Meldung No route to host
erscheint, wenn Ihr System ein Paket nicht zustellen
kann. Das kann vorkommen weil beispielsweise keine
Default-Route gesetzt wurde oder das Netzwerkkabel
nicht richtig steckt. Schauen Sie in der Ausgabe
von netstat -rn nach, ob eine
Route zu dem Zielsystem existiert. Wenn nicht, lesen
Sie bitte das .Die Meldung ping: sendto: Permission
denied wird oft von einer falsch konfigurierten
Firewall verursacht. Wenn keine Regeln definiert wurden,
blockiert eine aktivierte Firewall alle Pakete, selbst
einfache ping-Pakete. Weitere
Informationen erhalten Sie in .Falls die Leistung der Karte schlecht ist, setzen
Sie die Medienerkennung von autoselect
(automatisch) auf das richtige Medium. In vielen Fällen
löst diese Maßnahme Leistungsprobleme. Wenn
nicht, prüfen Sie nochmal die Netzwerkeinstellungen
und lesen Sie die Hilfeseite &man.tuning.7;.Virtual Hostsvirtual hostsIP-AliaseEin gebräuchlicher Zweck von &os; ist das
virtuelle Hosting, bei dem ein Server im Netzwerk wie
mehrere Server aussieht. Dies wird dadurch erreicht,
dass einem Netzwerkinterface mehrere Netzwerk-Adressen
zugewiesen werden.Ein Netzwerkinterface hat eine echte
Adresse und kann beliebig viele alias Adressen
haben. Die Aliase werden durch entsprechende alias Einträge
in /etc/rc.conf festgelegt.Ein alias Eintrag für das Interface
fxp0 sieht wie folgt aus:ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"Beachten Sie, dass die Alias-Einträge mit
alias0 anfangen müssen und
weiter hochgezählt werden, das heißt
_alias1, _alias2,
und so weiter. Die Konfiguration der Aliase hört
bei der ersten fehlenden Zahl auf.Die Berechnung der Alias-Netzwerkmasken ist wichtig, doch
zum Glück einfach. Für jedes Interface muss es
eine Adresse geben, die die Netzwerkmaske des Netzwerkes richtig
beschreibt. Alle anderen Adressen in diesem Netzwerk haben dann
eine Netzwerkmaske, die mit 1 gefüllt
ist (also 255.255.255.255
oder hexadezimal
0xffffffff).Als Beispiel betrachten wir den Fall, in dem
fxp0 mit zwei Netzwerken verbunden
ist: dem Netzwerk 10.1.1.0 mit der
Netzwerkmaske 255.255.255.0
und dem Netzwerk 202.0.75.16 mit der
Netzwerkmaske 255.255.255.240.
Das System soll die Adressen 10.1.1.1
bis 10.1.1.5 und
202.0.75.17 bis
202.0.75.20 belegen.
Wie eben beschrieben, hat nur die erste Adresse in einem
Netzwerk (hier 10.0.1.1
und 202.0.75.17) die
richtige Netzwerkmaske. Alle anderen Adressen
(10.1.1.2 bis 10.1.1.5 und 202.0.75.18 bis 202.0.75.20) erhalten die Maske
255.255.255.255.Die folgenden Einträge konfigurieren den Adapter
entsprechend dem Beispiel: ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"Konfigurationsdateien/etc LayoutKonfigurationsdateien finden sich in einigen Verzeichnissen
unter anderem in:/etcEnthält generelle Konfigurationsinformationen,
die Daten hier sind systemspezifisch./etc/defaultsDefault Versionen der Konfigurationsdateien./etc/mailEnthält die &man.sendmail.8; Konfiguration
und weitere MTA Konfigurationsdateien./etc/pppHier findet sich die Konfiguration für
die User- und Kernel-ppp Programme./etc/namedbDas Vorgabeverzeichnis, in dem Daten von
&man.named.8; gehalten werden. Normalerweise
werden hier named.conf und Zonendaten
abgelegt./usr/local/etcInstallierte Anwendungen legen hier ihre
Konfigurationsdateien ab. Dieses Verzeichnis kann
Unterverzeichnisse für bestimmte Anwendungen
enthalten./usr/local/etc/rc.dOrt für Start- und Stopskripten installierter
Anwendungen./var/dbAutomatisch generierte systemspezifische Datenbanken,
wie die Paket-Datenbank oder die
locate-Datenbank.HostnamenhostnameDNS/etc/resolv.confresolv.confWie der &os;-Resolver auf das Internet Domain Name
System (DNS) zugreift, wird in /etc/resolv.conf
festgelegt.Die gebräuchlichsten Einträge in
/etc/resolv.conf sind:nameserverDie IP-Adresse eines Nameservers, den
der Resolver abfragen soll. Bis zu drei Server werden
in der Reihenfolge, in der sie aufgezählt
sind, abgefragt.searchSuchliste mit Domain-Namen zum Auflösen von
Hostnamen. Die Liste wird normalerweise durch den
Domain-Teil des lokalen Hostnamens festgelegt.domainDer lokale Domain-Name.Beispiel für eine typische
resolv.conf:search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30Nur eine der Anweisungen search
oder domain sollte benutzt werden.Wenn Sie DHCP benutzen, überschreibt &man.dhclient.8;
für gewöhnlich resolv.conf
mit den Informationen vom DHCP-Server./etc/hostshosts/etc/hosts ist eine einfache textbasierte
Datenbank, die aus alten Internetzeiten stammt. Zusammen
mit DNS und NIS stellt sie eine Abbildung zwischen Namen und
IP-Adressen zur Verfügung. Anstatt &man.named.8;
zu konfigurieren, können hier lokale Rechner, die über
ein LAN verbunden sind, eingetragen werden. Lokale Einträge
für gebräuchliche Internet-Adressen in
/etc/hosts verhindern die Abfrage eines
externen Servers und beschleunigen die Namensauflösung.# $FreeBSD$
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
::1 localhost localhost.my.domain myname.my.domain
127.0.0.1 localhost localhost.my.domain myname.my.domain
#
# Imaginary network.
#10.0.0.2 myname.my.domain myname
#10.0.0.3 myfriend.my.domain myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
# 10.0.0.0 - 10.255.255.255
# 172.16.0.0 - 172.31.255.255
# 192.168.0.0 - 192.168.255.255
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers. PLEASE PLEASE PLEASE do not try
# to invent your own network numbers but instead get one from your
# network provider (if any) or from the Internet Registry (ftp to
# rs.internic.net, directory `/templates').
#/etc/hosts hat ein einfaches Format:[Internet Adresse] [Offizieller Hostname] [Alias1] [Alias2] ...Zum Beispiel:10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2Weitere Informationen entnehmen Sie bitte &man.hosts.5;.Konfiguration von LogdateienLogdateiensyslog.confsyslog.confsyslog.conf ist die Konfigurationsdatei
von &man.syslogd.8;. Sie legt fest, welche
syslog Meldungen in welche
Logdateien geschrieben werden.# $FreeBSD$
#
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manpage.
*.err;kern.debug;auth.notice;mail.crit /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
cron.* /var/log/cron
*.err root
*.notice;news.err root
*.alert root
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
#*.* /var/log/all.log
# uncomment this to enable logging to a remote log host named loghost
#*.* @loghost
# uncomment these if you're running inn
# news.crit /var/log/news/news.crit
# news.err /var/log/news/news.err
# news.notice /var/log/news/news.notice
!startslip
*.* /var/log/slip.log
!ppp
*.* /var/log/ppp.logWeitere Informationen enthält &man.syslog.conf.5;.newsyslog.confnewsyslog.confDie Konfigurationsdatei für &man.newsyslog.8;, das
normalerweise von &man.cron.8; aufgerufen wird, ist
newsyslog.conf. &man.newsyslog.8;
stellt fest, ob Logdateien archiviert oder verschoben
werden müssen. So wird logfile
nach logfile.0 geschoben und
logfile.0 nach logfile.1
usw. Zudem können Logdateien mit &man.gzip.1;
komprimiert werden. Die Namen der Logdateien sind dann
logfile.0.gz, logfile.1.gz
usw.newsyslog.conf legt fest, welche
Logdateien wann bearbeitet und wie viele Dateien behalten werden.
Logdateien können auf Basis ihrer Größe oder zu
einem gewissen Zeitpunkt archiviert bzw. umbenannt werden.# configuration file for newsyslog
# $FreeBSD$
#
# filename [owner:group] mode count size when [ZB] [/pid_file] [sig_num]
/var/log/cron 600 3 100 * Z
/var/log/amd.log 644 7 100 * Z
/var/log/kerberos.log 644 7 100 * Z
/var/log/lpd-errs 644 7 100 * Z
/var/log/maillog 644 7 * @T00 Z
/var/log/sendmail.st 644 10 * 168 B
/var/log/messages 644 5 100 * Z
/var/log/all.log 600 7 * @T00 Z
/var/log/slip.log 600 3 100 * Z
/var/log/ppp.log 600 3 100 * Z
/var/log/security 600 10 100 * Z
/var/log/wtmp 644 3 * @01T05 B
/var/log/daily.log 640 7 * @T00 Z
/var/log/weekly.log 640 5 1 $W6D0 Z
/var/log/monthly.log 640 12 * $M1D0 Z
/var/log/console.log 640 5 100 * ZUm mehr zu erfahren, lesen Sie bitte &man.newsyslog.8;.sysctl.confsysctl.confsysctlsysctl.conf sieht ähnlich
wie rc.conf aus. Werte werden in der
Form Variable=Wert gesetzt.
Die angegebenen Werte werden
gesetzt, nachdem sich das System im Mehrbenutzermodus befindet,
das heißt nicht alle Werte können in
diesem Modus gesetzt werden.In der folgenden sysctl.conf wird das
Loggen von fatalen Signalen abgestellt und Linux Programmen
wird klar gemacht, dass sie in Wirklichkeit unter
&os; laufen:kern.logsigexit=0 # Do not log fatal signal exits (e.g. sig 11)
compat.linux.osname=FreeBSD
compat.linux.osrelease=4.3-STABLEEinstellungen mit sysctlsysctlEinstellungenmit sysctlMit &man.sysctl.8; können Sie Änderungen an
einem laufenden &os; System vornehmen. Unter anderem
können Optionen des TCP/IP-Stacks oder des
virtuellen Speichermanagements verändert werden. Unter
der Hand eines erfahrenen Systemadministrators kann dies
die Systemperformance erheblich verbessern. Über 500
Variablen können mit &man.sysctl.8; gelesen und gesetzt
werden.Der Hauptzweck von &man.sysctl.8; besteht darin, Systemeinstellungen
zu lesen und zu verändern.Alle auslesbaren Variablen werden wie folgt angezeigt:&prompt.user; sysctl -aSie können auch eine spezielle Variable, z.B.
kern.maxproc lesen:&prompt.user; sysctl kern.maxproc
kern.maxproc: 1044Um eine Variable zu setzen, benutzen Sie die Syntax
Variable=
Wert:&prompt.root; sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000Mit sysctl können Sie Strings, Zahlen oder
Boolean-Werte setzen. Bei Boolean-Werten setzen sie 1
für wahr und 0 für falsch.Wenn Sie Variablen automatisch während des Systemstarts
setzen wollen, fügen Sie die Variablen in die Datei
/etc/sysctl.conf ein. Weiteres
entnehmen Sie bitte der Hilfeseite &man.sysctl.conf.5;
und dem .TomRhodesContributed by Schreibgeschützte VariablenManchmal ist es notwendig, obwohl es nicht
empfohlen ist, schreibgeschützte
sysctl-Variablen zu verändern.Beispielsweise hat &man.cardbus.4; auf einigen Laptops
Schwierigkeiten, Speicherbereiche zu erkennen. Es treten
dann Fehlermeldungen wie die folgende auf:cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12Um dieses Problem zu lösen, muss eine
schreibgeschützte sysctl-Variable verändert
werden. Eine OID kann in der Datei
/boot/loader.conf überschrieben
werden. Die Datei /boot/defaults/loader.conf
enthält Vorgabewwerte für sysctl-Variablen.Das oben erwähnte Problem wird durch die Angabe von
in
/boot/loader.conf gelöst.
Danach sollte &man.cardbus.4; fehlerfrei funktionieren.Tuning von LaufwerkenSysctl Variablenvfs.vmiodirenablevfs.vmiodirenableDie Variable vfs.vmiodirenable besitzt
in der Voreinstellung den Wert 1. Die Variable kann auf den Wert
0 (ausgeschaltet) oder 1 (angeschaltet) gesetzt werden. Sie
steuert, wie Verzeichnisse vom System zwischengespeichert
werden. Die meisten Verzeichnisse sind klein und benutzen
nur ein einzelnes Fragment, typischerweise 1 kB,
im Dateisystem. Im Buffer-Cache verbrauchen sie mit
512 Bytes noch weniger Platz. Ist die Variable
ausgeschaltet (auf 0) wird der Buffer-Cache nur
eine limitierte Anzahl Verzeichnisse zwischenspeichern, auch
wenn das System über sehr viel Speicher verfügt.
Ist die Variable aktiviert (auf 1), kann der Buffer-Cache den
VM-Page-Cache benutzen, um Verzeichnisse zwischenzuspeichern.
Der ganze Speicher steht damit zum Zwischenspeichern von
Verzeichnissen zur Verfügung. Der Nachteil bei dieser
Vorgehensweise ist, dass zum Zwischenspeichern eines
Verzeichnisses mindestens eine physikalische Seite im
Speicher, die normalerweise 4 kB groß ist,
anstelle von 512 Bytes gebraucht wird. Wir empfehlen,
diese Option aktiviert zu lassen, wenn Sie Dienste zur
Verfügung stellen, die viele Dateien manipulieren.
Beispiele für solche Dienste sind Web-Caches,
große Mail-Systeme oder Netnews. Die aktivierte
Variable vermindert, trotz des verschwendeten Speichers,
in aller Regel nicht die Leistung des Systems, obwohl Sie
das nachprüfen sollten.vfs.write_behindvfs.write_behindIn der Voreinstellung besitzt die Variable
vfs.write_behind den Wert
1 (aktiviert). Mit dieser Einstellung
schreibt das Dateisystem anfallende vollständige Cluster,
die besonders beim sequentiellen Schreiben großer Dateien
auftreten, direkt auf das Medium aus. Dies verhindert,
dass sich im Buffer-Cache veränderte Puffer
(dirty buffers) ansammeln,
die die I/O-Verarbeitung nicht mehr beschleunigen
würden. Unter bestimmten Umständen blockiert
diese Funktion allerdings Prozesse. Setzen Sie in diesem
Fall die Variable vfs.write_behind auf
den Wert 0.vfs.hirunningspacevfs.hirunningspaceDie Variable vfs.hirunningspace
bestimmt systemweit die Menge ausstehender Schreiboperationen,
die dem Platten-Controller zu jedem beliebigen Zeitpunkt
übergeben werden können. Normalerweise können
Sie den Vorgabewert verwenden. Auf Systemen mit
vielen Platten kann der Wert aber auf 4 bis
5 Megabyte erhöht werden.
Beachten Sie, dass ein zu hoher Wert (größer
als der Schreib-Schwellwert des Buffer-Caches) zu
Leistungverlusten führen kann. Setzen Sie den Wert daher
nicht zu hoch! Hohe Werte können auch Leseoperationen
verzögern, die gleichzeitig mit Schreiboperationen
ausgeführt werden.Es gibt weitere Variablen, mit denen Sie den Buffer-Cache
und den VM-Page-Cache beeinflussen können. Wir raten
Ihnen allerdings davon ab, diese Variablen zu verändern:
Seit &os; 4.3 stellt sich die Verwaltung des virtuellen
Speichers sehr gut selbst ein.vm.swap_idle_enabledvm.swap_idle_enabledDie Variable vm.swap_idle_enabled
ist für große Mehrbenutzer-Systeme gedacht, auf
denen sich viele Benutzer an- und abmelden und auf denen
es viele Prozesse im Leerlauf
(idle) gibt. Solche Systeme
fragen kontinuierlich freien Speicher an. Wenn Sie die
Variable vm.swap_idle_enabled aktivieren,
können Sie die Auslagerungs-Hysterese von Seiten mit
den Variablen vm.swap_idle_threshold1 und
vm.swap_idle_threshold2 einstellen. Die
Schwellwerte beider Variablen geben die Zeit in Sekunden an,
in denen sich ein Prozess im Leerlauf befinden muss. Wenn die
Werte so eingestellt sind, dass Seiten früher als nach dem
normalen Algorithmus ausgelagert werden, verschafft das dem
Auslagerungs-Prozess mehr Luft. Aktivieren Sie diese Funktion
nur, wenn Sie sie wirklich benötigen: Die Speicherseiten
werden eher früher als später ausgelagert. Der
Platz im Swap-Bereich wird dadurch schneller verbraucht und
die Plattenaktivitäten steigen an. Auf kleine Systeme
hat diese Funktion spürbare Auswirkungen. Auf großen
Systemen, die sowieso schon Seiten auslagern müssen,
können ganze Prozesse leichter in den Speicher geladen
oder ausgelagert werden.hw.ata.wchw.ata.wcIn &os; 4.3 wurde versucht, den IDE-Schreib-Zwischenspeicher
abzustellen. Obwohl dies die Bandbreite zum Schreiben auf
IDE-Platten verringerte, wurde es aus Gründen der
Datenkonsistenz als notwenig angesehen. Der Kern des
Problems ist, dass IDE-Platten keine zuverlässige
Aussage über das Ende eines Schreibvorgangs treffen.
Wenn der Schreib-Zwischenspeicher aktiviert ist, werden die Daten
nicht in der Reihenfolge ihres Eintreffens geschrieben. Es kann
sogar passieren, dass das Schreiben mancher Blöcke
im Fall von starker Plattenaktivität auf unbefristete
Zeit verzögert wird. Ein Absturz oder Stromausfall
zu dieser Zeit kann die Dateisysteme erheblich beschädigen.
Wir entschieden uns daher für die sichere Variante
und stellten den Schreib-Zwischenspeicher ab. Leider war
damit auch ein großer Leistungsverlust verbunden, so
dass wir die Variable
nach dem Release wieder aktiviert haben. Sie sollten den
Wert der Variable hw.ata.wc auf Ihrem
System überprüfen. Wenn der Schreib-Zwischenspeicher
abgestellt ist, können Sie ihn aktivieren, indem Sie die
Variable auf den Wert 1 setzen. Dies muss zum Zeitpunkt
des Systemstarts im Boot-Loader geschehen. Eine Änderung
der Variable, nachdem der Kernel gestartet ist, hat keine
Auswirkungen.Weitere Informationen finden Sie in &man.ata.4;.SCSI_DELAY
(kern.cam.scsi_delay)SCSI_DELAYkern.cam.scsi_delayMit der Kerneloption SCSI_DELAY kann
die Dauer des Systemstarts verringert werden. Der Vorgabewert
ist recht hoch und er verzögert den Systemstart um 15 oder
mehr Sekunden. Normalerweise kann dieser Wert, insbesondere
mit modernen Laufwerken, auf 5 Sekunden heruntergesetzt
werden. Ab &os; 5.0 wird dazu die
sysctl-Variable
kern.cam.scsi_delay benutzt. Die Variable
sowie die Kerneloption verwenden für die Zeitangabe
Millisekunden und nicht Sekunden.Soft UpdatesSoft UpdatestunefsMit &man.tunefs.8; lassen sich Feineinstellungen an
Dateisystemen vornehmen. Das Programm hat verschiedene Optionen,
von denen hier nur Soft Updates betrachtet werden. Soft Updates
werden wie folgt ein- und ausgeschaltet:&prompt.root; tunefs -n enable /filesystem
&prompt.root; tunefs -n disable /filesystemEin eingehängtes Dateisystem kann nicht mit &man.tunefs.8;
modifiziert werden. Soft Updates werden am besten im Single-User
Modus aktiviert, bevor Partitionen eingehangen sind.Ab &os; 4.5 können Sie Soft Updates mit der
Option -U von &man.newfs.8; beim Anlegen der
Dateisysteme aktivieren.Durch Einsatz eines Zwischenspeichers wird die Performance
im Bereich der Metadaten, vorwiegend beim Anlegen und Löschen
von Dateien, gesteigert. Wir empfehlen, Soft Updates auf allen
Dateisystemen zu aktivieren. Allerdings sollten Sie sich über
die zwei Nachteile von Soft Updates bewusst sein:
Erstens garantieren Soft Updates zwar die Konsistenz der Daten
im Fall eines Absturzes, aber es kann leicht passieren, dass
das Dateisystem über mehrere Sekunden oder gar eine Minute
nicht synchronisiert wurde. Im Fall eines Absturzes verlieren
Sie mit Soft Updates unter Umständen mehr Daten als ohne.
Zweitens verzögern Soft Updates die Freigabe von
Datenblöcken. Eine größere Aktualisierung
eines fast vollen Dateisystems, wie dem Root-Dateisystem,
z.B. während eines make installworld,
kann das Dateisystem vollaufen lassen. Dadurch würde
die Aktualisierung fehlschlagen.Details über Soft UpdatesSoft UpdatesDetailsEs gibt zwei klassische Herangehensweisen, wie
man die Metadaten des Dateisystems (also Daten
über Dateien, wie inode Bereiche oder Verzeichniseinträge)
aktualisiert auf die Platte zurückschreibt:Das historisch übliche Verfahren waren synchrone
Updates der Metadaten, d. h. wenn eine Änderung an
einem Verzeichnis nötig war, wurde anschließend
gewartet, bis diese Änderung tatsächlich auf die
Platte zurückgeschrieben worden war. Der
Inhalt der Dateien wurde im
Buffer Cache zwischengespeichert und
asynchron irgendwann später auf die Platte geschrieben.
Der Vorteil dieser Implementierung ist, dass sie
sicher funktioniert. Wenn während eines Updates ein
Ausfall erfolgt, haben die Metadaten immer einen
konsistenten Zustand. Eine Datei ist entweder komplett
angelegt oder gar nicht. Wenn die Datenblöcke einer
Datei im Fall eines Absturzes noch nicht den Weg aus dem
Buffer Cache auf die Platte gefunden haben,
kann &man.fsck.8; das Dateisystem reparieren, indem es die
Dateilänge einfach auf 0 setzt. Außerdem
ist die Implementierung einfach und überschaubar. Der
Nachteil ist, dass Änderungen der Metadaten sehr
langsam vor sich gehen. Ein rm -r
beispielsweise fasst alle Dateien eines Verzeichnisses
der Reihe nach an, aber jede dieser Änderungen am
Verzeichnis (Löschen einer Datei) wird einzeln synchron
auf die Platte geschrieben. Gleiches beim Auspacken
großer Hierarchien (tar -x).Der zweite Fall sind asynchrone Metadaten-Updates. Das
ist z. B. der Standard bei Linux/ext2fs oder die Variante
mount -o async für *BSD UFS. Man
schickt die Updates der Metadaten einfach auch noch
über den Buffer Cache, sie werden also
zwischen die Updates der normalen Daten eingeschoben.
Vorteil ist, dass man nun nicht mehr auf jeden Update
warten muss, Operationen, die zahlreiche Metadaten
ändern, werden also viel schneller. Auch
hier ist die Implementierung sehr einfach und wenig
anfällig für Fehler. Nachteil ist, dass
keinerlei Konsistenz des Dateisystems mehr gesichert ist.
Wenn mitten in einer Operation, die viele Metadaten
ändert, ein Ausfall erfolgt (Stromausfall, drücken
des Reset-Tasters), dann ist das Dateisystem
anschließend in einem unbestimmten Zustand. Niemand
kann genau sagen, was noch geschrieben worden ist und was
nicht mehr; die Datenblöcke einer Datei können
schon auf der Platte stehen, während die inode Tabelle
oder das zugehörige Verzeichnis nicht mehr aktualisiert
worden ist. Man kann praktisch kein fsck
mehr implementieren, das diesen Zustand
wieder reparieren kann, da die dazu nötigen
Informationen einfach auf der Platte fehlen. Wenn ein
Dateisystem derart beschädigt worden ist, kann man es
nur neu erzeugen (&man.newfs.8;) und die Daten
vom Backup zurückspielen.
Der historische Ausweg aus diesem Dilemma war ein
dirty region logging (auch als
Journalling bezeichnet, wenngleich
dieser Begriff nicht immer gleich benutzt und manchmal auch
für andere Formen von Transaktionsprotokollen gebraucht
wird). Man schreibt die Metadaten-Updates zwar synchron,
aber nur in einen kleinen Plattenbereich, die
logging area. Von da aus werden sie
dann asynchron auf ihre eigentlichen Bereiche verteilt. Da
die logging area ein kleines
zusammenhängendes Stückchen ist, haben die
Schreibköpfe der Platte bei massiven Operationen auf
Metadaten keine allzu großen Wege zurückzulegen,
so dass alles ein ganzes Stück schneller geht als
bei klassischen synchronen Updates. Die Komplexität
der Implementierung hält sich ebenfalls in Grenzen,
somit auch die Anfälligkeit für Fehler. Als
Nachteil ergibt sich, dass Metadaten zweimal auf die
Platte geschrieben werden müssen (einmal in die
logging area, einmal an die richtige
Stelle), so dass das im Falle regulärer
Arbeit (also keine gehäuften Metadatenoperationen) eine
Pessimisierung des Falls der synchronen
Updates eintritt, es wird alles langsamer. Dafür hat man
als Vorteil, dass im Falle eines Crashes der
konsistente Zustand dadurch erzielbar ist, dass die
angefangenen Operationen aus dem dirty region
log entweder zu Ende ausgeführt oder
komplett verworfen werden, wodurch das Dateisystem schnell
wieder zur Verfügung steht.Die Lösung von Kirk McKusick, dem Schöpfer von
Berkeley FFS, waren Soft Updates: die
notwendigen Updates der Metadaten werden im Speicher
gehalten und dann sortiert auf die Platte geschrieben
(ordered metadata updates). Dadurch hat man
den Effekt, dass im Falle massiver
Metadaten-Änderungen spätere Operationen die
vorhergehenden, noch nicht auf die Platte geschriebenen
Updates desselben Elements im Speicher
einholen. Alle Operationen, auf ein
Verzeichnis beispielsweise, werden also in der Regel noch im
Speicher abgewickelt, bevor der Update überhaupt auf
die Platte geschrieben wird (die dazugehörigen
Datenblöcke werden natürlich auch so sortiert,
dass sie nicht vor ihren Metadaten auf der Platte
sind). Im Fall eines Absturzes hat man ein implizites log
rewind: alle Operationen, die noch nicht den Weg auf
die Platte gefunden haben, sehen danach so aus, als
hätten sie nie stattgefunden. Man hat so also den
konsistenten Zustand von ca. 30 bis 60 Sekunden früher
sichergestellt. Der verwendete Algorithmus garantiert
dabei, dass alle tatsächlich benutzten Ressourcen
auch in den entsprechenden Bitmaps (Block- und inode
Tabellen) als belegt markiert sind. Der einzige Fehler, der
auftreten kann, ist, dass Ressourcen noch als
belegt markiert sind, die tatsächlich
frei sind. &man.fsck.8; erkennt dies und
korrigiert diese nicht mehr belegten Ressourcen. Die
Notwendigkeit eines Dateisystem-Checks darf aus diesem
Grunde auch ignoriert und das Dateisystem mittels
mount -f zwangsweise eingebunden werden.
Um noch allozierte Ressourcen freizugeben muss
später ein &man.fsck.8; nachgeholt werden. Das ist
dann auch die Idee des background fsck:
beim Starten des Systems wird lediglich ein
Schnappschuss des Filesystems
gemacht, mit dem &man.fsck.8; dann später arbeiten
kann. Alle Dateisysteme dürfen unsauber
eingebunden werden und das System kann sofort in den
Multiuser-Modus gehen. Danach wird ein
Hintergrund-fsck für die
Dateisysteme gestartet, die dies benötigen, um
möglicherweise irrtümlich belegte Ressourcen
freizugeben. (Dateisysteme ohne Soft
Updates benötigen natürlich immer noch
den üblichen (Vordergrund-)fsck,
bevor sie eingebunden werden können.)Der Vorteil ist, dass die Metadaten-Operationen
beinahe so schnell ablaufen wie im asynchronen Fall (also
durchaus auch schneller als beim logging, das
ja die Metadaten immer zweimal schreiben muss). Als
Nachteil stehen dem die Komplexität des Codes (mit
einer erhöhten Fehlerwahrscheinlichkeit in einem
bezüglich Datenverlust hoch sensiblen Bereich) und ein
erhöhter Speicherverbrauch entgegen. Außerdem
muss man sich an einige Eigenheiten
gewöhnen: Nach einem Absturz ist ein etwas älterer
Stand auf der Platte – statt einer leeren, aber bereits
angelegten Datei (wie nach einem herkömmlichen
fsck Lauf) ist auf einem Dateisystem mit
Soft Updates keine Spur der
entsprechenden Datei mehr zu sehen, da weder die Metadaten
noch der Dateiinhalt je auf die Platte geschrieben wurden.
Weiterhin kann der Platz nach einem rm -r
nicht sofort wieder als verfügbar markiert werden,
sondern erst dann, wenn der Update auch auf die Platte
vermittelt worden ist. Dies kann besonders dann Probleme
bereiten, wenn große Datenmengen in einem Dateisystem
ersetzt werden, das nicht genügend Platz hat, um alle
Dateien zweimal unterzubringen.Einstellungen von Kernel LimitsEinstellungenvon Kernel LimitsDatei und Prozeß Limitskern.maxfileskern.maxfilesAbhängig von den Anforderungen Ihres Systems
kann kern.maxfiles erhöht oder
erniedrigt werden. Die Variable legt die maximale
Anzahl von Dateideskriptoren auf Ihrem System fest. Wenn
die Dateideskriptoren aufgebraucht sind, werden Sie
die Meldung file: table is full
wiederholt im Puffer für Systemmeldungen sehen. Den
Inhalt des Puffers können Sie sich mit dmesg
anzeigen lassen.Jede offene Datei, jedes Socket und jede FIFO verbraucht
einen Dateideskriptor. Auf dicken Produktionsservern
können leicht Tausende Dateideskriptoren benötigt
werden, abhängig von der Art und Anzahl der gleichzeitig
laufenden Dienste.Die Voreinstellung von kern.maxfile
wird von MAXUSERS aus Ihrer Kernelkonfiguration
bestimmt. kern.maxfiles wächst
proportional mit dem Wert von MAXUSERS.
Wenn Sie einen angepassten Kernel kompilieren, empfiehlt es sich
diese Option entsprechend der maximalen Benutzerzahl Ihres
Systems einzustellen. Obwohl auf einer Produktionsmaschine
vielleicht nicht 256 Benutzer gleichzeitig angemeldet sind,
können die benötigten Ressourcen ähnlich denen
eines großen Webservers sein.Ab &os; 4.5 können Sie MAXUSERS
in der Kernelkonfiguration auf 0 setzen.
Das System setzt dann automatisch einen passenden Wert, der
von der Größe Ihres Hauptspeichers abhängt,
ein.kern.ipc.somaxconnkern.ipc.somaxconnDie Variable kern.ipc.somaxconn
beschränkt die Größe der Warteschlange
(Listen-Queue) für
neue TCP-Verbindungen. Der Vorgabewert von
128 ist normalerweise zu klein, um neue
Verbindungen auf einem stark ausgelasteten Webserver
zuverlässig zu handhaben. Auf solchen Servern sollte
der Wert auf 1024 oder höher gesetzt
werden. Ein Dienst (z.B. &man.sendmail.8;, oder
Apache) kann die Größe
der Queue selbst einschränken. Oft gibt es die
Möglichkeit, die Größe der Listen-Queue in
einer Konfigurationsdatei einzustellen. Eine große
Listen-Queue übersteht vielleicht auch einen
Denial of Service Angriff (DoS).Netzwerk LimitsDie Kerneloption NMBCLUSTERS schreibt
die Anzahl der Netzwerkpuffer (Mbufs) fest, die das System besitzt.
Eine zu geringe Anzahl Mbufs auf einem Server mit viel Netzwerkverkehr
verringert die Leistung von &os;. Jeder Mbuf-Cluster nimmt
ungefähr 2 kB Speicher in Anspruch, so dass ein Wert
von 1024 insgesamt 2 Megabyte Speicher für Netzwerkpuffer
im System reserviert. Wie viele Cluster benötigt werden,
lässt sich durch eine einfache Berechnung herausfinden.
Wenn Sie einen Webserver besitzen, der maximal 1000 gleichzeitige
Verbindungen servieren soll und jede der Verbindungen je einen
16 kB großen Puffer zum Senden und Empfangen braucht,
brauchen Sie ungefähr 32 MB Speicher für
Netzwerkpuffer. Als Daumenregel verdoppeln Sie diese Zahl,
so dass sich für NMBCLUSTERS der Wert
2x32 MB / 2 kB = 32768 ergibt.
Für Maschinen mit viel Speicher sollten Werte zwischen
4096 und 32768 genommen werden. Sie können diesen Wert
nicht willkürlich erhöhen, da dies bereits zu einem
Absturz beim Systemstart führen kann. Mit der Option
von &man.netstat.1; können Sie den
Gebrauch der Netzwerkpuffer kontrollieren.Die Netzwerkpuffer können beim Systemstart mit der
Loader-Variablen kern.ipc.nmbclusters
eingestellt werden. Nur auf älteren &os;-Systemen
müssen Sie die Kerneloption NMBCLUSTERS
verwenden.Die Anzahl der &man.sendfile.2; Puffer muss auf ausgelasteten
Servern, die den Systemaufruf &man.sendfile.2; oft verwenden,
vielleicht erhöht werden. Dazu können Sie die
Kerneloption NSFBUFS verwenden oder die
Anzahl der Puffer in /boot/loader.conf
(siehe &man.loader.8;) setzen. Die Puffer sollten erhöht
werden, wenn Sie Prozesse im Zustand sfbufa
sehen. Die schreibgeschützte sysctl-Variable
kern.ipc.nsfbufs zeigt die Anzahl
eingerichteten Puffer im Kernel. Der Wert dieser Variablen
wird normalerweise von kern.maxusers bestimmt.
Manchmal muss die Pufferanzahl jedoch manuell eingestellt
werden.Auch wenn ein Socket nicht blockierend angelegt wurde,
kann der Aufruf von &man.sendfile.2; blockieren, um auf
freie struct sf_buf Puffer zu warten.net.inet.ip.portrange.*net.inet.ip.portrange.*Die sysctl-Variable net.inet.ip.portrange.*
legt die Portnummern für TCP- und UDP-Sockets fest.
Es gibt drei Bereiche: den niedrigen Bereich, den
normalen Bereich und den hohen Bereich. Die meisten
Netzprogramme benutzen den normalen Bereich. Dieser Bereich
umfasst in der Voreinstellung die Portnummern 500 bis 5000
und wird durch die Variablen
net.inet.ip.portrange.first und
net.inet.ip.portrange.last festgelegt.
Die festgelegten Bereiche für Portnummern werden von
ausgehenden Verbindungen benutzt. Unter bestimmten
Umständen, beispielsweise auf stark ausgelasteten
Proxy-Servern, sind alle Portnummern für ausgehende
Verbindungen belegt. Bereiche
für Portnummern spielen auf Servern keine Rolle, die
hauptsächlich eingehende Verbindungen verarbeiten (wie ein
normaler Webserver) oder nur eine begrenzte Anzahl ausgehender
Verbindungen öffnen (beispielsweise ein Mail-Relay).
Wenn Sie keine freien Portnummern mehr haben, sollten Sie
die Variable net.inet.ip.portrange.last
langsam erhöhen. Ein Wert von 10000,
20000 oder 30000 ist
angemessen. Beachten Sie auch eine vorhandene
Firewall, wenn Sie die Bereiche für Portnummern
ändern. Einige Firewalls sperren große Bereiche
(normalerweise aus den kleinen Portnummern) und erwarten,
dass hohe Portnummern für ausgehende Verbindungen
verwendet werden. Daher kann es erforderlich sein, den
Wert von net.inet.ip.portrange.first
zu erhöhen.TCP Bandwidth Delay Product BegrenzungTCP Bandwidth Delay Product Begrenzungnet.inet.tcp.inflight_enableDie TCP Bandwidth Delay Product Begrenzung gleicht
TCP/Vegas von NetBSD. Die
Begrenzung wird aktiviert, indem Sie die sysctl-Variable
net.inet.tcp.inflight_enable auf den
Wert 1 setzen. Das System wird dann
versuchen, für jede Verbindung, das Produkt aus der
Übertragungsrate und der Verzögerungszeit zu
bestimmen. Dieses Produkt begrenzt die Datenmenge, die
für einen optimales Durchsatz zwischengespeichert
werden muss.Diese Begrenzung ist nützlich, wenn Sie Daten
über Verbindungen mit einem hohen Produkt aus
Übertragungsrate und Verzögerungszeit wie Modems,
Gigabit-Ethernet oder schnellen WANs, zur Verfügung
stellen. Insbesondere wirkt sich die Begrenzung aus, wenn
die Verbindung die TCP-Option
Window-scaling verwendet oder
große Sende-Fenster
(send window) benutzt.
Schalten Sie die Debug-Meldungen aus, wenn Sie die Begrenzung
aktiviert haben. Dazu setzen Sie die Variable
net.inet.tcp.inflight_debug auf
0. Auf Produktions-Systemen sollten Sie
zudem die Variable net.inet.tcp.inflight_min
mindestens auf den Wert 6144 setzen.
Allerdings kann ein zu hoher Wert, abhängig von der
Verbindung, die Begrenzungsfunktion unwirksam machen.
Die Begrenzung reduziert die Datenmenge in den Queues von Routern
und Switches, sowie die Datenmenge in der Queue der lokalen
Netzwerkkarte. Die Verzögerungszeit
(Round Trip Time) für
interaktive Anwendungen sinkt, da weniger Pakete
zwischengespeichert werden. Dies gilt besonders für
Verbindungen über langsame Modems. Die Begrenzung
wirkt sich allerdings nur auf das Versenden von Daten aus
(Uploads, Server). Auf den Empfang von Daten (Downloads)
hat die Begrenzung keine Auswirkungen.Die Variable net.inet.tcp.inflight_stab
sollte nicht angepasst werden. Der
Vorgabewert der Variablen beträgt 20,
das heißt es werden maximal zwei Pakete zu dem Produkt
aus Übertragungsrate und Verzögerungszeit addiert.
Dies stabilisiert den Algorithmus und verbessert die
Reaktionszeit auf Veränderungen. Bei langsamen
Verbindungen können sich aber die Laufzeiten der Pakete
erhöhen (ohne diesen Algorithmus wären sie
allerdings noch höher). In solchen Fällen
können Sie versuchen, den Wert der Variablen auf
15, 10 oder
5 zu erniedrigen. Gleichzeitig müssen
Sie vielleicht auch net.inet.tcp.inflight_min
auf einen kleineren Wert (beispielsweise 3500)
setzen. Ändern Sie diese Variablen nur ab, wenn Sie
keine anderen Möglichkeiten mehr haben.Hinzufügen von Swap-BereichenEgal wie vorausschauend Sie planen, manchmal entspricht ein System
einfach nicht Ihren Erwartungen. Es ist leicht, mehr Swap-Bereiche
hinzuzufügen. Dazu stehen Ihnen drei Wege offen: Sie
können eine neue Platte einbauen, den Swap-Bereich über NFS
ansprechen oder eine Swap-Datei auf einer existierenden Partition
einrichten.Swap auf einer neuen FestplatteDer einfachste Weg, zusätzlich einen Swap-Bereich
einzurichten, ist der Einbau einer neuen Platte, die Sie
sowieso gebrauchen können. Die Anordnung von
Swap-Bereichen wird in
des Handbuchs besprochen.Swap-Bereiche über NFSSwap-Bereiche über NFS sollten Sie nur dann einsetzen, wenn
Sie über keine lokale Platte verfügen. In &os;
Versionen vor 4.X ist dies zudem sehr langsam und nicht effizient.
Ab &os; 4.0 ist das Nutzen von Swap über NFS genügend
schnell und effizient, doch wird es durch die zur Verfügung
stehende Bandbreite limitiert und belastet zusätzlich den
NFS-Server.Swap-DateienSie können eine Datei festgelegter Größe als
Swap-Bereich nutzen. Im folgenden Beispiel werden wir eine 64 MB
große Datei mit Namen /usr/swap0
benutzen, Sie können natürlich einen beliebigen Namen
für den Swap-Bereich benutzen.Erstellen einer Swap-Datei mit &os; 4.XZuerst stellen Sie bitte sicher, dass Ihr Kernel den
vnode-Treiber enthält. In neueren Versionen von
GENERIC ist dieser
nicht enthalten.pseudo-device vn 1 #Vnode driver (turns a file into a device)Erstellen Sie das vn-Gerät:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV vn0Legen Sie die Swap-Datei /usr/swap0
an:&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64Setzen Sie die richtigen Berechtigungen für
/usr/swap0:&prompt.root; chmod 0600 /usr/swap0Aktivieren Sie die Swap-Datei in
/etc/rc.conf:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.Um die Swap-Datei zu aktivieren, führen Sie
entweder einen Neustart durch oder geben das folgende Kommando
ein:&prompt.root; vnconfig -e /dev/vn0b /usr/swap0 swapErstellen einer Swap-Datei mit &os; 5.XStellen Sie sicher, dass der Kernel RAM-Disks
(&man.md.4;) unterstützt. Dies ist in der
GENERIC-Konfiguration
voreingestellt.device md # Memory "disks"Legen Sie die Swap-Datei
/usr/swap0 an:&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64Setzen Sie die richtigen Berechtigungen für
/usr/swap0:&prompt.root; chmod 0600 /usr/swap0Aktivieren Sie die Swap-Datei
/etc/rc.conf:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.Um die Swap-Datei zu aktivieren, führen Sie
entweder einen Neustart durch oder geben das folgende Kommando
ein:&prompt.root; mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0HitenPandyaVerfasst von TomRhodesEnergie- und RessourcenverwaltungEs ist sehr wichtig, Hardware effizient einzusetzen. Vor der
Einführung des Advanced Configuration and Power
Interface (ACPI) konnten der
Stromverbrauch und die Wärmeabgabe eines Systems nur sehr
schlecht von Betriebssystemen gesteuert werden. Die Hardware wurde
mit BIOS-Funktionen, wie Plug and Play BIOS
(PNPBIOS) oder Advanced Power Management
(APM), gesteuert. Das Betriebssystem soll aber das System
überwachen können und auf Ereignisse, beispielsweise einen
unerwarteten Temperaturanstieg, reagieren können.Dieser Abschnitt erklärt das Advanced Configuration and
Power Interface (ACPI). Beachten Sie, dass Sie
das ACPI erst ab &os; 5.X als Kernelmodul
zur Verfügung steht. In &os; 4.9 können Sie
ACPI aktivieren, indem Sie die nachstehende
Zeile in die Kernelkonfigurationsdatei aufnehmen und den Kernel
neu übersetzen:device acpicaWas ist ACPI?Advanced Configuration and Power Interface
(ACPI) ist ein Standard verschiedener
Hersteller, der die Verwaltung von Hardware und
Energiesparfunktionen festlegt. Die
ACPI-Funktionen können von einem
Betriebssystem gesteuert werden. Der Vorgänger des
ACPI, Advanced Power Management
(APM), der auch in &os; 4.X verwendet
wird, erwies sich in modernen Systemen als unzureichend.Mängel des Advanced Power Managements (APM)Das Advanced Power Management (APM)
steuert den Energieverbrauch eines Systems auf Basis
der Systemaktivität. Das APM-BIOS wird von dem
Hersteller des Systems zur Verfügung gestellt
und ist auf die spezielle Hardware angepasst. Der
APM-Treiber des Betriebssystems greift auf das
APM Software Interface zu, das den
Energieverbrauch regelt.Das APM hat hauptsächlich
vier Probleme. Erstens läuft die Energieverwaltung
unabhängig vom Betriebssystem in einem
(herstellerspezifischen) BIOS. Beispielsweise kann
das APM-BIOS die Festplatten nach einer konfigurierbaren
Zeit ohne die Zustimmung des Betriebssystems herunterfahren.
Zweitens befindet sich die ganze APM-Logik im BIOS; das
Betriebssystem hat gar keine APM-Komponenten. Bei Problemen
mit dem APM-BIOS muss das Flash-ROM aktualisiert werden.
Diese Prozedur ist gefährlich, da sie im Fehlerfall
das System unbrauchbar machen kann. Zum Dritten ist APM
eine Technik, die herstellerspezifisch ist und nicht
koordiniert wird. Fehler im BIOS eines Herstellers werden
nicht unbedingt im BIOS anderer Hersteller korrigiert.
Das letzte Problem ist, dass im APM-BIOS nicht genügend
Platz vorhanden ist, um eine durchdachte oder eine auf den
Zweck der Maschine zugeschnittene Energieverwaltung
zu implementieren.Das Plug and Play BIOS (PNPBIOS)
war ebenfalls unzureichend. Das PNPBIOS verwendet eine
16-Bit-Technik. Damit das Betriebssystem das PNPBIOS
ansprechen kann, muss es in einer 16-Bit-Emulation laufen.Der APM-Treiber von &os; ist in
der Hilfeseite &man.apm.4; beschrieben.Konfiguration des ACPIDas Modul acpi.ko wird
standardmäßig beim Systemstart vom &man.loader.8;
geladen und sollte daher nicht
fest in den Kernel eingebunden werden. Dadurch kann
acpi.ko ohne einen Neubau des Kernels ersetzt
werden und das Modul ist leichter zu testen. Wenn Sie in der
Ausgabe von &man.dmesg.8; das Wort ACPI sehen,
ist das Modul geladen worden. Es ist nicht sinnvoll, das Modul
im laufenden Betrieb zu laden, dies kann sogar manchmal fatale
Folgen haben.
-
Das Modul kann im laufenden Betrieb nicht entfernt werden,
da es zur Kommunikation mit der Hardware verwendet wird.
Mit &man.acpiconf.8; können Sie das ACPI
konfigurieren (unter anderem können Sie damit auch die
Energieverwaltung deaktivieren).ACPI und APM
können nicht zusammen verwendet werden. Das zuletzt
geladene Modul beendet sich, sobald es bemerkt, dass das andere
Modul geladen ist.Mit &man.acpiconf.8; können Sie das System in einen
Ruhemodus (sleep mode) versetzen.
Es gibt verschiedene Modi (von 1 bis
5), die Sie auf der Kommandozeile mit
angeben können. Für die meisten
Anwender ist der Modus 1 völlig
ausreichend. Der Modus 5 schaltet das System
aus (Soft-off) und entspricht dem
Ausführen des folgenden Befehls:&prompt.root; halt -pWeitere Informationen entnehmen Sie bitte der Hilfeseite
&man.acpiconf.8;.NateLawsonVerfasst von PeterSchultzMit Beiträgen von TomRhodesACPI-FehlersucheACPI ist ein gänzlich neuer
Weg, um Geräte aufzufinden und deren Stromverbrauch
zu regulieren. Weiterhin bietet ACPI
einen einheitlichen Zugriff auf Geräte, die vorher
vom BIOS verwaltet wurden. Es werden
zwar Fortschritte gemacht, dass ACPI
auf allen Systemen läuft, doch tauchen immer wieder
Fehler auf: fehlerhafter Bytecode der
ACPI-Machine-Language
(AML) einiger Systemplatinen,
ein unvollständiges &os;-Kernel-Subsystem oder
- Fehler im ACPI-CA-Interpreter von Intel.
+ Fehler im ACPI-CA-Interpreter von &intel;.
Dieser Abschnitt hilft Ihnen, zusammen mit den Betreuern
des &os;-ACPI-Subsystems, Fehlerquellen
zu finden und Fehler zu beseitigen. Danke, dass Sie diesen
Abschnitt lesen; hoffentlich hilft er, Ihre Systemprobleme
zu lösen.Fehlerberichte einreichenBevor Sie einen Fehlerbericht einrichen, stellen
Sie bitte sicher, dass Sie die neuste
BIOS-Version und die neuste
Firmware von Controllern, sofern diese erhältlich ist,
verwenden.Wenn Sie sofort einen Fehlerbericht einsenden wollen,
schicken Sie bitte die folgenden Informationen an
die Mailingliste freebsd-acpi:Beschreiben Sie den Fehler und alle Umstände,
unter denen der Fehler auftritt. Geben Sie
ebenfalls den Typ und das Modell Ihres Systems
an. Wenn Sie einen neuen Fehler entdeckt haben,
versuchen Sie möglichst genau zu beschreiben,
wann der Fehler das erste Mal aufgetreten ist.Die Ausgaben eines Systemstarts
(boot ).
Geben Sie auch alle Fehlermeldungen an, die erscheinen,
wenn Sie den Fehler provozieren.Die Ausgaben eines Systemstarts
(boot ) ohne
ACPI, wenn das Problem
ohne ACPI nicht auftritt.Die Ausgabe von sysctl -a | grep hw.acpi.
Dieses Kommando zeigt die vom System unterstützten
ACPI-Funktionen an.Die URL, unter der die
ACPI-Source-Language
(ASL) liegt. Schicken Sie
bitte nicht die ASL
an die Mailingliste, da die ASL
sehr groß sein kann. Eine Kopie der
ASL erstellen Sie mit dem
nachstehenden Befehl:&prompt.root; acpidump -t -d > name-system.aslSetzen Sie bitte für name
den Namen Ihres Kontos und für
system den Hersteller und
das Modell Ihres Systems ein. Zum Beispiel:
njl-FooCo6000.asl.Obwohl die meisten Entwickler die Mailingliste
&a.current.name; lesen, sollten Sie Fehlerberichte an
die Liste &a.acpi.name; schicken. Seien Sie bitte
geduldig; wir haben alle Arbeit außerhalb des Projekts.
Wenn der Fehler nicht offensichtlich ist, bitten
wir Sie vielleicht, einen offiziellen Fehlerbericht
(PR) mit &man.send-pr.1; einzusenden.
Geben Sie im Fehlerbericht bitte dieselben Informationen
wie oben an. Mithilfe der PRs
verfolgen und lösen wir Probleme. Senden Sie
bitte keinen PR ein, ohne vorher
den Fehlerbericht an die Liste &a.acpi.name; zu senden.
Wir benutzen die PRs als Erinnerung
an bestehende Probleme und nicht zum Sammeln aller
Probleme. Es kann sein, dass der Fehler schon von
jemand anderem gemeldet wurde.ACPI-GrundlagenACPI gibt es in allen modernen Rechnern
der ia32- (x86), ia64- (Itanium) und amd64- (AMD) Architektur.
Der vollständige Standard bietet Funktionen
zur Steuerung und Verwaltung der CPU-Leistung,
der Stromversorgung, von Wärmebereichen, Batterien,
eingebetteten Controllern und Bussen. Auf den meisten
Systemen wird nicht der vollständige Standard implementiert.
Arbeitsplatzrechner besitzen meist nur Funktionen zur
Verwaltung der Busse, während Notebooks Funktionen
zur Temperaturkontrolle und Ruhezustände besitzen.Ein ACPI konformes System
besitzt verschiedene Komponenten. Die BIOS-
und Chipsatz-Hersteller stellen mehrere statische
Tabellen bereit (zum Beispiel die
Fixed-ACPI-Description-Table,
FADT). Die Tabellen enthalten beispielsweise
die mit SMP-Systemen benutzte
APIC-Map, Konfigurationsregister und
einfache Konfigurationen. Zusätzlich gibt es die
Differentiated-System-Description-Table (DSDT),
die Bytecode enthält. Die Tabelle ordnet Geräte
und Methoden in einem baumartigen Namensraum an.Ein ACPI-Treiber muss die statischen
Tabellen einlesen, einen Interpreter für den Bytecode
bereitstellen und die Gerätetreiber im Kernel so
modifizieren, dass sie mit dem ACPI-Subsystem
- kommunizieren. Für &os;, Linux und NetBSD hat Intel
+ kommunizieren. Für &os;, Linux und NetBSD hat &intel;
den Interpreter ACPI-CA, zur Verfügung
gestellt. Der Quelltext zu ACPI-CA
befindet sich im Verzeichnis
src/sys/contrib/dev/acpica.
Die Schnittstelle von ACPI-CA zu &os;
befindet sich unter src/sys/dev/acpica/Osd.
Treiber, die verschiedene ACPI-Geräte
implementieren, befinden sich im Verzeichnis
src/sys/dev/acpica.Häufige ProblemeDamit ACPI richtig funktioniert,
müssen alle Teile funktionieren. Im Folgenden
finden Sie eine Liste mit Problemen und möglichen
Umgehungen oder Fehlerbehebungen. Die Liste ist nach
der Häufigkeit, mit der die Probleme auftreten,
sortiert.Suspend/ResumeACPI kennt drei
Suspend-to-RAM-Zustände
(STR):
S1-S3.
Es gibt einen Suspend-to-Disk-Zustand:
S4. Der Zustand S5
wird Soft-Off genannt. In diesem Zustand befindet
sich ein Rechner, wenn die Stromversorgung angeschlossen
ist, der Rechner aber nicht hochgefahren ist. Der
Zustand S4 kann auf zwei Arten
implementiert werden:
S4BIOS und
S4OS.
Im ersten Fall wird der Suspend-to-Disk-Zustand durch
das BIOS hergestellt im zweiten
Fall alleine durch das Betriebssystem.Die Suspend-Zustände sind Ruhezustände,
in denen der Rechner weniger Energie als im
Normalbetrieb benötigt. Resume bezeichnet
die Rückkehr zum Normalbetrieb.Die Suspend-Zustände können Sie mit
dem Kommando sysctl -a | grep hw.acpi
ermitteln. Das Folgende könnte beispielsweise
ausgegeben werden:hw.acpi.supported_sleep_state: S3 S4 S5
hw.acpi.s4bios: 0Diese Ausgabe besagt, dass mit dem Befehl
acpiconf -s die Zustände
S3, S4OS
und S5 eingestellt werden können.
Hätte den Wert
1, gäbe es den Zustand
S4BIOS anstelle
von S4OS.Wenn Sie die Suspend- und Resume-Funktionen
testen, fangen Sie mit dem S1-Zustand
an, wenn er angeboten wird. Dieser Zustand wird
am ehesten funktionieren, da der Zustand wenig
Treiber-Unterstützung benötigt. Der Zustand
S2 ist ähnlich wie
S1, allerdings hat ihn noch niemand
implementiert. Als nächstes sollten Sie den
Zustand S3 ausprobieren. Dies
ist der tiefste STR-Schlafzustand.
Dieser Zustand ist auf massive Treiber-Unterstützung
angewiesen, um die Geräte wieder richtig zu
initialisieren. Wenn Sie Probleme mit diesem Zustand
haben, können Sie die Mailingliste
&a.acpi.name; anschreiben. Erwarten Sie allerdings
nicht zu viel: Es gibt viele Treiber und Geräte,
an denen noch gearbeitet und getestet wird.Um das Problem einzugrenzen, entfernen Sie soviele
Treiber wie möglich aus dem Kernel. Sie können
das Problem isolieren, indem Sie einen Treiber nach
dem anderen laden, bis der Fehler wieder auftritt.
Typischerweise verursachen binäre Treiber wie
nvidia.ko,
X11-Grafiktreiber und
USB-Treiber die meisten Fehler,
hingegen laufen Ethernet-Treiber für gewöhnlich
sehr zuverlässig. Wenn ein Treiber
zuverlässig geladen und entfernt werden kann,
können Sie den Vorgang automatisieren, indem
Sie die entsprechenden Kommandos in die Dateien
/etc/rc.suspend und
/etc/rc.resume einfügen.
In den Dateien finden Sie ein deaktiviertes Beispiel,
das einen Treiber lädt und wieder entfernt.
Ist die Bildschirmanzeige bei der Wiederaufnahme
des Betriebs gestört, setzen Sie bitte die
Variable auf
0. Versuchen Sie auch, die Variable
auf kürzere
Zeitspannen zu setzen.Die Suspend- und Resume-Funktionen können
Sie auch auf einer neuen Linux-Distribution
mit ACPI testen. Wenn es mit
Linux funktioniert, liegt das Problem wahrscheinlich
bei einem &os;-Treiber. Es hilft uns, das Problem
zu lösen, wenn Sie feststellen können, welcher
Treiber das Problem verursacht. Beachten Sie bitte,
dass die ACPI-Entwickler normalerweise
keine anderen Treiber pflegen (beispielsweise Sound- oder
ATA-Treiber). Es ist wohl das beste,
die Ergebnisse der Fehlersuche an die Mailingliste
&a.current.name; und den Entwickler des Treibers
zu schicken. Wenn Ihnen danach ist, versuchen Sie,
den Fehler in der Resume-Funktion zu finden, indem
Sie einige &man.printf.3;-Anweisungen in den Code
des fehlerhaften Treibers einfügen.Schließlich können Sie ACPI
noch abschalten und stattdessen APM
verwenden. Wenn die Suspend- und Resume-Funktionen mit
APM funktionieren, sollten Sie
vielleicht besser APM verwenden
(insbesondere mit alter Hardware von vor dem Jahr 2000).
Die Hersteller benötigten einige Zeit, um
ACPI korrekt zu implementieren, daher
gibt es mit älterer Hardware oft
ACPI-Probleme.Temporäre oder permanente SystemhängerDie meisten Systemhänger entstehen durch verlorene
Interrupts oder einen Interrupt-Sturm.
Probleme werden verursacht durch die Art, in der das
BIOS Interrupts vor dem Systemstart
konfiguriert, durch eine fehlerhafte
APIC-Tabelle und durch die
Zustellung des System-Control-Interrupts
(SCI).Anhand der Ausgabe des Befehls
vmstat -i können Sie verlorene
Interrupts von einem Interrupt-Sturm unterscheiden.
Untersuchen Sie die Ausgabezeile, die acpi0
enthält. Ein Interrupt-Sturm liegt vor, wenn
der Zähler öfter als ein paar Mal pro
Sekunde hochgezählt wird. Wenn sich das System
aufgehangen hat, versuchen Sie mit der Tastenkombination
CtrlAltEsc in den Debugger DDB
zu gelangen. Geben Sie dort den Befehl
ein.Wenn Sie Interrupt-Probleme haben, ist es vorerst
wohl am besten, APIC zu deaktivieren.
Tragen Sie dazu die Zeile
hint.apic.0.disabled="1" in
loader.conf ein.Abstürze (Panics)Panics werden so
schnell wie möglich behoben; mit ACPI
kommt es aber selten dazu. Zuerst sollten Sie
die Panic reproduzieren und dann versuchen einen
backtrace (eine
Rückverfolgung der Funktionsaufrufe) zu erstellen.
Richten Sie dazu den DDB über
die serielle Schnittstelle (siehe
) oder eine gesonderte
&man.dump.8;-Partition ein. In DDB
können Sie den backtrace
mit dem Kommando tr erstellen.
Falls Sie den backtrace
vom Bildschirm abschreiben müssen, schreiben
Sie bitte mindestens die fünf ersten und die
fünf letzten Zeile der Ausgabe auf.Versuchen Sie anschließend, das Problem
durch einen Neustart ohne ACPI
zu beseitigen. Wenn das funktioniert hat, können
Sie versuchen, das verantwortliche
ACPI-Subsystem durch Setzen der
Variablen
herauszufinden. Die Hilfeseite &man.acpi.4; enthält
dazu einige Beispiele.Nach einem Suspend oder einem Stopp startet
das System wiederSetzen Sie zuerst in &man.loader.conf.5; die Variable
auf
0. Damit wird verhindert, dass
ACPI während des Systemabschlusses
die Bearbeitung verschiedener Ereignisse deaktiviert.
Auf manchen Systemen muss die Variable den Wert
1 besitzen (die Voreinstellung).
Normalerweise wird der unerwünschte Neustart
des Systems durch Setzen dieser Variablen behoben.Andere ProblemeWenn Sie weitere Probleme mit ACPI
haben (Umgang mit einer Docking-Station, nicht erkannte
Geräte), schicken Sie bitte eine Beschreibung an die
Mailingliste. Allerdings kann es sein, dass einige
Probleme von noch unvollständigen Teilen des
ACPI-Subsystems abhängen und
es etwas dauern kann bis diese Teile fertig sind.
Seien Sie geduldig und rechnen Sie damit, dass wir
Ihnen Fehlerbehebungen zum Testen senden.ASL, acpidump und
IASLEin häufiges Problem ist fehlerhafter Bytecode
des BIOS-Herstellers. Dies erkennen
Sie an Kernelmeldungen auf der Konsole wie die folgende:ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\
(Node 0xc3f6d160), AE_NOT_FOUNDOft können Sie das Problem dadurch lösen,
dass Sie die neuste BIOS-Version
einspielen. Die meisten Meldungen auf der Konsole sind
harmlos, wenn aber beispielsweise der Batteriestatus
falsch angezeigt wird, können Sie in den
Meldungen nach Problemen mit der
AML-Machine-Language
(AML) suchen. Der Bytecode der
AML wird aus der
ACPI-Source-Language (ASL)
übersetzt und in einer Tabelle, der DSDT,
abgelegt. Eine Kopie der ASL
können Sie mit dem Befehl &man.acpidump.8; erstellen.
Verwenden Sie mit diesem Befehl sowohl die Option
(die Inhalte der statischen
Tabellen anzeigen) als auch die Option
(die AML in ASL
zurückübersetzen). Ein Beispiel für
die Syntax finden Sie im Abschnitt Fehlerberichte einreichen.Sie können einfach prüfen, ob sich die
ASL übersetzen lässt.
Für gewöhnlich können Sie Warnungen
während des Übersetzens ignorieren.
Fehlermeldungen führen normal dazu, dass
ACPI fehlerhaft arbeitet. Ihre
ASL übersetzen Sie mit dem
nachstehenden Kommando:&prompt.root; iasl ihre.aslDie ASL reparierenAuf lange Sicht ist es unser Ziel, dass
ACPI ohne Eingriffe des Benutzers
läuft. Zurzeit entwickeln wir allerdings noch
Umgehungen für Fehler der BIOS-Hersteller.
Microsofts Interpreter (acpi.sys
und acpiec.sys) prüft die
ASL nicht streng gegen den Standard.
Daher reparieren BIOS-Hersteller,
die ACPI nur unter Windows testen,
ihre ASL nicht. Wir hoffen, dass
wir das vom Standard abweichende Verhalten des
Microsoft-Interpreters dokumentieren und in &os; replizieren
können. Dadurch müssen Benutzer ihre
ASL nicht selbst reparieren.
Sie können Ihre ASL selbst reparieren,
wenn Sie ein Problem umgehen und uns helfen möchten.
Senden Sie uns bitte die mit &man.diff.1; erstellte Differenz
zwischen alter und neuer ASL. Wir
werden versuchen, den Interpreter ACPI-CA
zu korrigieren, damit die Fehlerbehebung nicht mehr
erforderlich ist.Die nachfolgende Liste enthält häufige
Fehlermeldungen, deren Ursache und eine Beschreibung,
wie die Fehler korrigiert werden:Abhängigkeiten vom BetriebssystemEinige AMLs gehen davon aus, dass
die Welt ausschließlich aus verschiedenen
Windows-Versionen besteht. &os; kann vorgeben, irgendein
Betriebssystem zu sein. Versuchen Sie das Betriebssystem,
das Sie in der ASL finden, in der
Datei /boot/loader.conf anzugeben:
hw.acpi.osname="Windows 2001".Fehlende Return-AnweisungenEinige Methoden verzichten auf die vom Standard
vorgeschriebene Rückgabe eines Wertes. Obwohl
der Interpreter ACPI-CA dies nicht
beheben kann, besitzt &os; die Möglichkeit, den
Rückgabewert implizit zu setzen. Wenn Sie
wissen, welcher Wert zurückgegeben werden muss,
können Sie die fehlenden Return-Anweisungen
selbst einsetzen. Die Option
zwingt iasl, die ASL
zu übersetzen.Überschreiben der vorgegebenen
AMLNachdem Sie Ihre ASL in der
Datei ihre.asl angepasst haben,
übersetzen Sie die ASL wie folgt:&prompt.root; iasl ihre.aslMit der Option erzwingen Sie das
Erstellen der AML auch wenn während
der Übersetzung Fehler auftreten. Beachten Sie,
dass einige Fehler, wie fehlende Return-Anweisungen,
automatisch vom Interpreter umgangen werden.In der Voreinstellung erstellt der Befehl
iasl die Ausgabedatei
DSDT.aml. Wenn Sie diese Datei
anstelle der fehlerhaften Kopie des BIOS
laden wollen, editieren Sie /boot/loader.conf
wie folgt:acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/DSDT.aml"Stellen Sie bitte sicher, dass sich die Datei
DSDT.aml im Verzeichnis
/boot befindet.ACPI-Meldungen zur
Fehlersuche erzeugenDer ACPI-Treiber besitzt
flexible Möglichkeiten zur Fehlersuche. Sie
können sowohl die zu untersuchenden Subsysteme
als auch die zu erzeugenden Ausgaben festlegen. Die zu
untersuchenden Subsysteme werden als so genannte
layers angegeben. Die Subsysteme sind in
ACPI-CA-Komponenten
(ACPI_ALL_COMPONENTS) und
ACPI-Hardware (ACPI_ALL_DRIVERS)
aufgeteilt. Welche Meldungen ausgegeben werden, wird über
level gesteuert. level reicht
von ACPI_LV_ERROR (es werden nur Fehler
ausgegeben) bis zu ACPI_LV_VERBOSE (alles
wird ausgegeben). level ist eine Bitmaske,
sodass verschiedene Stufen auf einmal (durch Leerzeichen
getrennt) angegeben werden können. Die erzeugte
Ausgabemenge passt vielleicht nicht in den Konsolenpuffer.
In diesem Fall sollten Sie die Ausgaben mithilfe einer
seriellen Konsole sichern. Die möglichen Werte
für layers und level
werden in der Hilfeseite &man.acpi.4; beschrieben.Die Ausgaben zur Fehlersuche sind in der Voreinstellung
nicht aktiviert. Wenn ACPI im Kernel
enthalten ist, fügen Sie options ACPI_DEBUG
zur Kernelkonfigurationsdatei hinzu. Sie können die
Ausgaben zur Fehlersuche global aktivieren, indem Sie in der
Datei /etc/make.conf die Zeile
ACPI_DEBUG=1 einfügen. Das Modul
acpi.ko können Sie wie folgt
neu übersetzen:&prompt.root; cd /sys/modules/acpi/acpi
&& make clean &&
make ACPI_DEBUG=1Installieren Sie anschließend
acpi.ko im Verzeichnis
/boot/kernel.
In der Datei loader.conf stellen Sie
level und layer ein. Das
folgende Beispiel aktiviert die Ausgabe von Fehlern für
alle ACPI-CA-Komponenten und alle
ACPI-Hardwaretreiber (wie
CPU, LID):debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
debug.acpi.level="ACPI_LV_ERROR"Wenn ein Problem durch ein bestimmtes Ereignis,
beispielsweise den Start nach einem Ruhezustand, hervorgerufen
wird, können Sie die Einstellungen für
level und layer auch mit dem
Kommando sysctl vornehmen. In diesem
Fall müssen Sie die Datei loader.conf
nicht editieren. Auf der sysctl-Kommandozeile
geben Sie dieselben Variablennamen wie in
loader.conf an.ACPI-InformationsquellenWeitere Informationen zu ACPI
erhalten Sie an den folgenden Stellen:die &a.acpi; Mailingliste,die Archive der ACPI-Mailingliste:
,die alten Archive der ACPI-Mailingliste:
,die ACPI-Spezifikation (Version 2.0):
,in den nachstehenden &os;-Hilfeseiten:
&man.acpi.4;, &man.acpi.thermal.4;, &man.acpidump.8;,
&man.iasl.8; und &man.acpidb.8;,
DSDT debugging resource
(als Beispiel wird Compaq erläutert, die
Ressource ist aber dennoch nützlich).
diff --git a/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml b/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml
index 4af1ca6625..7624a50464 100644
--- a/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml
@@ -1,4210 +1,4210 @@
BerndWarkenÜbersetzt von MartinHeinenSpeichermedienÜbersichtDieses Kapitel behandelt die Benutzung von Laufwerken unter
FreeBSD. Laufwerke können speichergestützte Laufwerke,
Netzwerklaufwerke oder normale SCSI/IDE-Geräte sein.Nachdem Sie dieses Kapitel gelesen haben, werden Sie Folgendes
wissen:Die Begriffe, die FreeBSD verwendet, um die
Organisation der Daten auf einem physikalischen Laufwerk
zu beschreiben (Partitionen und Slices).Wie Sie ein weiteres Laufwerk zu Ihrem System
hinzufügen.Wie virtuelle Dateisysteme, zum Beispiel RAM-Disks,
eingerichtet werden.Wie Sie mit Quotas die Benutzung von Laufwerken
einschränken können.Wie Sie Partitionen verschlüsseln, um Ihre Daten
zu schützen.Wie unter FreeBSD CDs und DVDs gebrannt werden.Sie werden die Speichermedien, die Sie für
Backups einsetzen können, kennen.Wie Sie die unter FreeBSD erhältlichen Backup
Programme benutzen.Wie Sie ein Backup mit Disketten erstellen.Was Schnappschüsse sind und wie sie eingesetzt
werden.Bevor Sie dieses Kapitel lesen,sollten Sie einen einen &os;-Kernel installieren
können ().GerätenamenDie folgende Tabelle zeigt die von FreeBSD unterstützten
Speichergeräte und deren Gerätenamen.
Namenskonventionen von physikalischen LaufwerkenLaufwerkstypGerätenameIDE-FestplattenadIDE-CD-ROM LaufwerkeacdSCSI-Festplatten und USB-SpeichermediendaSCSI-CD-ROM LaufwerkecdVerschiedene proprietäre CD-ROM-Laufwerkemcd Mitsumi CD-ROM,
scd Sony CD-ROM,
matcd Matsushita/Panasonic CD-ROM
Der &man.matcd.4;-Treiber wurde am 5. Oktober
vom FreeBSD 4.X Zweig entfernt und existiert in
FreeBSD 5.0 und 5.1-RELEASE nicht. Am
16. Juni 2003 wurde der Treiber wieder
in den FreeBSD 5.X-Zweig integriert.DiskettenlaufwerkefdSCSI-BandlaufwerkesaIDE-BandlaufwerkeastFlash-Laufwerkefla für &diskonchip;
Flash-DeviceRAID-Laufwerkeaacd für &adaptec; AdvancedRAID,
mlxd und mlyd
für &mylex;,
amrd für AMI &megaraid;,
idad für Compaq Smart RAID,
twed für &tm.3ware; RAID.
DavidO'BrianIm Original von Hinzufügen von LaufwerkenLaufwerkehinzufügenAngenommen, Sie wollen ein neues SCSI-Laufwerk zu einer Maschine
hinzufügen, die momentan nur ein Laufwerk hat. Dazu schalten
Sie zuerst den Rechner aus und installieren das Laufwerk entsprechend
der Anleitungen Ihres Rechners, Ihres Controllers und Laufwerk
Herstellers. Den genauen Ablauf können wir wegen der
großen Abweichungen leider nicht beschreiben.Nachdem Sie das Laufwerk installiert haben, melden Sie sich als
Benutzer root an und kontrollieren Sie
/var/run/dmesg.boot, um sicherzustellen,
dass das neue Laufwerk gefunden wurde. Das neue Laufwerk
wird, um das Beispiel fortzuführen, da1
heißen und soll unter /1 angehangen
werden. Fügen Sie eine IDE-Platte hinzu, wird sie
wd1 auf FreeBSD-Systemen vor 4.0 und
ad1
- auf den meisten 4.X Systemen heißen.
+ auf den meisten 4.X- und 5.X-Systemen heißen.
PartitionenSlicesfdiskDa FreeBSD auf IBM-PC kompatiblen Rechnern läuft, muss
es die PC BIOS-Partitionen, die verschieden von den traditionellen
BSD-Partitionen sind, berücksichtigen. Eine PC Platte kann
bis zu vier BIOS-Partitionen enthalten. Wenn die Platte
ausschließlich für FreeBSD verwendet wird, können
Sie den dedicated Modus benutzen, ansonsten
muss FreeBSD in eine der BIOS-Partitionen installiert werden.
In FreeBSD heißen die PC BIOS-Partitionen
Slices, um sie nicht mit den traditionellen
BSD-Partitionen zu verwechseln. Sie können auch Slices auf
einer Platte verwenden, die ausschließlich von FreeBSD
benutzt wird, sich aber in einem Rechner befindet, der noch ein
anderes Betriebssystem installiert hat. Dadurch stellen Sie sicher,
dass Sie fdisk des anderen Betriebssystems noch
benutzen können.Im Fall von Slices wird die Platte als
/dev/da1s1e hinzugefügt. Das heißt:
SCSI-Platte, Einheit 1 (die zweite SCSI-Platte), Slice 1
(PC BIOS-Partition 1) und die e BSD-Partition.
Wird die Platte ausschließlich für FreeBSD verwendet
(dangerously dedicated), wird sie einfach als
/dev/da1e hinzugefügt.Da &man.bsdlabel.8; (&man.disklabel.8; unter
&os; 4.X) zum Speichern von Sektoren 32-Bit Integer
verwendet, ist das Werkzeug in den meisten Fällen
auf 2^32-1 Sektoren pro Laufwerk oder 2 TB
beschränkt. In &man.fdisk.8; darf der Startsektor
nicht größer als 2^32-1 sein und Partitionen
sind auf eine Länge von 2^32-1 beschränkt.
In den meisten Fällen beschränkt dies die
Größe einer Partition auf 2 TB
und die maximale Größe eines Laufwerks
auf 4 TB. Das &man.sunlabel.8;-Format ist
mit 2^32-1 Sektoren pro Partition und 8 Partitionen
auf 16 TB beschränkt. Mit größeren
Laufwerken können &man.gpt.8;-Partitionen benutzt
werden.Verwenden von &man.sysinstall.8;sysinstallhinzufügen von LaufwerkensuDas sysinstall MenüUm ein Laufwerk zu partitionieren und zu labeln, kann das
menügestützte /stand/sysinstall
benutzt werden. Dazu melden Sie sich als root
an oder benutzen su, um
root zu werden. Starten Sie
/stand/sysinstall und wählen das
Configure Menü, wählen Sie dort
den Punkt Fdisk aus.Partitionieren mit fdiskInnerhalb von fdisk geben Sie
A ein, um die ganze Platte für
FreeBSD zu benutzen. Beantworten Sie die Frage remain
cooperative with any future possible operating systems mit
YES. W schreibt die
Änderung auf die Platte, danach können Sie
fdisk mit q
verlassen. Da Sie eine Platte zu einem schon laufenden System
hinzugefügt haben, beantworten Sie die Frage nach dem
Master Boot Record mit None.Disk-Label-EditorBSD PartitionenAls nächstes müssen Sie
sysinstall verlassen und es erneut
starten. Folgen Sie dazu bitte den Anweisungen von oben, aber
wählen Sie dieses Mal die Option Label,
um in den Disk Label Editor zu gelangen.
Hier werden die traditionellen BSD-Partitionen erstellt.
Ein Laufwerk kann acht Partitionen, die mit den Buchstaben
a-h gekennzeichnet werden,
besitzen. Einige Partitionen sind für spezielle Zwecke
reserviert. Die a Partition ist für die
Root-Partition (/) reserviert. Deshalb
sollte nur das Laufwerk, von dem gebootet wird, eine
a Partition besitzen. Die b
Partition wird für Swap-Partitionen benutzt, wobei Sie
diese auf mehreren Platten benutzen dürfen.
Im dangerously dedicated Modus spricht
die c Partition die gesamte Platte an,
werden Slices verwendet, wird damit die ganze Slice angesprochen.
Die anderen Partitionen sind für allgemeine Zwecke
verwendbar.Der Label Editor von sysinstall
bevorzugt die e
Partition für Partitionen, die weder Root-Partitionen noch
Swap-Partitionen sind. Im Label
Editor können Sie ein einzelnes Dateisystem
mit C erstellen. Wählen Sie
FS, wenn Sie gefragt werden, ob Sie ein
FS (Dateisystem) oder Swap erstellen wollen, und geben Sie einen
Mountpoint z.B. /mnt an. Wenn Sie nach einer
FreeBSD-Installation ein Dateisystem mit
sysinstall erzeugen,
so werden die Einträge in /etc/fstab
nicht erzeugt, so dass die Angabe des Mountpoints nicht
wichtig ist.Sie können nun das Label auf das Laufwerk schreiben und
das Dateisystem erstellen, indem Sie W
drücken. Ignorieren Sie die Meldung von
sysinstall, dass die neue Partition
nicht angehangen werden konnte, und verlassen Sie den Label Editor
sowie sysinstall.EndeIm letzten Schritt fügen Sie noch in
/etc/fstab den Eintrag für das neue
Laufwerk ein.Die KommandozeileAnlegen von SlicesMit der folgenden Vorgehensweise wird eine Platte mit
anderen Betriebssystemen, die vielleicht auf Ihrem Rechner
installiert sind, zusammenarbeiten und nicht das
fdisk Programm anderer Betriebssysteme
stören. Bitte benutzen
Sie den dedicated Modus nur dann, wenn
Sie dazu einen guten Grund haben!&prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1
&prompt.root; fdisk -BI da1 # Initialisieren der neuen Platte
&prompt.root; disklabel -B -w -r da1s1 auto # Labeln
&prompt.root; disklabel -e da1s1 # Editieren des Disklabels und Hinzufügen von Partitionen
&prompt.root; mkdir -p /1
&prompt.root; newfs /dev/da1s1e # Wiederholen Sie diesen Schritt für jede Partition
&prompt.root; mount /dev/da1s1e /1 # Anhängen der Partitionen
&prompt.root; vi /etc/fstab # Ändern Sie /etc/fstab entsprechendWenn Sie ein IDE-Laufwerk besitzen, ändern Sie
da in ad. Auf
Systemen vor 4.0 benutzen Sie wd.DedicatedOS/2Wenn das neue Laufwerk nicht von anderen Betriebssystemen
benutzt werden soll, können Sie es im
dedicated Modus betreiben. Beachten Sie bitte,
dass Microsoft Betriebssysteme mit diesem Modus eventuell nicht
zurechtkommen, aber es entsteht kein Schaden am Laufwerk. Im
Gegensatz dazu wird IBMs &os2; versuchen, jede ihm nicht bekannte
Partition zu reparieren.&prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1
&prompt.root; disklabel -Brw da1 auto
&prompt.root; disklabel -e da1 # Erstellen der `e' Partition
&prompt.root; newfs -d0 /dev/da1e
&prompt.root; mkdir -p /1
&prompt.root; vi /etc/fstab # /dev/da1e hinzufügen
&prompt.root; mount /1Eine alternative Methode:&prompt.root; dd if=/dev/zero of=/dev/da1 count=2
&prompt.root; disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin
&prompt.root; newfs /dev/da1e
&prompt.root; mkdir -p /1
&prompt.root; vi /etc/fstab # /dev/da1e hinzufügen
&prompt.root; mount /1Ab &os; 5.1-RELEASE wurde &man.disklabel.8;
durch &man.bsdlabel.8; ersetzt. In bsdlabel
wurden veraltete Optionen entfernt. Entfernen Sie die
Option in den obigen Beispielen,
wenn Sie bsdlabel verwenden.
Weiteres entnehmen Sie bitte der Hilfeseite
&man.bsdlabel.8;.RAIDSoftware-RAIDChristopherShumwayOriginal von JimBrownÜberarbeitet von Concatenated-Disk (CCD) konfigurierenRAIDSoftwareRAIDCCDDie wichtigsten Faktoren bei der Auswahl von Massenspeichern
sind Geschwindigkeit, Zuverlässigkeit und Preis.
Selten findet sich eine ausgewogene Mischung aller drei Faktoren.
Schnelle und zuverlässige Massenspeicher sind für
gewöhnlich teuer. Um die Kosten zu senken, muss
entweder an der Geschwindigkeit oder an der Zuverlässigkeit
gespart werden.Das unten beschriebene System sollte vor allem
preiswert sein. Der nächst wichtige Faktor war
die Geschwindigkeit gefolgt von der Zuverlässigkeit.
Die Geschwindigkeit war nicht so wichtig, da über
das Netzwerk auf das System zugegriffen wird. Da alle
Daten schon auf CD-Rs gesichert sind, war die
Zuverlässigkeit, obwohl wichtig, ebenfalls nicht
von entscheidender Bedeutung.Die Bewertung der einzelnen Faktoren ist der erste
Schritt bei der Auswahl von Massenspeichern. Wenn Sie
vor allem ein schnelles und zuverlässiges Medium
benötigen und der Preis nicht wichtig ist, werden
Sie ein anderes System als das hier beschriebene
zusammenstellen.Installation der HardwareNeben der IDE-Systemplatte besteht das System
aus drei Western Digital IDE-Festplatten mit
5400 RPM und einer Kapazität von je
30 GB. Insgesamt stehen also 90 GB
Speicherplatz zur Verfügung. Im Idealfall sollte
jede Festplatte an einen eigenen Controller angeschlossen
werden. Um Kosten zu sparen, wurde bei diesem System
darauf verzichtet und an jeden IDE-Controller eine
Master- und eine Slave-Platte angeschlossen.Beim Reboot wurde das BIOS so konfiguriert, dass es
die angeschlossenen Platten automatisch erkennt und FreeBSD
erkannte die Platten ebenfalls:ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33Wenn FreeBSD die Platten nicht erkennt,
überprüfen Sie, ob die Jumper korrekt
konfiguriert sind. Die meisten IDE-Festplatten
verfügen über einen
Cable Select-Jumper. Die Master-
und Slave-Platten werden mit einem anderen
Jumper konfiguriert. Bestimmen Sie den richtigen
Jumper mithilfe der Dokumentation Ihrer
Festplatte.Als nächstes sollten Sie überlegen,
auf welche Art der Speicher zur Verfügung
gestellt werden soll. Schauen Sie sich dazu
&man.vinum.8; ()
und &man.ccd.4; an. Im hier beschriebenen
System wird &man.ccd.4; eingesetzt.Konfiguration von CCDMit &man.ccd.4; können mehrere
gleiche Platten zu einem logischen Dateisystem
zusammengefasst werden. Um &man.ccd.4;
zu benutzen, muss der Kernel mit der entsprechenden
Unterstützung übersetzt werden.
Ergänzen Sie die Kernelkonfiguration um die
nachstehende Zeile. Anschließend müssen
Sie den Kernel neu übersetzen und installieren.pseudo-device ccd 4Für 5.X-Systeme verwenden Sie die folgende
Zeile:pseudo-device ccdAb FreeBSD 5.0 muss die gewünschte
Geräteanzahl nicht mehr angegeben werden,
da die Geräte automatisch zur Laufzeit
erzeugt werden.Ab FreeBSD 3.0 kann &man.ccd.4; auch als
Kernelmodul geladen werden.Um &man.ccd.4; zu benutzen, müssen
die Laufwerke zuerst mit einem Label versehen werden.
Die Label werden mit &man.disklabel.8; erstellt:disklabel -r -w ad1 auto
disklabel -r -w ad2 auto
disklabel -r -w ad3 autoAb &os; 5.1-RELEASE wurde &man.disklabel.8;
durch &man.bsdlabel.8; ersetzt. In bsdlabel
wurden veraltete Optionen entfernt. Entfernen Sie die
Option in den obigen Beispielen,
wenn Sie bsdlabel verwenden.
Weiteres entnehmen Sie bitte der Hilfeseite
&man.bsdlabel.8;.Damit wurden die Label ad1c,
ad2c und ad3c
erstellt, die jeweils das gesamte Laufwerk umfassen.Im nächsten Schritt muss der Typ des Labels
geändert werden. Die Labels können Sie
mit &man.disklabel.8; editieren:disklabel -e ad1
disklabel -e ad2
disklabel -e ad3Für jedes Label startet dies den durch
EDITOR gegebenen Editor, typischerweise
&man.vi.1;.Ein unverändertes Label sieht zum Beispiel
wie folgt aus:8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)Erstellen Sie eine e-Partition
für &man.ccd.4;. Dazu können Sie normalerweise
die Zeile der c-Partition kopieren,
allerdings muss auf
4.2BSD gesetzt werden.
Das Ergebnis sollte wie folgt aussehen:8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597)Erstellen des DateisystemsWenn die Gerätedatei für
ccd0c noch nicht existiert,
erstellen Sie diese wie folgt:cd /dev
sh MAKEDEV ccd0Ab FreeBSD 5.0 werden die Gerätedateien
automatisch von &man.devfs.5; erzeugt.
MAKEDEV muss also nicht aufgerufen
werden.Nachdem alle Platten ein Label haben, kann das
&man.ccd.4;-RAID aufgebaut werden. Dies geschieht
mit &man.ccdconfig.8;:ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3eDie folgende Aufstellung erklärt die
verwendeten Kommandozeilenargumente:Das erste Argument gibt das zu konfigurierende
Gerät, hier /dev/ccd0c,
an. Die Angabe von /dev/ ist
dabei optional.Der Interleave für das Dateisystem. Der
Interleave definiert die Größe eines
Streifens in Blöcken, die normal 512 Bytes
groß sind. Ein Interleave von 32 ist
demnach 16384 Bytes groß.Weitere Argumente für &man.ccdconfig.8;.
Wenn Sie spiegeln wollen, können Sie das
hier angeben. Die gezeigte Konfiguration
verwendet keine Spiegel, sodass der Wert
0 angegeben ist.Das letzte Argument gibt die Geräte des
Plattenverbundes an. Benutzen Sie für jedes
Gerät den kompletten Pfadnamen.Nach Abschluß von &man.ccdconfig.8; ist der
Plattenverbund konfiguriert und es können Dateisysteme
auf dem Plattenverbund angelegt werden. Das Anlegen
von Dateisystemen wird in der Hilfeseite &man.newfs.8;
beschrieben. Für das Beispiel genügt
der folgende Befehl:newfs /dev/ccd0cAutomatisierungDamit &man.ccd.4; beim Start automatisch
aktiviert wird, ist die Datei /etc/ccd.conf
mit dem folgenden Kommando zu erstellen:ccdconfig -g > /etc/ccd.confWenn /etc/ccd.conf existiert, wird beim
Reboot ccdconfig -C von
/etc/rc aufgerufen. Damit wird
&man.ccd.4; eingerichtet und die darauf
befindlichen Dateisysteme können angehängt
werden.Wenn Sie in den Single-User Modus booten, müssen Sie
den Verbund erst konfigurieren, bevor Sie darauf befindliche
Dateisysteme anhängen können:ccdconfig -CIn /etc/fstab ist noch ein Eintrag
für das auf dem Verbund befindliche Dateisystem zu
erstellen, damit dieses beim Start des Systems immer
angehängt wird:/dev/ccd0c /media ufs rw 2 2Der Vinum-Volume-ManagerRAIDSoftwareRAIDVinumDer Vinum Volume Manager ist ein Block-Gerätetreiber,
der virtuelle Platten zur Verfügung stellt. Er trennt die
Verbindung zwischen der Festplatte und dem zugehörigen
Block-Gerät auf. Im Gegensatz zur konventionellen
Aufteilung einer Platte in Slices lassen sich dadurch Daten
flexibler, leistungsfähiger und zuverlässiger verwalten.
&man.vinum.8; stellt RAID-0, RAID-1 und RAID-5 sowohl einzeln wie
auch in Kombination zur Verfügung.Mehr Informationen über &man.vinum.8; erhalten Sie in
.Hardware-RAIDRAIDHardwareFreeBSD unterstützt eine Reihe von
RAID-Controllern. Diese Geräte
verwalten einen Plattenverbund; zusätzliche Software
wird nicht benötigt.Der Controller steuert mithilfe eines
BIOS auf der Karte die Plattenoperationen.
Wie ein RAID System eingerichtet wird,
sei kurz am Beispiel des Promise IDE
RAID-Controllers gezeigt. Nachdem
die Karte eingebaut ist und der Rechner neu gestartet wurde,
erscheint eine Eingabeaufforderung. Wenn Sie den Anweisungen
auf dem Bildschirm folgen, gelangen Sie in eine Maske, in der
Sie mit den vorhandenen Festplatten ein
RAID-System aufbauen können.
FreeBSD behandelt das RAID-System wie
eine einzelne Festplatte.Wiederherstellen eines ATA-RAID-1 VerbundsMit FreeBSD können Sie eine ausgefallene Platte in
einem RAID-Verbund während des Betriebs auswechseln,
vorausgesetzt Sie bemerken den Ausfall vor einem Neustart.Einen Ausfall erkennen Sie, wenn in der Datei
/var/log/messages oder in der
Ausgabe von &man.dmesg.8; Meldungen wie die folgenden
auftauchen:ad6 on monster1 suffered a hard error.
ad6: READ command timeout tag=0 serv=0 - resetting
ad6: trying fallback to PIO mode
ata3: resetting devices .. done
ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\
status=59 error=40
ar0: WARNING - mirror lostÜberprüfen Sie den RAID-Verbund mit
&man.atacontrol.8;:&prompt.root; atacontrol list
ATA channel 0:
Master: no device present
Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0
ATA channel 1:
Master: no device present
Slave: no device present
ATA channel 2:
Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
Slave: no device present
ATA channel 3:
Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
Slave: no device present
&prompt.root; atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADEDDamit Sie die Platte ausbauen können, muss sie zuerst
aus dem Verbund entfernt werden:&prompt.root; atacontrol detach 3Ersetzen Sie dann die Platte.Nehmen Sie die neue Platte in den Verbund auf:&prompt.root; atacontrol attach 3
Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
Slave: no device presentStellen Sie die Organisation des Verbunds wieder her:&prompt.root; atacontrol rebuild ar0Das Kommando blockiert den Terminal bis der Verbund
wiederhergestellt ist. Den Fortgang des Prozesses können
Sie in einem anderen Terminal (die Tastenkombination
AltFn schaltet auf einen anderen Terminal um)
mit den folgenden Befehlen
kontrollieren:&prompt.root; dmesg | tail -10
[output removed]
ad6: removed from configuration
ad6: deleted from ar0 disk1
ad6: inserted into ar0 disk1 as spare
&prompt.root; atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completedWarten Sie bis die Wiederherstellung beendet ist.MarcFonvieilleBeigetragen von USB SpeichermedienUSBSpeichermedienDer Universal Serial Bus (USB) wird heutzutage von
vielen externen Speichern benutzt: Festplatten,
USB-Thumbdrives oder CD-Brennern, die alle von
&os; unterstützt werden.USB-KonfigurationUSB-Massenspeicher werden vom Treiber &man.umass.4;
betrieben. Wenn Sie den GENERIC-Kernel
benutzen, brauchen Sie keine Anpassungen vorzunehmen.
Benutzen Sie einen angepassten Kernel, müssen die
nachstehenden Zeilen in der Kernelkonfigurationsdatei
enthalten sein:device scbus
device da
device pass
device uhci
device ohci
device usb
device umassDer Treiber &man.umass.4; greift über das
SCSI-Subsystem auf die USB-Geräte zu. Ihre
USB-Geräte werden daher vom System als SCSI-Geräte
erkannt. Abhängig vom Chipsatz Ihrer Systemplatine
benötigen Sie in der Kernelkonfiguration entweder
die Option device uhci oder die
Option device ohci. Die
Kernelkonfiguration kann allerdings auch beide Optionen
enthalten. Vergessen Sie bitte nicht, einen neuen
Kernel zu bauen und zu installieren, wenn Sie die
Kernelkonfiguration verändert haben.Wenn es sich bei Ihrem USB-Gerät um einen
CD-R- oder DVD-Brenner handelt, müssen Sie den
Treiber &man.cd.4; für SCSI-CD-ROMs in die
Kernelkonfiguration aufnehmen:device cdDa der Brenner als SCSI-Laufwerk erkannt wird,
sollten Sie den Treiber &man.atapicam.4; nicht
benutzen.In &os; 5.X oder in &os; 4.X ab
&os; 4.10-RELEASE werden USB 2.0 Controller
unterstützt. Die Unterstützung aktivieren
Sie in der Kernelkonfiguration mit der nachstehenden
Zeile:device ehciDie Treiber &man.uhci.4; und &man.ohci.4; werden
immer noch für USB 1.X benötigt.Unter &os; 4.X muss der USB-Daemon (&man.usbd.8;)
laufen, damit manche USB-Geräte erkannt werden.
Um den USB-Daemon zu aktivieren, fügen Sie in
der Datei /etc/rc.conf die Anweisung
usbd_enable="YES" ein und starten
die Maschine neu.Die USB-Konfiguration testenSie können das USB-Gerät nun testen.
Schließen Sie das Gerät an und untersuchen
Sie die Systemmeldungen (&man.dmesg.8;), Sie sehen
Ausgaben wie die folgende:umass0: USB Solid state disk, rev 1.10/1.00, addr 2
GEOM: create disk da0 dp=0xc2d74850
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device
da0: 1.000MB/s transfers
da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)Die Ausgaben, wie das erkannte Gerät oder
der Gerätename (da0)
hängen natürlich von Ihrer Konfiguration ab.Da ein USB-Gerät als SCSI-Gerät erkannt
wird, können Sie USB-Massenspeicher mit dem
Befehl camcontrol anzeigen:&prompt.root; camcontrol devlist
<Generic Traveling Disk 1.11> at scbus0 target 0 lun 0 (da0,pass0)Wenn auf dem Laufwerk ein Dateisystem eingerichtet
ist, sollten Sie das Dateisystem einhängen können.
beschreibt, wie Sie
USB-Laufwerke formatieren und Partitionen einrichten.Wenn Sie das Gerät entfernen (das Dateisystem
müssen Sie vorher abhängen), sehen Sie
in den Systemmeldungen Einträge wie die folgenden:umass0: at uhub0 port 1 (addr 2) disconnected
(da0:umass-sim0:0:0:0): lost device
(da0:umass-sim0:0:0:0): removing device entry
GEOM: destroy disk da0 dp=0xc2d74850
umass0: detachedWeiteres zu USBNeben den Abschnitten
Hinzufügen von Laufwerken
und Anhängen und
Abhängen von Dateisystemen lesen Sie bitte
die Hilfeseiten &man.umass.4;, &man.camcontrol.8; und
&man.usbdevs.8;.MikeMeyerBeigesteuert von CDs benutzenCD-ROMbrennenEinführungCDs besitzen einige Eigenschaften, die sie von
konventionellen Laufwerken unterscheiden. Zuerst konnten
sie nicht beschrieben werden. Sie wurden so entworfen, dass
sie ununterbrochen, ohne Verzögerungen durch Kopfbewegungen
zwischen den Spuren, gelesen werden können. Sie konnten
früher auch leichter als vergleichbar große Medien zwischen
Systemen bewegt werden.CDs besitzen Spuren, aber damit ist der Teil Daten
gemeint, der ununterbrochen gelesen wird, und nicht eine
physikalische Eigenschaft der CD. Um eine CD mit FreeBSD
zu erstellen, werden die Daten jeder Spur der CD in
Dateien vorbereitet und dann die Spuren auf die CD
geschrieben.ISO 9660DateisystemeISO 9660Das ISO 9660-Dateisystem wurde entworfen, um mit diesen
Unterschieden umzugehen. Leider hat es auch damals übliche
Grenzen für Dateisysteme implementiert. Glücklicherweise
existiert ein Erweiterungsmechanismus, der es korrekt
geschriebenen CDs erlaubt, diese Grenzen zu überschreiten
und dennoch auf Systemen zu funktionieren, die diese
Erweiterungen nicht unterstützen.sysutils/cdrtoolsDer Port sysutils/cdrtools
enthält das Programm &man.mkisofs.8;, das eine Datei
erstellt, die ein ISO 9660-Dateisystem enthält.
Das Programm hat Optionen, um verschiedene Erweiterungen
zu unterstützen, und wird unten beschrieben.CD-BrennerATAPIWelches Tool Sie zum Brennen von CDs benutzen, hängt davon
ab, ob Ihr CD-Brenner ein ATAPI-Gerät ist oder nicht.
Mit ATAPI-CD-Brennern wird
burncd benutzt, das Teil des Basissystems ist.
SCSI- und USB-CD-Brenner werden mit
cdrecord aus
sysutils/cdrtools
benutzt.Von burncd wird nur eine beschränkte
Anzahl von Laufwerken unterstützt. Um herauszufinden, ob
ein Laufwerk unterstützt wird, sehen Sie bitte unter
CD-R/RW supported drives
nach.CD-BrennerATAPI/CAM-TreiberWenn Sie &os; 5.X oder &os; 4.8-RELEASE
und spätere Versionen benutzen, können Sie
mithilfe des ATAPI/CAM Treibers
die Werkzeuge für SCSI-Laufwerke, wie
cdrecord,
benutzen.Wenn Sie eine Brennsoftware mit graphischer
Benutzeroberfläche benötigen, sehen
Sie sich die Werkzeuge X-CD-Roast
oder K3b an. Die
Werkzeuge können als Paket oder aus den
Ports (sysutils/xcdroast
und sysutils/k3b)
installiert werden. Mit ATAPI-Hardware benötigt
K3b das
ATAPI/CAM-Modul.mkisofsDas Programm &man.mkisofs.8; aus dem Port
sysutils/cdrtools
erstellt ein ISO 9660-Dateisystem,
das ein Abbild eines Verzeichnisbaumes ist.
Die einfachste Anwendung ist wie folgt:&prompt.root; mkisofs -o Imagedatei/path/to/treeDateisystemeISO 9660Dieses Kommando erstellt eine Imagedatei,
die ein ISO 9660-Dateisystem enthält, das eine Kopie des
Baumes unter /path/to/tree ist.
Dabei werden die Dateinamen auf Namen abgebildet, die den
Restriktionen des ISO 9660-Dateisystems entsprechen. Dateien
mit Namen, die im ISO 9660-Dateisystem nicht gültig sind,
bleiben unberücksichtigt.DateisystemeHFSDateisystemeJolietEs einige Optionen, um diese Beschränkungen
zu überwinden. Die unter &unix; Systemen üblichen
Rock-Ridge-Erweiterungen werden durch
aktiviert, aktiviert die von Microsoft
Systemen benutzten Joliet-Erweiterungen und
dient dazu, um das von &macos; benutzte HFS zu erstellen.Für CDs, die nur auf FreeBSD-Systemen verwendet werden
sollen, kann genutzt werden, um alle
Beschränkungen für Dateinamen aufzuheben. Zusammen
mit wird ein Abbild des
Dateisystems, ausgehend von dem Startpunkt im FreeBSD-Dateibaum,
erstellt, obwohl dies den ISO 9660 Standard
verletzen kann.CD-ROMbootbare erstellenDie letzte übliche Option ist .
Sie wird benutzt, um den Ort eines Bootimages einer
El Torito bootbaren CD anzugeben. Das Argument
zu dieser Option ist der Pfad zu einem Bootimage ausgehend
von der Wurzel des Baumes, der auf die CD geschrieben werden
soll. Wenn /tmp/myboot ein bootbares
FreeBSD-System enthält, dessen Bootimage sich in
/tmp/myboot/boot/cdboot befindet, können
Sie ein Abbild eines ISO 9660-Dateisystems in
/tmp/bootable.iso wie folgt
erstellen:&prompt.root; mkisofs -U -R -b boot/cdboot -o /tmp/bootable.iso /tmp/mybootWenn Sie vn (mit FreeBSD 4.X)
oder md (mit FreeBSD 5.X) in Ihrem
Kernel konfiguriert haben, können Sie danach das Dateisystem
einhängen. Mit FreeBSD 4.X setzen Sie dazu die
nachstehenden Kommandos ab:&prompt.root; vnconfig -e vn0c /tmp/bootable.iso
&prompt.root; mount -t cd9660 /dev/vn0c /mntMit FreeBSD 5.X verwenden Sie die Kommandos:&prompt.root; mdconfig -a -t vnode -f /tmp/bootable.iso -u 0
&prompt.root; mount -t cd9660 /dev/md0 /mntJetzt können Sie überprüfen, dass
/mnt und /tmp/myboot
identisch sind.Sie können das Verhalten von &man.mkisofs.8;
mit einer Vielzahl von Optionen beeinflussen. Insbesondere
können Sie das ISO 9660-Dateisystem modifizieren und
Joliet- oder HFS-Dateisysteme brennen. Details dazu
entnehmen Sie bitte der Hilfeseite &man.mkisofs.8;.burncdCD-ROMbrennenWenn Sie einen ATAPI-CD-Brenner besitzen, können
Sie burncd benutzen, um ein ISO-Image
auf CD zu brennen. burncd ist Teil
des Basissystems und unter /usr/sbin/burncd
installiert. Da es nicht viele Optionen hat, ist es leicht
zu benutzen:&prompt.root; burncd -f cddevice data imagefile.iso fixateDieses Kommando brennt eine Kopie von
imagefile.iso auf das Gerät
cddevice. In der Grundeinstellung
wird das Gerät /dev/acd0
(oder unter &os; 4.X /dev/acd0c) benutzt.
&man.burncd.8; beschreibt, wie die Schreibgeschwindigkeit
gesetzt wird, die CD ausgeworfen wird und Audiodaten
geschrieben werden.cdrecordWenn Sie keinen ATAPI-CD-Brenner besitzen, benutzen Sie
cdrecord, um CDs zu brennen.
cdrecord ist nicht Bestandteil des Basissystems.
Sie müssen es entweder aus den Ports in
sysutils/cdrtools oder dem
passenden Paket installieren. Änderungen im Basissystem
können Fehler im binären Programm verursachen und
führen möglicherweise dazu, dass Sie einen
Untersetzer brennen. Sie sollten
daher den Port aktualisieren, wenn Sie Ihr System aktualisieren
bzw. wenn Sie
STABLE verfolgen,
den Port aktualisieren, wenn es eine neue Version gibt.Obwohl cdrecord viele Optionen besitzt,
ist die grundlegende Anwendung einfacher als burncd.
Ein ISO 9660-Image erstellen Sie mit:&prompt.root; cdrecord dev=deviceimagefile.isoDer Knackpunkt in der Benutzung von cdrecord
besteht darin, das richtige Argument zu zu
finden. Benutzen Sie dazu den Schalter
von cdrecord, der eine ähnliche Ausgabe
wie die folgende produziert:CD-ROMbrennen&prompt.root; cdrecord -scanbus
Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling
Using libscg version 'schily-0.1'
scsibus0:
0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk
0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk
0,2,0 2) *
0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk
0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) *
1,1,0 101) *
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM
1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner
1,7,0 107) *Für die aufgeführten Geräte in der Liste
wird das passende Argument zu gegeben.
Benutzen Sie die drei durch Kommas separierten Zahlen, die zu
Ihrem CD-Brenner angegeben sind, als Argument für
. Im Beispiel ist das CDRW-Gerät
1,5,0, so dass die passende Eingabe
dev=1,5,0 wäre.
Einfachere Wege das Argument anzugeben, sind in &man.cdrecord.1;
beschrieben. Dort sollten Sie auch nach
Informationen über Audiospuren, das Einstellen der
Geschwindigkeit und ähnlichem suchen.Kopieren von Audio-CDsUm eine Kopie einer Audio-CD zu erstellen, kopieren Sie die
Stücke der CD in einzelne Dateien und brennen diese Dateien
dann auf eine leere CD. Das genaue Verfahren hängt davon ab,
ob Sie ATAPI- oder SCSI-Laufwerke verwenden.SCSI-LaufwerkeKopieren Sie die Audiodaten mit
cdda2wav:&prompt.user; cdda2wav -v255 -D2,0 -B -OwavDie erzeugten .wav Dateien schreiben
Sie mit cdrecord auf eine leere CD:&prompt.user; cdrecord -v dev=2,0 -dao -useinfo *.wavDas Argument von gibt das verwendete
Gerät an, das Sie, wie in
beschrieben, ermitteln können.ATAPI-LaufwerkeDer ATAPI-CD-Treiber stellt die einzelnen Stücke der
CD über die Dateien
/dev/acddtnn,
zur Verfügung. d bezeichnet
die Laufwerksnummer und nn ist die
Nummer des Stücks. Die Nummer ist immer zweistellig,
das heißt es wird, wenn nötig, eine führende
Null ausgegeben. Die Datei /dev/acd0t01
ist also das erste Stück des ersten CD-Laufwerks.
/dev/acd0t02 ist das zweite Stück
und /dev/acd0t03 das dritte.Die entsprechenden Dateien in /dev
erstellen Sie mit MAKEDEV:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV acd0t99Ab FreeBSD 5.0 werden die Gerätedateien
automatisch von &man.devfs.5; erzeugt, so dass Sie
MAKEDEV nicht laufen lassen
müssen.Die einzelnen Stücke kopieren Sie mit &man.dd.1;. Sie
müssen dazu eine spezielle Blockgröße
angeben:&prompt.root; dd if=/dev/acd0t01 of=track1.cdr bs=2352
&prompt.root; dd if=/dev/acd0t02 of=track2.cdr bs=2352
...
Die kopierten Dateien können Sie dann mit
burncd brennen. Auf der Kommandozeile
müssen Sie angeben, dass Sie Audio-Daten brennen
wollen und dass das Medium fixiert werden soll:&prompt.root; burncd -f /dev/acd0 audio track1.cdr track2.cdr ... fixateKopieren von Daten-CDsSie können eine Daten-CD in eine Datei kopieren, die einem
Image entspricht, das mit
&man.mkisofs.8; erstellt
wurde. Mit Hilfe dieses Images können Sie jede Daten-CD
kopieren. Das folgende Beispiel verwendet
acd0 für das CD-ROM-Gerät. Wenn
Sie ein anderes Laufwerk benutzen, setzen Sie bitte den richtigen
Namen ein. Unter &os; 4.X muss an den Gerätenamen ein
c angehangen werden, um die ganze Partition,
in diesem Fall ist das die ganze CD-ROM, anzusprechen.&prompt.root; dd if=/dev/acd0 of=file.iso bs=2048Danach haben Sie ein Image, das Sie wie oben beschrieben, auf
eine CD brennen können.Einhängen von Daten-CDsNachdem Sie eine Daten-CD gebrannt haben, wollen Sie
wahrscheinlich auch die Daten auf der CD lesen. Dazu müssen
Sie die CD in den Dateibaum einhängen. Die Voreinstellung
für den Typ des Dateisystems von &man.mount.8; ist
UFS. Das System wird die Fehlermeldung
Incorrect super block ausgeben, wenn Sie
versuchen, die CD mit dem folgenden Kommando
einzuhängen:&prompt.root; mount /dev/cd0 /mntAuf der CD befindet sich ja kein UFS
Dateisystem, so dass der Versuch, die CD einzuhängen
fehlschlägt. Sie müssen &man.mount.8; sagen, dass
es ein Dateisystem vom Typ ISO9660 verwenden
soll. Dies erreichen Sie durch die Angabe von auf der Kommandozeile. Wenn Sie also die CD-ROM
/dev/cd0 in /mnt
einhängen wollen, führen Sie folgenden Befehl aus:&prompt.root; mount -t cd9660 /dev/cd0c /mntAbhängig vom verwendeten CD-ROM kann der Gerätename
von dem im Beispiel (/dev/cd0)
abweichen. Die Angabe von führt
&man.mount.cd9660.8; aus, so dass das Beispiel verkürzt
werden kann:&prompt.root; mount_cd9660 /dev/cd0 /mntAuf diese Weise können Sie
Daten-CDs von jedem Hersteller verwenden. Es kann allerdings zu
Problemen mit CDs kommen, die verschiedene ISO 9660 Erweiterungen
benutzen. So speichern Joliet-CDs alle Dateinamen unter Verwendung
von zwei Byte langen Unicode-Zeichen. Der FreeBSD-Kernel
unterstützt zurzeit noch kein Unicode und manche
Sonderzeichen werden als Fragezeichen dargestellt. Ab
FreeBSD 4.3 sind im CD9660-Treiber Möglichkeiten vorgesehen,
eine Konvertierungstabelle zur Laufzeit zu laden. Module für
die gebräuchlisten Kodierungen finden Sie im Port
sysutils/cd9660_unicode.Manchmal werden Sie die Meldung Device
not configured erhalten, wenn Sie versuchen, eine
CD-ROM einzuhängen. Für gewöhnlich liegt das daran,
dass das Laufwerk meint es sei keine CD eingelegt, oder
dass das Laufwerk auf dem Bus nicht erkannt wird. Es kann
einige Sekunden dauern, bevor das Laufwerk merkt, dass eine CD
eingelegt wurde. Seien Sie also geduldig.Manchmal wird ein SCSI-CD-ROM nicht erkannt, weil es keine Zeit
hatte, auf das Zurücksetzen des Busses zu antworten. Wenn Sie
ein SCSI-CD-ROM besitzen, sollten Sie die folgende Zeile in Ihre
Kernelkonfiguration aufnehmen und einen neuen Kernel bauen:options SCSI_DELAY=15000Die Zeile bewirkt, dass nach dem Zurücksetzen des
SCSI-Busses beim Booten 15 Sekunden gewartet wird, um dem
CD-ROM-Laufwerk genügend Zeit zu geben, darauf zu
antworten.Brennen von rohen CDsSie können eine Datei auch direkt auf eine CD brennen,
ohne vorher auf ihr ein ISO 9660-Dateisystem einzurichten.
Einige Leute nutzen dies, um Datensicherungen durchzuführen.
Diese Vorgehensweise hat den Vorteil, dass Sie schneller als
das Brennen einer normalen CD ist.&prompt.root; burncd -f /dev/acd1 -s 12 data archive.tar.gz fixateWenn Sie die Daten von einer solchen CD wieder
zurückbekommen wollen, müssen Sie sie direkt von dem
rohen Gerät lesen:&prompt.root; tar xzvf /dev/acd1Eine auf diese Weise gefertigte CD können Sie nicht in das
Dateisystem einhängen. Sie können Sie auch nicht auf
einem anderen Betriebssystem lesen. Wenn Sie die erstellten CDs in
das Dateisystem einhängen oder mit anderen Betriebssystemen
austauschen wollen, müssen Sie &man.mkisofs.8;
wie oben beschrieben benutzen.MarcFonvieilleBeigetragen von CD-BrennerATAPI/CAM TreiberDer ATAPI/CAM TreiberMit diesem Treiber kann auf ATAPI-Geräte (wie
CD-ROM-, CD-RW- oder DVD-Laufwerke) mithilfe des
SCSI-Subsystems zugegriffen werden. Damit können
Sie SCSI-Werkzeuge, wie sysutils/cdrdao oder &man.cdrecord.1;,
zusammen mit einem ATAPI-Gerät benutzen.Wenn Sie den Treiber benutzen wollen, fügen Sie
die nachstehenden Zeilen zu der Kernelkonfiguration
hinzu:device atapicam
device scbus
device cd
device passDie folgende Zeile wird ebenfalls benötigt,
sollte aber schon Teil der Kernelkonfiguration sein:device ataÜbersetzen und installieren Sie dann den neuen
Kernel. Der CD-Brenner sollte beim Neustart des Systems
erkannt werden:acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
cd0 at ata1 bus 0 target 0 lun 0
cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device
cd0: 16.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closedÜber den Gerätenamen /dev/cd0
können Sie nun auf das Laufwerk zugreifen. Wenn Sie
beispielsweise eine CD-ROM in /mnt
einhängen wollen, benutzen Sie das nachstehende
Kommando:&prompt.root; mount -t cd9660 /dev/cd0 /mntDie SCSI-Adresse des Brenners können Sie als
root wie folgt ermitteln:&prompt.root; camcontrol devlist
<MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)Die SCSI-Adresse 1,0,0 können
Sie mit den SCSI-Werkzeugen, zum Beispiel &man.cdrecord.1;,
verwenden.Weitere Informationen über das ATAPI/CAM- und
das SCSI-System erhalten Sie in den Hilfeseiten
&man.atapicam.4; und &man.cam.4;.MarcFonvieilleBeigetragen von AndyPolyakovMit Beiträgen von DVDs benutzenDVDbrennenEinführungNach der CD ist die DVD die nächste Generation
optischer Speichermedien. Auf einer DVD können
mehr Daten als auf einer CD gespeichert werden.
DVDs werden heutzutage als Standardmedium für
Videos verwendet.Für beschreibbare DVDs existieren fünf
Medienformate:DVD-R: Dies war das erste verfügbare Format.
Das Format wurde vom DVD-Forum
festgelegt. Die Medien sind nur einmal beschreibbar.DVD-RW: Dies ist die wiederbeschreibbare Version
des DVD-R Standards. Eine DVD-RW kann ungefähr
1000 Mal beschrieben werden.DVD-RAM: Dies ist ebenfalls ein wiederbeschreibbares
Format, das vom DVD-Forum unterstützt wird.
Eine DVD-RAM verhält sich wie eine Wechselplatte.
Allerdings sind die Medien nicht kompatibel zu den
meisten DVD-ROM-Laufwerken und DVD-Video-Spielern.
DVD-RAM wird nur von wenigen Brennern unterstützt.DVD+RW: Ist ein wiederbeschreibbares Format, das
von der DVD+RW
Alliance festgelegt wurde. Eine DVD+RW
kann ungefähr 1000 Mal beschrieben werden.DVD+R: Dieses Format ist die nur einmal beschreibbare
Variante des DVD+RW Formats.Auf einer einfach beschichteten DVD können
4.700.000.000 Bytes gespeichert werden. Das
sind 4,38 GB oder 4485 MB (1 Kilobyte
sind 1024 Bytes).Die physischen Medien sind unabhängig von
der Anwendung. Ein DVD-Video ist eine spezielle
Anordnung von Dateien, die auf irgendein Medium (zum Beispiel
DVD-R, DVD+R oder DVD-RW) geschrieben werden kann.
Bevor Sie ein Medium auswählen, müssen
Sie sicherstellen, dass der Brenner und der DVD-Spieler
(ein Einzelgerät oder ein DVD-ROM-Laufwerk
eines Rechners) mit dem Medium umgehen können.KonfigurationDas Programm &man.growisofs.1; beschreibt DVDs.
Das Kommando ist Teil der Anwendung
dvd+rw-tools
(sysutils/dvd+rw-tools).
dvd+rw-tools kann mit allen
DVD-Medien umgehen.Um die Geräte anzusprechen, brauchen die
Werkzeuge das SCSI-Subsystem. Daher muss der
Kernel den ATAPI/CAM-Treiber
zur Verfügung stellen. Der Treiber ist mit
USB-Brennern nutzlos; die Konfiguration von
USB-Geräten behandelt .Für ATAPI-Geräte müssen Sie ebenfalls
DMA-Zugriffe aktivieren. Fügen Sie dazu die nachstehende
Zeile in die Datei /boot/loader.conf
ein:hw.ata.atapi_dma="1"Bevor Sie dvd+rw-tools
mit Ihrem DVD-Brenner benutzen, lesen Sie bitte die
Hardware-Informationen auf der Seite dvd+rw-tools'
hardware compatibility notes.Wenn Sie eine graphische Oberfläche bevorzugen,
schauen Sie sich bitte den Port
sysutils/k3b
an. Der Port bietet eine leicht zu bedienende
Schnittstelle zu &man.growisofs.1; und vielen
anderen Werkzeugen.Daten-DVDs brennen&man.growisofs.1; erstellt mit dem Programm
mkisofs das Dateisystem
und brennt anschließend die DVD. Vor dem Brennen
brauchen Sie daher kein Abbild der Daten zu erstellen.Wenn Sie von den Daten im Verzeichnis
/path/to/data eine
DVD+R oder eine DVD-R brennen wollen, benutzen Sie
das nachstehende Kommando:&prompt.root; growisofs -dvd-compat -Z /dev/cd0 -J -R /path/to/dataDie Optionen werden an
&man.mkisofs.8; durchgereicht und dienen zum Erstellen
des Dateisystems (hier: ein ISO-9660-Dateisystem mit
Joliet- und Rock-Ridge-Erweiterungen). Weiteres
entnehmen Sie bitte der Hilfeseite &man.mkisofs.8;.Die Option wird für die erste
Aufnahme einer Session benötigt, egal ob Sie eine
Multi-Session-DVD brennen oder nicht. Für
/dev/cd0 müssen Sie
den Gerätenamen Ihres Brenners einsetzen. Die
Option schließt das
Medium, weitere Daten können danach nicht mehr
angehängt werden. Durch die Angabe dieser Option
kann das Medium von mehr DVD-ROM-Laufwerken gelesen
werden.Sie können auch ein vorher erstelltes Abbild
der Daten brennen. Die nachstehende Kommandozeile
brennt das Abbild in der Datei
imagefile.iso:&prompt.root; growisofs -dvd-compat -Z /dev/cd0=imagefile.isoDie Schreibgeschwindigkeit hängt von den
verwendeten Medium sowie dem verwendeten Gerät ab
und sollte automatisch gesetzt werden. Falls Sie die
Schreibgeschwindigkeit vorgeben möchten, verwenden
Sie den Parameter . Weiteres
erfahren Sie in der Hilfeseite &man.growisofs.1;.DVDDVD-VideoDVD-Videos brennenEin DVD-Video ist eine spezielle Anordnung von Dateien, die
auf den ISO-9660 und den micro-UDF (M-UDF) Spezifikationen
beruht. Ein DVD-Video ist auf eine bestimmte Datei-Hierarchie
angewiesen. Daher müssen Sie DVDs mit speziellen
Programmen wie multimedia/dvdauthor
erstellen.Wenn Sie schon ein Abbild des Dateisystems eines
DVD-Videos haben, brennen Sie das Abbild wie jedes
andere auch. Eine passende Kommandozeile finden Sie
im vorigen Abschnitt. Wenn Sie die DVD im Verzeichnis
/path/to/video
zusammengestellt haben, erstellen Sie das DVD-Video
mit dem nachstehenden Kommando:&prompt.root; growisofs -Z /dev/cd0 -dvd-video /path/to/videoDie Option wird an
&man.mkisofs.8; weitergereicht. Dadurch erstellt
&man.mkisofs.8; die Datei-Hierarchie für ein
DVD-Video. Weiterhin bewirkt die Angabe von
, dass &man.growisofs.1;
mit der Option aufgerufen wird.DVDDVD+RWDVD+RW-Medien benutzenIm Gegensatz zu CD-RW-Medien müssen Sie DVD+RW-Medien
erst formatieren, bevor Sie die Medien benutzen.
Sie sollten &man.growisofs.1; einzetzen, da das Programm
Medien automatisch formatiert, wenn es erforderlich
ist. Sie können eine DVD+RW aber auch mit dem
Kommando dvd+rw-format formatieren:&prompt.root; dvd+rw-format /dev/cd0Sie müssen das Kommando nur einmal mit
neuen Medien laufen lassen. Anschließend
können Sie DVD+RWs, wie in den vorigen
Abschnitten beschrieben, brennen.Wenn Sie auf einer DVD+RW ein neues Dateisystem
erstellen wollen, brauchen Sie die DVD+RW vorher
nicht zu löschen. Überschreiben Sie
einfach das vorige Dateisystem indem Sie eine neue
Session anlegen:&prompt.root; growisofs -Z /dev/cd0 -J -R /path/to/newdataMit dem DVD+RW-Format ist es leicht, Daten an eine
vorherige Aufnahme anzuhängen. Dazu wird eine neue
Session mit der schon bestehenden zusammengeführt.
Es wird keine Multi-Session geschrieben, sondern
&man.growisofs.1; vergrößert
das ISO-9660-Dateisystem auf dem Medium.Das folgende Kommando fügt weitere Daten zu
einer vorher erstellten DVD+RW hinzu:&prompt.root; growisofs -M /dev/cd0 -J -R /path/to/nextdataWenn Sie eine DVD+RW erweitern, verwenden Sie
dieselben &man.mkisofs.8;-Optionen wie beim Erstellen
der DVD+RW.Um die Kompatibilität mit DVD-ROM-Laufwerken
zu gewährleisten, wollen Sie vielleicht die
Option einsetzen.
Zu einem DVD+RW-Medium können Sie mit dieser
Option auch weiterhin Daten hinzufügen.Wenn Sie das Medium aus irgendwelchen Gründen
doch löschen müssen, verwenden Sie den
nachstehenden Befehl:&prompt.root; growisofs -Z /dev/cd0=/dev/zeroDVDDVD-RWDVD-RW-Medien benutzenEine DVD-RW kann mit zwei Methoden beschrieben werden:
Sequential-Recording oder
Restricted-Overwrite. Voreingestellt
ist Sequential-Recording.Eine neue DVD-RW kann direkt beschrieben werden; sie
muss nicht vorher formatiert werden. Allerdings muss
eine DVD-RW, die mit Sequential-Recording aufgenommen
wurde, zuerst gelöscht werden, bevor eine neue Session
aufgenommen werden kann.Der folgende Befehl löscht eine DVD-RW im
Sequential-Recording-Modus:&prompt.root; dvd+rw-format -blank=full /dev/cd0Das vollständige Löschen
() dauert mit einem
1x Medium ungefähr eine Stunde. Wenn die
DVD-RW im Disk-At-Once-Modus (DAO) aufgenommen wurde,
kann Sie mit der Option schneller
gelöscht werden. Um eine DVD-RW im DAO-Modus zu
brennen, benutzen Sie das folgende Kommando:&prompt.root; growisofs -use-the-force-luke=dao -Z /dev/cd0=imagefile.isoDie Option
sollte nicht erforderlich sein, da &man.growisofs.1;
den DAO-Modus erkennt.Der Restricted-Overwrite-Modus sollte mit jeder
DVD-RW verwendet werden, da er flexibler als der
voreingestellte Sequential-Recording-Modus ist.Um Daten auf eine DVD-RW im Sequential-Recording-Modus
zu schreiben, benutzen Sie dasselbe Kommando wie
für die anderen DVD-Formate:&prompt.root; growisofs -Z /dev/cd0 -J -R /path/to/dataWenn Sie weitere Daten zu einer Aufnahme hinzufügen
wollen, benutzen Sie die Option von
&man.growisofs.1;. Werden die Daten im Sequential-Recording-Modus
hinzugefügt, wird eine neue Session erstellt.
Das Ergebnis ist ein Multi-Session-Medium.Eine DVD-RW im Restricted-Overwrite-Modus muss nicht
gelöscht werden, um eine neue Session aufzunehmen.
Sie können das Medium einfach mit der Option
überschreiben, ähnlich wie
bei DVD+RW. Mit der Option können
Sie das ISO-9660-Dateisystem, wie mit einer DVD+RW,
vergrößern. Die DVD enthält danach eine
Session.Benutzen sie das nachstehende Kommando, um den
Restricted-Overwrite-Modus einzustellen:&prompt.root; dvd+rw-format /dev/cd0Das folgende Kommando stellt den Modus wieder auf
Sequential-Recording zurück:&prompt.root; dvd+rw-format -blank=full /dev/cd0Multi-SessionNur wenige DVD-ROM-Laufwerke können
Multi-Session-DVDs lesen. Meist lesen die Spieler nur
die erste Session. Mehrere Sessions werden von
DVD+R, DVD-R und DVD-RW im Sequential-Recording-Modus
unterstützt. Im Modus Restricted-Overwrite gibt
es nur eine Session.Wenn das Medium noch nicht geschlossen ist, erstellt
das nachstehende Kommando eine neue Session auf einer
DVD+R, DVD-R oder DVD-RW im Sequential-Recording-Modus:&prompt.root; growisofs -M /dev/cd0 -J -R /path/to/nextdataWird diese Kommandozeile mit DVD+RW- oder DVD-RW-Medien
im Restricted-Overwrite-Modus benutzt, werden die
neuen Daten mit den Daten der bestehenden Session
zusammengeführt. Das Medium enthält danach
eine Session. Auf diesem Weg werden neue Daten zu
einer bestehenden Session hinzugefügt.Für den Anfang und das Ende einer Session
wird auf dem Medium zusätzlicher Platz verbraucht.
Um den Speicherplatz auf dem Medium optimal auszunutzen,
sollten Sie daher Sessions mit vielen Daten hinzufügen.
Auf ein DVD+R-Medium passen maximal 154 Sessions,
2000 Sessions auf ein DVD-R-Medium und
127 Sessions auf eine DVD+R Double Layer.WeiterführendesDas Kommando dvd+rw-mediainfo
/dev/cd0 zeigt
Informationen über eine im Laufwerk liegende
DVD an.Weiteres zu den dvd+rw-tools
lesen Sie bitte in der Hilfeseite &man.growisofs.1;,
auf der dvd+rw-tools
Web-Seite oder in den Archiven der cdwrite-Mailingliste.JulioMerinoOriginal von MartinKarlssonUmgeschrieben von Disketten benutzenDisketten sind nützlich, wenn kein anderes
bewegliches Speichermedium vorhanden ist oder wenn
nur kleine Datenmengen transferiert werden sollen.Dieser Abschnitt beschreibt die Handhabung von Disketten
unter FreeBSD. Hauptsächlich geht es um die
Formatierung und Benutzung von 3,5 Zoll Disketten,
doch lassen sich die Konzepte leicht auf Disketten anderer
Formate übertragen.Disketten formatierenDie GerätedateienWie auf jedes andere Gerät auch, greifen Sie
auf Disketten über Einträge im Verzeichnis
/dev zu. Unter &os; 4.X und
früheren Versionen greifen Sie auf das Laufwerk
über die Gerätedateien
/dev/fdN
(N ist Laufwerksnummer,
für gewöhnlich 0) oder
/dev/fdNX
(X ist ein Buchstabe) zu.Unter &os; 5.0 oder neueren Versionen
verwenden Sie einfach die Datei
/dev/fdN.Diskettenkapazitäten unter 4.X oder
früherEs gibt Gerätedateien der Form
/dev/fdX.Größe.
Größe gibt die
Kapazität der Diskette in Kilobytes an. Diese
Einträge bestimmen bei der Low-Level-Formatierung
die Speicherkapazität der Diskette. In den folgenden
Beispiel wird die Größe 1440 kb
verwendet.Manchmal müssen die Gerätedateien
in /dev (neu) erstellt werden.
Dies geschieht mit dem folgenden Befehl:&prompt.root; cd /dev && ./MAKEDEV "fd*"Diskettenkapazitäten unter 5.0 oder
neueren VersionenUnter &os; 5.X werden die Gerätedateien
von &man.devfs.5; verwaltet. Der Befehl
MAKEDEV wird nicht mehr
benötigt.Die gewünschte Kapazität wird &man.fdformat.1;
über die Option mitgeteilt. Die
unterstützten Kapazitäten sind in der
Hilfeseite &man.fdcontrol.8; aufgezählt.
1440 kB ist eine gängige Kapazität und
funktioniert am besten.FormatierungBevor eine Diskette benutzt werden kann, muss Sie
(low-level) formatiert werden, was normalerweise der
Hersteller schon gemacht hat. Sie können die
Diskette allerdings noch einmal formatieren, um das Medium zu
überprüfen. Es ist möglich, die
Kapazität der Diskette zu verändern,
allerdings sind die meisten Disketten auf 1440 kB
ausgelegt.Mit &man.fdformat.1; formatieren Sie eine
Diskette. Das Kommando erwartet die Angabe eines
Gerätenamens.Achten Sie bei der Formatierung
auf Fehlermeldungen, die schlechte Speichermedien
anzeigen.Formatierung unter 4.X oder
früheren VersionenDie Disketten werden mithilfe der Gerätedatei
/dev/fdX.Größe
formatiert. Legen Sie eine 3,5 Zoll Diskette in
Ihr Laufwerk ein und führen das folgende Kommando
aus:&prompt.root; /usr/sbin/fdformat /dev/fd0.1440Formatierung unter 5.X oder
neueren VersionenDie Disketten werden mithilfe der Gerätedatei
/dev/fdN
formatiert. Legen Sie eine 3,5 Zoll Diskette in
Ihr Laufwerk ein und führen das folgende Kommando
aus:&prompt.root; /usr/sbin/fdformat -f 1440 /dev/fd0Das DisklabelNach dem Formatieren muss auf der Diskette ein Disklabel
erstellt werden. Das Disklabel wird später zerstört, ist
aber notwendig, um die Größe und Geometrie der Diskette
zu erkennen.Das Disklabel gilt für die ganze Diskette und enthält
alle Informationen über die Geometrie der Diskette. Eine
Liste der möglichen Geometrien finden Sie in
/etc/disktab.Erstellen Sie nun das Label mit &man.disklabel.8;:&prompt.root; /sbin/disklabel -B -r -w /dev/fd0 fd1440Ab &os; 5.1-RELEASE wurde &man.disklabel.8;
durch &man.bsdlabel.8; ersetzt. In bsdlabel
wurden veraltete Optionen entfernt. Entfernen Sie die
Option in den obigen Beispielen,
wenn Sie bsdlabel verwenden.
Weiteres entnehmen Sie bitte der Hilfeseite
&man.bsdlabel.8;.Das DateisystemAuf der Diskette muss nun ein Dateisystem erstellt werden
(high-level Formatierung), damit FreeBSD von der Diskette lesen und
auf sie schreiben kann. Das Disklabel wird durch das Anlegen eines
Dateisystems zerstört. Falls Sie die Diskette später erneut
formatieren wollen, müssen Sie dann auch ein neues Disklabel
anlegen.Sie können entweder UFS oder FAT als Dateisystem
verwenden. Für Floppies ist FAT das beste Dateisystem.Das folgende Kommando legt ein Dateisystem auf der Diskette
an:&prompt.root; /sbin/newfs_msdos /dev/fd0Die Diskette kann nun benutzt werden.Verwenden der DisketteUnter &os; 4.X und früheren Versionen
können Sie die Diskette mit &man.mount.msdos.8; in
den Dateibaum einhängen. Unter &os; 5.X und
neueren Versionen verwenden Sie dazu den Befehl
&man.mount.msdosfs.8;. Sie können auch den
Port emulators/mtools
verwenden, um mit der Diskette zu arbeiten.Bandmedien benutzenBandmedienDie wichtigsten Bandmedien sind 4mm, 8mm, QIC,
Mini-Cartridge und DLT.4mm (DDS: Digital Data Storage)BandmedienDDS (4mm) BänderBandmedienQIC BänderDie 4mm-Bänder ersetzen mehr und mehr das QIC-Format als
Backupmedium der Wahl für Workstations. Dieser Trend nahm stark
zu, als Conner die Firma Archive, einen führenden Hersteller von
QIC-Laufwerken, aufkaufte und die Produktion von QIC-Laufwerken
stoppte. 4mm-Laufwerke sind klein und ruhig, haben aber nicht den
gleichen Ruf der Zuverlässigkeit, den die 8mm-Laufwerke
genießen. Die 4mm-Kassetten sind preiswerter und mit den
Maßen 76,2 x 50,8 x 12,7 mm
(3 x 2 x 0,5 Inch) kleiner als die
8mm-Kassetten. Sowohl die 4mm- als auch die 8mm-Magnetköpfe
haben eine relativ kurze Lebensdauer, weil beide die gleiche
Helical-Scan-Technik benutzen.Der Datendurchsatz dieser Laufwerke beginnt bei etwa
150 kByte/s, Spitzenwerte liegen bei etwa 500 kByte/s.
Die Datenkapazität liegt zwischen 1,3 GB und 2 GB.
Die meisten Geräte haben eine Hardwarekompression eingebaut,
die die Kapazität ungefähr verdoppelt. Es gibt
Multi-Drive-Einheiten für Bandbibliotheken mit bis zu 6
Laufwerken in einem Gehäuse und automatischem Bandwechsel. Die
Kapazität einer solchen Bibliothek liegt bei 240 GB.Der Standard DDS-3 unterstützt nun Bandkapazitäten bis
zu 12 GB (oder komprimiert 24 GB).4mm-Laufwerke, ebenso wie 8mm-Laufwerke, verwenden Helical-Scan.
Alle Vor- und Nachteile von Helical-Scan gelten sowohl für 4mm-
als auch für 8mm-Laufwerke.Bänder sollten nach 2.000 Banddurchläufen oder 100
vollen Backups ersetzt werden.8mm (Exabyte)BandmedienExabyte (8mm) Bänder8mm-Bänder sind die verbreitetsten SCSI-Bandlaufwerke; sie
sind das geeignetste Bandformat zum Austausch von Bändern.
Fast an jedem Standort gibt es ein 8mm-Bandlaufwerk mit 2 GB.
8mm-Bänder sind zuverlässig, gut zu handhaben und
arbeiten leise. Bandkassetten sind preiswert und klein mit
122 x 84 x 15 mm
(4,8 x 3,3 x 0,6 Inch). Ein Nachteil
der 8mm-Technik ist die relativ kurze Lebensdauer des
Schreib-/Lesekopfs und der Bänder auf Grund der hohen
Relativgeschwindigkeit des Bandes über die Köpfe
hinweg.Der Datendurchsatz liegt ungefähr zwischen
250 kByte/s und 500 kByte/s. Die Datenkapazität
beginnt bei 300 MB und erreicht bis zu 7 GB bei den
Spitzengeräten. Die meisten Geräte
haben eine Hardwarekompression eingebaut, die die Kapazität
ungefähr verdoppelt. Diese Laufwerke sind erhältlich in
Form von Einzelgeräten oder als Multi-Drive-Bandbibliotheken mit
6 Laufwerken und 120 Bändern in einem Gehäuse. Die
Bänder werden von der Geräteeinheit automatisch gewechselt.
Die Kapazität einer solchen Bibliothek liegt bei 840 GB und
mehr.Das Exabyte-Modell Mammoth unterstützt
12 GB auf einem Band (24 GB mit Kompression) und kostet
etwa doppelt so viel wie ein konventionelles Bandlaufwerk.Die Daten werden mittels Helical-Scan auf das Band
aufgezeichnet, die Köpfe sind leicht schräg zum Medium
angebracht (mit einem Winkel von etwa 6 Grad). Das Band wickelt
sich 270 Grad um die Spule, die die Köpfe trägt.
Die Spule dreht sich, während das Band darüberläuft.
Das Resultat ist eine hohe Datendichte und eng gepackte Spuren,
die von einem Rand des Bands zum gegenüberliegenden quer
über das Band abgewinkelt verlaufen.QICBandmedienQIC-150QIC-150-Bänder und -Laufwerke sind wohl der am weitesten
verbreitete Bandtyp überhaupt. QIC-Bandlaufwerke sind die
preiswertesten seriösen Backupgeräte,
die angeboten werden. Der Nachteil dabei ist der hohe Preis
der Bänder. QIC-Bänder sind im Vergleich zu 8mm- oder
4mm-Bändern bis zu fünf Mal teurer, wenn man den Preis
auf 1 GB Datenkapazität umrechnet. Aber wenn Ihr Bedarf
mit einem halben Dutzend Bänder abgedeckt werden kann,
mag QIC die richtige Wahl sein.QIC ist der gängigste
Bandlaufwerkstyp. Jeder Standort hat ein QIC-Laufwerk der einen oder
anderen Dichte. Aber gerade das ist der Haken an der Sache, QIC
bietet eine große Anzahl verschiedener Datendichten auf
physikalisch ähnlichen (manchmal gleichen) Bändern.
QIC-Laufwerke sind nicht leise. Diese Laufwerke suchen lautstark die
richtige Bandstelle, bevor sie mit der Datenaufzeichnung beginnen.
Sie sind während des Lesens, Schreibens und Suchens deutlich
hörbar.Die Abmessungen der QIC-Kassetten betragen
152.4 x 101.6 x 17.78 mm
(6 x 4 x 0,7 Inch),
die QIC-Bandbreite beträgt 6,35 mm (1/4 Inch).Der Datendurchsatz liegt ungefähr zwischen
150 kByte/s und 500 kByte/s. Die Datenkapazität
reicht von 40 MB bis zu 15 GB.
Hardwarekompression ist in vielen der neueren QIC-Laufwerke eingebaut.
QIC-Laufwerke werden heute seltener eingesetzt; sie werden von den
DAT-Laufwerken abgelöst.Die Daten werden auf dem Band in Spuren aufgezeichnet. Die
Spuren verlaufen entlang der Längsachse des Bandmediums von einem
Ende zum anderen. Die Anzahl der Spuren, und damit auch die Breite
einer Spur, variiert mit der Kapazität des Laufwerks. Die
meisten, wenn nicht alle neueren Laufwerke sind
rückwärtskompatibel, zumindest zum Lesen (aber oft auch zum
Schreiben). QIC hat einen guten Ruf bezüglich der
Datensicherheit (die Mechanik ist einfacher und robuster als diejenige
der Helical-Scan-Laufwerke).Bänder sollten nach 5,000 Backups ersetzt werden.DLTBandmedienDLTDLT hat die schnellste Datentransferrate von allen hier
aufgelisteten Gerätetypen. Das 1/2-Inch-Band (12,7 mm)
befindet sich in einer Spulkassette mit den Abmessungen
101,6 x 101,6 x 25,4 mm
(4 x 4 x 1 Inch). Die eine Seite
der Kassette hat eine bewegliche Abdeckung. Der Laufwerksmechanismus
öffnet diese Abdeckung und zieht die Bandführung heraus.
Die Bandführung trägt ein ovales Loch, die das Laufwerk
zum Einhängen des Bandes benutzt. Die
Aufwickelspule befindet sich im Innern des Bandlaufwerks. Bei allen
anderen hier besprochenen Bandkassetten (9-Spur-Bänder
sind die einzige Ausnahme) befinden sich sowohl die Auf- als auch
die Abwickelspule im Inneren der Bandkassette.Der Datendurchsatz liegt bei etwa 1,5 MBytes/s, der dreifache
Durchsatz der 4mm-, 8mm- oder QIC-Bandlaufwerke. Die
Datenkapazität reicht von 10 GB bis 20 GB für
Einfachlaufwerke. Auch Mehrfachbandgeräte sind erhältlich,
sowohl als Bandwechsler wie auch als Multi-Drive-Bandbibliotheken, die
Platz für 5 bis 900 Bänder verteilt auf 1 bis 20 Laufwerke
enthalten, mit einer Speicherkapazität von 50 GB bis
9 TB.Mit Kompression unterstützt das Format DLT Type IV bis zu
70 GB Kapazität.Die Daten werden auf dem Band in Spuren aufgezeichnet, die
parallel zur Bewegungsrichtung verlaufen (gerade so wie bei den
QIC-Bändern). Zwei Spuren werden dabei gleichzeitig beschrieben.
Die Lebenszeit der Lese- und Schreibköpfe sind relativ lang; denn
sobald das Band anhält, gibt es keine Relativbewegung mehr
zwischen den Köpfen und dem Band.AITBandmedienAITAIT ist ein neues Format von Sony, das (mit Kompression) bis zu
50 GB pro Band speichern kann. Die Bänder haben einen
Speicherchip, der einen Index mit dem Inhalt des Bandes anlegt.
Dieser Index kann vom Bandlaufwerk zur schnellen Bestimmung der Lage
von Dateien auf dem Band benutzt werden, während andere
Bänder einige Minuten zur Lokalisierung benötigen.Entsprechende Software wie etwa
SAMS:Alexandria können 40
oder mehr AIT-Bandbibliotheken verarbeiten, indem sie
direkt mit dem Speicherchip des Bandes kommunizieren, wenn der
Bandinhalt am Bildschirm dargestellt werden soll oder bestimmt werden
soll, welche Dateien auf welchem Band gespeichert sind, oder um das
richtige Band zu lokalisieren, zu laden und Daten vom Band
zurückzuspielen. Bibliotheken dieser Art liegen in der
Preiskategorie von $20,000, womit sie etwas aus dem Hobbymarkt
herausfallen.Die erste Benutzung eines neuen BandsDer Versuch ein neues, vollkommen leeres Band ohne weiteres zu
lesen oder zu beschreiben wird schief gehen. Auf der Konsole werden
dann Meldungen ähnlich wie folgt ausgegeben:sa0(ncr1:4:0): NOT READY asc:4,1
0(ncr1:4:0): Logical unit is in process of becoming readyDas Band enthält nämlich keinen Identifier-Block
(Blocknummer 0). Alle QIC-Bandlaufwerke seit der Einführung des
QIC-525-Standards schreiben einen Identifier-Block auf das Band. Es
gibt zwei Lösungen:mt fsf 1 veranlasst das Bandlaufwerk
einen Identifier-Block auf das Band zu schreiben.Das Band durch Drücken des Bandauswurfknopfs an der
Vorderseite des Bandgeräts auswerfen.Danach das Band wieder einlegen und mit
dump Daten auf das Band
übertragen.Das Kommando dump gibt die Meldung
DUMP: End of tape detected zurück
und die Konsole zeigt:
HARDWARE FAILURE info:280 asc:80,96.Das Band zurückspulen mit dem Kommando:
mt rewind.Nachfolgende Bandoperationen werden dann erfolgreich
ausgeführt.Was ist mit Backups auf Disketten?Kann ich Disketten zum Backup meiner Daten verwenden?Backup DiskettenDiskettenDisketten sind kein wirklich geeignetes Medium für Backups
aus folgenden Gründen:Disketten sind unzuverlässig, besonders
langfristig.Speichern und Wiederherstellen ist sehr langsam.Sie haben eine sehr eingeschränkte Kapazität (Die
Zeiten sind längst vorbei, wo eine ganze Festplatte auf ein
Dutzend Floppies oder so gespeichert werden konnte).Wenn jedoch keine andere Möglichkeit zum Datenbackup
vorhanden ist, dann sind Disketten immer noch besser als gar kein
Backup.Wenn man gezwungen ist Disketten zu verwenden, dann sollte man
auf eine gute Qualität achten. Floppies, die schon einige Jahre
im Büro herumgelegen haben, sind eine schlechte Wahl. Ideal sind
neue Disketten von einem renommierten Hersteller.Wie mache ich ein Backup auf Disketten?Die beste Art eines Diskettenbackups ist der Befehl
&man.tar.1; mit der Mehrfachband-Option ,
die es ermöglicht ein Backup über mehrere
Floppies zu verteilen.Ein Backup aller Dateien im aktuellen Verzeichnis
einschließlich aller Unterverzeichnisse wird durch den folgenden
Befehl veranlasst (als root):&prompt.root; tar Mcvf /dev/fd0 *Wenn die erste Floppy voll ist, meldet sich &man.tar.1;
und verlangt einen Diskettenwechsel (weil &man.tar.1;
unabhängig vom
Medium arbeitet, wird das nächste Band (Volume) verlangt, was in
diesem Zusammenhang eine Diskette bedeutet), in etwa wie folgt:Prepare volume #2 for /dev/fd0 and hit return:Dies wird mit steigender Volumenzahl wiederholt, bis alle
angegebenen Dateien archiviert sind.Können Diskettenbackups komprimiert werden?targzipKompressionLeider erlaubt es &man.tar.1; nicht, die Option
für Multi-Volume-Archive zu verwenden.
Man kann natürlich alle Dateien mit &man.gzip.1;
komprimieren, sie mit &man.tar.1; auf die Floppies
aufspielen, und dann die Dateien wieder &man.gunzip.1;
entkomprimieren!Wie werden Diskettenbackups wieder hergestellt?Zur Wiederherstellung des gesamten Archivs verwendet man:&prompt.root; tar Mxvf /dev/fd0Eine Methode um nur bestimmte Dateien wieder her zu stellen ist
mit der ersten Diskette den folgenden Befehl auszuführen:&prompt.root; tar Mxvf /dev/fd0 filename&man.tar.1; wird dann die folgenden Disketten anfordern,
bis die benötigte Datei gefunden ist.Wenn man die Diskette kennt, auf der sich die Datei befindet,
kann man alternativ diese Diskette auch direkt einlegen und den
gleichen Befehl wie oben verwenden. Man beachte, dass, falls die
erste Datei eine Fortsetzung einer Datei von einer
der vorigen Disketten ist, &man.tar.1; die Warnung ausgibt,
dass diese Datei nicht wiederhergestellt werden kann, selbst dann,
wenn dies gar nicht verlangt wurde!DatensicherungDie drei wichtigsten Programme zur Sicherung von Daten sind
&man.dump.8;, &man.tar.1; und &man.cpio.1;.Sichern und WiederherstellenDatensicherungBackupBackup-SoftwaredumpBackup-Softwarerestoredumprestoredump und restore sind die
traditionellen
Backupprogramme in &unix; Systemen. Sie betrachten das Laufwerk als eine
Ansammlung von Blöcken, operieren also unterhalb dem
Abstraktionslevel von Dateien, Links und Verzeichnissen, die die
Grundlage des Dateisystemkonzepts bilden. dump
sichert ein ganzes Dateisystem auf einem Gerät, es ist nicht
möglich nur einen Teil des Dateisystems, oder einen
Verzeichnisbaum, der mehr als ein Dateisystem umfasst zu
sichern. dump schreibt keine Dateien oder
Verzeichnisse auf das Band, sondern die Blöcke, aus denen
Dateien und Verzeichnisse bestehen.Wenn Sie mit dump das Root-Verzeichnis
sichern, werden /home, /usr
und viele andere Verzeichnisse nicht gesichert, da dies normalerweise
Mountpunkte für andere Dateisysteme oder symbolische Links
zu diesen Dateisystemen sind.dump hat einige Eigenarten, die noch aus den
frühen Tagen der Version 6 von AT&T UNIX (ca. 1975)
stammen. Die Parameter
sind für 9-Spur-Bänder (6250 bpi) voreingestellt,
nicht auf die heute üblichen Medien hoher Dichte (bis zu
62.182 ftpi). Bei der Verwendung der Kapazitäten
moderner Bandlaufwerke muss diese Voreinstellung auf der
Kommandozeile überschrieben werden..rhostsrdump und rrestore
können Daten über
Netzwerk auf ein Band, das sich in einem Laufwerk eines anderen
Computers befindet, überspielen. Beide Programme benutzen die
Befehle rcmd und ruserok zum
Zugriff auf das entfernte
Bandlaufwerk. Daher muss der Anwender, der das Backup
durchführt, auf dem entfernten Rechner in
.rhosts eingetragen sein.Die Argumente zu rdump und
rrestore müssen
zur Verwendung auf dem entfernten Computer geeignet sein.
Wenn Sie zum Beispiel mit rdump von einem
FreeBSD-Rechner aus auf ein Exabyte-Bandlaufwerk einer Sun mit
Namen komodo zugreifen möchten, setzen Sie
das folgende Kommando ab:&prompt.root; /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1Zum Ausführen dieses Kommandos müssen Sie auf dem
entfernten Rechner in .rhosts eingetragen
sein. Die r-Kommandos sind ein großes Sicherheitsrisiko,
daher sollten Sie deren Verwendung sorgfältig
abwägen.Es ist auch möglich, dump und
restore über eine gesicherte Verbindung
mit ssh einzusetzen:dump mit ssh
benutzen&prompt.root; /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gzSie können ebenfalls mit der internen Methode
von dump auf entfernte Rechner zugreifen,
indem Sie die Umgebungsvariable RSH
setzen:dump über ssh
mit gesetzter RSH benutzen&prompt.root; RSH=/usr/bin/ssh /sbin/dump -0uan -f tatargetuser@targetmachine.example.com:/dev/sa0tarBackup-Softwaretar&man.tar.1; stammt ebenfalls aus Version 6 von AT&T UNIX
(ca. 1975). tar arbeitet mit dem Dateisystem,
denn es schreibt Dateien und Verzeichnisse auf das Band.
tar unterstützt zwar nicht den vollen Umfang
von Optionen, die bei
&man.cpio.1; zur Verfügung stehen, aber dafür erfordert
tar nicht die ungewöhnliche Kommando-Pipeline,
die cpio verwendet.tarDie meisten Versionen von tar unterstützen
keine Backups über das Netzwerk. Die GNU-Version von
tar die in FreeBSD verwendet wird, unterstützt
jedoch entfernte Geräte mit der gleichen Syntax wie
rdump. Um tar
für ein Exabyte-Bandlaufwerk auf einer Sun
namens komodo auszuführen, muss folgendes
Kommando aufgerufen werden:&prompt.root; /usr/bin/tar cf komodo:/dev/nsa8 . 2>&1Bei den Versionen ohne Unterstützung
für entfernte Geräte kann man die Daten über eine
Pipeline und rsh an ein entferntes Laufwerk
senden.&prompt.root; tar cf - . | rsh hostname dd of=tape-device obs=20bWenn Sie Bedenken bezüglich der Sicherheit beim Backup
über das Netz haben, sollten Sie ssh anstatt
rsh benutzen.CpioBackup-Softwarecpiocpio&man.cpio.1; ist das ursprüngliche Programm von
&unix; Systemen zum Dateitransfer mit magnetischen Medien.
cpio hat (neben vielen anderen
Leistungsmerkmalen) Optionen zum Byte-Swapping, zum Schreiben
einer Anzahl verschiedener Archivformate und zum Weiterleiten von
Daten an andere Programme über eine Pipeline. Dieses letzte
Leistungsmerkmal macht cpio zu einer
ausgezeichneten Wahl für Installationsmedien. Leider kann
cpio keine
Dateibäume durchlaufen, so dass eine Liste der zu bearbeitenden
Dateien über stdin angegeben werden
muss.cpio unterstützt keine Backups
über das Netzwerk. Man kann aber eine Pipeline und
rsh verwenden, um
Daten an ein entferntes Bandlaufwerk zu senden.&prompt.root; for f in directory_list; dofind $f >> backup.listdone
&prompt.root; cpio -v -o --format=newc < backup.list | ssh user@host "cat > backup_device"Dabei steht directory_list für
eine Aufzählung der Verzeichnisse, die Sie sichern wollen.
user@host
gibt den Benutzer auf dem Zielrechner an, der die Sicherung
laufen lässt. Der Ort der Sicherung wird durch
backup_device angegeben
(z.B. /dev/nsa0).paxBackup-SoftwarepaxpaxPOSIXIEEE&man.pax.1; ist die Antwort von IEEE/&posix; auf
tar und cpio.
Über die Jahre hinweg sind die verschiedenen
Versionen von tar und cpio leicht
inkompatibel geworden. Daher hat &posix;, statt eine Standardisierung
zwischen diesen auszufechten, ein neues Archivprogramm geschaffen.
pax versucht viele der unterschiedlichen
cpio- und tar-Formate zu lesen
und zu schreiben, außerdem einige neue, eigene Formate. Die
Kommandostruktur ähnelt eher cpio als
tar.AmandaBackup-SoftwareAmandaAmandaAmanda
(Advanced Maryland Network Disk Archiver) ist ein
Client/Server-Backupsystem, nicht nur ein einzelnes Programm.
Ein Amanda-Server kann auf einem
einzigen Bandlaufwerk Datensicherungen von jeder beliebigen
Anzahl von Computern speichern, sofern auf diesen jeweils ein
Amanda-Client läuft und sie
über Netzwerk mit dem Amanda-Server
verbunden sind.Ein häufiges Problem bei Standorten mit einer Anzahl
großer Festplatten ist, dass das Kopieren der Daten auf
Band langsamer vor sich geht als solche Daten anfallen.
Amanda löst dieses Problem
durch Verwendung einer Holding Disk, einer Festplatte
zum gleichzeitigen Zwischenspeichern mehrerer Dateisysteme.Für Datensicherungen über einen längeren
Zeitraum erzeugt AmandaArchivsets von allen Dateisystemen, die in
Amandas Konfigurationsdatei genannt
werden. Ein Archivset ist eine Gruppe von Bändern mit
vollen Backups und Reihen von inkrementellen (oder differentiellen)
Backups, die jeweils nur die Unterschiede zum vorigen
Backup enthalten. Zur Wiederherstellung von beschädigten
Dateisystemen benötigt man Das Letzte volle Backup und alle
darauf folgenden inkrementellen Backups.Die Konfigurationsdatei ermöglicht die Feineinstellung
der Backups und des Netzwerkverkehrs von
Amanda. Amanda
kann zum Schreiben der Daten auf das Band jedes der oben
beschriebenen Backuprogramme verwenden.
Amanda ist nicht Teil des Basissystems,
Sie müssen Amanda über
die Ports-Sammlung oder als Paket installieren.Tue nichtsTue nichts ist kein Computerprogramm, sondern die
am häufigsten angewendete Backupstrategie. Diese kostet nichts,
man muss keinen Backupplan befolgen, einfach nur nein sagen. Wenn
etwas passiert, einfach grinsen und ertragen!Wenn Ihre Zeit und Ihre Daten nicht so wichtig sind, dann ist
die Strategie Tue nichts das geeignetste Backupprogramm
für Ihren Computer. Aber &unix; ist ein nützliches Werkzeug,
Sie müssen damit rechnen, dass Sie innerhalb von sechs Monaten
eine Sammlung von Dateien haben, die für Sie wertvoll geworden
sind.Tue nichts ist die richtige Backupmethode für
/usr/obj und andere Verzeichnisbäume, die
vom Computer exakt wiedererzeugt werden können. Ein Beispiel
sind die Dateien, die diese Handbuchseiten darstellen – sie
wurden aus Quelldateien im Format SGML erzeugt.
Es ist nicht nötig, Sicherheitskopien der Dateien in den
sekundären Formaten wie etwa HTML zu
erstellen. Die Quelldateien in SGML sollten jedoch
in die regelmäßigen Backups mit einbezogen werden.Welches Backup-Programm ist am Besten?LISAdump, Punkt und Schluss.
Elizabeth D. Zwicky hat alle hier genannten Backup-Programme
bis zur Erschöpfung ausgetestet. Ihre eindeutige Wahl zur
Sicherung aller Daten mit Berücksichtigung aller Besonderheiten
von &unix; Dateisystemen ist dump.Elizabeth erzeugte Dateisysteme mit einer großen Vielfalt
ungewöhnlicher Bedingungen (und einiger gar nicht so
ungewöhnlicher) und testete jedes Programm durch ein Backup und
eine Wiederherstellung dieser Dateisysteme. Unter den Besonderheiten
waren Dateien mit Löchern, Dateien mit Löchern und einem
Block mit Null-Zeichen, Dateien mit ausgefallenen Buchstaben im
Dateinamen, unlesbare und nichtschreibbare Dateien,
Gerätedateien, Dateien, deren Länge sich während des
Backups ändert, Dateien, die während des Backups erzeugt und
gelöscht werden, u.v.m. Sie berichtete über ihre Ergebnisse
in LISA V im Oktober 1991, s. Torture-testing
Backup and Archive Programs.Die Wiederherstellung in einem NotfallVor dem UnglückEs sind nur vier Vorkehrungen zu treffen, um auf jedes
erdenkliche Unglück vorbereitet zu sein.disklabelAls erstes drucken Sie das Disklabel jeder Ihrer Festplatten
(z.B. mittels disklabel da0 | lpr), die
Partitions- und Dateisystemtabelle jeder Festplatte (mit
/etc/fstab) sowie alle Bootmeldungen, jeweils
in zweifacher Ausfertigung.fix-it floppiesZweitens, überzeugen Sie sich, dass sowohl die
Bootdiskette als auch die Reparaturdiskette
(boot.flp bzw. fixit.flp)
all Ihre Geräte ansprechen können. Die einfachste Methode
dies nachzuprüfen ist, Ihren Rechner mit der Boot-Diskette im
Floppylaufwerk neu zu starten und die Bootmeldungen zu durchzusehen.
Wenn all Ihre Geräte aufgelistet sind und funktionieren,
können Sie weiter zu Schritt drei gehen.Ist das nicht der Fall, müssen Sie sich eine eigene
Version der beiden zum Booten benötigten Disketten erstellen.
Diese müssen einen Kernel enthalten, der all Ihre Platten
mounten kann und Zugriff auf Ihr Bandlaufwerk gestattet. Diese
Disketten müssen ferner folgende Programme enthalten:
fdisk, disklabel,
newfs, mount sowie
jedes Backup-Programm, das Sie verwenden. Diese Programme
müssen statisch gelinkt sein. Falls Sie dump
verwenden, muss die Diskette auch restore
enthalten.Drittens, machen Sie oft Backups auf Band. Jede Änderung
seit Ihrem letzten Backup kann unwiederbringlich verloren gehen.
Versehen Sie die Backup-Bänder mit Schreibschutz.Viertens, testen Sie aus, wie die Disketten (entweder
boot.flp und fixit.flp
oder Ihre beiden eigenen Disketten aus Schritt zwei) und die
Bänder mit den Backups zu behandeln sind. Machen Sie sich
Notizen zu diesem Test. Bewahren Sie diese Notizen zusammen mit den
Bootdisketten, den Ausdrucken und den Bändern mit den Backups
auf. Wenn der Ernstfall eintritt, werden Sie vielleicht so genervt
sein, dass Sie ohne Ihre Notizen vielleicht das Backup auf Ihren
Bändern zerstören. (Wie das geht? Man braucht nur
unglücklicherweise den Befehl tar cvf
/dev/sa0 einzugeben um ein Band zu
überschreiben).Als zusätzliche Sicherheitsvorkehrung, kann man jeweils
die Disketten und Bänder zweifach erstellen. Eine der Kopien
sollte an einem entfernten Standort aufbewahrt werden. Ein
entfernter Standort ist NICHT der Keller im gleichen
Bürogebäude. Eine Anzahl von Firmen im World Trade Center
musste diese Lektion auf die harte Tour lernen. Ein entfernter
Standort sollte von Ihrem Computer und Ihren Festplatten
physikalisch durch eine erhebliche Entfernung getrennt sein.Ein Beispielskript zum Erstellen eigener Bootdisketten /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore
gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync
cp /root/.profile /mnt/root
cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV
chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore
#
# Geraetedateien erstellen
#
cd /mnt/dev
./MAKEDEV std
./MAKEDEV da0
./MAKEDEV da1
./MAKEDEV da2
./MAKEDEV sa0
./MAKEDEV pty0
cd /
#
# Minimale Dateisystemtabelle erstellen
#
cat > /mnt/etc/fstab < /mnt/etc/passwd < /mnt/etc/master.passwd <Nach dem UnglückDie Schlüsselfrage ist, ob Ihre Hardware überlebt
hat. Denn da Sie ja regelmäßig Backups angefertigt
haben, brauchen Sie sich um die Software keine Sorgen zu
machen.Falls die Hardware beschädigt wurde, ersetzen Sie zuerst
die defekten Teile bevor Sie den Computer benutzen.Falls die Hardware funktioniert, überprüfen Sie die
Disketten. Wenn Sie eigene Bootdisketten verwenden, booten Sie im
Single-User-Modus (geben dazu Sie -s am
Boot-Prompt boot: ein). Überspringen Sie den
folgenden Paragrafen.Wenn Sie die Standarddisketten boot.flp
und fixit.flp verwenden, lesen Sie hier weiter.
Legen Sie die Bootdiskette boot.flp in das
erste Floppylaufwerk ein und starten Sie den Computer. Wie
üblich wird dann das originale Installationsmenü von
FreeBSD gestartet. Wählen Sie die Option
Fixit--Repair mode with CD-ROM or floppy. Legen
Sie die Diskette fixit.flp ein, wenn danach
gefragt wird. restore und die anderen Programme,
die Sie benötigen, befinden sich dann in
/mnt2/stand.Stellen Sie die Dateisysteme nacheinander, getrennt von
einander, wieder her.mountRoot-PartitiondisklabelnewfsVersuchen Sie die Root-Partition Ihrer ersten Festplatte
einzuhängen (z.B. mit mount /dev/sd0a
/mnt). Wenn das Disklabel beschädigt wurde,
benutzen Sie disklabel um die Platte
neu zu partitionieren und zu benennen und zwar so, dass die
Festplatte mit dem Label übereinstimmt, das Sie
ausgedruckt und aufbewahrt haben.Verwenden Sie newfs um neue Dateisysteme
auf den
Partitionen anzulegen. Hängen Sie nun die Root-Partition der
Festplatte mit Schreibzugriff ein (mit mount -u -o rw
/mnt). Benutzen Sie Ihr Backup-Programm um die Daten
für das jeweilige Dateisystem aus den Backup-Bändern
wieder her zu stellen (z.B. durch restore vrf
/dev/sta). Hängen Sie das Dateisystem wieder aus
(z.B. durch umount /mnt). Wiederholen Sie diesen
Ablauf für jedes betroffene Dateisystem.Sobald Ihr System wieder läuft, machen Sie gleich wieder
ein vollständiges Backup auf neue Bänder. Denn die
Ursache für den Absturz oder den Datenverlust kann wieder
zuschlagen. Eine weitere Stunde, die Sie jetzt noch
dranhängen, kann Ihnen später ein weiteres Missgeschick
ersparen.* Ich habe mich nicht auf Missgeschicke vorbereitet - was
nun?
]]>
MarcFonvieilleVerbessert und neu strukturiert von Netzwerk-, speicher- und dateibasierte DateisystemeLaufwerkevirtuelleNeben Laufwerken, die sich physikalisch im Rechner befinden
wie Floppylaufwerke, CDs, Festplatten usw., kann FreeBSD auch
mit anderen Laufwerken, den virtuellen Laufwerken,
umgehen.NFSCodaLaufwerkespeicherbasierteLaufwerkeRAM-DisksDazu zählen Netzwerkdateisysteme wie
Network Filesystem und Coda,
speicher- und dateibasierte Dateisysteme.Abhängig von der verwendeten FreeBSD Version werden
speicher- und dateibasierte Dateisysteme mit unterschiedlichen
Werkzeugen angelegt.In FreeBSD 4.X werden Gerätedateien mit
&man.MAKEDEV.8; angelegt. FreeBSD 5.X erzeugt
Gerätedateien automatisch mithilfe von &man.devfs.5;.Dateibasierte Laufwerke unter FreeBSD 4.XLaufwerkedateibasierte (4.X)Mit &man.vnconfig.8; werden vnode Pseudo-Platten
konfiguriert und aktiviert. Ein vnode
stellt eine Datei dar, auf der Dateioperationen ablaufen.
Das bedeutet, dass &man.vnconfig.8; Dateien benutzt,
um ein Dateisystem zu erstellen und zu verwalten. Damit
ist es z.B. möglich, Dateien, die Abbilder von Floppies
oder CDs enthalten, anzuhängen.In der Kernelkonfiguration muss die
&man.vn.4;-Unterstützung aktiviert sein, damit
&man.vnconfig.8; funktioniert:pseudo-device vnUm ein existierendes Abbild eines Dateisystems
einzuhängen:Einhängen eines existierenden Abbildes unter
FreeBSD 4.X&prompt.root; vnconfig vn0diskimage
&prompt.root; mount /dev/vn0c /mntUm ein neues Dateisystem mit &man.vnconfig.8; anzulegen:Anlegen eines dateibasierten Laufwerks&prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
&prompt.root; vnconfig -s labels -c vn0newimage
&prompt.root; disklabel -r -w vn0 auto
&prompt.root; newfs vn0c
Warning: 2048 sector(s) in last cylinder unallocated
/dev/vn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
super-block backups (for fsck -b #) at:
32
&prompt.root; mount /dev/vn0c /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/vn0c 4927 1 4532 0% /mntDateibasierte Laufwerke unter FreeBSD 5.XLaufwerkedateibasierte (5.X)Unter FreeBSD 5.0 werden virtuelle Laufwerke (&man.md.4;)
mit &man.mdconfig.8; erzeugt. Dazu muss das Modul &man.md.4;
geladen sein oder das entsprechende Gerät in der
Kernelkonfiguration aktiviert sein:device mdMit &man.mdconfig.8; können drei verschiedene virtuelle
Laufwerke angelegt werden: speicherbasierte Laufwerke, deren
Speicher von &man.malloc.9; zur Verfügung gestellt wird, oder
dateibasierte Laufwerke, deren Speicher von einer Datei oder dem
Swap-Bereich zur Verfügung gestellt wird. Eine mögliche
Anwendung ist das Einhängen von Dateien, die Abbilder von
CD-ROMs oder Floppies enthalten.Das Abbild eines Dateisystems wird wie folgt
eingehangen:Einhängen eines existierenden Abbildes unter
FreeBSD 5.X&prompt.root; mdconfig -a -t vnode -f diskimage -u 0
&prompt.root; mount /dev/md0/mntEin neues Dateisystem-Abbild erstellen Sie mit
&man.mdconfig.8; wie folgt:Erstellen eines dateibasierten Laufwerks mit
mdconfig&prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
&prompt.root; mdconfig -a -t vnode -f newimage -u 0
&prompt.root; disklabel -r -w md0 auto
&prompt.root; newfs md0c
/dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
super-block backups (for fsck -b #) at:
32, 2624, 5216, 7808
&prompt.root; mount /dev/md0c /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0c 4846 2 4458 0% /mntWenn Sie keine Gerätenummer mit dem Schalter
angeben, wird von &man.md.4; automatisch eine
ungenutzte Gerätenummer zugewiesen. Das zugewiesene Gerät
wird auf der Standardausgabe ausgegeben (zum Beispiel
md4). Weitere Informationen entnehmen Sie
bitte der Hilfeseite &man.mdconfig.8;.Ab &os; 5.1-RELEASE wurde &man.disklabel.8;
durch &man.bsdlabel.8; ersetzt. In bsdlabel
wurden veraltete Optionen entfernt. Entfernen Sie die
Option in den obigen Beispielen,
wenn Sie bsdlabel verwenden.
Weiteres entnehmen Sie bitte der Hilfeseite
&man.bsdlabel.8;.Das Werkzeug &man.mdconfig.8; ist sehr nützlich, doch muss
man viele Kommandos absetzen, um ein dateibasiertes Dateisystem zu
erstellen. FreeBSD enthält das Werkzeug &man.mdmfs.8;, das
die notwendigen Schritte in einem Befehl zusammenfasst. Es
konfiguriert mit &man.mdconfig.8; ein &man.md.4;-Laufwerk, erstellt
darauf mit &man.newfs.8; ein Dateisystem und hängt es
anschließend mit &man.mount.8; ein. Das virtuelle Laufwerk
aus dem obigen Beispiel kann somit einfach mit den nachstehenden
Befehlen erstellt werden:Mit mdmfs ein dateibasiertes
Dateisystem erstellen&prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
&prompt.root; mdmfs -F newimage -s 5m md0/mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0 4846 2 4458 0% /mntWenn sie die Option ohne Gerätenummer
verwenden, wählt &man.md.4; automatisch ein ungenutztes
Gerät aus. Weitere Einzelheiten entnehmen Sie bitte der
Hilfeseite &man.mdmfs.8;.Speicherbasierte Laufwerke unter FreeBSD 4.XLaufwerkespeicherbasierte (4.X)LaufwerkeRAM-Disks (4.X)Mit dem Gerätetreiber &man.md.4; lassen sich unter
FreeBSD 4.X leicht speicherbasierte Laufwerke (RAM-disks)
anlegen. Der dazu nötige Speicher wird mit &man.malloc.9;
belegt.Nehmen Sie einfach ein Dateisystem, dass Sie
z.B. mit &man.vnconfig.8; vorbereitet haben:Speicherbasiertes Laufwerk unter FreeBSD 4.X&prompt.root; dd if=newimage of=/dev/md0
5120+0 records in
5120+0 records out
&prompt.root; mount /dev/md0c/mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0c 4927 1 4532 0% /mntWeitere Einzelheiten entnehmen Sie bitte der Hilfeseite
&man.md.4;.Speicherbasierte Laufwerke unter FreeBSD 5.XLaufwerkespeicherbasierte (5.X)LaufwerkeRAM-Disks (5.X)Speicher- und dateibasierte Laufwerke werden in
FreeBSD 5.0 mit denselben Werkzeugen erstellt:
&man.mdconfig.8; oder &man.mdmfs.8;. Der Speicher für
speicherbasierte Laufwerke (RAM-disks) wird mit
&man.malloc.9; belegt.Erstellen eines speicherbasierten Laufwerks mit
mdconfig&prompt.root; mdconfig -a -t malloc -s 5m -u 1
&prompt.root; newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
with soft updates
super-block backups (for fsck -b #) at:
32, 2624, 5216, 7808
&prompt.root; mount /dev/md1/mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md1 4846 2 4458 0% /mntErstellen eines speicherbasierten Laufwerks mit
mdmfs&prompt.root; mdmfs -M -s 5m md2/mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md2 4846 2 4458 0% /mntDer Speicher für das Dateisystem muss nicht mit
&man.malloc.9; zugewiesen werden, sondern kann auch aus dem
Swap-Bereich stammen. Auf der Kommandozeile von &man.mdconfig.8;
ist dazu durch
zu ersetzen. Ohne Angabe des Schalters
verwendet &man.mdmfs.8; Speicher aus dem Swap-Bereich.
Weitere Informationen entnehmen Sie bitte den Hilfeseiten
&man.mdconfig.8; und &man.mdmfs.8;.Virtuelle Laufwerke freigebenLaufwerkeFreigabe von virtuellen LaufwerkenWenn ein virtuelles Laufwerk nicht mehr gebraucht wird, sollten
Sie dem System die belegten Ressourcen zurückgeben.
Hängen Sie dazu zuerst das Dateisystem ab und geben Sie dann
die benutzten Ressourcen mit &man.mdconfig.8; frei.Alle von /dev/md4 belegten Ressourcen
werden mit dem nachstehenden Kommando freigegeben:&prompt.root; mdconfig -d -u 4Eingerichtete &man.md.4;-Geräte werden mit dem Befehl
mdconfig -l angezeigt.Unter FreeBSD 4.X geben Sie die Ressourcen mit
&man.vnconfig.8; frei. Die von /dev/vn4
belegten Ressourcen geben Sie wie folgt frei:&prompt.root; vnconfig -u vn4TomRhodesBeigetragen von Schnappschüsse von DateisystemenSchnappschüsse von DateisystemenSchnappschüsseZusammen mit Soft Updates
bietet FreeBSD 5.0 eine neue Funktion: Schnappschüsse von
Dateisystemen.Schnappschüsse sind Dateien, die ein Abbild eines
Dateisystems enthalten und müssen auf dem jeweiligen
Dateisystem erstellt werden. Pro Dateisystem darf es maximal
20 Schnappschüsse, die im Superblock vermerkt werden, geben.
Schnappschüsse bleiben erhalten, wenn das Dateisystem abgehangen,
neu eingehangen oder das System neu gestartet wird. Wenn Sie einen
Schnappschuss nicht mehr benötigen, können Sie ihn
mit &man.rm.1; löschen. Es ist egal, in welcher Reihenfolge
Schnappschüsse gelöscht werden. Es kann allerdings
vorkommen, dass nicht der gesamte Speicherplatz
wieder freigegeben wird, da ein anderer
Schnappschuss einen Teil der entfernten Blöcke für sich
beanspruchen kann.Schnappschüsse werden mit dem Flag
(siehe &man.chflags.1;) angelegt, um sicherzustellen, das nicht
einmal root den Schnappschuss beschreiben
kann. In &man.unlink.1; wird allerdings für
Schnappschüsse eine Ausnahme gemacht: Sie dürfen
gelöscht werden, ohne das das Flag
vorher entfernt werden muss.Schnappschüsse werden mit &man.mount.8; erstellt. Das
folgende Kommando legt einen Schnappschuss von
/var in /var/snapshot/snap
ab:&prompt.root; mount -u -o snapshot /var/snapshot/snap /varDen Schnappschuss können Sie auch mit &man.mksnap.ffs.8;
erstellen:&prompt.root; mksnap_ffs /var /var/snapshot/snapNachdem ein Schnappschuss erstellt wurde, können Sie
ihn für verschiedene Zwecke benutzen:Sie können den Schnappschuss für die
Datensicherung benutzen und ihn auf eine CD oder ein Band
schreiben.Sie können den Schnappschuss mit &man.fsck.8;
prüfen. Wenn das Dateisystem zum Zeitpunkt der Erstellung
des Schnappschusses in Ordnung war, sollte &man.fsck.8; immer
erfolgreich durchlaufen.Sie können den Schnappschuss mit &man.dump.8;
sichern. Sie erhalten dann eine konsistente Sicherung des
Dateisystems zu dem Zeitpunkt, der durch den Zeitstempel des
Schnappschusses gegeben ist. Der Schalter
von &man.dump.8; erstellt für die Sicherung einen
Schnappschuss und entfernt diesen am Ende der Sicherung
wieder.Sie können einen Schnappschuss in den
Verzeichnisbaum einhängen und sich dann den Zustand des
Dateisystems zu dem Zeitpunkt ansehen, an dem der
Schnappschuss erstellt wurde. Der folgende Befehl
hängt den Schnappschuss
/var/snapshot/snap ein:&prompt.root; mdconfig -a -t vnode -f /var/snapshot/snap -u 4
&prompt.root; mount -r /dev/md4 /mntSie können sich nun den eingefrorenen Stand des
/var Dateisystems unterhalb von
/mnt ansehen. Mit Ausnahme der früheren
Schnappschüsse, die als leere Dateien auftauchen, wird alles
so aussehen, wie zu dem Zeitpunkt als der Schnappschuss
erstellt wurde. Wenn Sie den Schnappschuss nicht mehr
benötigen, können Sie ihn, wie nachfolgend gezeigt,
abhängen:&prompt.root; umount /mnt
&prompt.root; mdconfig -d -u 4Weitere Informationen über Soft Updates und
Schnappschüsse von Dateisystemen sowie technische Artikel finden
Sie auf der Webseite
von Marshall Kirk McKusick.Dateisystem-QuotasAccountingPlattenplatzDisk QuotasQuotas sind eine optionale Funktion des Betriebssystems,
die es Ihnen erlauben, den Plattenplatz und/oder die Anzahl
der Dateien eines Benutzers oder der Mitglieder einer Gruppe,
auf Dateisystemebene zu beschränken. Oft wird dies
auf Timesharing-Systemen (Mehrbenutzersystemen) genutzt, da
es dort erwünscht ist, die Ressourcen, die ein Benutzer oder
eine Gruppe von Benutzern belegen können, zu limitieren. Das
verhindert, dass ein Benutzer oder eine Gruppe von Benutzern
den ganzen verfügbaren Plattenplatz belegt.Konfiguration des Systems, um Quotas zu
aktivierenBevor Quotas benutzt werden können, müssen
sie im Kernel konfiguriert werden, wozu die folgende Zeile
der Kernelkonfiguration hinzugefügt wird:options QUOTAIm gewöhnlichen GENERIC Kernel
sind Quotas nicht aktiviert, so dass Sie einen angepassten
Kernel konfigurieren und bauen müssen, um Quotas zu
benutzen. Weitere Informationen
finden Sie in .Durch Hinzufügen der folgenden Zeile in
/etc/rc.conf wird das Quota-System
aktiviert:enable_quotas="YES"Disk QuotasüberprüfenUm den Start des Quota-Systems zu beeinflussen, steht
eine weitere Variable zur Verfügung. Normalerweise
wird beim Booten die Integrität der Quotas auf
allen Dateisystemen mit &man.quotacheck.8;
überprüft. &man.quotacheck.8; stellt
sicher, dass die Quota-Datenbank mit den Daten auf
einem Dateisystem übereinstimmt. Dies ist allerdings
ein sehr zeitraubender Prozess, der die Zeit, die
das System zum Booten braucht, signifikant beeinflusst.
Eine Variable in /etc/rc.config erlaubt es Ihnen,
diesen Schritt zu überspringen:check_quotas="NO"Wenn Sie ein FreeBSD vor 3.2-RELEASE benutzen, ist
die Konfiguration einfacher. In /etc/rc.conf
setzen Sie nur eine Variable:check_quotas="YES"Schließlich müssen Sie noch in
/etc/fstab die Plattenquotas auf
Dateisystemebene aktivieren. Dort können Sie
für alle Dateisysteme Quotas für Benutzer, Gruppen
oder für beide aktivieren.Um Quotas pro Benutzer für ein Dateisystem zu
aktivieren, geben Sie für dieses Dateisystem die
Option im Feld Optionen von
/etc/fstab an. Beispiel:/dev/da1s2g /home ufs rw,userquota 1 2Um Quotas für Gruppen einzurichten, verwenden
Sie anstelle von
. Um Quotas für Benutzer
und Gruppen einzurichten, ändern Sie den Eintrag
wie folgt ab:/dev/da1s2g /home ufs rw,userquota,groupquota 1 2Die Quotas werden jeweils im Rootverzeichnis des Dateisystems
unter dem Namen quota.user für
Benutzer-Quotas und quota.group für
Gruppen-Quotas abgelegt. Obwohl &man.fstab.5; beschreibt,
dass diese Dateien an anderer Stelle gespeichert werden
können, wird das nicht empfohlen, da es den Anschein hat,
dass die verschiedenen Quota-Utilities das nicht richtig
unterstützen.Jetzt sollten Sie Ihr System mit dem neuen Kernel booten.
/etc/rc wird dann automatisch die
richtigen Kommandos aufrufen, die die Quota-Dateien für
alle Quotas, die Sie in /etc/fstab
definiert haben, anlegen. Deshalb müssen vorher auch keine
leeren Quota-Dateien angelegt werden.Normalerweise brauchen Sie die Kommandos
&man.quotacheck.8;, &man.quotaon.8; oder
&man.quotaoff.8; nicht händisch aufzurufen,
obwohl Sie vielleicht die entsprechenden Seiten im
Manual lesen sollten, um sich mit ihnen vertraut
zu machen.Setzen von Quota-LimitsDisk QuotasLimitsNachdem Sie Quotas in Ihrem System aktiviert haben, sollten
Sie überprüfen, dass Sie auch tatsächlich
aktiviert sind. Führen Sie dazu einfach den folgenden
Befehl aus:&prompt.root; quota -vFür jedes Dateisystem, auf dem Quotas aktiviert sind,
sollten Sie eine Zeile mit der Plattenauslastung und den
aktuellen Quota-Limits sehen.Mit &man.edquota.8; können Sie nun
Quota-Limits setzen.Sie haben mehrere Möglichkeiten, die Limits für
den Plattenplatz, den ein Benutzer oder eine Gruppe verbrauchen
kann, oder die Anzahl der Dateien, die angelegt werden dürfen,
festzulegen. Die Limits können auf dem Plattenplatz
(Block-Quotas) oder der Anzahl der Dateien (Inode-Quotas) oder
einer Kombination von beiden basieren.
Jedes dieser Limits wird weiterhin in zwei Kategorien geteilt:
Hardlimits und Softlimits.HardlimitEin Hardlimit kann nicht überschritten werden.
Hat der Benutzer einmal ein Hardlimit erreicht, so kann er
auf dem betreffenden Dateisystem keinen weiteren Platz mehr
beanspruchen. Hat ein Benutzer beispielsweise ein Hardlimit
von 500 Blöcken auf einem Dateisystem und benutzt davon
490 Blöcke, so kann er nur noch 10 weitere Blöcke
beanspruchen. Der Versuch, weitere 11 Blöcke zu beanspruchen,
wird fehlschlagen.SoftlimitIm Gegensatz dazu können Softlimits für eine
befristete Zeit überschritten werden. Diese Frist
beträgt in der Grundeinstellung
eine Woche. Hat der Benutzer das Softlimit über die
Frist hinaus überschritten, so wird das Softlimit in
ein Hardlimit umgewandelt und der Benutzer kann
keinen weiteren Platz mehr beanspruchen. Wenn er einmal
das Softlimit unterschreitet, wird die Frist wieder
zurückgesetzt.Das folgende Beispiel zeigt die Benutzung von
&man.edquota.8;. Wenn &man.edquota.8; aufgerufen wird,
wird der Editor gestartet, der durch EDITOR
gegeben ist oder vi falls
EDITOR nicht gesetzt ist. In dem Editor
können Sie die Limits eingeben.&prompt.root; edquota -u testQuotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)Für jedes Dateisystem, auf dem Quotas aktiv sind,
sehen Sie zwei Zeilen, eine für die Block-Quotas und die
andere für die Inode-Quotas. Um ein Limit zu modifizieren,
ändern Sie einfach den angezeigten Wert. Um beispielsweise
das Blocklimit dieses Benutzers von einem Softlimit von 50
und einem Hardlimit von 75 auf ein Softlimit von 500 und
ein Hardlimit von 600 zu erhöhen, ändern Sie
die Zeile/usr: blocks in use: 65, limits (soft = 50, hard = 75)zu: /usr: blocks in use: 65, limits (soft = 500, hard = 600)Die neuen Limits sind wirksam, wenn Sie den
Editor verlassen.Manchmal ist es erwünscht, die Limits für einen
Bereich von UIDs zu setzen. Dies kann mit der
Option von &man.edquota.8; bewerkstelligt werden.
Weisen Sie dazu die Limits einem Benutzer zu und rufen danach
edquota -p protouser startuid-enduid auf.
Besitzt beispielsweise der Benutzer test
die gewünschten Limits, können diese mit
dem folgenden Kommando für die UIDs 10.000 bis 19.999
dupliziert werden:&prompt.root; edquota -p test 10000-19999Weitere Informationen erhalten Sie in &man.edquota.8;.Überprüfen von Quota-Limits und PlattennutzungDisk QuotasüberprüfenSie können &man.quota.1; oder
&man.repquota.8; benutzen, um Quota-Limits
und Plattennutzung zu überprüfen. Um die Limits
oder die Plattennutzung individueller Benutzer und Gruppen
zu überprüfen, kann &man.quota.1;
benutzt werden. Ein Benutzer kann nur die eigenen Quotas und die
Quotas der Gruppe, der er angehört untersuchen. Nur der
Superuser darf sich alle Limits ansehen.
Mit &man.repquota.8; erhalten Sie eine Zusammenfassung
von allen Limits und der Plattenausnutzung für alle
Dateisysteme, auf denen Quotas aktiv sind.Das folgende Beispiel zeigt die Ausgabe von
quota -v für einen Benutzer, der
Quota-Limits auf zwei Dateisystemen besitzt:Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60Disk QuotasFristIm Dateisystem /usr liegt der Benutzer
momentan 15 Blöcke über dem Softlimit von
50 Blöcken und hat noch 5 Tage seiner Frist übrig.
Der Stern * zeigt an, dass der
Benutzer sein Limit überschritten hat.In der Ausgabe von &man.quota.1; werden Dateisysteme,
auf denen ein Benutzer keinen Platz verbraucht, nicht angezeigt,
auch wenn diesem Quotas zugewiesen wurden. Mit
werden diese Dateisysteme, wie /usr/var
im obigen Beispiel, angezeigt.Quotas über NFSNFSQuotas werden von dem Quota-Subsystem auf dem NFS Server
erzwungen. Der &man.rpc.rquotad.8; Dæmon stellt
&man.quota.1; die Quota Informationen auf dem NFS Client
zur Verfügung, so dass Benutzer auf diesen
Systemen ihre Quotas abfragen können.Aktivieren Sie rpc.rquotad in
/etc/inetd.conf wie folgt:rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotadAnschließend starten Sie inetd
neu:&prompt.root; kill -HUP `cat /var/run/inetd.pid`LuckyGreenBeigetragen von shamrock@cypherpunks.toPartitionen verschlüsselnPartitionenverschlüsselnFreeBSD bietet ausgezeichnete Möglichkeiten, Daten vor
unberechtigten Zugriffen zu schützen. Wenn das
Betriebssystem läuft, schützen Zugriffsrechte und
vorgeschriebene Zugriffskontrollen (MAC) (siehe )
die Daten. Die Zugriffskontrollen des Betriebssystems
schützen allerdings nicht vor einem Angreifer, der
Zugriff auf den Rechner hat. Der Angreifer
kann eine Festplatte einfach in ein anderes System einbauen
und dort die Daten analysieren.GEOM Based Disk Encryption (gbde)
schützt Daten auf Dateisystemen auch vor hoch motivierten
Angreifern, die über erhebliche Mittel verfügen.
Der Schutz ist unabhängig von der Art und Weise, auf der
ein Angreifer Zugang zu einer Festplatte oder zu einem
Rechner erlangt hat. Im Gegensatz zu schwerfälligen
Systemen, die einzelne Dateien verschlüsseln,
verschlüsselt gbde transparent
ganze Dateisysteme. Auf der Festplatte werden keine Daten
im Klartext gespeichert.gbde im Kernel einrichtenWechseln sie zu rootSie benötigen Superuser-Rechte, um
gbde einzurichten.&prompt.user; su -
Password:Überprüfen Sie die FreeBSD-Version&man.gbde.4; benötigt FreeBSD 5.0
oder höher.&prompt.root; uname -r
5.0-RELEASEAktivieren Sie &man.gbde.4; in
der KernelkonfigurationFügen Sie mit Ihrem Lieblingseditor die
folgende Zeile in die Kernelkonfiguration ein:options GEOM_BDEÜbersetzen und installieren Sie den FreeBSD-Kernel.
In werden die dazu
notwendigen Schritte erklärt.Starten sie das System neu, um den neuen Kernel
zu benutzen.Einrichten eines verschlüsselten DateisystemsDas folgende Beispiel beschreibt, wie ein Dateisystem
auf einer neuen Festplatte verschlüsselt wird. Das
Dateisystem wird in /private eingehangen.
Mit gbde könnten auch
/home und /var/mail
verschlüsselt werden. Die dazu nötigen Schritte
können allerdings in dieser Einführung
nicht behandelt werden.Installieren der FestplatteInstallieren Sie die Festplatte wie in
beschrieben. Im Beispiel
verwenden wir die Partition /dev/ad4s1c.
Die Gerätedateien
/dev/ad0s1*
sind Standard-Partitionen des FreeBSD-Systems.&prompt.root; ls /dev/ad*
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4Verzeichnis für gbde-Lock-Dateien anlegen&prompt.root; mkdir /etc/gbdeDie Lock-Dateien sind für den Zugriff von
gbde auf verschlüsselte
Partitionen notwendig. Ohne die Lock-Dateien können
die Daten nur mit erheblichem manuellen Aufwand wieder
entschlüsselt werden (dies wird auch von der Software
nicht unterstützt). Jede verschlüsselte
Partition benötigt eine gesonderte Lock-Datei.Vorbereiten der gbde-PartitionEine von gbde benutzte
Partition muss einmalig vorbereitet werden:&prompt.root; gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c&man.gbde.8; öffnet eine Vorlage in Ihrem Editor,
in der Sie verschiedene Optionen einstellen können.
Setzen Sie sector_size auf
2048, wenn Sie
UFS1 oder UFS2 benutzen.$FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
#
# Sector size is the smallest unit of data which can be read or written.
# Making it too small decreases performance and decreases available space.
# Making it too large may prevent filesystems from working. 512 is the
# minimum and always safe. For UFS, use the fragment size
#
sector_size = 2048
[...]
&man.gbde.8; fragt dann zweimal eine Passphrase
zum Schutz der Daten ab. Die Passphrase muss beides
Mal gleich eingegeben werden. Die Sicherheit der
Daten hängt alleine von der Qualität der
gewählten Passphrase ab.
Die Auswahl einer sicheren und leicht zu merkenden
Passphrase wird auf der Webseite Diceware
Passphrase beschrieben.Mit gbde init wurde im Beispiel
auch die Lock-Datei /etc/gbde/ad4s1c
angelegt.Sichern Sie die Lock-Dateien von
gbde immer zusammen mit den
verschlüsselten Dateisystemen. Ein entschlossener
Angreifer kann die Daten vielleicht auch ohne die
Lock-Datei entschlüsseln. Ohne die Lock-Datei
können Sie allerdings nicht auf die
verschlüsselten Daten zugreifen. Dies ist nur noch
mit erheblichem manuellen Aufwand möglich, der
weder von &man.gbde.8; noch seinem Entwickler
unterstützt wird.Einbinden der verschlüsselten Partition
in den Kernel&prompt.root; gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1cDas Kommando fragt die Passphrase ab, die Sie
beim Vorbereiten der Partition eingegeben haben. Das
neue Gerät erscheint danach als
/dev/device_name.bde im
Verzeichnis /dev:&prompt.root; ls /dev/ad*
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bdeDateisystem auf dem verschlüsselten Gerät
anlegenWenn der Kernel die verschlüsselte Partition
kennt, können Sie ein Dateisystem auf ihr anlegen.
Benutzen Sie dazu den Befehl &man.newfs.8;. Da ein
Dateisystem vom Typ UFS2 sehr viel schneller als eins
vom Typ UFS1 angelegt wird, empfehlen wir Ihnen, die
Option zu benutzen.Ab &os; 5.1-RELEASE wird
als Voreinstellung verwendet.&prompt.root; newfs -U -O2 /dev/ad4s1c.bde&man.newfs.8; muss auf einer dem Kernel bekannten
gbde-Partition (einem
Gerät mit dem Namen
*.bde
laufen.Einhängen der verschlüsselten PartitionLegen Sie einen Mountpunkt für das
verschlüsselte Dateisystem an:&prompt.root; mkdir /privateHängen Sie das verschlüsselte Dateisystem
ein:&prompt.root; mount /dev/ad4s1c.bde /privateÜberprüfen des verschlüsselten
DateisystemDas verschlüsselte Dateisystem sollte jetzt
von &man.df.1; erkannt werden und benutzt werden
können.&prompt.user; df -H
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 1037M 72M 883M 8% /
/devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1f 8.1G 55K 7.5G 0% /home
/dev/ad0s1e 1037M 1.1M 953M 0% /tmp
/dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr
/dev/ad4s1c.bde 150G 4.1K 138G 0% /privateEinhängen eines existierenden verschlüsselten
DateisystemsNach jedem Neustart müssen verschlüsselte
Dateisysteme dem Kernel wieder bekannt gemacht werden,
auf Fehler überprüft werden und eingehangen
werden. Die dazu nötigen Befehle müssen als
root durchgeführt werden.gbde-Partition im Kernel bekannt geben&prompt.root; gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1cDas Kommando fragt nach der Passphrase, die Sie
beim Vorbereiten der Partition eingegeben haben.Prüfen des DateisystemsDas verschlüsselte Dateisystem kann noch nicht
automatisch über /etc/fstab
eingehangen werden. Daher muss es vor dem Einhängen
mit &man.fsck.8; geprüft werden:&prompt.root; fsck -p -t ffs /dev/ad4s1c.bdeEinhängen des verschlüsselten
Dateisystems&prompt.root; mount /dev/ad4s1c.bde /privateDas verschlüsselte Dateisystem steht danach
zur Verfügung.Verschlüsselte Dateisysteme automatisch
einhängenMit einem Skript können verschlüsselte
Dateisysteme automatisch bekannt gegeben, geprüft
und eingehangen werden. Wir raten Ihnen allerdings
aus Sicherheitsgründen davon ab. Starten Sie das
Skript manuell an der Konsole oder in einer
&man.ssh.1;-Sitzung.Kryptographische Methoden von gbde&man.gbde.8; benutzt den 128-Bit AES im CBC-Modus,
um die Daten eines Sektors zu verschlüsseln. Jeder
Sektor einer Festplatte wird mit einem unterschiedlichen
AES-Schlüssel verschlüsselt. Mehr Informationen,
unter anderem wie die Schlüssel für einen Sektor
aus der gegebenen Passphrase ermittelt werden, erhalten
Sie in &man.gbde.4;.Kompatibilität&man.sysinstall.8; kann nicht mit verschlüsselten
gbde-Geräten umgehen. Vor
dem Start von &man.sysinstall.8; sind alle
*.bde-Geräte
zu deaktivieren, da &man.sysinstall.8; sonst bei der
Gerätesuche abstürzt. Das im Beispiel verwendete
Gerät wird mit dem folgenden Befehl deaktiviert:&prompt.root; gbde detach /dev/ad4s1cSie können gbde
nicht zusammen mit vinum
benutzen, da &man.vinum.4; das &man.geom.4;-Subsystem
nicht benutzt.
diff --git a/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml b/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml
index 16c847f99e..50894e92d3 100644
--- a/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml
@@ -1,1726 +1,1765 @@
Ressourcen im InternetGedruckte Medien können mit der schnellen Entwicklung von
FreeBSD nicht Schritt halten. Elektronische Medien sind häufig
die einzige Möglichkeit, über aktuelle Entwicklungen
informiert zu sein. Da FreeBSD ein Projekt von Freiwilligen ist, gibt
die Benutzergemeinde selbst auch technische Unterstützung. Die
Benutzergemeinde erreichen Sie am besten über E-Mail oder
Usenet-News.Die wichtigsten Wege, auf denen Sie die FreeBSD-Benutzergemeinde
erreichen können, sind unten dargestellt. Wenn Sie weitere
Ressourcen kennen, die hier fehlen, schicken Sie diese bitte an die
- Mailingliste &a.doc;, so dass sie hier aufgenommen werden
+ Mailingliste des &a.doc;, damit sie hier aufgenommen werden
können.MailinglistenObwohl viele FreeBSD-Entwickler Usenet-News lesen, können
wir nicht garantieren, dass Sie eine zügige Antwort auf
Ihre Fragen bekommen, wenn Sie diese nur in einer der
comp.unix.bsd.freebsd.* Gruppen stellen. Wenn Sie
Ihre Fragen auf der passenden Mailingliste stellen, erreichen Sie
sowohl die Entwickler wie auch die FreeBSD-Benutzergemeinde und
erhalten damit bessere (oder zumindest schnellere) Antworten.Die Chartas der verschiedenen Listen sind unten wiedergegeben.
Bevor Sie sich einer Mailingliste anschließen oder
E-Mails an eine Liste senden, lesen Sie bitte die Charta der
Liste. Die meisten Mitglieder unserer Mailinglisten
erhalten Hunderte E-Mails zum Thema FreeBSD pro Tag. Die Chartas und
Regeln, die den Gebrauch der Listen beschreiben, garantieren die hohe
Qualität der Listen. Die Listen würden ihren hohen Wert
für das Projekt verlieren, wenn wir weniger Regeln aufstellen
würden.Alle Mailinglisten werden archiviert und können auf dem
FreeBSD World Wide Web
Server durchsucht werden. Das nach
Schlüsselwörtern durchsuchbare Archiv bietet die
hervorragende Möglichkeit, Antworten auf häufig gestellte
- Fragen zu finden. Nutzen Sie bitte diese Möglichkeit bevor Sie
+ Fragen zu finden. Nutzen Sie bitte diese Möglichkeit, bevor Sie
Fragen auf einer Liste stellen.Beschreibung der MailinglistenAllgemeine Listen: Jeder kann die
folgenden allgemeinen Listen abonnieren (und ist dazu
aufgefordert):MailinglisteZweck&a.cvsall.name;Änderungen im FreeBSD-Quellbaum&a.advocacy.name;Verbreitung von FreeBSD&a.announce.name;Wichtige Ereignisse und Meilensteine des
Projekts&a.arch.name;Architektur und Design von FreeBSD&a.bugbusters.name;Diskussionen über die Pflege der FreeBSD
Fehlerberichte-Datenbank und die dazu benutzten
Werkzeuge&a.bugs.name;Fehlerberichte&a.chat.name;Nicht technische Themen, die die FreeBSD-Gemeinschaft
betreffen&a.config.name;Entwicklung von Konfigurations- und
Installations-Werkzeugen für FreeBSD&a.current.name;Gebrauch von &os.current;&a.isp.name;Für Internet-Service-Provider, die
FreeBSD benutzen&a.jobs.name;Anstellung und Beratung im FreeBSD-Umfeld
- &a.newbies.name;-newbies
+ &a.newbies.name;Starthilfen für neue FreeBSD-Benutzer&a.policy.name;Grundsatzentscheidungen des FreeBSD-Core-Teams. Wenig
Verkehr und nur zum Lesen&a.questions.name;Benutzerfragen und technische
Unterstützung&a.security-notifications.name;Ankündigungen zum Thema Sicherheit&a.stable.name;Gebrauch von &os.stable;&a.test.name;Schicken Sie Testnachrichten an diese Liste anstelle
der wirklichen ListenTechnische Listen: Auf den folgenden
Listen werden technische Diskussionen geführt. Bevor Sie eine
der Listen abonnieren oder Nachrichten an sie schicken, lesen Sie
sich bitte die Charta der Liste durch, da der Inhalt und Zweck
dieser Listen genau festgelegt ist.MailinglisteZweck&a.acpi.name;Entwicklung von ACPI&a.afs.name;Portierung von AFS nach FreeBSD&a.aic7xxx.name;Entwicklung von &adaptec; AIC 7xxx Treibern&a.alpha.name;Portierung von FreeBSD auf Alpha-Maschinen&a.amd64.name;Portierung von FreeBSD auf AMD65-Systeme&a.apache.name;Diskussion über Ports, die mit
Apache
zusammenhängen.&a.arm.name;Portierung von FreeBSD auf &arm;-Prozessoren&a.atm.name;Benutzung von ATM-Netzen mit FreeBSD&a.audit.name;Audit der FreeBSD-Quellen&a.binup.name;Design und Entwicklung eines Systems, das es erlaubt,
ein FreeBSD-System mit binären Paketen zu
aktualisieren&a.cluster.name;Benutzung von FreeBSD in einem Cluster&a.cvsweb.name;Pflege von CVSweb&a.database.name;Diskussion über Datenbanken und
Datenbankprogrammierung unter FreeBSD&a.doc.name;Erstellen der FreeBSD-Dokumentation&a.emulation.name;Emulation anderer Systeme wie Linux, DOS oder
&windows;&a.firewire.name;Technische Diskussion über &firewire;
(iLink, IEEE 1394)&a.fs.name;Dateisysteme&a.geom.name;Diskusion über GEOM&a.gnome.name;Portierung von GNOME und
GNOME-Anwendungen&a.hackers.name;Allgemeine technische Diskussionen&a.hardware.name;Allgemeine Diskussion über Hardware, auf der
FreeBSD läuft&a.i18n.name;Internationalisierung von FreeBSD&a.ia32.name;FreeBSD für die IA-32 (&intel; x86) Plattform&a.ia64.name;Portierung von FreeBSD auf Intels neue
IA64-Systeme&a.ipfw.name;Technische Diskussion über die Neubearbeitung der
IP-Firewall Quellen&a.isdn.name;Für Entwickler des ISDN-Systems&a.java.name;Für &java; Entwickler und Leute, die &jdk;s nach
FreeBSD portieren&a.kde.name;Portierung von KDE und
KDE-Anwendungen&a.lfs.name;Portierung von LFS nach FreeBSD&a.libh.name;Das nächste Installations- und
Paketsystem&a.mips.name;Portierung von FreeBSD zu &mips;&a.mobile.name;Diskussionen über mobiles Rechnen&a.mozilla.name;Portierung von Mozilla
nach FreeBSD&a.multimedia.name;Multimedia Anwendungen&a.newbus.name;Technische Diskussionen über die Architektur von
Bussen&a.net.name;Diskussion über Netzwerke und den TCP/IP
Quellcode&a.openoffice.name;Portierung von OpenOffice.org
und &staroffice;
nach FreeBSD&a.performance.name;Fragen zur Optimierung der Leistung stark
ausgelasteter Systeme&a.perl.name;Pflege der portierten
Perl-Anwendungen.
+
+ &a.pf.name;
+ Diskussionen und Fragen zu packet
+ filter als Firewallsystem.
+
+
&a.platforms.name;Portierungen von FreeBSD auf nicht-&intel;
Architekturen&a.ports.name;Diskussion über die Ports-Sammlung&a.ports-bugs.name;Diskussion über Fehler und PRs der Ports&a.ppc.name;Portierung von FreeBSD auf den &powerpc;&a.qa.name;Diskussion über Qualitätssicherung,
normalerweise kurz vor einem Release&a.realtime.name;Entwicklung von Echtzeiterweiterungen für
FreeBSD&a.scsi.name;Diskussion über das SCSI-Subsystem&a.security.name;Sicherheitsthemen&a.small.name;Gebrauch von FreeBSD in eingebetteten Systemen&a.smp.name;Diskussionen über das Design von asymmetrischen
und symmetrischen Mehrprozessor-Programmen&a.sparc.name;Portierung von FreeBSD auf &sparc; Systeme&a.standards.name;Konformität von FreeBSD mit den C99- und
POSIX-Standards&a.threads.name;Leichgewichtige Prozesse
(Threads) in FreeBSD&a.testing.name;Leistungs- und Stabilitätstests von FreeBSD&a.tokenring.name;Token-Ring Unterstützung in FreeBSD
+
+ &a.usb.name;
+ USB-Unterstützung in FreeBSD
+
+
&a.vuxml.name;Diskussion über die Infratruktur von VuXML&a.x11.name;Wartung und Unterstützung von X11
auf FreeBSDEingeschränkte Listen: Die folgenden
Listen wenden sich an Zielgruppen mit speziellen Anforderungen und
sind nicht für die Öffentlichkeit gedacht. Bevor Sie
eine dieser Listen abonnieren, sollten Sie einige der technischen
Listen abonniert haben, um mit den Umgangsformen vertraut zu
sein.MailinglisteZweck&a.hubs.name;Betrieb von FreeBSD-Spiegeln&a.usergroups.name;Koordination von Benutzergruppen&a.vendors.name;Koordination von Händlern vor einem
Release&a.www.name;Betreuer von www.FreeBSD.orgZusammenfassungen: Alle eben
aufgezählten Listen sind auch in zusammengefasster
- Form (digest) erhältich.
+ Form (digest) erhältlich.
In den Einstellungen Ihres Accounts legen Sie fest,
in welcher Form Sie die Listen empfangen.CVS Listen: Die folgenden Listen versenden
die Log-Einträge zu Änderungen an verschiedenen
Teilen des Quellbaums. Diese Listen sollen nur
gelesen werden, schicken Sie bitte keine Nachrichten
an eine der Listen.MailinglisteTeil des QuellbaumsBeschreibung&a.cvsall.name;/usr/(CVSROOT|doc|ports|projects|src)Alle Änderungen im Quellbaum (Obermenge der
anderen Commit-Listen)&a.cvs-doc.name;/usr/(doc|www)Änderungen in den
doc- und
www Bäumen&a.cvs-ports.name;/usr/portsÄnderungen im ports-Baum&a.cvs-projects.name;/usr/projectsÄnderungen im
projects-Baum&a.cvs-src.name;/usr/srcÄnderungen im src-BaumMailinglisten abonnierenUm eine Liste zu abonnieren, folgen Sie dem oben angegebenen
- Hyperlink der Liste oder besuchen Sie die Webseite
- &a.mailman.lists.link; und klicken dort auf Liste, die Sie
+ Hyperlink der Liste oder Sie besuchen die Webseite
+ &a.mailman.lists.link; und klicken dort auf die Liste, die Sie
abonnieren wollen. Sie gelangen dann auf die Webseite der
Liste, die weitere Anweisungen enthält.Um eine Nachricht an eine Mailingliste zu schicken, schreiben
Sie einfach eine E-Mail an
<Liste@FreeBSD.org>. Die E-Mail
wird dann an alle Mitglieder der Mailingliste verteilt.Wenn Sie das Abonnement aufheben wollen, folgen Sie der
URL, die am Ende jeder Mail der Liste angegeben ist. Sie
können das Abonnement auch mit einer E-Mail an
freebsd-Liste-unsubscribe@FreeBSD.org
aufheben.Verwenden Sie bitte die technischen Listen ausschließlich
für technische Diskussionen. Wenn Sie nur an wichtigen
Ankündigungen interessiert sind, abonnieren Sie die
Mailingliste &a.announce;, auf der nur wenige Nachrichten
versendet werden.Chartas der MailinglistenAlle FreeBSD-Mailinglisten besitzen
Grundregeln, die von jedem beachtet werden müssen. Für
die ersten beiden Male, in denen ein Absender gegen diese Regeln
verstößt, erhält er jeweils eine Warnung vom
FreeBSD-Postmaster postmaster@FreeBSD.org. Ein
dritter Verstoß gegen die Regeln führt dazu, dass
der Absender in allen FreeBSD-Mailinglisten gesperrt wird und
weitere Nachrichten von ihm nicht mehr angenommen werden. Wir
bedauern sehr, dass wir solche Maßnahmen ergreifen
müssen, aber heutzutage ist das Internet eine recht rauhe
Umgebung, in der immer weniger Leute Rücksicht aufeinander
nehmen.Die Regeln:Das Thema einer Nachricht soll der Charta der Liste, an die
sie gesendet wird, entsprechen. Wenn Sie eine Nachricht an
eine technische Liste schicken, sollte die Nachricht auch
technische Inhalte haben. Fortwährendes Geschwätz
oder Streit mindern den Wert der Liste für alle Mitglieder
und wird nicht toleriert. Benutzen Sie &a.chat; für
allgemeine Diskussionen über FreeBSD.Eine Nachricht sollte an nicht mehr als zwei Mailinglisten
gesendet werden. Schicken Sie eine Nachricht nur dann an
zwei Listen, wenn das wirklich notwendig ist. Viele Leute
haben mehrere Mailinglisten abonniert und Nachrichten sollten
nur zu ungewöhnlichen Kombinationen der Listen, wie
-stable und -scsi, gesendet
werden. Wenn Sie eine Nachricht erhalten, die im
Cc-Feld mehrere Listen enthält, sollten
Sie das Feld kürzen, bevor Sie eine Antwort darauf
verschicken. Unabhängig von dem
ursprünglichen Verteiler sind Sie für Ihre eigenen
Mehrfach-Sendungen selbst verantwortlich.Persönliche Angriffe und Beschimpfungen sind in einer
Diskussion nicht erlaubt. Dies gilt gleichermaßen
für Benutzer wie Entwickler. Grobe Verletzungen der
Netiquette, wie das Verschicken oder Zitieren von privater
E-Mail ohne eine entsprechende Genehmigung, werden nicht
gebilligt. Die Nachrichten werden aber nicht besonders auf
Verletzungen der Netiquette untersucht. Es kann sein,
dass eine Verletzung der Netiquette durchaus zu der Charta
einer Liste passt, aber der Absender aufgrund der
Verletzung eine Warnung erhält oder gesperrt wird.Werbung für Produkte oder Dienstleistungen, die nichts
mit FreeBSD zu tun haben, sind verboten. Ist die Werbung als
Spam verschickt worden, wird der Absender sofort gesperrt.Chartas einzelner Listen:&a.acpi.name;Die Entwicklung von ACPI und
Energieverwaltungsfunktionen.&a.afs.name;Andrew File SystemAuf dieser Liste wird die Portierung des AFS von
CMU/Transarc diskutiert.&a.announce.name;Wichtige Ereignisse und
MeilensteineDiese Liste ist für Personen, die nur an den wenigen
Ankündigungen wichtiger Ereignisse interessiert sind.
Die Ankündigungen betreffen Schnappschüsse und
Releases, neue Merkmale von FreeBSD und die Suche nach
freiwilligen Mitarbeitern. Auf der Liste herrscht wenig
Verkehr und sie wird streng moderiert.&a.arch.name;Architektur und Design
von FreeBSDAuf dieser technischen Liste wird die FreeBSD-Architektur
diskutiert. Beispiele für angemessene Themen
sind:Wie das Bausystem zu verändern ist, damit
verschiedene Läufe gleichzeitig möglich
sind.Was am VFS geändert werden muss, damit
Heidemann Schichten eingesetzt werden können.Wie die Schnittstelle der Gerätetreiber
angepasst werden muss, damit derselbe Treiber
auf verschiedenen Bussen und Architekturen eingesetzt
werden kann.Wie ein Netzwerktreiber geschrieben wird.&a.audit.name;Source Code Audit ProjectDies ist die Liste des FreeBSD-Source Code Audit
Projects. Ursprünglich war vorgesehen, hier nur
sicherheitsrelevante Änderungen zu diskutieren, doch ist
die Charta auf alle Änderungen ausgedehnt worden.Zu dieser Liste werden viele Korrekturen gesandt, so
dass sie für den normalen FreeBSD-Benutzer von
wenig Wert ist. Diskussionen über Sicherheit, die sich
nicht auf die Änderung von Quellcode beziehen, finden
auf der Mailingliste &a.security; statt. Auf der anderen
Seite sind aber alle Entwickler aufgefordert, ihre
Korrekturen zur Überprüfung an diese Liste zu
senden. Dies trifft besonders auf Änderungen zu, in
denen ein Fehler die Integrität des Gesamtsystems
gefährdet.&a.binup.name;FreeBSD Binary Update ProjectAuf dieser Liste wird das Design und die Implementierung
von binup diskutiert. Weitere
Themen sind Fehlerbehebungen, Fehlerberichte und Anfragen
nach Neuerungen. Die CVS-Logmeldungen des Projekts werden
ebenfalls auf diese Liste gesendet.&a.bugbusters.name;Bearbeitung der FehlerberichteAuf dieser Liste wird die Bearbeitung der Fehlerberichte
(PR, engl. problem report)
koordiniert. Sie dient dem Bugmeister und
allen Leuten, die ein Interesse an der Datenbank der
Fehlerberichte haben, als Diskussionsforum. Auf dieser Liste
werden keine spezifischen Fehler, Fehlerbehebungen oder PRs
diskutiert.&a.bugs.name;FehlerberichteAuf dieser Liste werden Fehlerberichte gesammelt.
Fehlerberichte sollten immer mit &man.send-pr.1; oder dem
Web Formular
erstellt werden.&a.chat.name;Nicht technische Themen, die die FreeBSD
Gemeinschaft betreffenAuf dieser Liste werden nicht-technische soziale Themen
diskutiert, die nicht auf die anderen Listen passen. Hier
kann diskutiert werden, ob Jordan wie ein Frettchen aus einem
Zeichentrickfilm aussieht oder nicht, ob grundsätzlich
in Großbuchstaben geschrieben werden soll, wer zuviel
Kaffee trinkt, wo das beste Bier gebraut wird und wer Bier in
seinem Keller braut. Gelegentlich können auf den
technischen Listen wichtige Ereignisse wie Feste, Hochzeiten
oder Geburten angekündigt werden, aber nachfolgende
Nachrichten sollten auf die Liste &a.chat; gesendet
werden.&a.core.name;FreeBSD Core TeamDies ist eine interne Mailingliste des FreeBSD Core
Teams. Wenn in einer wichtigen Angelegenheit, die FreeBSD
betrifft, entschieden werden muss oder die
Angelegenheit einer genauen Prüfung unterzogen werden
muss, können Nachrichten an diese Liste gesendet
werden.&a.current.name;Gebrauch von &os.current;Diese Mailingliste ist für die Benutzer von
&os.current; eingerichtet. Auf ihr finden sich
Ankündigungen über Besonderheiten von -CURRENT, von
denen Benutzer betroffen sind. Sie enthält weiterhin
Anweisungen, wie man ein System auf -CURRENT hält.
Jeder, der ein -CURRENT System besitzt, muss diese Liste
lesen. Die Liste ist nur für technische Inhalte
bestimmt.&a.cvsweb.name;FreeBSD CVSweb ProjectTechnische Diskussion über den Gebrauch, die
Entwicklung und die Pflege von FreeBSD-CVSweb.&a.doc.name;Documentation ProjectAuf dieser Mailingliste werden Themen und Projekte
diskutiert, die im Zusammenhang mit der Erstellung der FreeBSD
Dokumentation stehen. The FreeBSD Documentation
Project besteht aus den Mitgliedern dieser Liste.
Diese Liste steht jedem offen, Sie sind herzlich eingeladen
teilzunehmen und mitzuhelfen.&a.firewire.name;&firewire; (iLink, IEEE 1394)Auf dieser Liste wird das Design und die Implementierung
eines &firewire;-Subsystems (auch IEEE 1394 oder iLink)
für FreeBSD diskutiert. Relevante Themen sind die
Standards, Busse und ihre Protokolle, sowie Adapter, Karten
und Chipsätze. Des Weiteren die Architektur und der
Quellcode, die nötig sind, diese Geräte zu
unterstützen.&a.fs.name;DateisystemeDiskussionen über FreeBSD-Dateisysteme. Dies ist
eine technische Liste, in der nur technische Inhalte erwartet
werden.&a.geom.name;GEOMDiskussion über GEOM und verwandte
Implementierungen. Dies ist eine technische Liste,
in der nur technische Inhalte erwartet werden.&a.gnome.name;GNOMEDiskussionen über die grafische
Benutzeroberfläche GNOME.
Dies ist eine technische Liste, in der nur technische Inhalte
erwartet werden.&a.ipfw.name;IP FirewallDiskussionen über eine Neubearbeitung des
IP-Firewall Quelltexts in FreeBSD. Dies ist eine technische
Liste, in der nur technische Inhalte erwartet werden.&a.ia64.name;Portierung von FreeBSD auf die
IA64-PlattformDies ist eine technische Liste für diejenigen, die
FreeBSD auf die IA-64 Plattform von &intel; portieren. Themen
sind die Probleme bei der Portierung und deren Lösung.
Interessierte, die der Diskussion folgen wollen, sind
ebenfalls willkommen.&a.isdn.name;ISDN SubsystemMailingliste für die Entwickler des ISDN Subsystems
von FreeBSD.&a.java.name;&java; EntwicklungMailingliste, auf der die Entwicklung von &java;
Anwendungen für FreeBSD sowie die Portierung und Pflege
von &jdk;s diskutiert wird.&a.jobs.name;Stellenangebote und
StellengesucheIn diesem Forum können Sie Stellenangebote
und Stellengesuche, die mit &os; zu tun haben, aufgeben.
Wenn Sie beispielsweise eine Beschäftigung im
&os;-Umfeld suchen oder eine freie Stelle haben,
die mit &os; zu tun hat, ist dies der richtige Ort.
Diese Mailingliste ist nicht
der Ort, um über allgemeine Beschäftigungsprobleme
zu diskutieren; dazu gibt es anderswo geeignete
Foren.Beachten Sie bitte, dass diese Liste, wie die
anderen FreeBSD.org-Listen, weltweit gelesen wird.
Geben Sie daher bitte den Arbeitsort genau an. Geben
Sie bitte auch an, ob Telearbeit möglich ist
und ob Hilfen für einen Umzug angeboten werden.Benutzen Sie in der E-Mail bitte nur offene
Formate – vorzugsweise nur das Textformat.
Andere Formate, wie PDF oder
HTML, werden von den Lesern akzeptiert. Nicht offene
Formate wie µsoft; Word (.doc)
werden vom Server der Liste abgelehnt.&a.hackers.name;Technische DiskussionenDies ist ein Forum für technische Diskussionen
über FreeBSD. Leute, die aktiv an FreeBSD arbeiten,
können hier Probleme und deren Lösungen
diskutieren. Interessierte, die den Diskussionen folgen
wollen, steht die Liste ebenfalls offen. Auf dieser Liste
finden nur technische Diskussionen statt.&a.hardware.name;Allgemeine Diskussionen über
HardwareAllgemeine Diskussionen über die Hardware, auf der
FreeBSD läuft: Probleme und Ratschläge welche
Hardware man kaufen sollte und welche nicht.&a.hubs.name;FreeBSD-SpiegelAnkündigungen und Diskussionsforum für Leute,
die FreeBSD-Spiegel betreiben.&a.isp.name;Themen für Internet Service
ProviderDiese Liste ist für Internet Service Provider (ISP),
die FreeBSD benutzen. Auf dieser Liste finden nur technische
Diskussionen statt.&a.kde.name;KDEDiskussionen über KDE
auf FreeBSD-Systemen.
Dies ist eine technische Liste, in der nur technische Inhalte
erwartet werden.&a.newbies.name;Starthilfen für neue FreeBSD
BenutzerEin Forum für Aktivitäten von Neulingen, die
anderswo nicht behandelt werden, wieselbständiges Lernen,Techniken zur Problemlösung,Suchen und Benutzen von Ressourcen,wo man Hilfe findet,wie Mailinglisten benutzt werden und welche Listen
man abonnieren sollte,allgemeine Unterhaltungen und Geschichten,Berichte über Fehler, die man gemacht hat,Prahlen mit eigenen Erfolgen,Mitteilen von Ideen,moralische (aber keine technische)
Unterstützung undwie man aktiver Teil der FreeBSD-Gemeinde
wird.Fragen und Probleme werden auf der Liste &a.questions;
behandelt, die Mailingliste &a.newbies; gibt neuen FreeBSD
Benutzern die nötigen Starthilfen.&a.openoffice.name;OpenOffice.orgPortierung und Pflege von
OpenOffice.org und
&staroffice;.&a.performance.name;Diskussionsforum mit dem Ziel, die
Leistung von FreeBSD zu verbessern.Auf dieser Liste diskutieren Hacker,
Systemadministratoren und andere Interessierte die
Leistung von FreeBSD. Zulässige Themen sind
beispielsweise Systeme unter hoher Last, Systeme
mit Leistungsproblemen oder Systeme, die Leistungsgrenzen
von FreeBSD überwinden. Jeder, der mithelfen will,
die Leistung von FreeBSD zu verbessern, sollte diese
Liste abonnieren. Die Liste ist technisch anspruchsvoll
und geeignet für erfahrene FreeBSD-Benutzer,
Hacker oder Administratoren, die FreeBSD schnell,
robust und skalierbar halten wollen. Auf der Liste
werden Beiträge gesammelt oder Fragen nach
ungelösten Problemen beantwortet. Sie ist kein
Ersatz für das gründliche Studium der
Dokumentation.
+
+ &a.pf.name;
+
+
+ Diskussionen und Fragen zu
+ packet filter als Firewallsystem.
+
+ FreeBSD-spezische Diskussionen zur Benutzung von
+ packet filter (pf) als
+ Firewallsystem. Sowohl technische Diskussionen als auch
+ Anwenderfragen sind auf dieser Liste willkommen. Fragen
+ zum ALTQ QoS Framework können ebenfalls gestellt
+ werden.
+
+
+
&a.platforms.name;Portierung auf nicht-&intel;
PlattformenPlattformübergreifende Themen und Vorschläge
für die Portierung auf nicht-&intel; Plattformen.
Auf dieser Liste finden nur technische Diskussionen
statt.&a.policy.name;Grundsatzentscheidungen des Core
TeamsDiese Mailingliste ist für Grundsatzentscheidungen
des FreeBSD-Core-Teams. Sie trägt wenige Nachrichten und
ist nur zum Lesen gedacht.&a.ports.name;Diskussion über die
Ports-SammlungDiskussionen über die FreeBSD-Ports-Sammlung und
die Infrastruktur der Sammlung. Die
Liste dient auch der allgemeinen Koordination der Dinge, die
die Ports-Sammlung betreffen. Auf dieser Liste finden nur
technische Diskussionen statt.&a.ports-bugs.name;Diskussion über Fehler in
den PortsDiskussion über Fehler in der Ports-Sammlung
(/usr/ports), neue Ports oder
Änderungen an bestehenden Ports. Auf dieser Liste
finden nur technische Diskussionen statt.&a.questions.name;Benutzerfragen
- Auf dieser Mailingliste können Fragen über
+ Auf dieser Mailingliste können Fragen zu
FreeBSD gestellt werden. Fragen Sie bitte nicht nach
Anleitungen, wenn Sie nicht sicher sind, dass Ihre
Frage wirklich technischer Natur ist.&a.scsi.name;SCSI SubsystemDiese Mailingliste ist für die Entwickler des SCSI
Subsystems von FreeBSD. Auf dieser Liste finden nur
technische Diskussionen statt.&a.security.name;SicherheitsthemenSicherheitsthemen, die FreeBSD betreffen, wie DES,
Kerberos, bekannte Sicherheitslöcher und Fehlerbehebungen.
Stellen Sie bitte auf dieser Liste keine allgemeinen Fragen
zum Thema Sicherheit. Willkommen sind allerdings Beiträge
zur FAQ, das heißt eine Frage mit der passenden
Antwort. Auf dieser Liste finden nur technische Diskussionen
statt.&a.security-notifications.name;Ankündigungen zum Thema
SicherheitAnkündigungen über Sicherheitsprobleme von
FreeBSD und deren Behebungen. Diese Liste ist kein
Diskussionsforum, benutzen Sie &a.security;, um
Sicherheitsthemen zu diskutieren.&a.small.name;Gebrauch von FreeBSD in
eingebetteten Systemen.Diese Liste für ungewöhnlich kleine FreeBSD
Installation oder den Einsatz von FreeBSD in eingebetteten
Systemen gedacht. Auf dieser Liste finden nur technische
Diskussionen statt.&a.stable.name;Gebrauch von &os.stable;.Diese Mailingliste ist für die Benutzer von
&os.stable; eingerichtet. Auf ihr finden sich
Ankündigungen über Besonderheiten von -STABLE, von
denen Benutzer betroffen sind. Sie enthält weiterhin
Anweisungen, wie man ein System auf -STABLE hält. Jeder,
der ein -STABLE System besitzt, muss diese Liste lesen. Die
Liste ist nur für technische Inhalte bestimmt.&a.standards.name;Konformität von FreeBSD mit den C99- und
&posix; StandardsDieses Forum ist für technische Diskussionen
über die Konformität von FreeBSD mit den C99- und
POSIX-Standards.
+
+ &a.usb.name;
+
+
+ USB-Unterstützung in
+ &os;.
+
+ Auf dieser Liste finden nur technische Diskussionen
+ statt.
+
+
+
&a.usergroups.name;Koordination von BenutzergruppenDiese Liste ist für Koordinatoren lokaler
Benutzergruppen und einem ausgesuchten Mitglied des Core Teams
eingerichtet worden. Der Inhalt sollte Inhalte von Treffen
und die Koordination von Projekten mehrerer Benutzergruppen
beschränkt sein.&a.vendors.name;Koordination von HändlernKoordination zwischen dem FreeBSD-Projekt und
Händlern, die Soft- und Hardware für FreeBSD
verkaufen.Filter der MailinglistenUm die Verbreitung von Spam, Viren und anderen nicht
erwünschten E-Mails zu verhindern, werden auf den
&os;-Mailinglisten Filter eingesetzt. Dieser Abschnitt
beschreibt nur einen Teil der zum Schutz der Listen
eingesetzten Filter.Auf den Mailinglisten sind nur die unten aufgeführten
Anhänge erlaubt. Anhänge mit einem anderen
MIME-Typ werden entfernt, bevor eine E-Mail an eine
Liste verteilt wird.application/octet-streamapplication/pdfapplication/pgp-signatureapplication/x-pkcs7-signaturemessage/rfc822multipart/alternativemultipart/relatedmultipart/signedtext/htmltext/plaintext/x-difftext/x-patchEinige Mailinglisten erlauben vielleicht Anhänge
mit anderem MIME-Typ. Für die meisten Mailinglisten
sollte die obige Aufzählung aber richtig sein.Wenn eine E-Mail sowohl aus einer HTML-Version wie auch
aus einer Text-Version besteht, wird die HTML-Version entfernt.
Wenn eine E-Mail nur im HTML-Format versendet wurde, wird
sie in reinen Text umgewandelt.Usenet-NewsNeben den Gruppen, die sich ausschließlich mit BSD
beschäftigen, gibt es viele weitere in denen über FreeBSD
diskutiert wird, oder die für FreeBSD-Benutzer wichtig sind.
Warren Toomey wkt@cs.adfa.edu.au stellte
großzügig suchbare
Archive einiger dieser Gruppen bereit.BSD spezifische Gruppencomp.unix.bsd.freebsd.announcecomp.unix.bsd.freebsd.miscde.comp.os.unix.bsd (deutsch)fr.comp.os.bsd (französisch)it.comp.os.bsd (italienisch)Weitere UNIX Gruppencomp.unixcomp.unix.questionscomp.unix.admincomp.unix.programmercomp.unix.shellcomp.unix.user-friendlycomp.security.unixcomp.sources.unixcomp.unix.advocacycomp.unix.misccomp.bugs.4bsdcomp.bugs.4bsd.ucb-fixescomp.unix.bsdX Window Systemcomp.windows.x.i386unixcomp.windows.xcomp.windows.x.appscomp.windows.x.announcecomp.windows.x.intrinsicscomp.windows.x.motifcomp.windows.x.pexcomp.emulators.ms-windows.wineWorld Wide Web Server
&chap.eresources.www.inc;
E-Mail AdressenDie folgenden Benutzergruppen stellen ihren Mitgliedern für
die Arbeit an FreeBSD E-Mail-Adressen zur Verfügung. Der
aufgeführte Administrator behält sich das Recht vor,
die Adresse zu sperren, wenn sie missbraucht wird.DomainAngebotBenutzergruppeAdministratorukug.uk.FreeBSD.orgnur zum Weiterleitenfreebsd-users@uk.FreeBSD.orgLee Johnston
lee@uk.FreeBSD.orgShell AccountsDie folgenden Benutzergruppen stellen Personen, die das FreeBSD
Projekt aktiv unterstützen, Shell-Accounts zur Verfügung.
Der aufgeführte Administrator behält sich das Recht vor,
den Account zu sperren, wenn er missbraucht wird.RechnerZugriffAngebotAdministratorstorm.uk.FreeBSD.orgnur SSHlesender Zugriff auf CVS, persönliche Webseiten,
E-Mail&a.brian;dogma.freebsd-uk.eu.orgTelnet/FTP/SSHE-Mail, Webseiten, Anonymous FTPLee Johnston
lee@uk.FreeBSD.org
diff --git a/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml b/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml
index a7ee845be9..27ac0197c6 100644
--- a/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml
@@ -1,3719 +1,3719 @@
JimMockRestrukturiert und teilweise aktualisiert von Brian N.HandyBeigetragen von RichMurpheyJohannKoisÜbersetzt von Linux-BinärkompatibilitätÜbersichtLinux-BinärkompatibilitätBinärkompatibilitätLinuxFreeBSD bietet Binärkompatibilität zu verschiedenen
anderen &unix; Betriebssystemen, darunter auch Linux. Nun
könnten Sie sich fragen, warum FreeBSD in der Lage sein
muss, Linux-Binärprogramme auszuführen? Die Antwort
auf diese Frage ist sehr einfach. Viele Unternehmen und Entwickler
programmieren bzw. entwickeln nur für Linux, da es
das Neueste und Beste in der Computerwelt ist.
Für uns FreeBSD-Anwender heißt dies, genau diese Unternehmen
und Entwickler zu bitten, FreeBSD-Versionen ihrer Programme
herauszubringen. Das Problem dabei ist nur, dass die meisten dieser
Firmen trotzdem nicht erkennen, wie viele zusätzliche
Anwender ihre Produkte benutzen würden, wenn es auch
FreeBSD-Versionen gäbe, und daher weiterhin
ausschließlich für Linux entwickeln. Was also kann ein
FreeBSD-Anwender tun? Genau an diesem Punkt kommt die Linux-
Binärkompatibilität ins Spiel.Um es auf den Punkt zu bringen, genau diese Kompatibilität
erlaubt es FreeBSD-Anwendern, etwa 90 % aller Linux-Anwendungen
ohne Code-Änderungen zu verwenden. Dies schließt
solche Anwendungen wie &staroffice;,
Open Office, die Linux-Versionen von
&netscape;,
&adobe; &acrobat;,
RealPlayer 5 und 7,
VMWare, &oracle;,
WordPerfect, Doom,
Quake und viele andere ein. Es wird
sogar berichtet, dass diese Linux-Anwendungen in manchen
Fällen unter FreeBSD eine bessere Leistung als unter
Linux aufweisen.Linux/proc DateisystemAllerdings gibt es nach wie vor einige Linux-spezifische
Betriebssystem-Eigenschaften, die unter FreeBSD nicht
unterstützt werden. Linux-Anwendungen, die in großem
Stil das Linux-/proc-Dateisystem verwenden,
werden unter FreeBSD nicht funktionieren, da sich dieses vom
FreeBSD-/proc-Dateisystem unterscheidet.
Auch &i386;-spezifische Aufrufe dieser Linux-Anwendungen (wie
z.B. die Aktivierung des virtuellen 8086-Modus) funktionieren
unter FreeBSD leider nicht.Nach dem Lesen dieses Kapitels werden Siewissen, wie Sie die Linux-Binärkompatibilität
installieren bzw. aktivieren.Wissen, wie man zusätzliche Linux-Systembibliotheken
unter FreeBSD installiert.Linux-Anwendungen unter FreeBSD installieren können.Wissen, wie die Linux-Binärkompatibilität
unter FreeBSD verwirklicht wurde.Bevor Sie dieses Kapitel lesen, sollten Siewissen, wie man Software Dritter installiert
().InstallationKLD (kernel loadable object)Die Linux-Binärkompatibilität ist per Voreinstellung
nicht aktiviert. Der einfachste Weg, dies zu tun, ist das
Linux KLD (Kernel LoaDable object)
zu laden. Dies geschieht durch die Eingabe von
linux an der Eingabeaufforderung.Wollen Sie die Linux-Binärkompatibilität dauerhaft
aktivieren, sollten Sie die folgende Zeile in
/etc/rc.conf einfügen:linux_enable="YES"Der &man.kldstat.8;-Befehl kann benutzt werden, um
festzustellen, ob KLD geladen wurde:&prompt.user; kldstat
Id Refs Address Size Name
1 2 0xc0100000 16bdb8 kernel
7 1 0xc24db000 d000 linux.koKerneloptionLINUXWenn Sie das KLD nicht laden können oder wollen, besteht
auch die Möglichkeit, die Linux-Binärkompatibiltät
statisch in den Kernel einzubinden. Dazu fügen Sie Ihrer
Kernelkonfigurationsdatei den Eintrag
options COMPAT_LINUX
hinzu. Anschließend installieren Sie Ihren neuen Kernel
wie in beschrieben.Linux-Laufzeitbibliotheken installierenLinuxLinux-Laufzeitbibliotheken installierenDies kann auf zwei Arten geschehen, entweder über den
linux_base-Port,
oder durch manuelle Installation der Bibliotheken
.Installation unter Verwendung des linux_base-PortsPorts CollectionDies ist die einfachste Methode, um die Laufzeitbibliotheken
zu installieren. Sie funktioniert genauso wie die
Installation eines beliebigen anderen Ports aus der
Ports-Sammlung.
Dazu machen Sie einfach folgendes:&prompt.root; cd /usr/ports/emulators/linux_base
&prompt.root; make install distcleanSie sollten nun über eine funktionierende
Linux-Binärkompatibilität verfügen. Einige
Programme könnten sich zwar über falsche
Unterversionsnummern der Systembibliotheken beschweren, dies ist
im Allgemeinen aber kein Problem.Unter Umständen gibt es mehrere Versionen des
Ports emulators/linux_base.
Die Ports entsprechen unterschiedlichen Versionen
verschiedener Linux-Distributionen Sie sollten den
Port installieren, der am besten die Anforderungen
der Linux-Anwendung erfüllt.Manuelle Installation der BibliothekenWenn Sie die Ports-Sammlung nicht installiert
haben, können Sie die Bibliotheken auch manuell
installieren. Dazu brauchen Sie die jeweiligen
Linux-Systembibliotheken, die das zu installierende Programm
verwendet sowie den Laufzeit-Linker. Zusätzlich müssen
Sie auf Ihrem FreeBSD-System einen
virtuellen Verzeichnisbaum für die
Linux-Bibliotheken einrichten. Alle unter FreeBSD gestarteten
Linux-Programme suchen zuerst in diesem Verzeichnisbaum
nach Systembibliotheken. Wenn also ein Linuxprogramm beispielsweise
/lib/libc.so lädt, versucht FreeBSD
zuerst, /compat/linux/lib/libc.so laden.
Ist diese Datei nicht vorhanden, wird
/lib/libc.so geladen. Systembibliotheken
sollten daher besser in den virtuellen Verzeichnisbaum
/compat/linux/lib als in den vom
Linux-ld.so vorgeschlagenen installiert
werden.Im Allgemeinen müssen Sie nur zu Beginn nach den
Systembibliotheken suchen, die von Linuxprogrammen
benötigt werden. Nach den ersten Installationen von
Linuxprogrammen auf Ihrem FreeBSD-System verfügen Sie
über eine Sammlung von Linux-Systembibliotheken,
die es Ihnen ermöglichen wird, neue Linuxprogramme
ohne Zusatzarbeit zu installieren.Installation zusätzlicher SystembibliothekenShared-LibrariesWas passiert, wenn Sie den linux_base-Port
installieren, und Ihr Programm beschwert sich trotzdem
über fehlende Systembibliotheken? Woher wissen Sie,
welche Systembibliotheken von Linux-Binärprogrammen
benötigt werden, und wo Sie diese finden? Grundsätzlich
gibt es dafür zwei Möglichkeiten (um dieser
Anleitung zu folgen, müssen Sie unter
FreeBSD als Benutzer root angemeldet
sein):Wenn Sie Zugriff auf ein Linux-System haben, können
Sie dort nachsehen, welche Systembibliotheken eine Anwendung
benötigt, und diese auf Ihr FreeBSD-System kopieren.
Dazu folgendes Beispiel:Nehmen wir an, Sie haben FTP verwendet, um die
Linux-Binärversion von Doom
zu bekommen und haben sie auf Ihrem Linux-System installiert.
Nun können Sie überprüfen, welche
Systembibliotheken das Programm benötigt, indem Sie
ldd linuxdoom eingeben. Das Resultat
sieht dann so aus:&prompt.user; ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29symbolische LinksSie müssten nun alle Dateien aus der
letzten Spalte kopieren und sie unter
/compat/linux speichern, wobei
die Namen der ersten Spalte als symbolische Links auf
diese Dateien zeigen. Damit haben Sie schließlich
folgende Dateien auf Ihrem FreeBSD-System:/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Beachten Sie, dass wenn Sie bereits eine
Linux-Systembibliothek einer zur ersten Spalte
passenden Hauptversionsnummer (laut
ldd-Ausgabe) besitzen, Sie die Datei
aus der zweiten Spalte nicht mehr kopieren müssen,
da die bereits vorhandene Version funktionieren sollte.
Hat die Systembibliothek jedoch eine neuere
Versionsnummer, sollten Sie sie dennoch kopieren.
Sie können die alte Version löschen, solange
Sie einen symbolischen Link auf die neue
Version anlegen. Wenn Sie also folgende Bibliotheken
auf Ihrem System installiert haben:/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27und Sie haben eine neue Binärdatei, die
laut ldd
eine neuere Bibliothek benötigt:libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29Wenn diese sich nur um ein oder zwei Stellen
in der Unterversionsnummer unterscheiden, müssen
Sie /lib/libc.so.4.6.29
nicht auf Ihr System kopieren, da das Programm auch
mit der etwas älteren Version ohne Probleme
funktionieren sollte. Wenn Sie wollen,
können Sie libc.so aber
dennoch ersetzen (das heißt aktualisieren), was dann zu
folgender Ausgabe führt:/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Der Mechanismus der symbolischen Links wird
nur für Linux-Binärdateien
benötigt. Der FreeBSD-Laufzeitlinker sucht
sich die passenden Hauptversionsnummern selbst,
das heißt Sie müssen sich nicht darum
kümmern.
Linux ELF-Binärdateien installierenLinuxELF-BinärdateiELF-Binärdateien benötigen manchmal eine zusätzliche
Kennzeichnung. Wenn Sie versuchen, eine nicht
gekennzeichnete ELF-Binärdatei auszuführen,
werden Sie eine Fehlermeldung ähnlich der folgenden
erhalten:&prompt.user; ./my-linux-elf-binary
ELF binary type not known
AbortDamit der FreeBSD-Kernel eine Linux-ELF-Datei von einer
FreeBSD-ELF-Datei unterscheiden kann, gibt es das Werkzeug
&man.brandelf.1;:&prompt.user; brandelf -t Linux my-linux-elf-binaryGNU WerkzeugeDie GNU Werkzeuge schreiben nun automatisch die
passende Kennzeichnungsinformation in die ELF-Binärdateien,
so dass Sie diesen Schritt in Zukunft nur noch selten benötigen
werden.Namensauflösung konfigurierenWenn DNS nicht funktioniert, oder Sie folgende Fehlermeldung
erhalten:resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keywordmüssen sie /compat/linux/etc/host.conf
wie folgt anlegen:order hosts, bind
multi onDiese Reihenfolge legt fest, dass zuerst
/etc/hosts und anschließend DNS
durchsucht werden. Wenn
/compat/linux/etc/host.conf nicht vorhanden
ist, finden Linux-Anwendungen FreeBSD's
/etc/host.conf und
beschweren sich über die inkompatible FreeBSD-Syntax. Wenn Sie
keinen Nameserver (in /etc/resolv.conf)
konfiguriert haben, sollten Sie den Eintrag
bind entfernen.MurrayStokelyFür Mathematica 4.x aktualisiert von BojanBistrovicMit der Unterstützung von &mathematica; installierenLinux-AnwendungenMathematicaDieses Dokument beschreibt die Installation der Linux-Version von
&mathematica; 4.x auf einem
FreeBSD-System.Die Linux-Version von &mathematica;
läuft perfekt unter FreeBSD, allerdings müssen die
von Wolfram verschickten Binärdateien gekennzeichnet werden,
damit FreeBSD weiß, dass es die Linux-ABI verwenden muss,
um sie auszuführen.Die Linux-Version von &mathematica;
oder &mathematica; für Studenten kann
direkt von Wolfram unter
bestellt werden.Linux-Binärdateien kennzeichnenDie Linuxbinärdateien befinden sich im
Unix-Verzeichnis der von Wolfram
vertriebenen &mathematica;-CD-ROM.
Sie müssen diesen Verzeichnisbaum auf Ihre Festplatte kopieren,
damit Sie die Linux-Binärdateien kennzeichnen können,
bevor Sie das Installationsprogramm aufrufen:&prompt.root; mount /cdrom
&prompt.root; cp -rp /cdrom/Unix/ /localdir/
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Graphics/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Converters/Binaries/Linux/*
&prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm
&prompt.root; cd /localdir/Installers/Linux/
&prompt.root; ./MathInstallerAlternativ können Sie mit folgendem Befehl auch die
Standard-ELF-Kennzeichnung für alle ungekennzeichneten
Binärdateien festlegen:&prompt.root; sysctl kern.fallback_elf_brand=3Danach wird FreeBSD annehmen, dass alle ungekennzeichneten
ELF-Binärdateien die Linux-ABI verwenden. Dadurch sollte es Ihnen
nun möglich sein, das Installationsprogramm direkt von der CD-ROM
zu starten.Ihr &mathematica;-Passwort anfordernBevor Sie &mathematica;
ausführen können, müssen Sie von Wolfram
ein zu Ihrer Rechner-ID passendes
Passwort anfordern.EthernetMAC-AdresseNachdem Sie die Linux-Kompatibilitätsbibliotheken
installiert und &mathematica; entpackt
haben, können Sie Ihre
Rechner-ID durch das Ausführen von
mathinfo (im Installationsverzeichnis) ermitteln.
Diese Rechner-ID basiert ausschließlich auf der MAC-Adresse
Ihrer ersten Ethernet-Karte.&prompt.root; cd /localdir/Files/SystemFiles/Installation/Binaries/Linux
&prompt.root; mathinfo
disco.example.com 7115-70839-20412Wenn Sie sich bei Wolfram registrieren (durch E-Mail,
Telefon oder Fax), teilen Sie
Ihre Rechner-ID mit und erhalten dafür
ein aus Zahlengruppen
bestehendes Passwort. Diese Information geben Sie ein, wenn Sie
&mathematica; das erste Mal starten,
genauso wie Sie es auch auf jeder anderen
&mathematica;-Plattform machen
würden.Das &mathematica;-Frontend über ein Netzwerk
ausführen&mathematica; verwendet einige
spezielle Schriftarten, um Zeichen anzuzeigen, die in den
Standardzeichensätzen nicht vorhanden
sind (z.B. Integrale, Summen, griechische Buchstaben). Das
X-Protokoll verlangt allerdings, dass diese Schriftarten
lokal installiert sind.
Das bedeutet, dass Sie diese Schriftarten von der CD-ROM oder
von einem Rechner, auf dem &mathematica;
installiert ist, auf Ihren Rechner kopieren müssen.
Diese Schriftarten befinden sich normalerweise in
/cdrom/Unix/Files/SystemFiles/Fonts
(&mathematica;-CD) oder in
/usr/local/mathematica/SystemFiles/Fonts
(Festplatte). Die aktuellen Schriftarten befinden sich dabei
in den Unterverzeichnissen Type1 und
X. Um diese Schriftarten zu verwenden,
gibt es mehrere Möglichkeiten, die nun beschrieben werden:Die erste Möglichkeit besteht darin, die Schriftarten
in eins der bereits existierenden Schriftartenverzeichnisse unter
/usr/X11R6/lib/X11/fonts zu kopieren.
Dies bedeutet, dass Sie fonts.dir editieren
müssen, indem Sie die Schriftnamen hinzufügen und
die Anzahl der Schriftarten in der ersten Zeile ändern.
Alternativ ist es auch möglich, im Verzeichnis, in das
Sie die Schriftarten kopiert haben, das Kommando
&man.mkfontdir.1; auszuführen.Die zweite Möglichkeit, besteht darin,
die Verzeichnisse nach
/usr/X11R6/lib/X11/fonts zu kopieren:&prompt.root; cd /usr/X11R6/lib/X11/fonts
&prompt.root; mkdir X
&prompt.root; mkdir MathType1
&prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts
&prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X
&prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; cd /usr/X11R6/lib/X11/fonts/X
&prompt.root; mkfontdir
&prompt.root; cd ../MathType1
&prompt.root; mkfontdirNun fügen Sie die neuen Schriftartenverzeichnisse in
Ihren Pfad ein:&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X
&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; xset fp rehashWenn Sie den &xfree86;-Server verwenden, können Sie die
Schriftarten-Verzeichnisse automatisch laden lassen, indem Sie sie
Ihrer XF86Config-Datei hinzufügen.SchriftartenWenn Sie noch kein/usr/X11R6/lib/X11/fonts/Type1-Verzeichnis
haben, können Sie das
MathType1-Verzeichnis im vorherigen
Beispiel in Type1 umbenennen.AaronKaplanBeigetragen von RobertGetschmannMit Unterstützung durch &maple; installierenLinux-AnwendungenMaple&maple; ist ein mit
&mathematica; vergleichbares kommerzielles
Mathematikprogramm. Sie können dieses Programm unter
kaufen und sich
anschließend registrieren, um eine Lizenz zu erhalten. Um
dieses Programm unter FreeBSD zu installieren, gehen Sie wie
folgt vor:Führen Sie das
INSTALL-Shell-Skript
der Softwaredistribution aus. Wählen Sie die
RedHat-Option aus, wenn Sie das
Installationsprogramm danach fragt. Ein typisches
Installationsverzeichnis wäre z.B.
/usr/local/maple.Wenn Sie dies noch nicht gemacht haben, besorgen Sie
sich nun eine &maple;-Lizenz von
Maple Waterloo Software
()
und kopieren Sie diese nach
/usr/local/maple/license/license.dat.Installieren Sie den
FLEXlm-Lizenz-Manager, indem Sie
das INSTALL_LIC-Installations-Shellskript
ausführen, das mit &maple;
ausgeliefert wird. Geben Sie Ihren primären
Rechnernamen für den Lizenz-Server an.Verändern Sie
/usr/local/maple/bin/maple.system.type
wie folgt: ----- snip ------------------
*** maple.system.type.orig Sun Jul 8 16:35:33 2001
--- maple.system.type Sun Jul 8 16:35:51 2001
***************
*** 72,77 ****
--- 72,78 ----
# the IBM RS/6000 AIX case
MAPLE_BIN="bin.IBM_RISC_UNIX"
;;
+ "FreeBSD"|\
"Linux")
# the Linux/x86 case
# We have two Linux implementations, one for Red Hat and
----- snip end of patch -----Bitte beachten Sie, dass nach
"FreeBSD"|\ kein anderes
Zeichen eingefügt werden darf.Dieser Patch weist &maple; an,
FreeBSD als eine Art von Linux-System zu erkennen.
Das Shell-Skript bin/maple ruft das
Shell-Skript bin/maple.system.type auf,
welches wiederum uname -a verwendet,
um den Namen des Betriebssystems herauszufinden.
Abhängig vom Betriebssystem weiß das System nun,
welche Binärdateien verwendet werden sollen.Starten Sie den Lizenz-Server.Das folgende, als
/usr/local/etc/rc.d/lmgrd.sh
installierte Shell-Skript ist ein komfortabler Weg,
um lmgrd zu starten: ----- snip ------------
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
export PATH
LICENSE_FILE=/usr/local/maple/license/license.dat
LOG=/var/log/lmgrd.log
case "$1" in
start)
lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2
echo -n " lmgrd"
;;
stop)
lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2
;;
*)
echo "Usage: `basename $0` {start|stop}" 1>&2
exit 64
;;
esac
exit 0
----- snip ------------Versuchen Sie, &maple;
zu starten:&prompt.user; cd /usr/local/maple/bin
&prompt.user; ./xmapleNun sollte das Programm laufen und alles funktionieren.
Falls ja, vergessen Sie nicht, an Maplesoft zu schreiben
und sie wissen zu lassen, dass Sie gerne eine native
FreeBSD-Version hätten.Häufige FehlerquellenDer
FLEXlm-Lizenzmanager kann schwierig
zu bedienen sein. Zusätzliche Dokumentation
zu diesem Thema finden Sie unter .Es ist bekannt, dass lmgrd
sehr pingelig ist, wenn es um die Lizenzdatei geht. Gibt
es Probleme, führt dies zu einem Speicherauszug
(core dump). Ein
korrekte Lizenzdatei sollte ähnlich der
folgenden aussehen:# =======================================================
# License File for UNIX Installations ("Pointer File")
# =======================================================
SERVER chillig ANY
#USE_SERVER
VENDOR maplelmg
FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
SN=XXXXXXXXXSeriennummer und Schlüssel wurden durch mehrere
X unkenntlich gemacht. chillig ist ein
Rechnername.Veränderungen an der Lizenzdatei sind möglich,
solange Sie die FEATURE-Zeile nicht
verändern (diese ist durch den Lizenzschlüssel
geschützt).DanPellegBeigesteuert von &matlab; installierenLinux-AnwendungenMATLABIm Folgenden wird die Installation der Linux-Anwendung
&matlab; Version 6.5 auf
&os; beschrieben. Mit Ausnahme der
&java.virtual.machine; (siehe
) läuft die Anwendung
auch ganz gut.Die Linux-Version von &matlab;
können Sie direkt bei The MathWorks bestellen.
Vergewissern Sie sich, dass Sie die Lizenz-Datei
oder eine Anleitung zum Erstellen der Lizenz-Datei erhalten
haben. Wenn Sie mit MathWorks in Kontakt stehen, weisen
Sie bitte auf die fehlende &os;-Version der Software hin.Das &matlab;-InstallationsskriptUm &matlab; zu installieren,
gehen Sie wie folgt vor:Hängen Sie die Installations-CD ein und
wechseln Sie zu root, wie im
Installations-Skript gefordert. Starten Sie die
Installation mit dem folgenden Kommando:&prompt.root; /compat/linux/bin/sh /cdrom/installDie Installation erfordert eine graphische
Benutzeroberfläche. Wenn Sie die Fehlermeldung
erhalten, dass das Display nicht geöffnet werden
konnte, führen Sie das folgende Kommando aus:&prompt.root; setenv HOME ~USERFür USER setzen Sie
den Benutzer ein, von dem aus Sie root
geworden sind.Beantworten Sie die Frage nach dem
&matlab;-Root-Verzeichnis mit:
/compat/linux/usr/local/matlab.Den langen Pfad werden Sie noch öfter brauchen.
Die Tipparbeit können Sie sich mit dem folgenden
Befehl erleichtern:&prompt.root; set MATLAB=/compat/linux/usr/local/matlabEditieren Sie die Lizenz-Datei entsprechend der
Anweisung, die Sie beim Erwerb der Lizenz
erhalten haben.Sie können die Datei schon vorher mit Ihrem
Lieblingseditor bearbeiten. Kopieren Sie die Lizenz-Datei
nach $MATLAB/license.dat
bevor das Installationsprogramm Sie auffordert, die
Datei zu editieren.Schließen Sie die Installation ab.Die &matlab;-Installation
ist jetzt abgeschlossen. Die folgenden Schritte passen
&matlab; an &os; an.Den Lizenzmanager startenErstellen Sie symbolische Links zu den Startskripten
des Lizenzmanagers:&prompt.root; ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
&prompt.root; ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMWErstellen Sie das Startskript
/usr/local/etc/rc.d/flexlm.sh. Das
folgende Beispiel ist eine geänderte Version des
mitgelieferten Skripts
$MATLAB/etc/rc.lm.glnx86.
Angepasst wurden die Pfade zu den Dateien und der
Start des Lizenzmanagers unter der Linux-Emulation.#!/bin/sh
case "$1" in
start)
if [ -f /usr/local/etc/lmboot_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u username && echo 'MATLAB_lmgrd'
fi
;;
stop)
if [ -f /usr/local/etc/lmdown_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0Machen Sie Datei ausführbar:&prompt.root; chmod +x /usr/local/etc/rc.d/flexlm.shErsetzen Sie im Skript username
durch einen existierenden Benutzer Ihres Systems
(bitte keinesfalls root).Starten Sie den Lizenzmanager:&prompt.root; /usr/local/etc/rc.d/flexlm.sh startEinrichten der &java;-LaufzeitumgebungErstellen Sie einen symbolischen Link auf eine
unter &os; laufende &java;-Laufzeitumgebung (JRE):&prompt.root; cd $MATLAB/sys/java/jre/glnx86/
&prompt.root; unlink jre; ln -s ./jre1.1.8 ./jreEin &matlab;-Startskript erstellenKopieren Sie das folgende Skript nach
/usr/local/bin/matlab:#!/bin/sh
/compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"Machen Sie das Skript ausführbar:&prompt.root; chmod +x /usr/local/bin/matlabAbhängig von der Version des Ports
emulators/linux_base
kann das Skript auf Fehler laufen. Die Fehler können
Sie vermeiden, indem Sie die Datei
/compat/linux/usr/local/matlab/bin/matlab
editieren. Ändern Sie die nachstehende Zeileif [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then(mit Version 13.0.1 in der Zeile 410) in
die folgende um:if test -L $newbase; thenStopp-Skript für &matlab; erstellenDas nachstehende Skript beendet &matlab;
ordnungsgemäß.Erstellen Sie die Datei
$MATLAB/toolbox/local/finish.m mit
dem nachstehenden Inhalt:! $MATLAB/bin/finish.shÜbernehmen Sie die Zeichenkette
$MATLAB unverändert.Im selben Verzeichnis befinden sich die
Dateien finishsav.m und
finishdlg.m. Die Dateien
sichern die Einstellungen der Arbeitsfläche
bevor &matlab; beendet wird. Wenn Sie eine
der beiden Dateien benutzen, fügen Sie
die obige Zeile unmittelbar nach dem
save-Kommando ein.Erstellen Sie die Datei
$MATLAB/bin/finish.sh mit
nachstehendem Inhalt:#!/usr/compat/linux/bin/sh
(sleep 5; killall -1 matlab_helper) &
exit 0Machen Sie die Datei ausführbar:&prompt.root; chmod +x $MATLAB/bin/finish.sh&matlab; benutzenJetzt können Sie &matlab;
mit dem matlab starten.MarcelMoolenaarBeigetragen von &oracle; installierenLinux-AnwendungenOracleÜbersichtDieses Dokument beschreibt die Installation von
&oracle; 8.0.5
und &oracle; 8.0.5.1 Enterprise Edition
für Linux auf einem FreeBSD-Rechner.Installation der Linux-UmgebungStellen Sie sicher, dass Sie sowohl
emulators/linux_base und
devel/linux_devtools
aus der Ports-Collection installiert haben. Wenn Sie mit
diesen Ports Schwierigkeiten haben, müssen Sie
vielleicht ältere Versionen der Linux-Umgebung aus
der Ports-Collection installieren.Wenn Sie den Intelligent-Agent verwenden wollen,
müssen Sie zusätzlich das RedHat Tcl-Paket
installieren: tcl-8.0.3-20.i386.rpm.
Zur Installation von RPM-Paketen wir der Port
archivers/rpm benötigt.
Ist der Port installiert, lassen sich RPM-Pakete
anschließend mit dem nachstehenden Befehl
installieren:&prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm packageDie Installation der RPM-Pakete sollte ohne
Fehlermeldung ablaufen.Die &oracle;-Umgebung erzeugenBevor Sie &oracle; installieren
können, müssen Sie eine entsprechende Umgebung erzeugen.
Dieses Dokument beschreibt nur, was Sie
im Speziellen tun müssen, um die
Linux-Version von &oracle; unter FreeBSD
zu installieren, nicht aber, was bereits in der Installationsanleitung
von &oracle; beschrieben wird.Kernel-TuningKernel TuningWie in der Installationsanleitung von
&oracle; beschrieben,
müssen Sie die maximale Shared-Memory Größe
festlegen. Verwenden Sie
SHMMAX nicht unter FreeBSD.
SHMMAX wird lediglich aus
SHMMAXPGS und PGSIZE
berechnet. Definieren Sie stattdessen
SHMMAXPGS. Alle anderen Optionen
können wie in der Anleitung beschrieben verwendet werden.
Zum Beispiel:options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61Passen Sie diese Optionen entsprechend dem von Ihnen
gewünschten Einsatzzweck von
&oracle; an.Stellen Sie außerdem sicher, dass Sie folgende
Optionen in Ihren Kernel kompilieren:options SYSVSHM #SysV shared memory
options SYSVSEM #SysV semaphores
options SYSVMSG #SysV interprocess communication&oracle;-Benutzer anlegenLegen Sie den Account oracle an.
Der Account unterschiedet sich von normalen Accounts
dadurch, dass er eine Linux-Shell zugeordnet bekommen muss.
Fügen Sie /compat/linux/bin/bash in die
Datei /etc/shells ein und setzen Sie die
Shell für den oracle-Account auf
/compat/linux/bin/bash.UmgebungNeben den normalen
&oracle;-Variablen, wie z.B.
ORACLE_HOME und ORACLE_SID
müssen Sie die folgenden Variablen setzen:VariableWertLD_LIBRARY_PATH$ORACLE_HOME/libCLASSPATH$ORACLE_HOME/jdbc/lib/classes111.zipPATH/compat/linux/bin
/compat/linux/sbin
/compat/linux/usr/bin
/compat/linux/usr/sbin
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
$ORACLE_HOME/binEs ist empfehlenswert, alle Variablen in der Datei
.profile zu setzen. Ein komplettes
Beispiel sieht folgendermaßen aus:ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin
PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
export PATH&oracle; installierenAuf Grund einer kleinen Unregelmäßigkeit
im Linux-Emulator müssen Sie das Verzeichnis
.oracle unter /var/tmp
erzeugen, bevor Sie das Installationsprogramm starten.
Das Verzeichnis muss entwerder für alle Benutzer
beschreibbar sein oder dem Account oracle
gehören. Sie sollten &oracle; nun
ohne Probleme installieren können. Treten dennoch Probleme
auf, überprüfen Sie zuerst Ihre
&oracle;-Distribution und Ihre
Konfiguration. Nachdem Sie &oracle;
erfolgreich installiert haben, installieren Sie die Patches
wie in den zwei folgenden Abschnitten beschrieben:Ein häufiges Problem ist, dass der
TCP Protokoll-Adapter nicht korrekt installiert wird.
Daraus folgt, dass Sie keine TCP-Listener starten können.
Dieses Problem kann durch folgende Schritte behoben werden:&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk ntcontab.o
&prompt.root; cd $ORACLE_HOME/lib
&prompt.root; ar r libnetwork.a ntcontab.o
&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk installVergessen Sie nicht, root.sh
nochmals auszuführen!root.sh patchenWährend der
&oracle;-Installation werden einige
Aktionen, die als root
ausgeführt werden müssen, in ein Shell-Skript
mit dem Namen root.sh gespeichert.
Dieses Skript befindet sich im Verzeichnis
orainst. Verwenden Sie folgenden
Patch für root.sh, damit es
das richtige chown Kommando
verwendet, oder lassen Sie das
Skript alternativ unter einer Linux-Shell ablaufen:*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
--- orainst/root.sh Mon Dec 28 15:58:53 1998
***************
*** 31,37 ****
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/bin/chown
#
# Define variables to be used in this script
--- 31,37 ----
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/usr/sbin/chown
#
# Define variables to be used in this scriptWenn Sie &oracle; nicht
von CD-ROM installieren, können
Sie Quelldatei für root.sh
verändern. Sie heißt rthd.sh
und befindet sich im orainst-Verzeichnis
des Quellcodebaums.genclntsh patchenDas Skript genclntsh wird verwendet,
um eine Shared-Library für Clients zu erzeugen.
Diese wird bei der Erzeugung der Demos verwendet. Verwenden
Sie folgenden Patch, um die Definition von PATH
auszukommentieren:*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
***************
*** 32,38 ****
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
--- 32,38 ----
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst&oracle; startenWenn Sie den Anweisungen gefolgt sind, sollten Sie nun
in der Lage sein, &oracle; zu starten,
genau so, wie Sie dies auch unter Linux tun würden.HolgerKippBeigetragen von ValentinoVaschettoOriginalversion nach SGML konvertiert durch: &sap.r3; installierenLinux-AnwendungenSAP R/3Installationen von &sap;
unter FreeBSD werden vom &sap; Support-Team
nicht unterstützt – und &sap; bietet Support nur
für zertifizierte Plattformen an! ÜbersichtDieses Dokument beschreibt einen möglichen Weg, um ein
&sap.r3;-System mit
&oracle; Datenbank
für Linux auf einem FreeBSD-Rechner zu installieren,
einschließlich der Installation von FreeBSD und
&oracle;. Zwei verschiedene Konfigurationen
werden beschrieben:&sap.r3; 4.6B (IDES) mit
&oracle; 8.0.5 unter
FreeBSD 4.3-STABLE&sap.r3; 4.6C mit
&oracle; 8.1.7 unter
FreeBSD 4.5-STABLEObwohl dieses Dokument versucht, alle wichtigen Schritte
ausführlich zu beschreiben, besteht nicht die Absicht,
die originalen Installationsanleitungen von
&oracle; und
&sap.r3; zu ersetzen.Benutzen Sie die mit
&sap.r3; Linux Edition
gelieferte Dokumentation für &sap;-
und &oracle;-spezifische Fragen,
sowie die Ressourcen von &oracle; und
&sap;-OSS.Software/ProgrammeFolgende CD-ROMs wurden für die Installation von
&sap; verwendet:&sap.r3; 4.6B, &oracle; 8.0.5BezeichnungNummerBeschreibungKERNEL51009113&sap; Kernel &oracle; / Installation / AIX, Linux,
&solaris;RDBMS51007558&oracle; / RDBMS 8.0.5.X / LinuxEXPORT151010208IDES / DB-Export / Disc 1 of 6EXPORT251010209IDES / DB-Export / Disc 2 of 6EXPORT351010210IDES / DB-Export / Disc 3 of 6EXPORT451010211IDES / DB-Export / Disc 4 of 6EXPORT551010212IDES / DB-Export / Disc 5 of 6EXPORT651010213IDES / DB-Export / Disc 6 of 6Zusätzlich wurde die
&oracle; 8 Server CD-ROM
(Pre-production Version 8.0.5 für Linux, Kernel Version 2.0.33)
verwendet, die allerdings nicht unbedingt nötig ist
und FreeBSD 4.3-STABLE (die Installation wurde kurz
nach dem Erscheinen von 4.3-RELEASE durchgeführt).&sap.r3; 4.6C SR2, &oracle; 8.1.7BezeichnungNummerBeschreibungKERNEL51014004&sap; Kernel &oracle; / &sap; Kernel Version 4.6D / DEC,
LinuxRDBMS51012930&oracle; 8.1.7/ RDBMS / LinuxEXPORT151013953Release 4.6C SR2 / Export / Disc 1 of 4EXPORT151013953Release 4.6C SR2 / Export / Disc 2 of 4EXPORT151013953Release 4.6C SR2 / Export / Disc 3 of 4EXPORT151013953Release 4.6C SR2 / Export / Disc 4 of 4LANG151013954Release 4.6C SR2 / Language / DE, EN, FR /
Disc 1 of 3Abhängig von den zu installierenden Sprachen kann
es sein, dass zusätzliche Sprach-CDs nötig sind.
Da hier nur Deutsch und Englisch verwendet wurden, ist die
erste Sprachen-CD ausreichend. Nebenbei bemerkt sind
die Nummern aller vier Export-CDs identisch. Das heißt alle
drei Sprachen-CDs haben diesselbe Nummer (das unterscheidet
sie von der Nummerierung der 4.6B IDES-Version).
Zum Zeitpunkt der Erstellung dieses Dokuments lief das
System unter FreeBSD 4.5-STABLE (20.03.2002).&sap;-NotesDie folgenden Anmerkungen sollten vor der Installation
von &sap.r3; gelesen werden, da sie
sich während der Installation als nützlich
erwiesen haben.&sap.r3; 4.6B, &oracle; 8.0.5NummerBezeichnung0171356&sap; Software on Linux: Essential Comments0201147INST: 4.6C R/3 Inst. on UNIX - &oracle;0373203Update / Migration &oracle; 8.0.5 --> 8.0.6/8.1.6
LINUX0072984Release of Digital UNIX 4.0B for &oracle;0130581R3SETUP step DIPGNTAB terminates0144978Your system has not been installed correctly0162266Questions and tips for R3SETUP on
Windows NT/W2K&sap.r3; 4.6C, &oracle; 8.1.7NummerBezeichnung0015023Initializing table TCPDB (RSXP0004) (EBCDIC)0045619R/3 with several languages or typefaces0171356&sap; Software on Linux: Essential Comments0195603RedHat 6.1 Enterprise version: Known problems0212876The new archiving tool SAPCAR0300900Linux: Released DELL Hardware0377187RedHat 6.2: important remarks0387074INST: R/3 4.6C SR2 Installation on UNIX0387077INST: R/3 4.6C SR2 Inst. on UNIX - &oracle;0387078&sap; Software on UNIX: OS Dependencies 4.6C SR2Hardware-AnforderungenDie folgende Ausstattung reicht für die Installation eines
&sap.r3; Systems aus. Für
Produktionszwecke benötigt man natürlich eine
exakte Bestimmung dieser Größen:Komponente4.6B4.6CProzessor2 x 800MHz &pentium; III2 x 800MHz &pentium; IIIHauptspeicher1GB ECC2GB ECCFestplattenplatz50-60GB (IDES)50-60GB (IDES)Für Produktionszwecke sind &xeon; Prozessoren mit
großem Cache, Hochgeschwindigkeitsspeicher (SCSI,
RAID Hardware Controller), USV (unterbrechungsfreie
Stromversorgung) und ECC-RAM empfehlenswert. Der große
Bedarf an Festplattenplatz ergibt sich durch das vorkonfigurierte
IDES System, welches während der Installation
27 GB Datenbankdateien erzeugt. Dieser Speicher ist
auch für neue Produktionssysteme und Anwendungsdaten
ausreichend.&sap.r3; 4.6B, &oracle; 8.0.5Folgende Standard-Hardware wurde verwendet: Ein
Doppelprozessorboard mit zwei 800 MHz &pentium; III
Prozessoren, Adaptec 29160 Ultra160 SCSI Adaptern
(zum Anschluß eines 40/80 GB DLT Bandlaufwerks und eines
CD-ROM-Laufwerks), &mylex; &acceleraid; (2 Kanäle,
Firmware 6.00-1-00 mit 32 MB RAM). An den
&mylex; RAID-Controller wurden 2 (gespiegelte) 17 GB
Festplatten sowie vier 36 GB Festplatten (RAID level 5)
angeschlossen.&sap.r3; 4.6C, &oracle; 8.1.7Für diese Installation wurde ein DELL PowerEdge 2500
verwendet: Ein Doppelprozessorboard mit zwei
1000 MHz &pentium; III Prozessoren
(256 kB Cache), 2 GB PC133 ECC SDRAM, PERC/3 DC PCI
RAID-Controller mit 128 MB, und einem EIDE DVD-ROM Laufwerk.
An den RAID-Controller sind zwei (gespiegelte) 18 GB Festplatten
sowie vier 36 GB Festplatten (RAID level 5) angeschlossen.Installation von FreeBSDAls erstes müssen Sie FreeBSD installieren.
Dazu gibt es mehrere Möglichkeiten: In den Beispielen
wurde FreeBSD 4.3 via FTP, FreeBSD 4.5 hingegen direkt
von CD installiert. Weitere Hinweise zur Installation
von &os; finden Sie in
.Aufteilung der FestplatteUm das Ganze zu vereinfachen, wurde sowohl für die
&sap.r3; 46B- als auch die
&sap.r3; 46C SR2-Installation die
gleiche Platteneinteilung verwendet. Nur die Gerätenamen
änderten sich, da die Installationen auf verschiedenen
Hardwareplattformen durchgeführt wurden (Insbesondere
/dev/da sowie
/dev/amr; wenn also jemand z.B.
ein AMI &megaraid; verwendet, so wird er
/dev/amr0s1a anstelle von
/dev/da0s1a vorfinden.):DateisystemGröße (1k-blocks)HDD-Größe (GB)Gemountet nach/dev/da0s1a1.016.3031//dev/da0s1b6Swap/dev/da0s1e2.032.6232/var/dev/da0s1f8.205.3398/usr/dev/da1s1e45.734.36145/compat/linux/oracle/dev/da1s1f2.032.6232/compat/linux/sapmnt/dev/da1s1g2.032.6232/compat/linux/usr/sapKonfigurieren und initialisieren Sie die zwei
logischen Platten mit der &mylex;- oder PERC/3 RAID Software,
bevor Sie beginnen. Diese kann während der BIOS-Bootphase
gestartet werden.Beachten Sie bitte, dass sich diese Platteneinteilung
etwas von den &sap;-Empfehlungen unterscheidet, da &sap;
vorschlägt, die &oracle;-Unterverzeichnisse
(und einige andere) separat einzuhängen – es
ist jedoch einfacher, diese als reale Unterverzeichnisse
zu erzeugen.make world und ein neuer KernelLaden Sie die neuesten STABLE-Quellen herunter.
Aktualisieren Sie das System und erzeugen Sie einen
neuen Kernel, nachdem Sie die Kernelkonfigurationsdatei
angepasst haben. Zusätzlich sollten Sie
die Kernel Parameter
einfügen, die sowohl von &sap.r3;
als auch von &oracle;
benötigt werden.Installation der Linux-UmgebungDas Linux-Basissystem installierenZuerst muss der Port
linux_base
als root installiert werden:&prompt.root; cd /usr/ports/emulators/linux_base
&prompt.root; make packageDie Linux-Entwicklungsumgebung installierenDie Linux-Entwicklungsumgebung wird benötigt, wenn Sie
&oracle; auf Ihrem FreeBSD-System
installieren wollen (siehe ):&prompt.root; cd /usr/ports/devel/linux_devtools
&prompt.root; make install distcleanDie Linux-Entwicklungsumgebung wurde hier jedoch nur für
die &sap.r3; 46B IDES-Installation
verwendet. Sie wird nicht benötigt, wenn die
&oracle;-Datenbank auf dem FreeBSD
System nicht neu gebunden wird. Dies ist dann der Fall,
wenn Sie den &oracle;
Tarball eines Linux-Systems verwenden.Notwendige RPMs installierenRPMsUm das R3SETUP-Programm
zu starten, wird PAM-Unterstützung benötigt.
Während der ersten Installation von
&sap; unter
FreeBSD 4.3-STABLE wurde versucht, zuerst alle von PAM
benötigten Pakete zu installieren. Anschließend
wurde die Installation von PAM erzwungen, was auch ohne
Probleme funktionierte. Für die folgende Installation
von &sap.r3; 4.6C SR2
wurde die Installation von PAM ohne die abhängigen
Pakete direkt erzwungen und es funktionierte ebenfalls.
Es sieht so aus, als würden die abhängigen Pakete
nicht benötigt.&prompt.root; rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
pam-0.68-7.i386.rpmUm den Intelligent-Agent von
&oracle; 8.0.5 auszuführen,
musste das RedHat Tcl-Paket
tcl-8.0.5-30.i386.rpm installiert werden,
da sonst das Binden (link)
während der &oracle;-Installation
nicht funktionierte. Es gibt noch weitere Punkte beim
Binden von &oracle;, die aber die Kombination
&oracle;-Linux
betreffen und nicht FreeBSD spezifisch sind.Zusätzliche HinweiseEine gute Idee ist es, linprocfs
in /etc/fstab einzufügen;
weitere Informationen dazu erhalten Sie in der Hilfeseite
&man.linprocfs.5;. Weiterhin sollten Sie in
der Datei /etc/sysctl.conf
die Zeile kern.fallback_elf_brand=3
einfügen.Die &sap.r3;-Umgebung erzeugenDie nötigen Dateisysteme erzeugenFür eine einfache Installation reicht es aus,
folgende Dateisysteme zu erzeugen:DateisystemeGröße in GB/compat/linux/oracle45 GB/compat/linux/sapmnt2 GB/compat/linux/usr/sap2 GBAußerdem müssen einige Links angelegt werden.
Ansonsten beschwert sich der
&sap;-Installer, wenn er die
erzeugten Links überprüft:&prompt.root; ln -s /compat/linux/oracle /oracle
&prompt.root; ln -s /compat/linux/sapmnt /sapmnt
&prompt.root; ln -s /compat/linux/usr/sap /usr/sapEine Fehlermeldung während der Installation (hier unter dem
PRD-System und
&sap.r3; 4.6C SR2 könnte
beispielsweise so aussehen:INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
/sapmnt/PRD/exe. Creating if it does not exist...
WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
/compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
program cannot go on as long as this link exists at this
location. Move the link to another location.
ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
'/sapmnt/PRD/exe'Benutzer und Verzeichnisse anlegen&sap.r3; benötigt zwei
Benutzer und drei Benutzergruppen. Die Benutzernamen
hängen von der (aus drei Buchstaben bestehenden)
SAP-System-ID (SID) ab. Einige
dieser SIDs sind von &sap;
reserviert (z.B. SAP und
NIX. Für eine komplette
Übersicht schlagen Sie bitte in der
&sap;-Dokumentation
nach. Für die IDES-Installation wurde IDS
verwendet, für die 4.6C-SR2-Installation
PRD, da das System für
Produktionszwecke eingesetzt werden sollte. Daraus ergaben
sich folgende Gruppen (die Gruppen-IDs können variieren,
es handelt sich nur um Werte, die für diese spezielle
Installation verwendet wurden):Gruppen-IDGruppen-NameBeschreibung100dbaDatenbank-Administrator101sapsysSAP System102operDatenbank-OperatorBei einer
Standard-&oracle;-Installation
wird nur die Gruppe dba verwendet.
Für die Gruppe oper wird
ebenfalls die Gruppe dba verwendet
(weitere Informationen finden sich in der
&oracle;- und
&sap;-Dokumentation).Zusätzlich werden auch folgende Benutzer
benötigt:Benutzer-IDBenutzernameGenerischer NameGruppeZusätzliche GruppenBeschreibung1000idsadm/prdadmsidadmsapsysoperSAP Administrator1002oraids/oraprdorasiddbaoper&oracle; AdministratorFür das Anlegen des &sap;-Administrators mittels
&man.adduser.8; werden folgende Einträge
(beachten Sie bitte die Shell und das Heimatverzeichnis)
benötigt:Name: sidadm
Password: ******
Fullname: SAP Administrator SID
Uid: 1000
Gid: 101 (sapsys)
Class:
Groups: sapsys dba
HOME: /home/sidadm
Shell: bash (/compat/linux/bin/bash)und für den Datenbank-Administrator:Name: orasid
Password: ******
Fullname: Oracle Administrator SID
Uid: 1002
Gid: 100 (dba)
Class:
Groups: dba
HOME: /oracle/sid
Shell: bash (/compat/linux/bin/bash)Wenn Sie beide Gruppen (dba und
oper) verwenden, sollte auch die Gruppe
oper hinzugefügt werden.Verzeichnisse erzeugenDiese Verzeichnisse werden gewöhnlich als eigene
Dateisysteme erzeugt und gemountet. Letztlich liegt dies
aber an Ihren Anforderungen an das System. Hier wurden
sie als einfache Verzeichnisse angelegt, die sich alle im
gleichen RAID5 befinden:Zuerst werden die Eigentümer und Rechte für
einige Verzeichnisse (als Benutzer root)
gesetzt:&prompt.root; chmod 775 /oracle
&prompt.root; chmod 777 /sapmnt
&prompt.root; chown root:dba /oracle
&prompt.root; chown sidadm:sapsys /compat/linux/usr/sap
&prompt.root; chmod 775 /compat/linux/usr/sapDanach werden (als Benutzer
orasid) einige
Verzeichnisse erzeugt, die alle Unterverzeichnisse von
/oracle/SID sind:&prompt.root; su - orasid
&prompt.root; cd /oracle/SID
&prompt.root; mkdir mirrlogA mirrlogB origlogA origlogB
&prompt.root; mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
&prompt.root; mkdir saparch sapreorg
&prompt.root; exitFür die &oracle; 8.1.7-Installation
werden ebenfalls zusätzliche Verzeichnisse benötigt:&prompt.root; su - orasid
&prompt.root; cd /oracle
&prompt.root; mkdir 805_32
&prompt.root; mkdir client stage
&prompt.root; mkdir client/80x_32
&prompt.root; mkdir stage/817_32
&prompt.root; cd /oracle/SID
&prompt.root; mkdir 817_32Das Verzeichnis client/80x_32
muss genau so genannt werden. Versuchen Sie nicht,
das x durch eine Zahl oder
einen Buchstaben zu ersetzen.Im dritten Schritt werden wiederum Verzeichnisse (als Benutzer
sidadm) erzeugt:&prompt.root; su - sidadm
&prompt.root; cd /usr/sap
&prompt.root; mkdir SID
&prompt.root; mkdir trans
&prompt.root; exitEinträge in /etc/services&sap.r3; benötigt
einige Einträge in /etc/services,
die während der Installation unter FreeBSD nicht
richtig gesetzt werden. Sie benötigen mindestens
die zur Instanzennummer, in diesem Fall 00,
passenden Einträge. Es ist auch möglich,
direkt alle Einträge für
dp, gw,
sp und ms
von 00 bis 99
einzufügen. Wenn Sie einen
SAP-Router verwenden, oder
den Zugang zu &sap;-OSS benötigen,
müssen Sie auch 99 einfügen,
da der Port 3299 normalerweise für den
SAP-Router-Prozess auf
dem Zielsystem benötigt wird:sapdp00 3200/tcp # SAP Dispatcher. 3200 + Instance-Number
sapgw00 3300/tcp # SAP Gateway. 3300 + Instance-Number
sapsp00 3400/tcp # 3400 + Instance-Number
sapms00 3500/tcp # 3500 + Instance-Number
sapmsSID 3600/tcp # SAP Message Server. 3600 + Instance-Number
sapgw00s 4800/tcp # SAP Secure Gateway 4800 + Instance-NumberNotwendige LokalisierungenLocale&sap; benötigt
mindestens zwei Lokalisierungen, die nicht Teil der
RedHat-Standardinstallation sind. &sap; bietet
diese als RPMs auf ihrem FTP-Server als Downloads
an (diese sind aber nur dann zugänglich, wenn Sie
ein Kunde mit OSS-Zugang sind). Für eine
Übersicht der notwendigen RPMs lesen Sie bitte den
&sap;-Hinweis 0171356.Es ist auch möglich, nur die passenden Links
(z.B. von de_DE und en_US)
zu erzeugen, diese Vorgehensweise wird aber nicht nicht
empfohlen (obwohl es bisher beim IDES-System ohne Probleme
funktioniert hat). Folgende Lokalisationen werden
benötigt:de_DE.ISO-8859-1
en_US.ISO-8859-1Erzeugen Sie die Links wie folgt:&prompt.root; cd /compat/linux/usr/share/locale
&prompt.root; ln -s de_DE de_DE.ISO-8859-1
&prompt.root; ln -s en_US en_US.ISO-8859-1Sind diese nicht vorhanden, wird es während
der Installation zu einigen Problemen kommen. Wenn diese
konsequent ignoriert werden (indem der fehlgeschlagene
Schritt in CENTRDB.R3S auf
OK gesetzt wird), ist es ohne
größeren Aufwand nicht mehr möglich, sich am
&sap;-System anzumelden.Kernel-TuningKernel Tuning&sap.r3;-Systeme verbrauchen
sehr viele Ressourcen. Deshalb wurden folgende Parameter
in die Kernelkonfigurationsdatei eingefügt:# Set these for memory pigs (SAP and Oracle):
options MAXDSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"
# System V options needed.
options SYSVSHM #SYSV-style shared memory
options SHMMAXPGS=262144 #max amount of shared mem. pages
#options SHMMAXPGS=393216 #use this for the 46C inst.parameters
options SHMMNI=256 #max number of shared memory ident if.
options SHMSEG=100 #max shared mem.segs per process
options SYSVMSG #SYSV-style message queues
options MSGSEG=32767 #max num. of mes.segments in system
options MSGSSZ=32 #size of msg-seg. MUST be power of 2
options MSGMNB=65535 #max char. per message queue
options MSGTQL=2046 #max amount of msgs in system
options SYSVSEM #SYSV-style semaphores
options SEMMNU=256 #number of semaphore UNDO structures
options SEMMNS=1024 #number of semaphores in system
options SEMMNI=520 #number of semaphore indentifiers
options SEMUME=100 #number of UNDO keysDie minimalen Werte sind in der von &sap; kommenden
Dokumentation festgelegt. Da es keine Beschreibung für
Linux (und daher auch nicht für FreeBSD) gibt,
entnehmen Sie weitere Informationen dem HP-UX-Abschnitt (32-Bit).
Da das System für die 4.6C SR2-Installation über
mehr Hauptspeicher verfügte, können die
Shared-Segments für &sap; und
&oracle; größer sein.
Wählen Sie daher eine größere Anzahl von
Shared-Memory-Pages.Bei einer Standard-Installation von
FreeBSD 4.5 auf &i386;-Systemen belassen Sie
MAXDSIZ und DFLDSIZ
auf dem Maximum von 1 GB. Ansonsten könnten
seltsame Fehlermeldungen, wie
ORA-27102: out of memory oder
Linux Error: 12: Cannot allocate memory
auftreten.&sap.r3; installierenDie &sap; CD-ROMs vorbereitenFür eine Installation werden viele CD-ROMs benötigt,
die gemountet und ungemountet werden müssen. Wenn
Sie genügend CD-ROM-Laufwerke haben, können Sie
alle gleichzeitig gemountet werden. Ansonsten kopiert man die
CD-ROM-Inhalte einfach in die entsprechenden Verzeichnisse,/oracle/SID/sapreorg/cd-namewobei cd-nameKERNEL,
RDBMS, EXPORT1,
EXPORT2, EXPORT3,
EXPORT4, EXPORT5 und
EXPORT6 bei einer 4.6B/IDES-Installation und
KERNEL, RDBMS,
DISK1, DISK2,
DISK3, DISK4 und
LANG bei einer 4.6C SR2-Installation
entspricht. Die Dateinamen auf den gemounteten CDs sollten
aus Großbuchstaben bestehen. Ist dies nicht der Fall,
verwenden Sie zum Mounten die Option . Für das
Kopieren der CD-Inhalte verwenden Sie folgenden Befehle:&prompt.root; mount_cd9660 -g /dev/cd0a /mnt
&prompt.root; cp -R /mnt/* /oracle/SID/sapreorg/cd-name
&prompt.root; umount /mntDas Installations-Skript ausführenAls erstes müssen Sie ein Installationsverzeichnis
anlegen:&prompt.root; cd /oracle/SID/sapreorg
&prompt.root; mkdir install
&prompt.root; cd installAnschließend wird das Installations-Skript gestartet,
das nahezu alle relevanten Daten in das Installationsverzeichnis
kopiert:&prompt.root; /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SHDie IDES-Installation (4.6B) wird mit einem vollständig
angepassten &sap.r3; Demo-System geliefert, das heißt
es gibt sechs statt drei Export-CDs. Da
CENTRDB.R3S
für eine Standard-Zentralinstanz
(&r3; plus Datenbank)
ausgelegt ist, aber nicht für eine IDES-Zentralinstanz,
muss die passende CENTRDB.R3S-Datei
manuell aus dem Verzeichnis
EXPORT1 in das
Installationsverzeichnis kopiert werden, da
R3SETUP ansonsten nur nach drei
EXPORT-CDs verlangt.Die aktuellere Version &sap; 4.6C SR2
wird mit vier EXPORT-CDs geliefert. Die die Installation
überwachende Parameter-Datei heißt hier
CENTRAL.R3S. Im Gegensatz zu früheren
Versionen gibt es nun keine separaten Vorlagen für
die Installation von Zentralinstanzen mit und ohne Datenbank mehr.
&sap; verwendet eine
eigene Vorlage für die
Datenbankinstallation. Um die Installation später
erneut starten, ist es jedoch ausreichend,
die Installation mit der ursprünglichen Datei zu starten.Während und nach der Installation benötigt
&sap;hostname,
um den Rechnernamen, aber nicht den vollständigen
Domain-Namen zu erhalten. Setzen Sie also entweder den
Rechnernamen entsprechend, oder setzen Sie einen Alias mit
alias hostname='hostname -s'
für die Benutzer
orasid und
sidadm
(Und zusätzlich für root.
Dies zumindest für die Installationsschritte, die als
root ausgeführt werden müssen.).
Außerdem ist es möglich, nur die während
der &sap;-Installation erstellten
Dateien .profile und
.login beider Benutzer anzupassen.R3SETUP 4.6B startenStellen Sie sicher, dass LD_LIBRARY_PATH korrekt
gesetzt wurde:&prompt.root; export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/libGehen Sie in das Installationsverzeichnis und starten Sie
R3SETUP als root:&prompt.root; cd /oracle/IDS/sapreorg/install
&prompt.root; ./R3SETUP -f CENTRDB.R3SDas Skript stellt anschließend einige Fragen
(Vorgaben stehen dabei in Klammern, gefolgt von den
aktuellen Eingaben):FrageVorgabeEingabeEnter SAP System ID[C11]IDSEnterEnter SAP Instance Number[00]EnterEnter SAPMOUNT Directory[/sapmnt]EnterEnter name of SAP central host[troubadix.domain.de]EnterEnter name of SAP db host[troubadix]EnterSelect character set[1] (WE8DEC)EnterEnter Oracle server version (1) Oracle 8.0.5,
(2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.61EnterExtract Oracle Client archive[1] (Yes, extract)EnterEnter path to KERNEL CD[/sapcd]/oracle/IDS/sapreorg/KERNELEnter path to RDBMS CD[/sapcd]/oracle/IDS/sapreorg/RDBMSEnter path to EXPORT1 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT1Directory to copy EXPORT1 CD[/oracle/IDS/sapreorg/CD4_DIR]EnterEnter path to EXPORT2 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT2Directory to copy EXPORT2 CD[/oracle/IDS/sapreorg/CD5_DIR]EnterEnter path to EXPORT3 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT3Directory to copy EXPORT3 CD[/oracle/IDS/sapreorg/CD6_DIR]EnterEnter path to EXPORT4 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT4Directory to copy EXPORT4 CD[/oracle/IDS/sapreorg/CD7_DIR]EnterEnter path to EXPORT5 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT5Directory to copy EXPORT5 CD[/oracle/IDS/sapreorg/CD8_DIR]EnterEnter path to EXPORT6 CD[/sapcd]/oracle/IDS/sapreorg/EXPORT6Directory to copy EXPORT6 CD[/oracle/IDS/sapreorg/CD9_DIR]EnterEnter amount of RAM for SAP + DB850Enter (in Megabytes)Service Entry Message Server[3600]EnterEnter Group-ID of sapsys[101]EnterEnter Group-ID of oper[102]EnterEnter Group-ID of dba[100]EnterEnter User-ID of sidadm[1000]EnterEnter User-ID of orasid[1002]EnterNumber of parallel procs[2]EnterWenn Sie die CD-Inhalte nicht in verschiedene
Verzeichnisse kopiert haben, findet das
&sap;-Installationsprogramm
die benötigten CDs nicht (diese sind durch die Datei
LABEL.ASC gekennzeichnet) und
würde von Ihnen verlangen, entweder die CD einzulegen
und zu mounten oder den entsprechenden mount-Pfad
einzugeben.CENTRDB.R3S ist möglicherweise
nicht fehlerfrei. Im vorliegenden Fall wurde die CD EXPORT4
zwar erneut verlangt, dennoch wurde der richtige Schlüssel
(6_LOCATION, danach 7_LOCATION) vorgeschlagen.
Daher ist es problemlos möglich, durch Eingabe der
korrekten Werte fortzufahren.Abgesehen von einigen kleineren (unten angeführten)
Problemen, sollte nun bis zur Installation der
&oracle;-Datenbank alles ohne Probleme
ablaufen.R3SETUP 4.6C SR2 startenStellen Sie sicher, dass LD_LIBRARY_PATH
korrekt gesetzt ist. Dieser Wert unterscheidet sich von dem der
4.6B-&oracle; 8.0.5-Installation:&prompt.root; export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/libGehen Sie in das Installationsverzeichnis und führen
Sie R3SETUP als
root aus:&prompt.root; cd /oracle/PRD/sapreorg/install
&prompt.root; ./R3SETUP -f CENTRAL.R3SDas Skript stellt anschließend einige Fragen
(Vorgaben in Klammern, gefolgt von den aktuellen Eingaben):FrageVorgabeEingabeEnter SAP System ID[C11]PRDEnterEnter SAP Instance Number[00]EnterEnter SAPMOUNT Directory[/sapmnt]EnterEnter name of SAP central host[majestix]EnterEnter Database System ID[PRD]PRDEnterEnter name of SAP db host[majestix]EnterSelect character set[1] (WE8DEC)EnterEnter Oracle server version (2) Oracle 8.1.72EnterExtract Oracle Client archive[1] (Yes, extract)EnterEnter path to KERNEL CD[/sapcd]/oracle/PRD/sapreorg/KERNELEnter amount of RAM for SAP + DB20441800Enter (in Megabytes)Service Entry Message Server[3600]EnterEnter Group-ID of sapsys[100]EnterEnter Group-ID of oper[101]EnterEnter Group-ID of dba[102]EnterEnter User-ID of oraprd[1002]EnterEnter User-ID of prdadm[1000]EnterLDAP support3Enter (no support)Installation step completed[1] (continue)EnterChoose installation service[1] (DB inst,file)EnterBisher verursacht das Anlegen von Benutzern eine
Fehlermeldung während der Installation, und zwar
in den Stadien OSUSERDBSID_IND_ORA (beim Anlegen
des Benutzers orasid),
sowie in OSUSERSIDADM_IND_ORA (beim Anlegen des Benutzers
sidadm).Abgesehen von einigen kleineren (unten angeführten)
Problemen, sollte nun bis zur Installation der
&oracle;-Datenbank alles ohne
Probleme ablaufen.&oracle; 8.0.5 installierenLesen Sie bitte die entsprechenden
&sap;-Hinweise und
&oracle;-Readmes für Probleme,
die Linux
und die &oracle;-Datenbank betreffen.
Die meisten (wenn nicht alle) Probleme
werden durch inkompatible Bibliotheken verursacht.Weiteres zur
&oracle;-Installation
finden Sie im Kapitel Installation
von &oracle;.&oracle; 8.0.5 mit orainst installierenWenn &oracle; 8.0.5 verwendet
wird, werden einige zusätzliche Bibliotheken benötigt,
da &oracle; 8.0.5 mit einer
alten Version von glibc verlinkt wurde, RedHat 6.1 aber
bereits eine aktuellere Version verwendet. Daher müssen
Sie folgende zusätzliche Pakte installieren, um sicherzustellen,
dass die Verlinkung ordnungsgemäß erfolgt:compat-libs-5.2-2.i386.rpmcompat-glibc-5.2-2.0.7.2.i386.rpmcompat-egcs-5.2-1.0.3a.1.i386.rpmcompat-egcs-c++-5.2-1.0.3a.1.i386.rpmcompat-binutils-5.2-2.9.1.0.23.1.i386.rpmLesen Sie bitte die entsprechenden &sap;-Hinweise
und die &oracle;-Readmes.
Ist dies nicht möglich (z.B. aus Zeitmangel, oder bei
Nichtvorhandensein dieser Unterlagen), besteht auch die
Möglichkeit, die originalen Binärdateien oder die
verlinkten Binärdateien eines RedHat-Systems zu
verwenden.Um den Intelligent-Agent zu kompilieren, muss
das RedHat Tcl-Paket installiert sein. Wenn Sie
tcl-8.0.3-20.i386.rpm nicht bekommen
können, sollte es auch problemlos möglich sein,
eine neuere Version, z.B.
tcl-8.0.5-30.i386.rpm für
RedHat 6.1, zu verwenden.Vom Binden abgesehen, läuft die Installation
wie folgt ab:&prompt.root; su - oraids
&prompt.root; export TERM=xterm
&prompt.root; export ORACLE_TERM=xterm
&prompt.root; export ORACLE_HOME=/oracle/IDS
-&prompt.root; cd /ORACLE_HOME/orainst_sap
+&prompt.root; cd $ORACLE_HOME/orainst_sap
&prompt.root; ./orainstBestätigen Sie alle Meldungen mit Enter,
bis die Software installiert ist. Einzige Ausnahme ist die
Frage nach der Installation des &oracle; On-Line
Text Viewers. Dieser ist unter Linux (noch)
nicht verfügbar. Daher muss diese Option deaktiviert werden.
Anschließend will sich &oracle;
unter Verwendung von i386-glibc20-linux-gcc
anstelle der verfügbaren gcc,
egcs oder
i386-redhat-linux-gcc verlinken.Auf Grund zeitlicher Einschränkungen wurden
für die Installation die Binärdateien der
&oracle; 8.0.5 PreProduction-Version
verwendet, nachdem sich der erste Versuch, die Version
von der RDBMS-CD zum Laufen zu bringen, sowie die
richtigen RPMs zu finden und zu installieren,
zum Alptraum entwickelt hatte.&oracle; 8.0.5 Pre-Production für
Linux (Kernel 2.0.33) installierenDiese Installation ist relativ einfach. Mounten Sie die
CD und starten Sie den Installer. Danach wählen Sie
das &oracle;-Heimatverzeichnis und kopieren Sie die
Binärdateien dorthin. Die Überreste der
vorherigen RDBMS-Installationsversuche werden dabei nicht
entfernt.Danach konnte die
&oracle;-Datenbank
ohne Probleme gestartet werden.Das &oracle; 8.1.7-Linux-Archiv entpackenNehmen Sie das aus dem Installationsverzeichnis eines
Linux-Systems erstellte Archiv oracle81732.tgz
und entpacken Sie es nach
/oracle/SID/817_32/.Mit der &sap.r3;-Installation fortfahrenÜberprüfen Sie als Erstes die
Umgebungseinstellungen der Benutzer
idsamd(sidadm) und
oraids (orasid).
Beide sollten nun die Dateien .profile,
.login und .cshrc
enthalten, die alle hostname benutzen.
Falls der Rechnername Ihres Systems der vollständige Rechnername
ist, müssen Sie in allen drei Dateien
hostname in hostname -s
ändern.Datenbanken ladenDanach kann R3SETUP entweder erneut
gestartet oder fortgesetzt werden (je nachdem, ob Sie das
Programm zuvor beendet hatten oder nicht).
R3SETUP erzeugt nun die Tablespaces und
lädt die Daten (für 46B IDES von EXPORT1 bis
EXPORT6, für 46C von DISK1 bis DISK4) mittels
R3load in die Datenbank.Wenn das Laden der Datenbank abgeschlossen ist
(dieser Vorgang kann einige Stunden dauern!), werden
einige Passwörter angefordert. Für
Testinstallationen können auch
Standard-Passwörter verwendet werden. Liegt
Ihnen allerdings etwas an der Sicherheit Ihres Systems,
so verwenden Sie andere Passwörter.FrageEingabeEnter Password for sapr3sapEnterConfirum Password for sapr3sapEnterEnter Password for syschange_on_installEnterConfirm Password for syschange_on_installEnterEnter Password for systemmanagerEnterConfirm Password for systemmanagerEnterAn diesem Punkt gab es während der 4.6B-Installation
einige Probleme mit dipgntab.ListenerStarten Sie den &oracle;-Listener als Benutzer
orasid
wie folgt:&prompt.user; umask 0; lsnrctl startAnsonsten könnten Sie die Meldung
ORA-12546 erhalten,
da die Sockets nicht über die korrekten Berechtigungen
verfügen werden. Lesen Sie dazu auch den
&sap;-Hinweis 072984.MNLS-Tabellen aktualisierenWenn Sie Nicht-Latin-1-Sprachen in das
&sap;-System
einbauen wollen, müssen Sie die MNLS
(Multi National Language Support)-Tabellen aktualisieren.
Dies wird in den SAP-OSS-Hinweisen 15023 und 45619 beschrieben.
Ansonsten können Sie diese Frage während der
&sap;-Installation
überspringen.Wenn Sie MNLS nicht benötigen, ist es
trotzdem nötig, die Tabelle TCPDB zu überprüfen
und zu initialisieren, falls dies nicht bereits geschehen ist.
Lesen Sie die &sap;-Hinweise 0015023 und 0045619, falls Sie
weitere Informationen benötigen.Abschließende Aufgaben&sap.r3;-Lizenzschlüssel anfordernSie müssen Ihren
&sap.r3;-Lizenzschlüssel anfordern,
da die zur Installation verwendete Lizenz nur für
vier Wochen gültig ist. Dazu ermitteln Sie zuerst Ihren
Hardwareschlüssel. Melden Sie sich als
idsadm an und rufen
Sie saplicense auf:&prompt.root; /sapmnt/IDS/exe/saplicense -getWird saplicense ohne Optionen aufgerufen,
so erhalten Sie eine Übersicht der möglichen Optionen.
Nach Erhalt des Lizenzschlüssels kann dieser
installiert werden:&prompt.root; /sapmnt/IDS/exe/saplicense -installNun müssen Sie folgende Daten eingeben:SAP SYSTEM ID = SID, 3 Zeichen
CUSTOMER KEY = Hardware-Schlüssel, 11 Zeichen
INSTALLATION NO = Installation, 10 Ziffern
EXPIRATION DATE = JJJJMMTT, normalerweise "99991231"
LICENSE KEY = Lizenzschlüssel, 24 ZeichenBenutzer anlegenErzeugen Sie einen Benutzer innerhalb von client 000
(für einige Aufgaben muss dies innerhalb von
client 000 erfolgen, aber nicht als Benutzer
sap* und ddic).
Als Benutzername empfiehlt sich beispielsweise
wartung (oder auf Englisch
service). Benötigte
Profile sind sap_new und
sap_all. Aus Sicherheitsgründen
sollten die Passwörter der Standardbenutzer in allen
Clients geändert werden (dies gilt auch für die Benutzer
sap* und ddic).Transportsystem, Profile, Betriebsarten usw.
konfigurierenInnerhalb von client 000 führen andere Benutzer als
ddic und sap*
normalerweise folgende Aufgaben durch:AufgabeTransaktionKonfiguration des Transportsystems, beispielsweise als
Stand-Alone Transport Domain EntitySTMSErstellen und Editieren von ProfilenRZ10Pflege von Betriebsarten und InstanzenRZ04Diese sowie alle anderen Post-Installationsschritte
sind ausführlich in den &sap;-Installationsanleitungen
beschrieben.initsid.sap (initIDS.sap) anpassenDie Datei /oracle/IDS/dbs/initIDS.sap
enthält das &sap;-Sicherungsprofil. Hier sind die
Größe des verwendeten Band(laufwerks),
die Kompressionsart und so weiter festgelegt. Um dieses
Profil mit sapdba oder brbackup
auszuführen, wurden folgende Werte geändert:compress = hardware
archive_function = copy_delete_save
cpio_flags = "-ov --format=newc --block-size=128 --quiet"
cpio_in_flags = "-iuv --block-size=128 --quiet"
tape_size = 38000M
tape_address = /dev/nsa0
tape_address_rew = /dev/sa0Erklärungen:compress: Das verwendete Bandlaufwerk
war ein HP DLT1. Dieses unterstützt Hardware-Kompression.archive_function: Hier wird das
Standardverhalten beim Sichern von &oracle;-Archivprotokollen
festgelegt. Neue Protokolldateien werden auf Band
gespeichert, bereits gespeicherte erneut gespeichert und
anschließend gelöscht. Dies verhindert eine Vielzahl
von Problemen, falls Sie Ihre Datenbank wiederherstellen
müssen und dabei feststellen, dass eins Ihrer
Archivbänder defekt ist.cpio_flags: Standardmäßig
wird verwendet. Dies setzt die Blockgröße
auf 5120 Bytes. Für DLT-Bänder
werden von HP mindestens 32 K Blockgröße
empfohlen, daher wurde hier
verwendet, um 64 KB-blöcke zu erzeugen.
wurde benötigt, da das
Installationssystem über mehr als 65535 Inodes
verfügt. Die letzte Option ist notwendig, weil
brbackup sich sonst beschwert, wenn
die cpio die Anzahl der gespeicherten
Blöcke ausgibt.cpio_in_flags: Flags, die zum Laden
der Daten vom Band benötigt werden. Das Format wird
dabei automatisch erkannt.tape_size: Damit wird die maximale
Speicherkapazität des Bandes angegeben. Aus
Sicherheitsgründen (das Bandlaufwerk unterstützt
Hardware-Kompression) ist dieser Wert geringfügig kleiner
als der aktuelle Wert.tape_address: Nicht zurückspulendes
Gerät für cpio.tape_address_rew: Zurückspulendes
Gerät für cpio.Konfiguration nach InstallationsendeDie folgenden &sap;-Parameter sollten nach der
Installation optimiert werden (die Beispiele gelten
für IDES 46B, 1 GB Hauptspeicher):NameWertztta/roll_extension250000000abap/heap_area_dia300000000abap/heap_area_nondia400000000em/initial_size_MB256em/blocksize_kB1024ipc/shm_psize_4070000000&sap;-Hinweis 0013026:NameWertztta/dynpro_area2500000&sap;-Hinweis 0157246:NameWertrdisp/ROLL_MAXFS16000rdisp/PG_MAXFS30000Mit obigen Parametern und einem System mit 1 Gigabyte
Hauptspeicher, könnte der Speicherverbrauch in etwa
so aussehen:Mem: 547M Active, 305M Inactive, 109M Wired, 40M Cache, 112M Buf, 3492K FreeWährend der Installation auftretende ProblemeNeustarten von R3SETUP nach Behebung eines ProblemsR3SETUP bricht ab, wenn ein Fehler auftritt. Wenn Sie
(nach Durchsicht der jeweiligen Protokolldateien) den Fehler
behoben haben, müssen Sie R3SETUP erneut aufrufen,
indem Sie für den fehlerhaften Schritt als Option
REPEAT eingeben.Um R3SETUP erneut zu starten, rufen Sie die Datei
einfach mit der entsprechenden R3S-Datei
auf:&prompt.root; ./R3SETUP -f CENTRDB.R3Sfür 4.6B, oder mit&prompt.root; ./R3SETUP -f CENTRAL.R3Sfür 4.6C, unabhängig davon, ob der Fehler mit
CENTRAL.R3S oder mit
DATABASE.R3S auftrat.Zu bestimmten Zeitpunkten nimmt R3SETUP an, dass
sowohl der Datenbank- als auch die &sap;-Prozesse vorhanden
sind und laufen (da dies Schritte sind, die es bereits
ausgeführt hat). Sollten Fehler auftreten (z.B.
wenn sich die Datenbank nicht starten lässt),
müssen Sie sowohl die Datenbank als auch &sap; manuell
neu starten, nachdem Sie die Fehler behoben haben. Erst danach
darf R3SETUP erneut gestartet werden.Achten Sie auch darauf, den &oracle;-Listener erneut
zu starten (als Benutzer orasid
mittels umask 0; lsnrctl start), wenn
dieser beendet wurde (z.B. durch einen notwendigen
Neustart des Systems).Fehler im Stadium OSUSERSIDADM_IND_ORA bei der Ausführung von R3SETUPWenn sich R3SETUP in diesem Stadium beschwert, editieren
Sie die bei der Installation verwendete Version der
Vorlage (CENTRDB.R3S (4.6B) oder
entweder CENTRAL.R3S oder
DATABASE.R3S (4.6C)). Finden Sie
[OSUSERSIDADM_IND_ORA] oder suchen Sie nach dem einzigen
STATUS=ERROR-Eintrag und ändern
Sie die folgenden Werte:HOME=/home/sidadm (war voher leer)
STATUS=OK (hatte den Status ERROR)
Danach können Sie R3SETUP erneut aufrufen.Fehler im Stadium OSUSERDBSID_IND_ORA bei der
Ausführung von R3SETUPWahrscheinlich beschwert sich R3SETUP auch in diesem Stadium.
Der hier auftretende Fehler ähnelt dem im Abschnitt
OSUSERSIDADM_IND_ORA. Editieren Sie einfach die bei
der Installation verwendete Version der Vorlage
(das heißt CENTRDB.R3S (4.6B) oder
entweder CENTRAL.R3S oder
DATABASE.R3S (4.6C)). Finden Sie
[OSUSERDBSID_IND_ORA] oder suchen Sie nach dem einzigen
STATUS=ERROR-Eintrag und ändern
Sie folgenden Eintrag:STATUS=OKDanach können Sie R3SETUP erneut aufrufen.Fehler oraview.vrf FILE NOT FOUND bei der
&oracle;-InstallationSie haben die Option
&oracle; On-Line Text Viewer nicht deaktiviert,
bevor Sie die Installation gestartet haben. Per Voreinstellung
ist diese Option aktiviert, obwohl sie unter Linux gar nicht
verfügbar ist. Deaktivieren Sie daher diese Option im
&oracle;-Installationsmenü und starten Sie die Installation
erneut.Fehler TEXTENV_INVALID bei der Ausführung von R3SETUP,
RFC oder beim Start von SAPGUITritt dieser Fehler auf, so fehlt die korrekte Lokalisierung.
&sap;-Hinweis 0171356 führt die notwendigen RPMs auf,
die installiert sein müssen (zum Beispiel
saplocales-1.0-3,
saposcheck-1.0-1 für
RedHat 6.1). Falls Sie alle damit verbundenen Fehler
ignoriert haben, und bei der Ausführung von R3SETUP
den STATUS jeweils von ERROR auf OK (in CENTRDB.R3S)
gesetzt haben, um R3SETUP anschließend neu zu starten,
wurde das &sap;-System nicht ordnungsgemäß
konfiguriert. Das bedeutet, dass Sie nicht via
SAPgui am System anmelden können,
obwohl das System trotzdem gestartet werden kann. Ein Versuch,
sich über die alte Linux-SAPgui
anzumelden, führte zu folgenden Fehlermeldungen:Sat May 5 14:23:14 2001
*** ERROR => no valid userarea given [trgmsgo. 0401]
Sat May 5 14:23:22 2001
*** ERROR => ERROR NR 24 occured [trgmsgi. 0410]
*** ERROR => Error when generating text environment. [trgmsgi. 0435]
*** ERROR => function failed [trgmsgi. 0447]
*** ERROR => no socket operation allowed [trxio.c 3363]
SpeicherzugriffsfehlerDieses Verhalten kommt daher, weil &sap.r3; nun nicht
in der Lage ist, eine korrekte Lokalisierung zuzuweisen, und
sich daher nicht ordnungsgemäß konfigurieren kann
(durch fehlende Einträge in einigen Datenbank-Tabellen).
Um sich in &sap; anmelden zu können, müssen Sie
folgende Einträge zur Datei DEFAULT.PFL
(lesen Sie dazu auch Hinweis 0043288) hinzufügen:abap/set_etct_env_at_new_mode = 0
install/collate/active = 0
rscp/TCP0B = TCP0BStarten Sie nun das &sap;-System neu. Sie sind nun in der Lage,
sich anzumelden, obwohl einige länderspezifische
Spracheinstellungen fehlerhaft sein könnten. Nachdem Sie diese
Ländereinstellungen korrigiert (und die korrekten
Lokalisierungen installiert) haben, können
Sie diese Einträge wieder aus
DEFAULT.PFL löschen und das
&sap;-System anschließend neu starten.ORA-00001Dieser Fehler trat nur bei einer Installation von
&oracle; 8.1.7 unter FreeBSD 4.5
auf. Dies geschah deshalb, weil sich die &oracle;-Datenbank nicht
initialisieren konnte und daher abstürzte. Dadurch
verblieben Semaphore und Shared-Memory
im System. Der nächste Startversuch führte dann
zur Meldung ORA-00001.Suchen Sie diese Semaphore mittels ipcs -a
und entfernen Sie sie mit ipcrm.ORA-00445 (Hintergrundprozess PMON wurde nicht gestartet)Dieser Fehler trat bei &oracle; 8.1.7
auf. Die Meldung erscheint, wenn die Datenbank mit dem
normalen startsap-Skript (zum Beispiel
startsap_majestix_00) aber als Benutzer
prdadm gestartet wird.Dies kann vermieden werden, indem die Datenbank als Benutzer
oraprd über svrmgrl
gestartet wird:&prompt.user; svrmgrl
SVRMGR> connect internal;
SVRMGR> startup;
SVRMGR> exitORA-12546 (den Listener mit den richtigen
Berechtigungen starten)Starten Sie den &oracle;-Listener als Benutzer
oraids mit folgendem Befehl:&prompt.root; umask 0; lsnrctl startAnsonsten könnten Sie die Meldung ORA-12546 erhalten,
da die Sockets nun nicht die richtigen Berechtigungen aufweisen.
Lesen Sie dazu auch den &sap;-Hinweis 0072984.ORA-27102 (kein freier Speicher mehr)Dieser Fehler trat auf, wenn versucht wurde, für
MAXDSIZ und DFLDSIZ
Werte über 1 GB (1024x1024x1024) festzulegen.
Zusätzlich führte dies zur Fehlermeldung
Linux Error 12: Cannot allocate memory.Fehler im Stadium [DIPGNTAB_IND_IND] bei der
Ausführung von R3SETUPFür allgemeine Informationen lesen Sie bitte den
&sap;-Hinweis 0130581 # (R3SETUP - Abbruch im Stadium
DIPGNTAB). Bei der IDES-spezifischen
Installation verwendete der Installationsprozess aus
irgendwelchen Gründen nicht den
korrekten &sap;-Systemnamen IDS, sondern den leeren
String "". Dies führte zu einigen kleineren Problemen
beim Zugriff auf bestimmte Verzeichnisse, da die Pfade durch
SID (in diesem Fall IDS) dynamisch
generiert werden. Das heißt anstatt auf/usr/sap/IDS/SYS/...
/usr/sap/IDS/DVMGS00zuzugreifen, wurden folgende Pfade verwendet:/usr/sap//SYS/...
/usr/sap/D00Um dennoch mit der Installation fortfahren zu können,
wurden ein Link sowie ein zusätzliches Verzeichnis
erzeugt:&prompt.root; pwd
/compat/linux/usr/sap
&prompt.root; ls -l
total 4
drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00
drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS
lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS
drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp
drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 transDieses Verhalten wird auch in den &sap;-Hinweisen 0029227
und 0008401 beschrieben. Bei der Installtion von
&sap; 4.6C trat allerdings keines dieser
Probleme auf.Fehler im Stadium [RFCRSWBOINI_IND_IND] bei der
Ausführung von R3SETUPBei der Installation von &sap; 4.6C
trat dieser Fehler als Folge eines anderen, bereits vorher
aufgetretenen Fehlers auf. Daher müssen Sie sich
die entsprechenden Protokolldateien durchsehen, und danach das
wirkliche (bereits vorher aufgetretene) Problem beheben.Wenn Sie nach dem Durchsehen der Protokolldateien feststellen,
dass dieser Fehler wirklich der eigentliche Fehler ist
(lesen Sie dazu wiederum die &sap;-Hinweise), können
Sie den STATUS des betreffenden Schritts von ERROR auf OK
setzen (und zwar in der Datei CENTRDB.R3S).
Anschließend starten Sie R3SETUP erneut. Nach
der Installation müssen Sie den Report
RSWBOINS der Transaktion
SE38 ausführen. Lesen Sie den &sap;-Hinweis 0162266,
um weitere Informationen zu den Stadien
RFCRSWBOINI und RFCRADDBDIF
zu erhalten.Fehler im Stadium [RFCRADDBDIF_IND_IND] bei der
Ausführung von R3SETUPHier gilt das Gleiche wie für den letzten Fehler.
Stellen Sie durch Überprüfen der Protokolldateien
sicher, dass dieser Fehler nicht durch ein früheres
Problem verursacht wird.Wenn Sie sicher sind, dass &sap;-Hinweis 0162266 auf
Ihr System zutrifft, setzen Sie den STATUS des betreffenden
Stadiums von ERROR auf OK (und zwar in der Datei
CENTRDB.R3S). Anschließend starten
Sie R3SETUP erneut. Nach der Installation müssen Sie den
Report RADDBDIF der Transaktion SE38
ausführen.sigaction sig31: File size limit exceededDieser Fehler trat beim Start des &sap;-Prozesses
disp+work auf. Wird &sap; mit
startsap-Skript gestartet, werden Subprozesse gestartet,
deren Aufgabe es ist, alle anderen &sap;-Prozesse zu starten.
Als Folge davon erkennt startsap dabei auftretende
Fehler nicht.Um zu überprüfen, ob die &sap;-Prozesse korrekt
gestartet wurden, überprüfen Sie den Prozessstatus
mit ps ax | grep SID.
Sie erhalten dadurch eine Liste aller &oracle;- und &sap;-Prozesse.
Wenn einige Prozesse fehlen, oder Sie sich nicht mit dem
&sap;-System verbinden können, überprüfen Sie
wiederum die entsprechenden Protokolldateien, die sich unter
/usr/sap/SID/DVEBMGSnr/work/
befinden. Die zu durchsuchenden Dateien heißen
dev_ms und dev_disp.Wenn &oracle; und &sap; mehr Speicher anfordern als in der
Kernelkonfigurationsdatei festgelegt wurde, wird das
Signal 31 ausgeliefert. Der Fehler
kann behoben werden, indem im Kernel
ein größerer Wert verwendet wird.# larger value for 46C production systems:
options SHMMAXPGS=393216
# smaller value sufficient for 46B:
#options SHMMAXPGS=262144Der Start von saposcol schlug fehlDas Programm saposcol (Version 4.6D) kann
einige Probleme verursachen. Das
&sap;-System verwendet
saposcol,
um Daten über die Systemleistung zu sammeln.
Für die Benutzung des &sap;-Systems hingegen ist es es
nicht erforderlich. Daher handelt es sich hier auch
nur um ein kleineres Problem. Ältere Versionen
von saposcol (z.B. 4.6B) funktionieren, sammeln
allerdings nicht alle Daten (viele Aufrufe geben,
zum Beispiel die CPU-Nutzung, einfach
0 (Null) zurück.Weiterführende ThemenWenn Sie sich fragen, wie die Linux-Binärkompatibilität
unter FreeBSD realisiert wurde, sollten Sie diesen Abschnitt lesen.
Der Großteil der folgenden Informationen stammt aus einer
E-Mail, die von Terry Lambert (tlambert@primenet.com)
an die FreeBSD-Chat-Mailingliste
(freebsd-chat@FreeBSD.org) geschrieben wurde
(Message ID: <199906020108.SAA07001@usr09.primenet.com>).Wie funktioniert es?execution class loaderFreeBSD verfügt über eine execution class
loader genannte Abstraktion. Dabei handelt es sich um einen
Eingriff in den &man.execve.2; Systemaufruf.FreeBSD verfügt über eine Liste von Ladern, anstelle
eines einzigen, auf #!
zurückgreifenden Laders, um Shell-Interpreter oder Shell-Skripte
auszuführen.Historisch gesehen untersuchte der einzige, auf
UNIX-Plattformen vorhandene Lader die "magische Zahl"
(in der Regel die ersten 4 oder 8 Bytes der Datei), um
festzustellen, ob der Binärtyp dem System bekannt war.
War dies der Fall, wurde der Binärlader aufgerufen.Wenn es sich nicht um den zum System gehörigen Binärtyp
handelte, gab &man.execve.2; einen Fehler zurück,
und die Shell versuchte stattdessen, die Datei als Shell-Befehl
auszuführen.Dabei wurde als Standardeinstellung was auch immer die
aktuelle Shell ist festgelegt.Später wurde ein Hack in &man.sh.1; eingefügt,
der die zwei ersten Zeichen untersuchte. Wenn diese
:\n entsprachen,
wurde stattdessen die &man.csh.1;-Shell aufgerufen
(wir glauben, dass dies zuerst von SCO umgesetzt wurde).FreeBSD versucht heute eine Liste von Ladern, unter denen
sich ein allgemeiner Lader für Interpreter befindet. Der
auszuführende Interpreter wird im ersten, durch
Leerzeichen getrennten Feld, der #!-Zeile
angegeben. Läßt sich der Interpreter nicht ermitteln,
wird auf /bin/sh zurückgegriffen.ELFFür die Linux ABI-Unterstützung erkennt FreeBSD
die magische Zahl als ELF-Binärdatei (Zu diesem Zeitpunkt wird
nicht zwischen FreeBSD, &solaris;, Linux oder anderen Systemen
unterschieden, die über ELF-Binärdateien
verfügen.).SolarisDer ELF-Lader sucht nach einer speziellen
Kennzeichnung, die aus einem Kommentarabschnitt
in der ELF-Datei besteht, und die in SVR4/&solaris; ELF
Binärdateien nicht vorhanden ist.Damit Linux-Binärdateien (unter FreeBSD) funktionieren,
müssen sie als Linuxgekennzeichnet werden, und zwar durch
&man.brandelf.1;:&prompt.root; brandelf -t Linux fileNachdem dies geschehen ist, erkennt der ELF-Lader die
Linux-Kennzeichnung der Datei.ELFbrandelfWenn der ELF-Lader die Linux-Kennzeichnung
sieht, wird ein Zeiger in der proc-Struktur
ersetzt. Alle Systemaufrufe werden durch diesen Zeiger indiziert
(in einem traditionellen &unix; System wäre das ein
sysent[]-Strukturfeld, das die Systemaufrufe
enthält). Der Prozess wird weiterhin speziell gekennzeichnet,
so dass der Trap-vector im Signal-trampoline-code eine spezielle
Behandlung erfährt und das Linux-Kernelmodul verschiedene
kleinere Korrekturen vornehmen kann.Der Linux-Systemaufrufvektor enthält neben anderen
Dingen eine Liste der sysent[]-Einträge,
deren Adressen sich im Kernelmodul befinden.Wenn ein Linux-Programm einen Systemaufruf ausführt,
dereferenziert die Trap-Behandlungsroutine den Zeiger auf die
Eintrittspunkte für die Systemaufrufe und erhält damit die
Linux-Eintrittspunkte und nicht die FreeBSD-Eintrittspunkte.Zusätzlich verändert der
Linuxmodus die Systempfade dynamisch; genauso, wie dies die
Option beim Einbinden von Dateisystemen
macht (Achtung: nicht das Dateisystem unionfs!).
Zuerst wird die Datei im Verzeichnis /compat/linux/Originalpfad
gesucht, danach, wenn sie dort nicht gefunden
wurde, wird sie im FreeBSD-Verzeichnis
/Originalpfad
gesucht. Dadurch wird sichergestellt, dass
Binärdateien, die zur Ausführung andere
Binärdateien benötigen, ausgeführt
werden können (so dass alle Linux-Werkzeuge unter der
ABI laufen). Dies bedeutet auch,
dass Linux-Binärdateien FreeBSD-Binärdateien
laden und ausführen können, wenn keine passenden
Linux-Binärdateien vorhanden sind. Ein in
/compat/linux plaziertes &man.uname.1; kann
damit Linux-Programmen vorgaukeln, dass sie auf einem Linux-System
laufen.Im Endeffekt gibt es einen Linux-Kernel innerhalb des
FreeBSD-Kernels. Die Sprungtabellen für Linux-
beziehungsweise FreeBSD-Systemaufrufe verweisen allerdings auf
dieselben Funktionen, die Kerneldienste wie Dateisystemoperationen,
Operationen für den virtuellen Speicher,
Signalübermittlung und System V IPC bereitstellen,
Der einzige Unterschied ist, dass Binärdateien unter FreeBSD
FreeBSD-glue-Funktionen verwenden.
Linux-Binärdateien hingegen verwenden die
Linux-glue-Funktionen. Die meisten
älteren Betriebssysteme hatten ihre eigenen
glue-Funktionen: Funktionsadressen
in einem globalen, statischen sysent[]
Strukturfeld an Stelle von Funktionsadressen, die durch
einen dynamisch initialisierten Zeiger aus der
proc Struktur, die den Aufruf gemacht hatte,
dereferenziert wurden.Welche ist die echte FreeBSD-ABI? Das spielt keine Rolle.
Grundsätzlich ist der einzige Unterschied (zurzeit
ist das so; dies könnte sich in zukünftigen
Versionen leicht ändern und wird sich wahrscheinlich
auch ändern), dass die
FreeBSD-glue-Funktionen statisch in
den Kernel gelinkt sind, und dass die
Linux-glue-Funktionen statisch gelinkt
oder über ein Modul eingebunden werden können.Ja, aber ist das wirkliche eine Emulation? Nein. Es ist eine
Implementierung eines ABIs, keine Emulation. Es ist kein Emulator
(oder Simulator, um der nächsten Frage zuvorzukommen)
beteiligt.Warum wird es manchmal Linux-Emulation genannt?
Um es schwerer zu machen, FreeBSD zu verkaufen. Wirklich, das kommt
daher, weil dies zu einer Zeit implemtiert wurde,
in der es kein anderes Wort
(als Emulation) gab, das beschrieb, was vor sich ging.
Wenn der Kernel nicht entsprechend konfiguriert wurde oder das
Modul geladen wurde, war es falsch zu behaupten, FreeBSD würde
Linux-Binärprogramme ausführen. Man benötigte
ein Wort, das beschrieb, was da geladen
wurde – daher Der Linux-Emulator.
diff --git a/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml
index ed5727abf4..2e9b794c35 100644
--- a/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml
@@ -1,2522 +1,2522 @@
BillLloydUrsprüglicher Text von JimMockNeugeschrieben von RobertDrehmelÜbersetzt von Elektronische Post (E-Mail)TerminologieE-MailTerminologieDas Akronym MTA steht für
Mail Transfer Agent was übersetzt
Mailübertragungs-Agent bedeutet.Während die Bezeichnung Server-Dämon
die Komponente eines MTA benennt, die für eingehende Verbindungen
zuständig ist, wird mit dem Begriff Mailer
öfters die Komponente des MTA bezeichnet, die E-Mails versendet.
ÜbersichtE-Mailelektronische PostElektronische Post, besser bekannt als E-Mail, ist
eine der am weit verbreitetsten Formen der Kommunikation heutzutage.
Dieses Kapitel bietet eine grundlegende Einführung in das
Betreiben eines E-Mail-Servers unter &os;. Ebenfalls wird der
Versand und Empfang von E-Mails unter &os; behandelt. Das
Kapitel ist jedoch keine komplette
Referenz und es werden viele wichtige Überlegungen außer
Acht gelassen. Wenn Sie das Thema detaillierter betrachten
möchten, werden Sie bei einem der exzellenten Bücher
fündig, die in aufgelistet sind.
Dieses Kapitel behandelt die folgenden Punkte:Welche Software-Komponenten beim Senden und
Empfangen von elektronischer Post involviert sind.Wo sich grundlegende sendmail
Konfigurationsdateien in FreeBSD befinden.Den Unterschied zwischen entfernten und lokalen
Postfächern.Wie man Versender von Massennachrichten daran hindern kann,
Ihren E-Mail-Server illegalerweise als Weiterleitung zu verwenden.
Wie man den Standard-Mailer des Systems,
sendmail, ersetzt.Wie man oft auftretende E-Mail-Server Probleme behebt.Wie E-Mails mit UUCP verschickt werden.Wie E-Mails über einen Relay verschickt werden.Wie E-Mails über eine Einwahlverbindung gehandhabt
werden.Wie Sie die SMTP-Authentifizierung einrichten.Den Empfang und den Versand von E-Mails mithilfe
von Programmen wie mutt.Wie E-Mails von einem entfernten Server mit
POP oder IMAP
abgeholt werden.Wie eingehende E-Mail automatisch gefiltert wird.Bevor Sie dieses Kapitel lesen, sollten Sie:Ihre Netzwerk-Verbindung richtig einrichten.
().Die DNS-Information für Ihren E-Mail-Server einstellen
- ().
+ ().
Wissen, wie man zusätzliche Dritthersteller-Software
installiert ().Elektronische Post benutzenPOPIMAPDNSFünf größere Teile sind am E-Mail-Austausch beteiligt:
Das Benutzerprogramm,
der Server-Dämon,
DNS,
ein entferntes oder lokales
Postfach und natürlich
der E-Mail-Server selbst.Das BenutzerprogrammDas beinhaltet Kommandozeilenprogramme wie
mutt, pine,
elm, mail
und Programme mit grafischer Benutzeroberfläche, wie
balsa und xfmail
um einige zu nennen, und aufwändigere, wie WWW-Browser.
Diese Programme geben die E-Mail-Transaktionen an den lokalen
E-Mail-Server,
weiter, entweder über einen der verfügbaren
Server-Dämonen oder eine
TCP-Verbindung.E-Mail-Server DämonE-Mail-Server DämonensendmailE-Mail-Server DämonenpostfixE-Mail-Server DämonenqmailE-Mail-Server Dämonenexim&os; enthält standardmäßig
sendmail; es lassen
sich aber auch andere E-Mail-Server Dämonen
betreiben, beispielsweiseexim,postfix oderqmail.Der Server-Dämon hat üblicherweise zwei
Funktionen: Er kümmert sich um das Empfangen von
eingehenden E-Mails und stellt ausgehende E-Mails zu. Es
ist nicht Aufgabe des Dämons,
E-Mails über POP oder
IMAP bereit zu stellen, noch Zugriffe
auf das lokale Postfach mbox
oder Verzeichnisse mit Postfächern zu gewähren.
Dafür benötigen Sie einen zusätzlichen
Dämon.Alte Versionen von sendmail
enthalten schwerwiegende Sicherheitslöcher, die
einem Angreifer Zugriff auf Ihren Rechner verschaffen
können. Um Sicherheitsprobleme zu umgehen,
sollten Sie eine aktuelle
sendmail-Version benutzen.
Sie können auch einen anderen MTA
aus der &os; Ports-Collection
benutzen.E-Mail und DNSDas Domain Name System (DNS) und sein Dämon
named spielen eine große Rolle in der
Auslieferung von E-Mails. Um E-Mails auszuliefern,
fragt der Mail-Server-Dämon im DNS den Rechner ab,
der E-Mails für das Zielsystem entgegennimmt.
Der gleiche Vorgang läuft ab, wenn eine E-Mail
von einem entfernten Server auf Ihrem Mail-Server
zugestellt wird.MX-EintragIm DNS werden Rechnernamen auf
IP-Adressen abgebildet. Daneben werden spezielle
Informationen für das Mail-System gespeichert,
die MX-Einträge
(MX record) genannt werden.
Der MX-Eintrag (von Mail eXchanger)
gibt an, welcher Rechner oder welche Rechner E-Mails
für eine Domain annehmen. Existiert kein MX-Record
für einen Rechner oder dessen Domain, werden
E-Mails direkt an den Rechner zugestellt, vorausgesetzt
der Rechner besitzt einen A-Eintrag, der den Rechnernamen
auf seine IP-Adresse abbildet.Mit dem Kommando &man.host.1; können Sie die
MX-Einträge für eine Domain abfragen:&prompt.user; host -t mx FreeBSD.org
FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.orgE-Mails empfangenE-MailempfangenDer E-Mail-Server empfängt alle E-Mails für Ihre
Domäne. Er speichert die E-Mails entweder im
mbox-Format (die Vorgabe) oder im
Maildir-Format. Die E-Mails können lokal mit
Programmen wie &man.mail.1; oder mutt
gelesen werden. Mithilfe von Protokollen wie
POP oder IMAP können
die E-Mails auch von entfernten Rechnern gelesen werden. Wenn
Sie die E-Mails direkt auf dem E-Mail-Server lesen möchten,
wird kein POP- oder
IMAP-Server gebraucht.Auf entfernte Postfächer mit POP
und IMAP zugreifenPOPIMAPWenn Sie auf entfernte Postfächer zugreifen
wollen, benötigen Sie den Zugang zu einem
POP- oder IMAP-Server.
Beide Protokolle bieten einen einfachen Zugriff auf entfernte
Postfächer. IMAP besitzt allerdings
einige Vorteile, unter anderem:IMAP kann sowohl Nachrichten
auf einem entfernten Server speichern als auch von
dort abholen.IMAP unterstützt
gleichzeitig ablaufende Aktualisierungen.Da es nicht gleich die komplette Nachricht
herunterlädt, ist IMAP
über langsame Verbindungen sehr nützlich.
Weiterhin können E-Mails auf dem Server
durchsucht werden, was den Datenverkehr zwischen
Clients und dem Server minimiert.Wenn Sie einen POP- oder
IMAP-Server installieren wollen,
gehen Sie nach den folgenden Schritten vor:Wählen Sie einen IMAP-
oder POP-Server aus, der
Ihre Anforderungen erfüllt. Die nachstehenden
Server sind sehr bekannt:qpopperteapopimap-uwcourier-imapInstallieren Sie den ausgewählten
POP- oder IMAP-Daemon
aus der Ports-Collection.Wenn erforderlich, passen Sie die Datei
/etc/inetd.conf an, um
den POP- oder
IMAP-Server zu starten.Beachten Sie, dass sowohl POP
als auch IMAP Daten, wie den
Benutzernamen und das Passwort, im Klartext
übertragen. Wenn Sie die mit diesen Protokollen
übertragenen Daten schützen wollen, können
Sie SSH-Tunnel (siehe )
verwenden.Auf lokale Postfächer zugreifenAuf Postfächer können Sie lokal mithilfe
spezieller Benutzerprogramme, die
Mail-User-Agents
(MUAs) genannt werden, zugreifen.
Beispiele für solche Programme sind
mutt oder &man.mail.1;.Der E-Mail-ServerE-Mail-ServerE-Mail-Server wird der Rechner genannt, welcher
für die Zustellung und das Empfangen von E-Mails auf Ihrem
Rechner oder vielleicht Ihrem Netzwerk zuständig ist.ChristopherShumwayBeigesteuert von sendmail-Konfigurationsendmail&man.sendmail.8; ist das standardmäßig in
FreeBSD installierte Mailübertragungsprogramm (MTA).
Die Aufgabe von sendmail ist es,
E-Mails von E-Mail-Benutzerprogrammen (MUA)
anzunehmen und diese zu den
entsprechenden Mailern zu liefern, die in der Konfigurationsdatei
definiert sind. sendmail kann auch
Netzwerkverbindungen annehmen und E-Mails zu lokalen
MailboxenMailbox = Post- beziehungsweise Briefkasten
oder anderen Programmen liefern.sendmail benutzt folgende
Konfigurationsdateien:/etc/mail/access/etc/mail/aliases/etc/mail/local-host-names/etc/mail/mailer.conf/etc/mail/mailertable/etc/mail/sendmail.cf/etc/mail/virtusertableDateinameFunktion/etc/mail/accessDatenbank, in der Zugriffsrechte auf
sendmail verwaltet werden/etc/mail/aliasesMailbox Aliase/etc/mail/local-host-namesListe der Rechner für die
sendmail E-Mails akzeptiert/etc/mail/mailer.confMailer Programmkonfiguration/etc/mail/mailertableMailer Versand-Zuordnungstabelle/etc/mail/sendmail.cfHauptkonfigurationsdatei für
sendmail/etc/mail/virtusertableVirtuelle Benutzer und Domänen-Tabellen/etc/mail/accessDie Zugriffsdatenbank bestimmt, welche(r) Rechner oder IP-Adresse(n)
Zugriff auf den lokalen E-Mail-Server haben und welche Art von Zugriff
ihnen gestattet wird.
Rechner können als ,
oder eingetragen oder einfach an
sendmails Fehlerbehandlungsroutine mit einem
angegebenen Mailer-Fehler übergeben werden.
Rechner, die als eingetragen sind, was die
Grundeinstellung ist, sind berechtigt E-Mails zu diesem Rechner zu
schicken, solange die endgültige Zieladresse der lokale Rechner ist.
Verbindungen von Rechnern, die als
aufgelistet sind, werden abgelehnt.
Rechnern mit gesetzter -Option für
ihren Rechnernamen wird erlaubt Post für jede Zieladresse
durch diesen Mail-Server zu senden.Konfigurieren der sendmail
Zugriffsdatenbankcyberspammer.com 550 We don't accept mail from spammers
FREE.STEALTH.MAILER@ 550 We don't accept mail from spammers
another.source.of.spam REJECT
okay.cyberspammer.com OK
128.32 RELAYIn diesem Beispiel haben wir fünf Einträge.
E-Mail-Versender, die mit der linken Spalte der Tabelle
übereinstimmen, sind betroffen von der Aktion in der rechten
Spalte. Die ersten beiden Beispiele übergeben einen Fehlercode an
sendmails Fehlerbehandlungsroutine.
Die Nachricht wird an den entfernten Rechner gesendet, wenn eine
Nachricht mit der linken Spalte der Tabelle übereinstimmt.
Der nächste Eintrag lehnt Post von einem bestimmten Rechner
des Internets ab (another.source.of.spam).
Der nächste Eintrag akzeptiert E-Mail-Verbindungen des Rechners
okay.cyberspammer.com, der exakter angegeben
wurde als cyberspammer.com in der Zeile
darüber.
Genauere Übereinstimmungen haben den Vorrang vor weniger genauen.
Der letzte Eintrag erlaubt die Weiterleitung von elektronischer Post
von Rechnern mit einer IP-Adresse die mit 128.32
beginnt. Diese Rechner würden E-Mails durch diesen
E-Mail-Server senden können, die für andere E-Mail-Server
bestimmt sind.Wenn diese Datei geändert wird, müssen Sie
make in /etc/mail
ausführen um die Datenbank zu aktualisieren./etc/mail/aliasesDie Alias-Datenbank enthält eine Liste der virtuellen
Mailboxen, die in andere Benutzer, Dateien, Programme oder
andere Aliase expandiert werden. Hier sind ein paar Beispiele,
die in /etc/mail/aliases benutzt werden
können:E-Mail Aliasesroot: localuser
ftp-bugs: joe,eric,paul
bit.bucket: /dev/null
procmail: "|/usr/local/bin/procmail"Das Dateiformat ist simpel; Der Name der Mailbox auf der linken
Seite des Doppelpunkts wird mit den Zielen auf der rechten Seite
ersetzt.
Das erste Beispiel ersetzt die Mailbox root
mit der Mailbox localuser, die dann wieder in der
Alias-Datenbank gesucht wird. Wird kein passender Eintrag
gefunden, wird die Nachricht zum lokalen Benutzer
localuser geliefert. Das nächste Beispiel
zeigt eine E-Mail-Verteilerliste. E-Mails an die Mailbox
ftp-bugs werden zu den drei lokalen Mailboxen
joe, eric und
paul gesendet. Eine lokale Mailbox kann auch
als user@example.com angegeben werden. Das
nächste Beispiel zeigt das Schreiben von E-Mails in eine Datei,
in diesem Fall /dev/null. Das letzte Beispiel
verdeutlicht das Senden von E-Mails an ein Programm, in diesem Fall
wird die Nachricht in die Standardeingabe von
/usr/local/bin/procmail mittels einer UNIX Pipe
geschrieben.Wenn diese Datei geändert wird, müssen Sie
make in /etc/mail
ausführen um die Änderungen in die Datenbank zu
übernehmen./etc/mail/local-host-namesDas ist die Liste der Rechnernamen, die &man.sendmail.8; als
lokalen Rechnernamen akzeptiert. Setzen Sie alle Domänen oder
Rechner, für die sendmail
Mail empfangen soll, in diese Datei.
Wenn dieser Mail-Server zum Beispiel E-Mails für die
Domäne example.com und den Rechner
mail.example.com annehmen soll,
könnte seine local-host-names Datei so
aussehen:example.com
mail.example.comWird diese Datei geändert, muss &man.sendmail.8; neu
gestartet werden, damit es die Neuerungen einliest./etc/mail/sendmail.cfDie Hauptkonfigurations-Datei von
sendmail (sendmail.cf)
kontrolliert das allgemeine Verhalten von
sendmail, einschließlich allem vom
Umschreiben von E-Mail Adressen bis hin zum Übertragen von
Ablehnungsnachrichten an entfernte E-Mail-Server.
Mit solch einer mannigfaltigen Rolle ist die Konfigurationsdatei
natürlich ziemlich komplex und ihre Einzelheiten können
in diesem Kapitel nicht besprochen werden.
Glücklicherweise muss diese Datei selten für
Standard E-Mail-Server geändert werden.Die sendmail Hauptkonfigurationsdatei
kann mit &man.m4.1; Makros erstellt werden, die Eigenschaften
und Verhalten von sendmail definieren.
Einige der Details finden Sie in
/usr/src/contrib/sendmail/cf/README.Wenn Änderungen an dieser Datei vorgenommen werden, muss
sendmail neu gestartet werden, damit die
Änderungen Wirkung zeigen./etc/mail/virtusertableDie Datei virtusertable ordnet
Adressen für virtuelle Domänen und Mailboxen reellen
Mailboxen zu. Diese Mailboxen können lokal, auf entfernten
Systemen, Aliase in /etc/mail/aliases oder
eine Datei sein.Beispiel einer virtuellen Domänen Zuordnungroot@example.com root
postmaster@example.com postmaster@noc.example.net
@example.com joeIn dem obigen Beispiel haben wir einen Eintrag für die
Domäne example.com. Diese
Datei wird nach dem ersten übereinstimmenden Eintrag durchsucht.
Die erste Zeile ordnet root@example.com der
lokalen Mailbox root zu. Der nächste Eintrag ordnet
postmaster@example.com der Mailbox
postmaster auf dem Rechner
noc.example.net zu. Zuletzt, wenn keine
Übereinstimmung von example.com
gefunden wurde, wird der letzte Eintrag verglichen, der mit jeder
Mail-Nachricht übereinstimmt, die an jemanden bei
example.com adressiert wurde.
Diese werden der lokalen Mailbox joe zugeordnet.AndrewBoothmanGeschrieben von GregoryNeil ShapiroInformationen entnommen aus E-Mails geschrieben von
Wechseln des Mailübertragungs-AgentenE-MailMTA, wechselnWie bereits erwähnt, ist bei FreeBSD
sendmail schon als Ihr
Mailübertragungs-Agent installiert.
Deswegen ist es standardmäßig für Ihre aus- und
eingehenden E-Mails verantwortlich.Jedoch wollen einige Systemadministratoren den MTA ihres Systems
wechseln, was eine Reihe von Gründen haben kann. Diese Gründe
reichen von einfach einen anderen MTA ausprobieren wollen bis hin dazu
eine bestimmte Besonderheit zu benötigen oder ein Paket, welches
auf einen anderen Mailer angewiesen ist. Glücklicherweise macht
FreeBSD das Wechseln einfach, egal aus welchem Grund.Installieren eines neuen MTASie haben eine große Auswahl an verfügbaren
MTA-Programmen. Ein guter Startpunkt ist die
FreeBSD-Ports-Sammlung, wo Sie viele
finden werden. Selbstverständlich steht es Ihnen frei, jeden
MTA von überall her zu verwenden, solange Sie ihn unter
FreeBSD zum Laufen bekommen.Fangen Sie an, indem Sie Ihren neuen MTA installieren. Sobald
er installiert ist, gibt er Ihnen die Chance zu entscheiden ob er
wirklich Ihren Bedürfnissen genügt. Zusätzlich gibt
er Ihnen die Möglichkeit die neue Software zu konfigurieren,
bevor sie den Job von sendmail
übernimmt. Dabei sollten Sie sicherstellen, dass beim
Installieren der neuen Software keine Versuche unternommen werden,
System-Programme wie /usr/bin/sendmail zu
überschreiben. Ansonsten wurde Ihre neue E-Mail-Software in
den Dienst gestellt, bevor Sie sie konfiguriert haben.Für Informationen über die Konfiguration des von
Ihnen gewählten MTAs sehen Sie bitte in der dazugehörigen
Dokumentation nach.Ausschalten von sendmailDie Prozedur des Startens von sendmail
hat sich zwischen 4.5-RELEASE und 4.6-RELEASE signifikant
verändert. Daher beinhaltet auch die Prozedur des Abschaltens
subtile Unterschiede.FreeBSD 4.5-STABLE vor dem 4.4.2002 (inklusive 4.5-RELEASE und
frühere Versionen)Schreiben Siesendmail_enable="NO"in /etc/rc.conf. Das schaltet die
Verarbeitung eingehender E-Mails durch
sendmail ab. Aber bis
/etc/mail/mailer.conf nicht geändert
ist, wird sendmail weiterhin zum
Senden von E-Mails verwendet.FreeBSD 4.5-STABLE nach dem 4.4.2002 (inklusive 4.6-RELEASE
und spätere Versionen)Um sendmail komplett abzuschalten,
müssen Siesendmail_enable="NONE"in Ihre /etc/rc.conf schreiben.Wenn Sie sendmails Dienst für
ausgehende E-Mails auf diesem Weg abschalten, ist es wichtig,
dass Sie es mit einem voll funktionsfähigen alternativen
E-Mail-Zustellungssystem ersetzen. Wenn Sie wählen das nicht
zu tun, werden System-Funktionen wie &man.periodic.8; nicht
fähig sein, Ihre Ergebnisse per E-Mail zuzustellen, wie sie
es normalerweise erwarten. Viele Teile Ihres Systems können
erwarten, ein funktionierendes
sendmail-kompatibles System zu haben.
Wenn Anwendungen weiterhin versuchen mit
sendmails Programmdateien E-Mails zu
verschicken, nachdem Sie sie abgeschaltet haben, könnten
E-Mails in einer inaktiven
sendmail-Warteschlange landen, und
niemals geliefert werden.Wenn Sie nur sendmails Dienst
für eingehende E-Mail abschalten möchten, sollten Sie
sendmail_enable="NO"in /etc/rc.conf setzen. Mehr
Informationen zu sendmails Start-Optionen
sind vorhanden auf der &man.rc.sendmail.8; Manual Page.Starten Ihres neuen MTA beim Hochfahren des SystemsAbhängig davon, welche FreeBSD-Version Sie verwenden,
haben Sie die Wahl zwischen zwei Methoden, um Ihren
neuen MTA beim Hochfahren des System zu starten.FreeBSD 4.5-STABLE vor dem 11.4.2002 (inklusive 4.5-RELEASE
und frühere VersionenFügen Sie ein Skript zu
/usr/local/etc/rc.d, dessen Dateiname mit
.sh endet und von root
ausführbar ist. Das Skript sollte start
und stop Parameter annehmen. Beim Hochfahren
des Systems werden die System-Skripte den Befehl/usr/local/etc/rc.d/supermailer.sh startausführen, den Sie auch manuell zum Starten des Dienstes
verwenden können. Beim Herunterfahren des Systems werden die
System-Skripte die stop Option einsetzen, also
den Befehl/usr/local/etc/rc.d/supermailer.sh stopausführen, der ebenso manuell von Ihnen zum Stoppen des
Dienstes während das System läuft, verwendet werden kann.
FreeBSD 4.5-STABLE nach dem 11.4.2000 (inklusive 4.6-RELEASE
und spätere Versionen)Für neuere FreeBSD-Versionen, können Sie die oben
dargestellte Möglichkeit verwenden, oder Sie setzenmta_start_script="filename"in /etc/rc.conf, wobei
filename den Namen des Skripts darstellt,
das beim Hochfahren des Systems ausgeführt wird, um Ihren MTA
zu starten.Ersetzen von sendmail als
Standard-Mailer des SystemsDas Programm sendmail ist so
allgegenwärtig als Standard-Software auf &unix; Systemen, dass
einige Programme einfach annehmen es sei bereits installiert und
konfiguriert.
Aus diesem Grund stellen viele alternative MTAs ihre eigenen
kompatiblen Implementierung der sendmail
Kommandozeilen-Schnittstelle zur Verfügung. Das vereinfacht
ihre Verwendung als drop-in Ersatz für
sendmail.Folglich werden Sie, wenn Sie einen alternativen Mailer benutzen,
sicherstellen müssen, dass ein Programm, das versucht
sendmails Standard-Dateien wie
/usr/bin/sendmail auszuführen,
stattdessen Ihr gewähltes Mailübertragungsprogramm
ausführt.
Zum Glück stellt FreeBSD das &man.mailwrapper.8;-System
zur Verfügung, das diese Arbeit für Sie erledigt.Wenn sendmail arbeitet wie es
installiert wurde, werden Sie in
/etc/mail/mailer.conf etwas wie das Folgende
vorfinden:sendmail /usr/libexec/sendmail/sendmail
send-mail /usr/libexec/sendmail/sendmail
mailq /usr/libexec/sendmail/sendmail
newaliases /usr/libexec/sendmail/sendmail
hoststat /usr/libexec/sendmail/sendmail
purgestat /usr/libexec/sendmail/sendmailDas bedeutet, dass wenn eines der gewöhnlichen Kommandos
(wie zum Beispiel /usr/bin/sendmail selbst)
ausgeführt wird, das System tatsächlich eine Kopie des
mailwrapper mit dem Namen sendmail startet, die
mailer.conf überprüft und
/usr/libexec/sendmail/sendmail ausführt.
Mit diesem System lassen sich die Programme, die für die
sendmail-Funktionen gestartet werden,
leicht ändern.Daher könnten Sie, wenn Sie wollten, dass
/usr/local/supermailer/bin/sendmail-compat
anstelle von sendmail ausgeführt
wird, /etc/mailer.conf wie folgt abändern:
sendmail /usr/local/supermailer/bin/sendmail-compat
send-mail /usr/local/supermailer/bin/sendmail-compat
mailq /usr/local/supermailer/bin/mailq-compat
newaliases /usr/local/supermailer/bin/newaliases-compat
hoststat /usr/local/supermailer/bin/hoststat-compat
purgestat /usr/local/supermailer/bin/purgestat-compatFertigstellenSobald Sie alles Ihren Wünschen entsprechend
konfiguriert haben, sollten Sie entweder die
sendmail Prozesse beenden, die Sie
nicht mehr benötigen, und die zu Ihrer neuen Software
zugehörigen Prozesse starten, oder einfach das System
neustarten. Das Neustarten des Systems gibt Ihnen auch die
Gelegenheit sicherzustellen, dass Sie Ihr System korrekt
konfiguriert haben, um Ihren neuen MTA automatisch beim
Hochfahren zu starten.FehlerbehebungHier finden sich ein paar häufig gestellte Fragen und ihre
Antworten, die von der FAQ
übernommen wurden.Warum muss ich einen FQDN (fully-qualified domain name/
voll ausgeschriebenen Domänennamen) für meine Rechner
verwenden?Vielleicht liegen die Rechner in einer unterschiedlichen
Domäne; zum Beispiel, wenn Sie sich in
foo.bar.edu befinden, und einen Rechner
namens mumble in der
bar.edu Domäne erreichen
wollen, müssen Sie ihn mit dem voll ausgeschriebenen
Domänennamen mumble.bar.edu
kontaktieren, anstatt bloß mit mumble.Traditionell wurde das von dem BSD BIND
Resolver erlaubt. Wie auch immer,
die aktuelle Version von BIND, die mit
FreeBSD ausgeliefert wird, bietet keine Standardabkürzungen
für nicht komplett angegebene Domänennamen außerhalb der
Domäne, in der Sie sich befinden. Daher muss ein
nicht-qualifizierter Rechner mumble entweder als
mumble.foo.bar.edu gefunden werden,
oder er wird in der root Domäne gesucht.Damit unterscheidet es sich von vorherigem Verhalten, bei dem
die Suche über mumble.bar.edu
und mumble.edu lief. Schauen Sie
sich RFC 1535 an, wenn Sie wissen möchten, warum das als
schlecht und sogar als Sicherheitsloch angesehen wurde.Um das zu umgehen, können Sie die Linie
search foo.bar.edu bar.edu
anstatt der vorherigen
domain foo.bar.edu
in Ihre /etc/resolv.conf einsetzen. Aber
stellen Sie sicher, dass die Suchordnung nicht die Begrenzung von
lokaler und öffentlicher Administration, wie
RFC 1535 sie nennt, überschreitet.MX-EintragWarum meldet Sendmail
mail loops back to myself?Dies wird in der Sendmail-FAQ wie folgt beantwortet:Ich erhalte folgende Fehlermeldungen:
553 MX list for domain.net points back to relay.domain.net
554 <user@domain.net>... Local configuration error
Wie kann ich dieses Problem lösen?
Sie haben durch die Benutzung eines MX-Eintrags eingestellt, dass
Mail für die Domäne (z.B. domain.net) an einen speziellen
Host (in diesem Fall relay.domain.net) weitergeleitet wird,
aber der Relay-Host erkennt sich selbst nicht als
domain.net. Fügen Sie domain.net in /etc/mail/local-host-names
[die Datei hieß vor der Version 8.10 /etc/sendmail.cw]
(falls Sie FEATURE(use_cw_file) benutzen) oder "Cw domain.net"
in /etc/mail/sendmail.cf ein.Die aktuelle Version der Sendmail-FAQ
wird nicht mehr mit dem Sendmail-Release verwaltet. Sie
wird jedoch regelmäßig nach comp.mail.sendmail,
comp.mail.misc,
comp.mail.smail,
comp.answers und
news.answers
gepostet. Sie können auch eine Kopie per E-Mail
bekommen, indem Sie eine Mail mit dem Inhalt send
usenet/news.answers/mail/sendmail-faq an
mail-server@rtfm.mit.edu schicken.PPPWie kann ich einen E-Mail-Server auf einem
Anwahl-PPP Rechner betreiben?Sie wollen einen FreeBSD-Rechner in einem LAN an das
Internet anbinden. Der FreeBSD-Rechner wird ein E-Mail
Gateway für das LAN.
Die PPP-Verbindung ist keine Standleitung.MX-EintragEs gibt mindestens zwei Wege um dies zu tun. Einer davon ist
UUCP zu verwenden.Ein anderer Weg ist, von einem immer mit dem Internet
verbundenen Server einen sekundären MX-Dienst für Ihre
Domäne zur Verfügung gestellt zu bekommen. Wenn die
Domäne Ihrer Firma
example.com ist, und Ihr
Internet-Dienstanbieter
example.net so eingestellt hat,
dass er Ihrer Domäne einen sekundären MX-Dienst zur
Verfügung stellt:example.com. MX 10 bigco.com.
MX 20 example.net.Nur ein Rechner sollte als Endempfänger angegeben sein
(fügen Sie Cw example.com zu
/etc/sendmail.cf auf example.com).Wenn das sendmail des Versenders versucht,
die E-Mail zuzustellen, wird es versuchen, Sie über die
Modem-Verbindung (example.com)
zu erreichen. Wahrscheinlich wird es keine Verbindung zustande
bringen können, da Sie nicht eingewählt sind.
sendmail wird die E-Mail automatisch zu der
sekundären MX-Stelle geliefert, zu Ihrem Internet-Provider
(example.net).
Die sekundäre MX-Stelle wird periodisch versuchen
versuchen eine Verbindung zu Ihnen aufzubauen, um die E-Mail zu
der primären MX-Stelle
(example.com zu liefern.Eventuell wollen Sie etwas wie dies als Login-Skript:#!/bin/sh
# Put me in /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppmyispWenn Sie ein separates Login-Skript für einen Benutzer
erstellen wollen, könnten Sie stattdessen
sendmail -qRexample.com in dem oben gezeigten
Skript verwenden. Das erzwingt die sofortige Verarbeitung der
E-Mails in Ihrer Warteschlange für
example.comEine weitere Verfeinerung der Situation ist wie folgt:Die Nachricht wurde der &a.isp; entnommen.> wir stellen einem Kunden den sekundären MX zur Verfügung.
> Der Kunde verbindet sich mit unseren Diensten mehrmals am Tag
> automatisch um die E-Mails zu seinem primären MX zu holen
> (wir wählen uns nicht bei ihm ein, wenn E-Mails für seine
> Domäne eintreffen). Unser sendmail sendet den Inhalt der
> E-Mail-Warteschlange alle 30 Minuten. Momentan muss er 30 Minuten
> eingewählt bleiben um sicher zu sein, dass alle seine E-Mails
> beim primären MX eingetroffen sind.
>
> Gibt es einen Befehl, der sendmail dazu bringt, alle E-Mails sofort
> zu senden? Der Benutzer hat natürlich keine root-Rechte auf
> unserer Maschine.
In der privacy flags Sektion von sendmail.cf befindet sich die
Definition Opgoaway,restrictqrun
Entferne restrictqrun um nicht-root Benutzern zu erlauben, die Verarbeitung
der Nachrichten-Warteschlangen zu starten. Möglicherweise willst du
auch die MX neu sortieren. Wir sind der primäre MX für unsere
Kunden mit diesen Wünschen und haben definiert:
# Wenn wir der beste MX für einen Rechner sind, versuche es direkt
# anstatt einen lokalen Konfigurationsfehler zu generieren.
OwTrue
Auf diesem Weg liefern Gegenstellen direkt zu dir, ohne die Kundenverbindung
zu versuchen. Dann sendest du zu deinem Kunden. Das funktioniert nur
für Rechner, du musst also deinen Kunden dazu bringen,
ihre E-Mail Maschine customer.com zu nennen, sowie
hostname.customer.com im DNS. Setze einfach einen A-Eintrag
in den DNS für customer.com.Warum bekomme ich die Fehlermeldung Relaying
Denied, wenn ich E-Mails von anderen Rechnern
verschicke?In der standardmäßigen FreeBSD-Installation wird
sendmail nur dazu konfiguriert,
E-Mails von dem Rechner, auf dem es läuft, zu senden.
Wenn zum Beispiel ein POP-Server
installiert ist, können Benutzer ihre E-Mails von der
Schule, von der Arbeit oder von anderen Orten
überprüfen. Sie werden jedoch keine E-Mails von
außen verschicken können. Typischerweise
wird ein paar Sekunden nach dem Versuch eine E-Mail
von MAILER-DAEMON mit einer
5.7 Relaying Denied Fehlermeldung
versendet werden.Es sind mehrere Wege möglich, dies zu umgehen. Die
geradlinigste Lösung ist die Adresse Ihres
Internet-Dienstanbieters in die Datei für die
Weiterleitungs-Domänen zu platzieren. Das lässt sich
schnell erreichen mit:&prompt.root; echo "your.isp.example.com" > /etc/mail/relay-domainsNach Erstellen oder Editieren dieser Datei müssen
Sie sendmail neu starten.
Das funktioniert großartig wenn Sie ein
Server-Administrator sind und E-Mails nicht lokal
versenden, oder gerne ein Client/System mit grafischer
Oberfläche auf einer anderen Maschine oder sogar
über einen anderen Internet-Dienstanbieter verwenden
wollen. Es ist auch sehr nützlich, wenn Sie nur ein
oder zwei E-Mail Accounts eingerichtet haben. Soll eine
größere Anzahl Adressen hinzugefügt werden,
können Sie die Datei einfach in Ihrem favorisierten
Editor öffnen und die Domänen anfügen,
je eine pro Zeile:your.isp.example.com
other.isp.example.net
users-isp.example.org
www.example.orgJetzt wird jede E-Mail, die durch Ihr System von
einem der in diese Liste eingetragenen Rechner geschickt
wurde, ihr Ziel erreichen (vorausgesetzt, der Benutzer
hat einen Account auf Ihrem System). Dies ist ein sehr
schöner Weg, um Benutzern das entfernte E-Mail Versenden
von Ihrem System zu erlauben, ohne dem Massenversand
(SPAM) die Tür zu öffnen.Weiterführende ThemenDie folgenden Abschnitte behandeln kompliziertere Themen wie
E-Mail-Konfiguration und das Einrichten von E-Mail für Ihre
ganze Domäne.Grundlegende KonfigurationMit der Software im Auslieferungszustand sollten Sie fähig
sein, E-Mails an externe Rechner zu senden, solange Sie
/etc/resolv.conf eingerichtet haben oder Ihren
eigenen Name Server laufen lassen. Wenn Sie die E-Mails für
Ihren Rechner zu einem anderen Rechner geliefert haben wollen, gibt
es zwei Methoden:Betreiben Sie Ihren eigenen Name Server und haben Sie Ihre
eigene Domäne, zum Beispiel
FreeBSD.org.Lassen Sie sich E-Mails direkt zu Ihrem Rechner liefern.
Dies geschieht indem E-Mails direkt zu dem aktuellen DNS Namen
Ihrer Maschine geliefert werden. Zum Beispiel
example.FreeBSD.org.Ungeachtet welche Methode Sie auswählen, um E-Mails direkt
zu Ihrem Rechner geliefert zu bekommen, benötigen Sie eine
permanente (statische) IP-Adresse (keine dynamische PPP-Anwahl).
Wenn Sie sich hinter einer Firewall befinden, muss diese den
SMTP-Verkehr an Sie weiterleiten. Wollen Sie E-Mails an Ihrem
Rechner selbst empfangen, müssen Sie eines der folgenden
Dinge sicherstellen:Vergewissern Sie sich, dass der MX-Eintrag in Ihrem DNS zu
der IP-Adresse Ihres Rechners zeigt.Stellen Sie sicher, dass sich für Ihren Rechner kein
MX-Eintrag im DNS befindet.Jede der erwähnten Konfigurationsmöglichkeiten erlaubt
Ihnen, E-Mails direkt auf Ihrem Rechner zu empfangen.Versuchen Sie das:&prompt.root; hostname
example.FreeBSD.org
&prompt.root; host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XXWenn Sie diese Ausgabe erhalten, sollten direkt an
yourlogin@example.FreeBSD.org geschickte E-Mails
ohne Probleme funktionieren.Sehen Sie stattdessen etwas wie dies:&prompt.root; host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.orgSo wird jede an Ihren Rechner
(example.FreeBSD.org) gesandte E-Mail
auf hub unter dem gleichen Benutzernamen gesammelt
anstatt direkt zu Ihrem Rechner geschickt zu werden.Die obige Information wird von Ihrem DNS-Server verwaltet.
Der DNS-Eintrag, der die E-Mail Routen-Information enthält, ist der
Mail
eXchange Eintrag. Existiert kein
MX-Eintrag, werden E-Mails direkt anhand der IP-Adresse geliefert.
Der MX-Eintrag für
freefall.FreeBSD.org sah einmal so aus:
freefall MX 30 mail.crl.net
freefall MX 40 agora.rdrop.com
freefall MX 10 freefall.FreeBSD.org
freefall MX 20 who.cdrom.comWie Sie sehen können, hatte freefall
viele MX-Einträge. Die kleinste MX-Nummer ist der Rechner, der
die E-Mails letztendlich bekommt, wobei die anderen temporär
E-Mails in Warteschlangen einreihen während
freefall beschäftigt oder unerreichbar ist.Um besonders nützlich zu sein, sollten stellvertretende
MX-Seiten nicht dieselben Internet-Verbindungen wie Ihre eigene
verwenden. Für Ihren Internet-Dienstleister oder andere
sollte es kein Problem darstellen, Ihnen diesen Dienst zur
Verfügung zu stellen.E-Mails für Ihre DomäneUm einen E-Mail-Server (auch bekannt als
Mail-Server) einzurichten, benötigen Sie eine Umlenkung
jeglicher E-Mails zu Ihm, die an die verschiedenen Workstations
gesendet werden. Im Grunde wollen Sie jede an Ihre Domäne
gesendete E-Mail abfangen (in diesem Fall
*.FreeBSD.org), damit Ihre Benutzer
E-Mails mittels POP oder direkt auf dem Server
überprüfen können.Am einfachsten ist es, wenn Accounts mit gleichen
Benutzernamen auf beiden
Maschinen existieren. Verwenden Sie &man.adduser.8;, um
dies zu erreichen.Der E-Mail-Server, den Sie verwenden wollen, muss als
für den E-Mail-Austausch zuständiger Rechner
auf jeder Workstation im Netzwerk gekennzeichnet werden. Dies wird
in der DNS-Konfiguration so ausgeführt:example.FreeBSD.org A 204.216.27.XX ; Workstation
MX 10 hub.FreeBSD.org ; MailhostDiese Einstellung wird E-Mail für die Workstations zu dem
E-Mail-Server leiten, wo auch immer der A-Eintrag hinzeigt.
Die E-Mails werden zum MX-Rechner gesandt.Sofern Sie nicht einen DNS-Server laufen haben, können
Sie diese Einstellung nicht selbst vornehmen. Ist es Ihnen nicht
möglich einen eigenen DNS-Server laufen zu lassen, reden Sie
mit Ihren Internet-Dienstleister oder wer auch immer Ihre
DNS-Verwaltung übernimmt.Wenn Sie ein virtuelles E-Mail System anbieten, werden
die folgenden Informationen nützlich sein. Für ein Beispiel
nehmen wir an, Sie haben einen Kunden mit einer eigenen Domäne,
in diesem Fall customer1.org und
Sie wollen jegliche E-Mails für
customer1.org zu Ihrem
E-Mail-Server gesendet haben, der
mail.myhost.com heißt.
Der Eintrag in Ihrem DNS sollte wie folgender aussehen:customer1.org MX 10 mail.myhost.com
Sie benötigen keinen A-Eintrag, wenn
Sie für die Domain nur E-Mails verwalten wollen.Bedenken Sie, dass das Pingen von
customer1.org nicht möglich
ist, solange kein A-Eintrag für diese Domäne existiert.
Jetzt müssen Sie nur noch
sendmail auf Ihrem Mailrechner mitteilen,
für welche Domänen und/oder Rechnernamen es Mails akzeptieren
soll. Es gibt einige Wege wie dies geschehen kann. Die Folgenden
funktionieren alle gleichermaßen:Fügen Sie die Rechnernamen zu Ihrer
/etc/sendmail.cw Datei hinzu, wenn Sie
FEATURE(use_cw_file) verwenden. Ab
sendmail 8.10 heißt diese Datei
/etc/mail/local-host-names.Tragen Sie eine Zeile mit dem Inhalt
Cwyour.host.com in Ihre
/etc/sendmail.cf Datei (beziehungsweise
/etc/mail/sendmail.cf ab
sendmail 8.10) ein.SMTP über UUCPDie sendmail-Konfigurationsdatei,
die mit FreeBSD ausgeliefert wird, ist für Systeme geeignet,
die direkt ans Internet angeschlossen sind. Systeme, die
ihre E-Mails per UUCP austauschen wollen, müssen eine andere
Konfigurationsdatei installieren.Die manuelle Bearbeitung von
/etc/mail/sendmail.cf ist nur etwas
für Puristen. Sendmail Version 8 bietet die neue
Möglichkeit der Generierung von Konfigurationsdateien
über eine Vorverarbeitung mit &man.m4.1;, wobei die
tatsächliche, händische Konfiguration auf einer
höheren Abstraktionsstufe stattfindet. Sie sollten
die Konfigurationsdateien unter
/usr/src/usr.sbin/sendmail/cf
benutzen.Für den Fall, dass Sie Ihr System nicht mit
dem kompletten Quellcode installiert haben, wurden die
nötigen Dateien zur Konfiguration von
sendmail in
einer separaten Quelldistribution für Sie extrahiert.
Wenn Sie Ihre CD-ROM gemountet haben, müssen Sie die
folgenden Schritte ausführen:&prompt.root; cd /cdrom/src
&prompt.root; cat scontrib.?? | tar xzf - -C /usr/src contrib/sendmailKeine Panik, das sind nur ein paar hundert Kilobyte.
Die Datei README im Verzeichnis
cf kann zur grundlegenden
Einführung in die &man.m4.1;-Konfiguration dienen.Zur Zustellung über UUCP sind Sie am besten damit
beraten, die mailertable-Datenbank
zu benutzen. Mit dieser Datenbank ermittelt
sendmail mit welchem
Protokoll und wohin eine E-Mail zugestellt werden soll.Zunächst müssen Sie Ihre
.mc-Datei erstellen. Das Verzeichnis
/usr/src/usr.sbin/sendmail/cf/cf ist
die Basis für diese Dateien. Sehen Sie sich um, es
gibt bereits einige Beispiele. Wenn Sie Ihre Datei
foo.mc genannt haben, müssen Sie
die folgenden Befehle ausführen, um sie in eine
gültige sendmail.cf umzuwandeln:&prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf
&prompt.root; make foo.cf
&prompt.root; cp foo.cf /etc/mail/sendmail.cfEine typische .mc-Datei
könnte so aussehen:VERSIONID(`Your version number')
OSTYPE(bsd4.4)
FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
define(`UUCP_RELAY', your.uucp.relay)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')
MAILER(local)
MAILER(smtp)
MAILER(uucp)
Cw your.alias.host.name
Cw youruucpnodename.UUCPDie Einstellungen accept_unresolvable_domains,
nocanonify und
confDONT_PROBE_INTERFACES werden die
Benutzung von DNS bei der Zustellung von Mails verhindern.
Die Klausel UUCP_RELAY wird aus
seltsamen Gründen benötigt – fragen Sie nicht,
warum. Setzen Sie dort einfach den Namen eines Hosts ein,
der in der Lage ist, Adressen mit der Pseudodomäne
.UUCP zu behandeln; wahrscheinlich werden Sie dort den
Relayhost Ihres ISP eintragen.Wenn Sie soweit sind, müssen Sie die Datei
/etc/mail/mailertable erzeugen. Hierzu
wieder ein typisches Beispiel:#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
#
. uucp-dom:your.uucp.relayEin komplexeres Beispiel könnte wie folgt
aussehen:#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
#
horus.interface-business.de uucp-dom:horus
.interface-business.de uucp-dom:if-bus
interface-business.de uucp-dom:if-bus
.heep.sax.de smtp8:%1
horus.UUCP uucp-dom:horus
if-bus.UUCP uucp-dom:if-bus
. uucp-dom:Die ersten drei Zeilen behandeln
spezielle Fälle, in denen an Domänen adressierte
E-Mails nicht über die Standard-Route versendet werden
sollen, sondern zu einem UUCP-Nachbarn, um den Zustellweg
abzukürzen. Die nächsten Zeilen
behandeln E-Mails an Rechner in der lokalen Domain.
Diese Mails können direkt
per SMTP zugestellt werden. Schließlich werden die
UUCP-Nachbarn in der Notation mit der Pseudodomäne
.UUCP aufgeführt, um die Standardregeln mit
uucp-neighbour!recipient
zu überschreiben. Die letzte Zeile besteht stets aus
einem einzelnen Punkt, der als Ihr Universalgateway in die
Welt dient. Alle Knoten hinter dem Schlüsselwort
uucp-dom: müssen gültige
UUCP-Nachbarn sein, was Sie mit dem Befehl
uuname überprüfen
können.Als Erinnerung daran, dass diese Datei in eine
DBM-Datenbankdatei konvertiert werden muss, bevor sie
benutzt werden kann, sollte der Befehl hierzu als
Kommentar am Anfang der mailertable
plaziert werden. Sie müssen den Befehl jedes Mal
ausführen, wenn Sie die mailertable
geändert haben.Abschließender Hinweis: Wenn Sie unsicher sind,
ob bestimmte Zustellwege funktionieren, erinnern Sie sich
an die Option von
sendmail. Sie startet
sendmail im
Adress-Testmodus; geben Sie
einfach 3,0, gefolgt von der Adresse,
für die Sie den Zustellweg testen möchten, ein.
Die letzte Zeile nennt Ihnen den benutzten Mailagenten,
den Zielhost, mit dem dieser Agent aufgerufen wird und die
(möglicherweise übersetzte) Adresse. Verlassen Sie diesen
Modus, indem Sie
CtrlD eingeben.&prompt.user; sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
>3,0 foo@example.com
canonify input: foo @ example . com
...
parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
>^DBillMoranBeigetragen von Ausgehende E-Mail über einen Relay versendenIn vielen Fällen wollen Sie E-Mail nur über
einen Relay verschicken. Zum Beispiel:Sie wollen von Ihrem Arbeitsplatz Programme wie
&man.send-pr.1; benutzen. Dazu soll der Relay
Ihres ISPs verwendet werden.Ein Server, der E-Mails nicht selbst verarbeitet,
soll alle E-Mails zu einem Relay schicken.So ziemlich jeder MTA kann diese
Aufgaben erfüllen. Leider ist es oft schwierig, einen
vollwertigen MTA so zu konfigurieren,
dass er lediglich ausgehende E-Mails weiterleitet.
Es ist übertrieben, Programme wie
sendmail und
postfix nur für diesen
Zweck einzusetzen.Weiterhin kann es sein, dass die Bestimmungen Ihres
Internetzugangs es verbieten, einen eigenen Mail-Server
zu betreiben.Um die hier beschriebenen Anforderungen zu erfüllen,
installieren Sie einfach den Port
mail/ssmtp. Führen
Sie dazu als root die nachstehenden
Befehle aus:&prompt.root; cd /usr/ports/mail/ssmtp
&prompt.root; make install replace cleanNach der Installation konfigurieren Sie
mail/ssmtp mit den
folgenden vier Zeilen in
/usr/local/etc/ssmtp/ssmtp.conf:root=yourrealemail@example.com
mailhub=mail.example.com
rewriteDomain=example.com
hostname=_HOSTNAME_Stellen Sie sicher, dass Sie eine gültige E-Mail-Adresse
für root verwenden. Geben Sie
für mail.example.com
den Mail-Relay Ihres ISPs an (einige ISPs nennen den
Relay Postausgangsserver oder
SMTP-Server).Deaktivieren Sie sendmail
indem Sie in /etc/rc.confsendmail_enable="NONE" angeben.mail/ssmtp verfügt
über weitere Optionen. Die Musterkonfiguration in
/usr/local/etc/ssmtp oder die Hilfeseite
von ssmtp enthalten weitere
Beispiele.Wenn Sie ssmtp wie hier
beschrieben eingerichtet haben, funktionieren Anwendungen,
die E-Mails von Ihrem Rechner verschicken. Sie verstoßen
damit auch nicht gegen Bestimmungen Ihres ISPs und laufen
nicht in Gefahr, dass Ihr Rechner zum Versenden von
Spams missbraucht wird.E-Mail über Einwahl-VerbindungenWenn Sie eine feste IP-Adresse haben, müssen Sie
die Standardeinstellungen wahrscheinlich gar nicht
ändern. Stellen Sie Ihren Hostnamen entsprechend
Ihrem zugeordneten Internetnamen ein und
sendmail übernimmt
das Übrige.Wenn Sie eine dynamische IP-Adresse haben und eine
PPP-Wählverbindung zum
Internet benutzen, besitzen Sie wahrscheinlich eine
Mailbox auf dem Mailserver Ihres ISPs. Lassen
Sie uns annehmen, die Domäne ihres ISPs sei example.net und Ihr Benutzername
user; außerdem nehmen wir an,
dass Sie Ihre Maschine bsd.home
genannt haben und, dass Ihr ISP ihnen gesagt hat, dass Sie
relay.example.net als Mail-Relayhost
benutzen können.Um Mails aus Ihrer Mailbox abzuholen, müssen Sie
ein gesondertes Programm installieren;
fetchmail ist eine gute Wahl,
weil es viele verschiedene Protokolle unterstützt.
Das Programm können Sie als Paket oder von der
Ports-Collection (mail/fetchmail)
installieren. Für gewöhnlich wird von Ihrem
ISP POP zur
Verfügung gestellt. Falls Sie sich dafür
entschieden haben, User-PPP zu benutzen,
können Sie durch folgenden Eintrag in der Datei
/etc/ppp/ppp.linkup Ihre Mails
automatisch abholen lassen, wenn eine Verbindung zum Netz
aufgebaut wird:MYADDR:
!bg su user -c fetchmailFalls Sie (wie unten gezeigt)
sendmail benutzen, um Mails an
nicht-lokale Benutzer zu versenden, fügen Sie den
Befehl!bg su user -c "sendmail -q"nach dem oben gezeigten Eintrag ein. Das
veranlasst sendmail, Ihre
ausgehenden Mails zu verarbeiten, sobald eine Verbindung
zum Internet aufgebaut wird.Nehmen wir an, dass auf bsd.home
ein Benutzer user existiert.
Erstellen Sie auf bsd.home
im Heimatverzeichnis von user die Datei
.fetchmailrc:poll example.net protocol pop3 fetchall pass MySecret;Diese Datei sollte für niemandem außer
user lesbar sein, weil sie das
Passwort MySecret enthält.Um Mails mit dem richtigen from:-Header
zu versenden, müssen Sie sendmail
mitteilen, dass es user@example.net und nicht
user@bsd.home benutzen soll. Eventuell
möchten Sie auch, dass sendmail
alle Mails über relay.example.net
versendet, um eine schnellere Übertragung von Mails zu
gewährleisten.Die folgende .mc-Datei sollte
ausreichen:VERSIONID(`bsd.home.mc version 1.0')
OSTYPE(bsd4.4)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Cwlocalhost
Cwbsd.home
MASQUERADE_AS(`example.net')dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(nocanonify)dnl
FEATURE(nodns)dnl
define(`SMART_HOST', `relay.example.net')
Dmbsd.home
define(`confDOMAIN_NAME',`bsd.home')dnl
define(`confDELIVERY_MODE',`deferred')dnlIm vorherigen Abschnitt finden Sie Details dazu, wie
Sie aus dieser .mc-Datei eine Datei
sendmail.cf erstellen können.
Vergessen Sie auch nicht,
sendmail neu zu starten,
nachdem Sie sendmail.cf
verändert haben.JamesGorhamGeschrieben von SMTP-AuthentifizierungEin Mail-Server, der SMTP-Authentifizierung
verwendet, bietet einige Vorteile. Die erforderliche
Authentifizierung erhöht die Sicherheit von
sendmail und Benutzer, die auf wechselnden
entfernten Rechnern arbeiten, können denselben Mail-Server
verwenden ohne Ihr Benutzerprogramm jedes Mal neu zu
konfigurieren.Installieren Sie den Port security/cyrus-sasl. Der Port
verfügt über einige Optionen, die während
der Übersetzung festgelegt werden. Das in diesem Abschnitt
diskutierte Beispiel verwendet die Option
.Editieren Sie nach der Installation von security/cyrus-sasl die Datei
/usr/local/lib/sasl/Sendmail.conf (erstellen
Sie die Datei, wenn sie nicht existiert) und fügen Sie die
folgende Zeile hinzu:pwcheck_method: passwdZur Authentifizierung eines Benutzers verwendet
sendmail dann die
passwd-Datenbank von FreeBSD. Damit
müssen zum Versenden von E-Mails keine zusätzlichen
Accounts und Passwörter angelegt werden. Die Benutzer
verwenden dasselbe Passwort zum Anmelden wie zum Verschicken von
E-Mails.Fügen Sie jetzt in /etc/make.conf
die nachstehenden Zeilen hinzu:SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsaslBeim Übersetzen von sendmail
werden damit die cyrus-sasl-Bibliotheken benutzt.
Stellen Sie daher vor dem Übersetzen von
sendmail sicher, dass der Port
cyrus-sasl installiert
ist.Übersetzen Sie sendmail mit
den nachstehenden Kommandos:&prompt.root; cd /usr/src/usr.sbin/sendmail
&prompt.root; make cleandir
&prompt.root; make obj
&prompt.root; make
&prompt.root; make installsendmail sollte sich ohne Probleme
übersetzen lassen, wenn die Dateien in
/usr/src nicht verändert wurden und die
benötigten Bibliotheken installiert sind.Nachdem Sie sendmail installiert
haben, editieren Sie /etc/mail/freebsd.mc
beziehungsweise die verwendete .mc-Datei.
Viele Administratoren verwenden die Ausgabe von &man.hostname.1;,
um der .mc-Datei einen eindeutigen Namen
zu geben. Fügen Sie die folgenden Zeilen in die
.mc-Datei ein:dnl set SASL options
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnlDiese Anweisungen konfigurieren die Methoden, die
sendmail zur Authentifizierung
verwendet. Lesen Sie die mitgelieferte Dokumentation, wenn
Sie eine andere Methode als verwenden
wollen.Abschließend rufen Sie &man.make.1; im Verzeichnis
/etc/mail auf. Damit wird aus der
.mc-Datei eine neue
.cf-Datei (zum Beispiel
freebsd.cf) erzeugt. Das Kommando
make install restart installiert die Datei
nach /etc/mail/sendmail.cf und startet
sendmail neu. Weitere Informationen
entnehmen Sie bitte
/etc/mail/Makefile.Wenn alles funktioniert hat, tragen Sie in Ihrem
Mail-Benutzerprogramm das Passwort für die Authentifizierung ein
und versenden Sie zum Testen eine E-Mail. Wenn Sie Probleme haben,
setzen Sie den von
sendmail auf 13 und
untersuchen die Fehlermeldungen in
/var/log/maillog.Damit die SMTP-Authentifizerung beim Systemstart aktiviert
wird, fügen Sie die nachstehenden Zeilen in
/etc/rc.conf ein:sasl_pwcheck_enable="YES"
sasl_pwcheck_program="/usr/local/sbin/pwcheck"Weitere Information erhalten Sie im WWW auf der
Webseite von
sendmail.MarcSilverBeigetragen von E-Mail-ProgrammeMail-User-AgentsE-Mail-ProgrammeAnwendungen, die E-Mails versenden und empfangen, werden
als E-Mail-Programme oder Mail-User-Agents (MUA)
bezeichnet. Mit der Entwicklung und Ausbreitung von E-Mail
wachsen auch die E-Mail-Programme und bieten Benutzern
mehr Funktionen und höhere Flexibilität. Unter
&os; laufen zahlreiche E-Mail-Programme, die Sie alle
mit der &os; Ports Collection
installieren können. Sie können wählen zwischen
Programmen mit grafischer Benutzeroberfläche,
wie evolution oder
balsa, konsolenorientierten
Programmen wie mutt,
pine oder mail,
oder auch Programmen mit Web-Schnittstellen, die von einigen
großen Institutionen benutzt werden.mailDas standardmäßig unter &os; installierte
E-Mail-Programm ist &man.mail.1;. Das Programm ist
konsolenorientiert und enthält alle Funktionen,
die zum Versand und Empfang textbasierter
E-Mails erforderlich sind. Allerdings lassen sich
Anhänge mit mail nur schwer
bearbeiten und kann mail kann nur auf
lokale Postfächer zugreifen.mail kann nicht direkt auf
POP- oder IMAP-Server
zugreifen. Entfernte Postfächer können aber
mit einer Anwendung wie fetchmail
in die lokale Datei mbox geladen
werden. fetchmail wird später
in diesem Kapitel besprochen ().Um E-Mails zu versenden oder zu empfangen, starten
Sie einfach mail wie im nachstehenden
Beispiel:&prompt.user; mailDas Werkzeug mail liest automatisch
den Inhalt des Benutzer-Postfachs im Verzeichnis
/var/mail. Sollte
das Postfach leer sein, beendet sich mail
mit der Nachricht, dass keine E-Mails vorhanden sind.
Wenn das Postfach gelesen wurde, wird die Benutzeroberfläche
gestartet und eine Liste der E-Mails angezeigt.
Die E-Mails werden automatisch nummeriert wie
im folgenden Beispiel gezeigt:Mail version 8.1 6/6/93. Type ? for help.
"/var/mail/marcs": 3 messages 3 new
>N 1 root@localhost Mon Mar 8 14:05 14/510 "test"
N 2 root@localhost Mon Mar 8 14:05 14/509 "user account"
N 3 root@localhost Mon Mar 8 14:05 14/509 "sample"Einzelne Nachrichten können Sie jetzt mit dem
mail-Kommando t
gefolgt von der Nummer der Nachricht lesen. Im nachstehenden
Beispiel lesen wir die erste E-Mail:& t 1
Message 1:
From root@localhost Mon Mar 8 14:05:52 2004
X-Original-To: marcs@localhost
Delivered-To: marcs@localhost
To: marcs@localhost
Subject: test
Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)
Das ist eine Test-Nachricht. Antworte bitte!Die Taste t zeigt die Nachricht zusammen
mit dem vollständigen Nachrichtenkopf an. Wenn Sie
die Liste der E-Mails erneut sehen wollen, drücken
Sie die Taste h.Um auf eine E-Mail zu antworten, benutzen Sie
im Programm mail entweder die
Taste R oder die Taste r.
Mit der Taste R weisen Sie
mail an, dem Versender der
Nachricht zu antworten. Mit der Taste r
antworten Sie nicht nur dem Versender sondern auch
allen Empfängern der Nachricht. Sie können
zusammen mit diesen Kommandos eine Zahl angeben,
um die E-Mail, auf die Sie antworten wollen, auszusuchen.
Wenn Sie den Befehl abgesetzt haben, schreiben Sie
Ihre Antwort und beenden die Eingabe mit einem
einzelnen Punkt (.) auf einer
neuen Zeile. Den Vorgang zeigt das nachstehende Beispiel:& R 1
To: root@localhost
Subject: Re: test
Danke, ich habe deine E-Mail erhalten.
.
EOTNeue E-Mails können Sie mit der Taste
m verschicken. Geben Sie dabei die
E-Mail-Adresse des Empfängers an. Sie können
auch mehrere durch Kommata (,) getrennte
Empfänger angeben. Geben Sie dann den Betreff
(subject) der Nachricht
gefolgt von der Nachricht selbst ein. Schließen
Sie die Nachricht mit einem einzelnen Punkt (.)
auf einer neuen Zeile ab.& mail root@localhost
Subject: Ich habe die E-Mails im Griff!
Jetzt kann ich E-Mails versenden und empfangen ... :)
.
EOTDie Taste ? zeigt zu jeder Zeit
einen Hilfetext an. Wenn Sie weitere Hilfe benötigen,
lesen Sie bitte die Hilfeseite &man.mail.1;.Wie vorhin gesagt, wurde das Programm &man.mail.1;
nicht für den Umgang mit Anhängen entworfen
und kann daher sehr schlecht mit Anhängen umgehen.
Neuere MUAs wie
mutt gehen wesentlich besser
mit Anhängen um. Sollten Sie dennoch das
mail-Kommando benutzen wollen,
werden Sie den Port
converters/mpack
sehr zu schätzen wissen.muttmutt ist ein schlankes aber
sehr leistungsfähiges E-Mail-Programm mit hervorrangenden
Funktionen, unter anderem:mutt kann den Verlauf
einer Diskussion (threading)
darstellen.Durch die Integration von PGP können
E-Mails signiert und verschlüsselt werden.MIME wird unterstützt.Postfächer können im Maildir-Format
gespeichert werden.mutt lässt sich
im höchsten Maße an lokale Bedürfnisse
anpassen.Wegen des Funktionsumfangs ist mutt
eins der ausgefeiltesten E-Mail-Programme. Mehr über
mutt erfahren Sie auf der Seite
.Der Port mail/mutt
enthält die Produktionsversion von
mutt, die aktuelle
Entwicklerversion befindet sich im Port
mail/mutt-devel.
Wenn mutt installiert ist,
wird das Programm mit dem nachstehenden Kommando gestartet:&prompt.user; muttmutt liest automatisch den
Inhalt des Benutzer-Postfachs im Verzeichnis
/var/mail. Wenn
E-Mails vorhanden sind, werden diese dargestellt. Sind
keine E-Mails vorhanden, wartet mutt
auf Benutzereingaben. Das folgende Beispiel zeigt, wie
mutt eine Nachrichten-Liste
darstellt:Wenn Sie eine Nachricht lesen wollen, wählen Sie
die Nachricht einfach mit den Pfeiltasten aus und drücken
Enter. mutt
zeigt E-Mails wie folgt an:Wenn Sie auf eine E-Mail antworten, können Sie,
wie in &man.mail.1;, aussuchen, ob Sie nur dem Versender
oder auch allen Empfängern antworten wollen. Wenn
Sie nur dem Versender antworten wollen, drücken Sie
die Taste r. Wenn sie dem Versender und
allen Empfängern antworten wollen, drücken Sie
die Taste g.Zum Erstellen oder zum Beantworten von E-Mails
ruft mutt den Editor
&man.vi.1; auf. Wenn Sie den von
mutt verwendeten Editor
ändern möchten, erstellen oder editieren
Sie in Ihrem Heimatverzeichnis die Datei
.muttrc. Den Editor können
Sie in .muttrc mit der Variablen
editor festlegen.Drücken Sie die Taste m, wenn
Sie eine neue Nachricht verfassen wollen. Nachdem
Sie einen Betreff (subject)
eingegeben haben, startet mutt
den Editor &man.vi.1; und Sie können die Nachricht
eingeben. Wenn Sie fertig sind, speichern Sie die
Nachricht und verlassen den Editor.
mutt wird dann wieder aktiv
und zeigt eine Zusammenfassung der zu sendenden Nachricht
an. Drücken Sie y, um die E-Mail
zu versenden. Der nachstehende Bildschirmabzug zeigt die
Zusammenfassung der E-Mail:mutt verfügt über
eine umfangreiche Hilfestellung. Aus fast jedem Menü
können Sie Hilfeseiten mit der Taste ?
aufrufen. In der oberen Statuszeile werden zudem die
verfügbaren Tastenkombinationen angezeigt.pinepine wendet sich an
Anfänger bietet aber ebenfalls einige Funktionen
für Profis.In der Vergangenheit wurden in
pine mehrere Schwachstellen
gefunden. Die Schwachstellen gestatteten entfernten
Benutzern, durch das Versenden einer besonders verfassten
E-Mail, Programme auf dem lokalen System laufen
zu lassen. Alle bekannten
Schwachstellen sind beseitigt worden, doch wird im
Quellcode von pine ein
sehr riskanter Programmierstil verwendet, sodass der
&os;-Security-Officer von weiteren unbekannten
Schwachstellen ausgeht. Sie installieren
pine auf eigene Verantwortung!Der Port mail/pine4
enthält die aktuelle Version von
pine. Nach der Installation
können Sie pine mit dem
nachstehenden Kommando starten:&prompt.user; pineWenn Sie pine das erste Mal
starten, zeigt das Programm eine Seite mit einer kurzen
Einführung an. Um die
pine-Benutzer zu zählen,
bitten die Entwickler auf dieser Seite um eine anonyme E-Mail.
Sie können diese anonyme E-Mail senden, indem Sie
Enter drücken oder den
Begrüßungsbildschirm mit der Taste
E verlassen, ohne die anonyme E-Mail
zu senden. Der Begrüßungsbildschirm
sieht wie folgt aus:Nach dem Begrüßungsbildschirm wird das
Hauptmenü dargestellt, das sich leicht mit den
Pfeiltasten bedienen lässt. Mit Tastenkombinationen
können Sie aus dem Hauptmenü neue E-Mails
erstellen, Postfächer anzeigen und auch das
Adressbuch verwalten. Unterhalb des Menüs werden
die Tastenkombinationen für die verfügbaren
Aktionen angezeigt.In der Voreinstellung öffnet
pine das Verzeichnis
inbox.
Die Taste I oder der Menüpunkt
MESSAGE INDEX führt
zu einer Nachrichten-Liste:Die Liste zeigt die Nachrichten im Arbeitsverzeichnis.
Sie können Nachrichten mit den Pfeiltasten markieren.
Wenn Sie eine Nachricht lesen wollen, drücken Sie
Enter.Im nächsten Bildschirmabzug sehen Sie, wie
pine eine Nachricht darstellt.
Die unteren Bildschirmzeilen zeigen die verfügbaren
Tastenkombinationen. Mit der Taste r
können Sie zum Beispiel auf die gerade angezeigte
Nachricht antworten.Zum Antworten auf eine E-Mail wird in
pine der Editor
pico, der mit installiert wird,
benutzt. pico ist leicht
zu bedienen und gerade für Anfänger besser
geeignet als &man.vi.1; oder &man.mail.1;. Die Antwort
wird mit der Tastenkombination
CtrlX
versendet. Vor dem Versand bittet pine
noch um eine Bestätigung.Über den Menüpunkt SETUP
des Hauptmenüs können Sie pine
an Ihre Bedürfnisse anpassen. Erläuterungen
dazu finden Sie auf der Seite
.MarcSilverBeigetragen von E-Mails mit fetchmail abholenfetchmailfetchmail ist ein vollwertiger
IMAP- und POP-Client.
Mit fetchmail können Benutzer
E-Mails von entfernten IMAP- und
POP-Servern in leichter zugängliche
lokale Postfächer laden. fetchmail
wird aus dem Port mail/fetchmail
installiert. Das Programm bietet unter anderem folgende
Funktionen:fetchmail beherrscht die
Protokolle POP3,
APOP, KPOP,
IMAP, ETRN und
ODMR.E-Mails können mit SMTP
weiterverarbeitet werden. Dadurch ist garantiert, dass
Filter, Weiterleitungen und Aliase weiterhin
funktionieren.Das Programm kann als Dienst laufen und periodisch
neue Nachrichten abrufen.fetchmail kann mehrere
Postfächer abfragen und je nach Konfiguration
die E-Mails an verschiedene lokale Benutzer
zustellen.Wegen des Funktionsumfangs von
fetchmail können hier
nur grundlegende Funktionen beschrieben werden.
fetchmail benötigt die
Konfigurationsdatei .fetchmailrc.
In dieser Datei werden Informationen über Server
wie auch Benutzerdaten und Passwörter hinterlegt.
Wegen des kritischen Inhalts von .fetchmailrc
sollte die Datei nur lesbar für den Benutzer sein:&prompt.user; chmod 600 .fetchmailrcDie folgende .fetchmailrc zeigt,
wie das Postfach eines einzelnen Benutzers mit
POP heruntergeladen wird.
fetchmail wird angewiesen,
eine Verbindung zu example.com
herzustellen und sich dort als Benutzer joesoap
mit dem Passwort XXX anzumelden. Das Beispiel
setzt voraus, dass es der Benutzer joesoap
auch auf dem lokalen System existiert.poll example.com protocol pop3 username "joesoap" password "XXX"Im folgenden Beispiel werden mehrere POP-
und IMAP-Server benutzt. Wo notwendig,
werden E-Mails auf andere lokale Konten umgeleitet:poll example.com proto pop3:
user "joesoap", with password "XXX", is "jsoap" here;
user "andrea", with password "XXXX";
poll example2.net proto imap:
user "john", with password "XXXXX", is "myth" here;Sie können fetchmail
als Dienst starten. Verwenden Sie dazu die Kommandozeilenoption
gefolgt von einer Zeitspanne in Sekunden,
die angibt, wie oft die Server aus der Datei
.fetchmailrc abgefragt werden sollen.
Mit dem nachstehenden Befehl fragt
fetchmail die Server alle
60 Sekunden ab:&prompt.user; fetchmail -d 60Mehr über fetchmail
erfahren Sie auf der Seite
.MarcSilverBeigetragen von E-Mails mit procmail filternprocmailMit procmail lässt sich
eingehende E-Mail sehr gut filtern. Benutzer können
Regeln für eingehende E-Mails definieren, die
E-Mails zu anderen Postfächern oder anderen E-Mail-Adressen
umleiten. procmail befindet
sich im Port mail/procmail.
procmail kann leicht in die
meisten MTAs integriert werden. Lesen
Sie dazu bitte die Dokumentation des verwendeten
MTAs. Alternativ kann
procmail in das E-Mail-System
eingebunden werden, indem die nachstehende Zeile in
die Datei .forward im Heimatverzeichnis
eines Benutzers eingefügt wird:"|exec /usr/local/bin/procmail || exit 75"Im Folgenden zeigen wir einige einfache
procmail-Regeln und beschreiben
kurz den Zweck der Zweck der Regeln. Die Regeln müssen
in die Datei .procmailrc im Heimatverzeichnis
des Benutzers eingefügt werden.Den Großteil dieser Regeln finden Sie auch
in der Hilfeseite &man.procmailex.5;.Alle E-Mail von user@example.com
an die externe Adresse goodmail@example2.com
weiterleiten::0
* ^From.*user@example.com
! goodmail@example2.comAlle Nachrichten, die kürzer als 1000 Bytes
sind, an goodmail@example2.com weiterleiten::0
* < 1000
! goodmail@example2.comJede E-Mail, die an alternate@example.com
geschickt wurde, im Postfach alternate
speichern::0
* ^TOalternate@example.com
alternateJede E-Mail, die im Betreff Spam
enthält, nach /dev/null
schieben::0
^Subject:.*Spam
/dev/nullZuletzt ein nützliches Rezept, das eingehende E-Mails
von den &os;.org-Mailinglisten
in ein separates Postfach für jede Liste einsortiert::0
* ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
{
LISTNAME=${MATCH}
:0
* LISTNAME??^\/[^@]+
FreeBSD-${MATCH}
}
diff --git a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml
index c2167dc384..7750de2e4e 100644
--- a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml
@@ -1,2876 +1,2890 @@
Bezugsquellen für FreeBSDCD-ROM und DVD VerlegerFreeBSD PaketeFreeBSD-Pakete (FreeBSD-CDs, zusätzliche Software und
gedruckte Dokumentation) erhalten Sie von mehreren
Händlern:CompUSA
WWW: Frys Electronics
WWW: FreeBSD-CDs und -DVDsDie FreeBSD-CDs und -DVDs werden von vielen Online-Händlern
angeboten:
+
+
+ BSD-Systems
+ E-Mail: info@bsd-systems.co.uk
+ WWW:
+
+
+
Daemon News Mall560 South State Street, Suite A2Orem, UT84058USA
Telefon: +1 800 407-5170
Fax: +1 1 801 765-0877
E-Mail: sales@daemonnews.org
WWW: FreeBSD Mall, Inc.3623 Sanford StreetConcord, CA94520-1405USA
Telefon: +1 925 674-0783
Fax: +1 925 674-0821
E-Mail: info@freebsdmall.com
WWW: FreeBSD Services Ltd.11 Lapwing CloseBicesterOX26 6XRUnited Kingdom
WWW: Hinner EDVSt. Augustinus-Str. 10D-81825MünchenGermany
Telefon: (089) 428 419
WWW: Ikarios22-24 rue Voltaire92000NanterreFrance
WWW: Ingram Micro1600 E. St. Andrew PlaceSanta Ana, CA92705-4926USA
Telefon: 1 (800) 456-8000
WWW: JMC SoftwareIreland
Telefon: 353 1 6291282
WWW: The Linux EmporiumHilliard House, Lester WayWallingfordOX10 9TAUnited Kingdom
Telefon: +44 1491 837010
Fax: +44 1491 837016
WWW: Linux System Labs Australia21 Ray DriveBalwyn NorthVIC - 3104Australia
Telefon: +61 3 9857 5918
Fax: +61 3 9857 8974
WWW: LinuxCenter.RuGalernaya Street, 55Saint-Petersburg190000Russia
Telefon: +7-812-3125208
E-Mail: info@linuxcenter.ru
WWW: UNIXDVD.COM LTD57 Primrose AvenueSheffieldS5 6FSUnited Kingdom
WWW: LieferantenWenn Sie FreeBSD-CD-ROM-Produkte weiterverkaufen möchten,
kontaktieren Sie einen der folgenden Lieferanten:Cylogistics2672 Bayshore Parkway, Suite 610Mountain View, CA94043USA
Telefon: +1 650 694-4949
Fax: +1 650 694-4953
E-Mail: sales@cylogistics.com
WWW: FreeBSD Services Ltd.11 Lapwing CloseBicesterOX26 6XRUnited Kingdom
WWW: Kudzu, LLC7375 Washington Ave. S.Edina, MN55439USA
Telefon: +1 952 947-0822
Fax: +1 952 947-0876
E-Mail: sales@kudzuenterprises.comLinuxCenter.RuGalernaya Street, 55Saint-Petersburg190000Russia
Telefon: +7-812-3125208
E-Mail: info@linuxcenter.ru
WWW: Navarre Corp7400 49th Ave SouthNew Hope, MN55428USA
Telefon: +1 763 535-8333
Fax: +1 763 535-0341
WWW: FTP-ServerDie offiziellen Quellen von FreeBSD sind mit anonymous FTP
über ein weltweites Netz von FTP-Spiegeln erhältlich.
Obwohl
über eine gute Anbindung verfügt, sollten Sie einen
Spiegel in Ihrer Nähe verwenden (insbesondere, wenn Sie
selber einen Spiegel einrichten wollen).Die Datenbank
der FreeBSD-Spiegel ist aktueller als die folgende Liste, da
sie im Gegensatz zu einer statischen Liste die Informationen aus
dem DNS erhält.Sie können FreeBSD auch über anonymous FTP von den
folgenden Spiegeln beziehen. Wenn Sie FreeBSD über anonymous
FTP beziehen wollen, wählen Sie bitte einen Spiegel in Ihrer
Nähe. Die unter Haupt-Spiegel aufgeführten
Spiegel stellen normalerweise das komplette FreeBSD-Archiv
(alle momentan erhältlichen Versionen für jede
unterstützte Architektur) zur Verfügung. Wahrscheinlich
geht es aber schneller, wenn Sie einen Spiegel in Ihrer
Nähe benutzen. Die Länder-Spiegel stellen die neusten
Versionen für die beliebtesten Architekturen bereit,
sie stellen aber unter Umständen nicht das komplette
FreeBSD-Archiv bereit. Auf alle Server kann mit
anonymous FTP zugegriffen werden, einige Server bieten
auch andere Zugriffsmethoden an. Die zur Verfügung
stehenden Zugriffsmethoden sind bei jedem Server in Klammern
angegeben.
&chap.mirrors.ftp.inc;
Anonymous CVSEinführungAnonymous CVS (oder anoncvs) dient zum
Synchronisieren mit entfernten Repositories und steht mit
den CVS Werkzeugen, die im FreeBSD
Basissystem enthalten sind, zur Verfügung. Benutzer von
FreeBSD können damit unter anderem lesende Operationen
auf den Anoncvs Servern des
FreeBSD-Projekts durchführen,
ohne über besondere Berechtigungen zu verfügen. Um es
zu benutzen, setzen Sie einfach die CVSROOT
Umgebungsvariable auf einen Anoncvs Server
und geben beim Login mit cvs login das
Passwort anoncvs an. Danach können
Sie mit &man.cvs.1; wie auf jedes lokale Repository (allerdings nur
lesend) zugreifen.cvs login speichert Passwörter
zur Authentifizierung an einem CVS Server in der Datei
.cvspass in Ihrem
HOME-Verzeichnis. Wenn diese Datei beim ersten
Benutzen von cvs login nicht existiert,
erhalten Sie vielleicht eine Fehlermeldung. In diesem Fall
legen Sie einfach eine leere .cvspass
Datei an und melden sich erneut an.CVSup und
Anoncvs bieten dieselbe
Funktionalität, die folgenden Kriterien helfen Ihnen zu
entscheiden, welche Methode Sie benutzen sollen.
CVSup
geht wesentlich effizienter mit Netzwerk-Ressourcen um und ist
auch technisch ausgereifter. Allerdings müssen Sie zuerst
einen speziellen Client installieren und konfigurieren, bevor Sie
CVSup benutzen können. Weiterhin
können Sie mit CVSup nur relativ
große Teile der Quellen, die Sammlungen
genannt werden, synchronisieren.Im Gegensatz dazu können Sie mit
Anoncvs jede beliebige Datei oder
indem Sie einfach den CVS Namen des
Moduls angeben, ein beliebiges Programm, wie ls
oder grep, bearbeiten. Natürlich
können Sie mit Anoncvs nur lesend
auf ein CVS Repository zugreifen.
Wenn Sie lokal mit dem FreeBSD-Repository entwickeln wollen, dann
ist CVSup die einzige Wahl.Benutzen von Anonymous CVSSetzen Sie einfach die CVSROOT
Umgebungsvariable, um &man.cvs.1; das
CVS Repository eines FreeBSD
Anoncvs Servers bekannt zu geben.
Zurzeit stehen folgende Server zur Verfügung:Deutschland:
:pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs
(Benutzen Sie cvs login und das
Passwort anoncvs.)Deutschland:
:pserver:anoncvs@anoncvs2.de.FreeBSD.org:/home/ncvs
(rsh, pserver, ssh, ssh/2022)Frankreich:
:pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs
(Das Passwort für pserver ist
anoncvs, ssh-Zugriffe
verwenden kein Passwort.)Japan:
:pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
(Benutzen Sie cvs login und das
Passwort anoncvs.)Österreich:
:pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs
Benutzen Sie cvs login und ein
beliebiges Passwort.Schweden:
freebsdanoncvs@anoncvs.se.FreeBSD.org:/home/ncvs
(nur ssh ohne Passwort).USA:
freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs
(nur ssh ohne Passwort).
+
+
+ USA:
+ anoncvs@anoncvs1.FreeBSD.org:/home/ncvs
+ (nur ssh ohne Passwort).
+ Mit CVS können Sie praktisch
jede Version von FreeBSD, die schon einmal existiert hat (oder in
manchen Fällen existieren wird) auschecken. Sie sollten
daher damit vertraut sein, wie Sie mit Tags unter &man.cvs.1;
arbeiten (die Option). Zudem müssen Sie
die Namen der Tags im FreeBSD-Repository kennen.Es gibt zwei verschiedene TagsTags sind
symbolische Namen, die im Repository vergeben werden.
: Tags, die Revisionen bezeichnen und Tags, die
Zweige bezeichnen. Die Ersten sind statisch und fest an eine
Revision gebunden. Ein Tag, das einen Zweig bezeichnet,
bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf die
aktuellste Revision. Da ein Tag eines Zweiges nicht an eine
bestimmte Revision gebunden ist, kann sich dessen Bedeutung von
heute auf morgen ändern.In finden Sie eine Liste der
gültigen Tags. Beachten Sie bitte, dass keines der
Tags auf die Ports-Sammlung anwendbar ist, da diese nicht
über Zweige verfügt.Wenn Sie ein Tag eines Zweiges verwenden, erhalten Sie die
aktuellsten Dateien dieses Entwicklungszweiges. Wenn Sie eine
frühere Revision erhalten möchten, können Sie zum
Beispiel einen Zeitpunkt mit der Option
angeben. Weitere Informationen dazu entnehmen Sie bitte
&man.cvs.1;.BeispieleIm Folgenden finden Sie einige Beispiele für den Umgang
mit Anonymous CVS. Sie sollten sich
aber die Manualpage von &man.cvs.1; sorgfältig durchlesen,
bevor Sie anfangen.&man.ls.1; von -CURRENT auschecken und wieder
löschen:&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie das Passwortanoncvs.
&prompt.user; cvs co ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logout&man.ls.1; aus dem 3.X-STABLE Zweig auschecken:&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie das Passwortanoncvs.
&prompt.user; cvs co -rRELENG_3 ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logoutÄnderungen in &man.ls.1; zwischen 3.0 RELEASE und
3.4 RELEASE (als unified diff)&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie das Passwortanoncvs.
&prompt.user; cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls
&prompt.user; cvs logoutGültige Modulnamen herausfinden:&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie das Passwortanoncvs.
&prompt.user; cvs co modules
&prompt.user; more modules/modules
&prompt.user; cvs release -d modules
&prompt.user; cvs logoutWeitere RessourcenDie folgenden Ressourcen sind nützlich, um den Umgang
mit CVS zu lernen:CVS Tutorial von Cal Poly.CVS Home,
die Homepage des CVS
Projekts.CVSweb das
Web Interface zu CVS des FreeBSD
Projekts.CTMMit CTM
Abkürzung für CVS Through eMail
können Sie einen
entfernten Verzeichnisbaum mit einem zentralen Baum
synchronisieren. Es wurde extra zum Synchronisieren der FreeBSD
Quellen entwickelt, obwohl es mit der Zeit vielleicht auch andere
Anwendungen geben wird. Zurzeit existiert leider so gut wie keine
Dokumentation zum Erstellen der Deltas. Wenn Sie Hilfe
benötigen oder CTM für
andere Zwecke einsetzen wollen, wenden Sie sich bitte an
die Mailingliste &a.ctm-users.name;.Warum soll ich CTM benutzen?Mit CTM erhalten Sie eine lokale
Kopie des FreeBSD-Quellbaums, den es in mehreren
Varianten gibt. Sie können das ganze
Repository oder nur einen Zweig spiegeln. Wenn Sie ein aktiver
FreeBSD-Entwickler mit einer schlechten oder gar keiner TCP/IP
Verbindung sind, oder die Änderungen einfach automatisch
zugesandt bekommen wollen, dann ist CTM
das Richtige für Sie. Für die Zweige mit der
meisten Aktivität müssen Sie sich täglich bis zu drei
Deltas beschaffen, Sie sollten allerdings erwägen, die
Deltas automatisch über E-Mail zu beziehen. Die
Größe der Updates wird so klein wie möglich
gehalten. Normalerweise sind sie kleiner als 5 kB, manchmal
sind sie 10-50 kB groß (etwa jedes 10. Update) und ab
und an werden Sie auch einmal ein Update mit 100 kB oder
mehr erhalten.Sie sollten sich über die Vorbehalte gegen die
Verwendung der Quellen anstelle eines offiziellen Releases
bewusst sein. Das trifft besonders auf &os.current; zu, lesen
Sie dazu bitte den Abschnitt
&os.current;.Was brauche ich, um CTM zu
benutzen?Zwei Sachen: Das CTM Programm und
die initialen Deltas, von denen aus Sie auf die
aktuellen Stände kommen.CTM ist schon seit der
Version 2.0 Teil des FreeBSD-Basissystems. Sie finden es in
/usr/src/usr.sbin/ctm, wenn Sie eine Kopie
der Quellen besitzen.Wenn Sie eine frühere Version als FreeBSD 2.0
besitzen, können Sie die aktuellen CTM
Quellen von der folgenden URL beziehen:Die Deltas, die CTM verarbeitet,
können Sie über FTP oder E-Mail beziehen. Wenn Sie
über einen FTP Zugang zum Internet verfügen, erhalten
Sie die Deltas unter der folgenden URL:Die Deltas werden auch von
CTM Spiegeln
bereitgehalten.Wechseln Sie in das passende Verzeichnisse zum Beispiel
src-cur für &os.current; und laden Sie
sich von dort die Deltas herunter.Sie können die Deltas auch über E-Mail
beziehen.Abonnieren Sie dazu eine der
CTM-Verteilerlisten.
Über &a.ctm-cvs-cur.name; erhalten Sie den kompletten
CVS-Baum, über
&a.ctm-src-cur.name; erhalten Sie &os.current; und über
&a.ctm-src-4.name; erhalten Sie den FreeBSD
4.X-Zweig. Wenn Sie nicht wissen, wie Sie eine der
Mailinglisten abonnieren, folgen Sie einem der Verweise
von oben oder besuchen Sie die Seite &a.mailman.lists.link;.
Weitere Informationen erhalten Sie, wenn Sie dort
auf die gewünschte Liste klicken.Benutzen Sie ctm_rmail, um die
CTM Updates, die Sie per
E-Mail empfangen, auszupacken und anzuwenden. Wenn Sie diesen
Prozess automatisiert ablaufen lassen möchten,
können Sie dazu einen Eintrag in
/etc/aliases verwenden. Genauere
Informationen finden Sie in der Manualpage von
ctm_rmail.Sie sollten die Mailingliste &a.ctm-announce.name;
abonnieren, egal wie Sie die
CTM-Deltas erhalten.
Ankündigungen, die den Betrieb des
CTM-Systems betreffen, werden
nur auf dieser Liste bekannt gegeben. Klicken Sie
auf den Namen der Liste oder besuchen Sie die Seite
&a.mailman.lists.link;, um diese Liste zu abonnieren.Initialisieren von CTMBevor Sie die CTM Deltas benutzen
können, brauchen Sie einen Startpunkt, auf den die
nachfolgenden Deltas angewendet werden.Sie können natürlich mit einem leeren Verzeichnis
beginnen. In diesem Fall benötigen Sie ein
XEmpty-Delta, mit dem Sie den
CTM-Verzeichnisbaum initialisieren.
Wenn Sie Glück haben, finden Sie ein
XEmpty-Delta, mit dem sie beginnen können,
auf einer der CDs Ihrer Distribution.Da die Verzeichnisbäume mehrere Megabyte groß
sind, sollten Sie nach Möglichkeit etwas schon vorhandenes
benutzen. Wenn Sie eine -RELEASE CD besitzen, können Sie
die Quellen von dieser CD benutzen. Sie ersparen sich damit das
Übertragen großer Datenmengen.Die Deltas, mit denen Sie beginnen können, enthalten ein
X in ihrem Namen, wie in
src-cur.3210XEmpty.gz. Hinter dem
X wird der Startpunkt der Deltas
angegeben, in diesem Fall steht Empty
für ein leeres Verzeichnis. Nach etwa 100 Deltas wird ein
neues XEmpty-Delta erstellt.
Mit ungefähr 75 Megabyte komprimierter Daten sind diese
XEmpty-Deltas übrigens sehr
groß.Nachdem Sie Ihren Startpunkt festgelegt haben, benötigen
Sie alle Deltas mit einer höheren Nummer.Benutzen von CTMUm ein Delta einzuspielen, benutzen Sie das folgende
Kommando:&prompt.root; cd /Pfad/zu/den/Quellen
&prompt.root; ctm -v -v /Pfad/zu/den/Deltas/src-xxx.*CTM kann mit Deltas arbeiten, die
mit gzip komprimiert wurden. Sie brauchen die
Deltas vorher nicht mit gunzip zu
dekomprimieren und sparen damit Plattenplatz.Ihr Quellbaum wird erst dann verändert, wenn
CTM die Deltas sauber verarbeiten
kann. Die Integrität der Deltas und ihre Anwendbarkeit auf
den Quellbaum lassen sich durch die Angabe des Schalters
-c überprüfen,
CTM ändert in diesem Fall Ihren
Quellbaum nicht.CTM verfügt über weitere
Kommandozeilenoptionen, Informationen dazu finden Sie in der
Manualpage oder dem Quellcode.Das war schon alles. Um Ihre Quellen aktuell zu halten,
verwenden Sie CTM jedes Mal, wenn Sie
neue Deltas bekommen.Löschen Sie die Deltas nicht, wenn Sie diese nur schwer
wieder beschaffen können. Behalten Sie sie für den
Fall, das etwas passiert. Auch wenn Sie nur Disketten besitzen,
sollten Sie erwägen, die Deltas mit
fdwrite zu sichern.Umgang mit lokalen ÄnderungenEntwickler wollen mit den Dateien im Quellbaum
experimentieren und diese verändern. In beschränkter
Weise werden lokale Änderungen von
CTM unterstützt. Wenn
CTM die Datei foo
bearbeiten will, überprüft es zuerst ob die Datei
foo.ctm existiert. Wenn diese Datei
existiert, werden Änderungen in ihr anstatt in
foo vorgenommen.Mit diesem Verfahren ist eine leichte Handhabung lokaler
Änderungen möglich. Kopieren Sie die Dateien, die Sie
ändern möchten, in Dateien, die das Suffix
.ctm tragen. Sie können dann
ungestört mit dem Quellcode arbeiten, während
CTM die
.ctm Dateien aktualisiert.Weitere CTM-OptionenWas wird aktualisiert?Eine Liste der Änderungen, die
CTM an Ihrem Quellbaum vornehmen
wird, erhalten Sie, wenn Sie die Option
angeben.Das ist nützlich, wenn Sie Logs über die
Änderungen führen wollen, geänderte Dateien vor-
oder nachbearbeiten wollen, oder einfach ein bisschen
paranoid sind.Sicherungen vor einer Aktualisierung erstellenSie wollen vielleicht die Dateien, die durch eine
CTM Aktualisierung verändert
werden, sichern.Mit weisen Sie
CTM an, alle Dateien, die durch ein
CTM Delta verändert
würden, nach backup-file zu
sichern.Dateien ausschließenManchmal wollen Sie nur bestimmte Teile aktualisieren
oder nur bestimmte Dateien aus einer Folge
von Deltas extrahieren.Sie können die Liste der Dateien, mit denen
CTM arbeitet, einschränken,
indem Sie reguläre Ausdrücke mit den Optionen
und angeben.Wenn Sie eine aktuelle Kopie von
lib/libc/Makefile aus den gesicherten
CTM Deltas erhalten wollen, setzen
Sie das folgende Kommando ab:&prompt.root; cd /wo/Sie/es/auspacken/wollen/
&prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*Die Optionen und
werden in der Reihenfolge angewandt, in der sie auf der
Kommandozeile angegeben wurden. Eine Datei wird nur dann von
CTM verarbeitet, wenn dies nach der
Anwendung der Optionen und
noch erlaubt ist.Pläne für CTMMehrere:Hinzufügen eines Authentifizierungsmechanismus,
damit gefälschte CTM-Deltas
erkannt werden können.Aufräumen der
CTM-Optionen, die mit der Zeit
unübersichtlich und irreführend wurden.VerschiedenesEs gibt Deltas für die Ports-Sammlung, die
aber nicht intensiv genutzt werden.CTM-SpiegelDie CTM-Deltas können Sie mit anonymous FTP von den folgenden
Spiegeln beziehen. Versuchen Sie bitte einen Spiegel in Ihrer
Nähe zu benutzen.Bei Problemen wenden Sie sich bitte an die
Mailingliste &a.ctm-users.name;.Kalifornien, Bay Area, Offizieller ServerSüdafrika, Backup-Server für alte DeltasTaiwan/R.O.C.Wenn die Liste keinen Spiegel in Ihrer Nähe enthält
oder Sie Probleme mit dem ausgewählten Spiegel haben, versuchen
Sie einen Spiegel mit einer Suchmaschine, wie
alltheweb, zu
finden.Benutzen von CVSupEinführungCVSup ist eine Anwendung, die
Verzeichnisbäume von einem entfernten
CVS-Server bereitstellt und
aktualisiert. Die Quellen von FreeBSD werden in einem
CVS-Repository auf einer
Entwicklungsmaschine in Kalifornien gepflegt. Mit
CVSup können sich FreeBSD-Benutzer
den eigenen Quellbaum auf aktuellem Stand halten.Zum Aktualisieren benutzt CVSup die
Pull-Methode, bei der die Aktualisierungen vom Client angefragt
werden. Der Server wartet dabei passiv auf Anfragen von Clients,
das heißt er verschickt nicht unaufgefordert
Aktualisierungen. Somit gehen alle Anfragen vom Client aus und die
Benutzer müssen CVSup entweder
manuell starten oder einen cron Job einrichten, um
regelmäßig Aktualisierungen zu erhalten.CVSup in genau dieser Schreibweise
bezeichnet die Anwendung, die aus dem Client cvsup
und dem Server cvsupd besteht.
cvsup läuft auf den Maschinen der Benutzer,
cvsupd läuft auf jedem der
FreeBSD-Spiegel.Wenn Sie die FreeBSD-Dokumentation und die Mailinglisten lesen,
werden Sie oft auf Sup, dem
Vorgänger von CVSup stoßen.
CVSup wird in gleicher Weise wie
Sup benutzt und verfügt sogar
über Konfigurationsdateien, die kompatibel zu denen von
Sup sind. Da
CVSup schneller und flexibler als
Sup ist, wird
Sup vom FreeBSD-Projekt nicht mehr
benutzt.Installation von CVSupCVSup können Sie leicht
installieren, wenn Sie das vorkompilierte Paket
net/cvsup aus der
Ports-Sammlung benutzen.
Alternativ können Sie
net/cvsup auch ausgehend von
den Quellen bauen, doch seien Sie gewarnt:
net/cvsup hängt vom
Modula-3 System ab, das viel Zeit und
Platz zum Herunterladen und Bauen braucht.Wenn Sie CVSup auf einer
Maschine ohne &xfree86;
oder &xorg;,
beispielsweise einem Server, benutzen, stellen Sie sicher,
dass Sie den Port ohne das
CVSup-GUI,
net/cvsup-without-gui
verwenden.Konfiguration von CVSupDas Verhalten von CVSup wird mit
einer Konfigurationsdatei gesteuert, die
supfile genannt wird. Beispiele für
Konfigurationsdateien finden Sie in dem Verzeichnis
.Ein supfile enthält die folgenden
Informationen:Welche Dateien Sie
erhalten wollen.Welche Versionen der
Dateien Sie benötigen.Woher Sie die Dateien
beziehen wollen.Wo Sie die erhaltenen
Dateien speichern.Wo Sie die
Status-Dateien aufbewahren wollen.In den folgenden Abschnitten erstellen wir ein typisches
supfile indem wir nach und nach diese Punkte
klären. Zuerst beschreiben wir aber den Aufbau dieser
Konfigurationsdatei.Ein supfile ist eine Textdatei.
Kommentare beginnen mit einem # und gelten bis zum
Zeilenende. Leerzeilen und Zeilen, die nur Kommentare enthalten,
werden ignoriert.Die anderen Zeilen legen die Dateien fest, die ein Benutzer
erhalten will. Der Server organisiert verschiedene Dateien in
einer Sammlung, deren Name auf einer Zeile angegeben
wird. Nach dem Namen der Sammlung können mehrere durch
Leerzeichen getrennte Felder folgen, die die oben angesprochenen
Informationen festlegen. Es gibt zwei Arten von Feldern: Felder,
die Optionen festlegen und Felder mit Parametern.
Optionen bestehen aus einem Schlüsselwort, wie
oder und
stehen alleine. Ein Parameterfeld beginnt mit einem
Schlüsselwort, dem = und ein Parameter,
wie in ,
folgt. Dieses Feld darf keine Leerzeichen enthalten.In einem supfile werden normalerweise
mehrere Sammlungen angefordert. Die erforderlichen Felder
können explizit für jede Sammlung angegeben werden,
dann werden jedoch die Zeilen ziemlich lang. Außerdem ist
dieses Vorgehen sehr unhandlich, da die meisten Felder für
alle Sammlungen gleich sind. CVSup
bietet die Möglichkeit, Vorgaben für die Felder der
Sammlungen festzulegen. Zeilen, die mit der Pseudo-Sammlung
*default beginnen, legen Optionen und Parameter
für nachfolgende Sammlungen im supfile
fest. Der Vorgabewert kann in der Zeile einer bestimmten Sammlung
überschrieben werden. Durch Hinzufügen weiterer
*default Zeilen können die Vorgaben auch
mitten im supfile überschrieben oder
erweitert werden.Mit diesem Wissen können wir nun ein
supfile erstellen, das den Quellbaum von
FreeBSD-CURRENT anfordert und
aktualisiert.Welche Dateien wollen Sie
empfangen?Dateien werden von CVSup in
Sammlungen organisiert. Die erhältlichen
Sammlungen werden später
beschrieben. Wir wollen den Quellbaum von FreeBSD empfangen,
der in der Sammlung src-all enthalten ist.
Das supfile enthält pro Zeile eine
Sammlung, in diesem Fall also nur eine einzige Zeile:src-allWelche Versionen der Dateien
werden benötigt?Mit CVSup können Sie jede
Version der Quellen bekommen, da der
cvsupd-Server seine Daten direkt aus
dem CVS-Repository bezieht. Sie
können die benötigten Versionen in den
Parameterfeldern tag= und
angeben.Achten Sie darauf, dass Sie das richtige
tag=-Feld angeben. Einige Tags sind nur
für spezielle Sammlungen gültig. Wenn Sie ein
falsches Tag angeben oder sich verschreiben, wird
CVSup Dateien löschen, die
Sie wahrscheinlich gar nicht löschen wollten.
Achten Sie insbesondere bei den
ports-*-Sammlungen darauf,
ausschließlichtag=. zu verwenden.Mit tag= wird ein symbolischer Name aus
dem Repository angegeben. Es gibt zwei verschiedene Tags:
Tags, die Revisionen bezeichnen und Tags, die Zweige
bezeichnen. Die ersteren sind statisch und fest an eine
Revision gebunden. Ein Tag, das einen Zweig bezeichnet,
bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf
die aktuellste Revision. Da ein Tag eines Zweiges nicht an
eine bestimmte Revision gebunden ist, kann sich dessen
Bedeutung von heute auf morgen ändern. zählt für Benutzer
relevante Tags auf. Wenn Sie in der Konfigurationsdatei ein
Tag, wie RELENG_4, angeben, müssen Sie
diesem tag= vorstellen:
tag=RELENG_4. Denken Sie daran, dass
es für die Ports-Sammlung nur tag=.
gibt.Achten Sie darauf, dass Sie den Namen eines Tags
richtig angeben. CVSup kann nicht
zwischen richtigen und falschen Tags unterscheiden. Wenn Sie
sich bei der Angabe eines Tags vertippen, nimmt
CVSup an, Sie hätten ein
gültiges Tag angegeben, dem nur keine Dateien zugeordnet
sind. Die Folge davon ist, dass Ihre vorhandenen Quellen
gelöscht werden.Wenn Sie ein Tag angeben, das sich auf einen Zweig bezieht,
erhalten Sie die aktuellsten Revisionen der Dateien auf diesem
Zweig. Wenn Sie eine frühere Revision erhalten
möchten, können Sie diese im
Feld angeben. Einzelheiten dazu finden Sie in der Manualpage
von cvsup.Wir möchten gerne FreeBSD-CURRENT beziehen und
fügen die folgende Zeile am Anfang
der Konfigurationsdatei ein:*default tag=.Eine wichtige Ausnahme ist wenn Sie weder ein
tag=-Feld noch ein date=-Feld
angeben. In diesem Fall erhalten Sie anstelle einer speziellen
Revision die wirklichen RCS-Dateien aus dem CVS-Repository
des Servers. Diese Vorgehensweise wird von Entwicklern
bevorzugt, da sie mit einem eigenen Repository leicht die
Entwicklungsgeschichte und Veränderungen von Dateien
verfolgen können. Dieser Vorteil muss allerdings mit
sehr viel Plattenplatz bezahlt werden.Woher sollen die Dateien
bezogen werden?Im host=-Feld wird angegeben, woher
cvsup die Dateien holen soll. Sie
können hier jeden der CVSup-Spiegel angeben, doch
sollten Sie einen Server in Ihrer Nähe auswählen.
Für dieses Beispiel wollen wir den erfundenen Server
cvsup99.FreeBSD.org
verwenden:*default host=cvsup99.FreeBSD.orgBevor Sie CVSup laufen
lassen, sollten Sie hier einen existierenden Server
einsetzen. Den zu verwendenden Server können Sie auf der
Kommandozeile mit
überschreiben.Wo sollen die Dateien
gespeichert werden?Im prefix=-Feld teilen Sie
cvsup mit, wo die Dateien gespeichert werden
sollen. In diesem Beispiel werden wir die Quelldateien direkt
im Verzeichnisbaum für Quellen
/usr/src ablegen. Das Verzeichnis
src ist schon in der Sammlung, die wir
beziehen enthalten, so dass wir die folgende Zeile
angeben:*default prefix=/usrWo sollen die
Statusinformationen von cvsup gespeichert
werden?cvsup legt in einem Verzeichnis
Statusinformationen ab, die festhalten, welche Versionen schon
empfangen wurden. Wir verwenden das Standardverzeichnis
/var/db:*default base=/var/dbDer Vorgabewert für base= ist genau
dieses Verzeichnis, so dass wir diese Zeile nicht angeben
müssen.Wenn das Verzeichnis für die Statusinformationen nicht
existiert, sollten Sie es jetzt anlegen, da
cvsup ohne dieses Verzeichnis nicht
startet.Verschiedene Einstellungen:Eine weitere Zeile sollte normalerweise in jedem
supfile sein:*default release=cvs delete use-rel-suffix compressMit release=cvs wird angegeben,
dass der Server das FreeBSD-Haupt-Repository abfragen soll,
was praktisch immer der Fall ist (die Ausnahmen werden in
diesem Text nicht diskutiert).delete erlaubt es
CVSup, Dateien zu löschen.
Diese Option sollten Sie immer angeben, damit
CVSup Ihren Quellbaum auch wirklich
aktuell halten kann. CVSup
löscht nur Dateien für die es auch verantwortlich
ist. Andere Dateien, die sich in einem Baum unter Kontrolle
von CVSup befinden, werden nicht
verändert.Wenn Sie wirklich etwas über das obskure
use-rel-suffix erfahren wollen, lesen Sie
bitte in der Manualpage nach, ansonsten geben Sie es einfach an
und vergessen es.Wenn Sie compress angeben, werden Daten
auf dem Kommunikationskanal komprimiert. Wenn Sie über
eine T1-Leitung oder eine schnellere Netzanbindung
verfügen, brauchen Sie diese Option vielleicht nicht. In
allen anderen Fällen beschleunigt sie aber den
Ablauf.Zusammenfassung:Das vollständige supfile unseres
Beispiels sieht nun so aus:*default tag=.
*default host=cvsup99.FreeBSD.org
*default prefix=/usr
*default base=/var/db
*default release=cvs delete use-rel-suffix compress
src-allDie refuse DateiCVSup benutzt die Pull-Methode, das
heißt wenn sich ein Client mit einem Server verbindet,
erhält er eine Liste der verfügbaren Sammlungen und
wählt aus diesen die herunterzuladenden Dateien aus. In der
Voreinstellung wählt der Client alle Dateien aus, die zu
einer gegebenen Sammlung und zu einem gegebenen Tag passen.
Dieses Verhalten ist aber nicht immer erwünscht, besonders
wenn Sie die doc, ports
oder www Verzeichnisbäume
synchronisieren. Die wenigsten Leute beherrschen vier oder fünf
Sprachen und benötigen Dateien mit speziellen Anpassungen
für eine Sprache. Wenn Sie die Ports-Sammlung
synchronisieren, können Sie anstelle von
ports-all einzelne Ports, wie
ports-astrology oder
ports-biology angeben. Die
doc und www
Verzeichnisbäume verfügen aber nicht über
Sammlungen für spezielle Sprachen. In diesem Fall
müssen Sie eines der vielen eleganten Merkmale von
CVSup benutzen: Die
refuse Datei.Mit einer refuse Datei können Sie
bestimmte Dateien einer Sammlung von der Übertragung
ausschließen. Der Ort der refuse ist
base/sup/refuse,
wobei base in Ihrem
supfile festgelegt wurde. In der
Voreinstellung ist base das Verzeichnis
/var/db, der Ort der
refuse Datei ist daher
/var/db/sup/refuse.Das Format der refuse Datei ist einfach:
Sie enthält eine Liste der Dateien und Verzeichnisse, die Sie
nicht herunterladen wollen. Wenn Sie zum Beispiel keinen Bedarf
an Anwendungen mit Anpassungen für Sprachen außer
Englisch haben, könnte ein Teil Ihrer
refuse Datei wie folgt aussehen:ports/arabic
ports/chinese
ports/french
ports/german
ports/hebrew
ports/hungarian
ports/japanese
ports/korean
ports/polish
ports/portuguese
ports/russian
ports/ukrainian
ports/vietnamese
doc/da_*
doc/de_*
doc/el_*
doc/es_*
doc/fr_*
doc/it_*
doc/ja_*
doc/nl_*
doc/no_*
doc/pl_*
doc/pt_*
doc/ru_*
doc/sr_*
doc/zh_*Die Aufzählung setzt sich für andere Sprachen fort.
Eine vollständige Liste finden Sie im
FreeBSD
CVS Repository.Die refuse Datei spart Anwendern von
CVSup, die über eine langsame
Internetanbindung verfügen oder deren Internetverbindung
zeitlich abgerechnet wird, wertvolle Zeit, da sie Dateien, die sie
nicht benötigen, nicht mehr herunterladen müssen.
Weitere Informationen zu refuse Dateien und
anderen Eigenschaften von CVSup
entnehmen Sie bitte der Manualpage.Ausführen von CVSupWir können nun eine Aktualisierung mit der folgenden
Kommandozeile starten:&prompt.root; cvsup supfilesupfile gibt
dabei das eben erstelle supfile an. Wenn Sie
X11 benutzen, wird
cvsup ein GUI starten.
Drücken Sie go und schauen Sie
zu.Das Beispiel aktualisiert die Dateien im Verzeichnisbaum
/usr/src. Sie müssen
cvsup als root starten,
damit Sie die nötigen Rechte haben, die Dateien zu
aktualisieren. Sie sind vielleicht ein bisschen nervös
weil Sie das Programm zum ersten Mal anwenden und möchten
zuerst einmal einen Testlauf durchführen. Legen Sie dazu ein
temporäres Verzeichnis an und übergeben es auf der
Kommandozeile von cvsup:&prompt.root; mkdir /var/tmp/dest
&prompt.root; cvsup supfile /var/tmp/destAktualisierungen werden dann nur in dem angegebenen Verzeichnis
vorgenommen. CVSup untersucht die
Dateien in /usr/src, wird aber keine dieser
Dateien verändern. Die veränderten Dateien finden Sie
stattdessen in /var/tmp/dest/usr/src. Die
Statusdateien von CVSup werden ebenfalls
nicht geändert, sondern in dem angegebenen Verzeichnis
abgelegt. Wenn Sie Leseberechtigung in
/usr/src haben, brauchen Sie das Programm
noch nicht einmal unter root laufen zu
lassen.Wenn Sie X11 nicht benutzen wollen
oder keine GUIs mögen, sollten Sie
cvsup wie folgt aufrufen:&prompt.root; cvsup -g -L 2 supfile verhindert den Start des
GUIs. Wenn Sie kein
X11 laufen haben, passiert das
automatisch, ansonsten müssen Sie diesen Schalter
angeben.Mit gibt CVSup
Einzelheiten zu jeder Aktualisierung aus. Die Wortfülle der
Meldungen können Sie von bis
einstellen. In der Voreinstellung
werden nur Fehlermeldungen ausgegeben.Eine Zusammenfassung der Optionen von
CVSup erhalten Sie mit
cvsup -H. Genauere Informationen finden Sie in
der Manualpage von CVSup.Wenn Sie mit dem Ablauf der Aktualisierung zufrieden sind,
können Sie CVSup
regelmäßig aus &man.cron.8; ausführen. In diesem
Fall sollten Sie natürlich nicht das GUI
benutzen.CVSup SammlungenDie CVSup Sammlungen sind
hierarchisch organisiert. Es gibt wenige große Sammlungen,
die in kleinere Teilsammlungen unterteilt sind. Wenn Sie eine
große Sammlung beziehen, entspricht das dem Beziehen aller
Teilsammlungen. Der Hierarchie der Sammlung wird in der folgenden
Aufzählung durch Einrückungen dargestellt.Die am häufigsten benutzen Sammlungen sind
src-all und ports-all. Die
anderen Sammlungen werden von wenigen Leuten zu speziellen Zwecken
benutzt und es kann sein, dass diese nicht auf allen Spiegeln
zur Verfügung stehen.cvs-all release=cvsDas FreeBSD-Haupt-Repository einschließlich der
Kryptographie-Module.distrib release=cvsDateien, die zum Verteilen und Spiegeln von FreeBSD
benötigt werden.doc-all release=cvsQuellen des FreeBSD-Handbuchs und weiterer
Dokumentation. Diese Sammlung enthält nicht die
FreeBSD-Webseite.ports-all release=cvsDie FreeBSD-Ports-Sammlung.Wenn Sie nicht die gesamte Ports-Sammlung
(ports-all) aktualieren wollen,
sondern nur eine der nachstehend aufgeführten
Teilsammlungen, aktualisieren Sie
immer die Teilsammlung
ports-base. Diese Teilsammlung
enthält das Bausystem der Ports. Immer wenn
ports-base geändert wird,
ist es so gut wie sicher, dass diese Änderung
auch tatsächlich von einem Port benutzt wird.
Der Bau eines Ports, der auf Änderungen
im Bausystem angewiesen wird, wird fehlschlagen,
wenn das Bausystem noch auf einem alten Stand ist.
Aktualisieren Sie vor allen Dingen
ports-base, wenn Sie bei
einem Bau merkwürdige Fehlermeldungen
erhalten und kein aktuelles Bausystem benutzen.ports-archivers
release=cvsWerkzeuge zum Archivieren.ports-astro
release=cvsAstronomie-Programme.ports-audio
release=cvsAudio-Programme.ports-base
release=cvsDas Bausystem der Ports-Sammlung.
Dazu gehören verschiedene Dateien in den
Unterverzeichnissen Mk/
und Tools/ von
/usr/ports.Aktualisieren Sie diese Teilsammlung
jedes Mal, wenn Sie
einen Teil der Ports-Sammlung aktualisieren.
Lesen Sie dazu auch den obigen
Hinweis zur Ports-Sammlung.ports-benchmarks
release=cvsBenchmarks.ports-biology
release=cvsBiologie.ports-cad
release=cvsComputer Aided Design Werkzeuge.ports-chinese
release=cvsChinesische Sprachunterstützung.ports-comms
release=cvsProgramme zur Datenkommunikation.ports-converters
release=cvsZeichensatz Konvertierer.ports-databases
release=cvsDatenbanken.ports-deskutils
release=cvsSachen, die sich vor dem Computer-Zeitalter
auf dem Schreibtisch befanden.ports-devel
release=cvsWerkzeuge für Entwickler.ports-dns
release=cvsSoftware für DNS.ports-editors
release=cvsEditoren.ports-emulators
release=cvsProgramme, die andere Betriebssysteme
emulieren.ports-finance
release=cvsFinanz-Anwendungen.ports-ftp
release=cvsWerkzeuge für FTP Clients und Server.ports-games
release=cvsSpiele.ports-german
release=cvsDeutsche Sprachunterstützung.ports-graphics
release=cvsGraphik-Programme.ports-hungarian
release=cvsUngarische Sprachunterstützung.ports-irc
release=cvsInternet Relay Chat Werkzeuge.ports-japanese
release=cvsJapanische Sprachunterstützung.ports-java
release=cvs&java; Werkzeuge.ports-korean
release=cvsKoreanische Sprachunterstützung.ports-lang
release=cvsProgrammiersprachen.ports-mail
release=cvsE-Mail Programme.ports-math
release=cvsProgramme zur numerischen Mathematik.ports-mbone
release=cvsMBone Anwendungen.ports-misc
release=cvsVerschiedene Werkzeuge.ports-multimedia
release=cvsMultimedia-Anwendungen.ports-net
release=cvsNetzwerk-Programme.ports-news
release=cvsUSENET News Werkzeuge.ports-palm
release=cvsProgramme für den
Palm.ports-polish
release=cvsPolnische Sprachunterstützung.ports-portuguese
release=cvsPortugiesische Sprachunterstützung.ports-print
release=cvsDruckprogramme.ports-russian
release=cvsRussische Sprachunterstützung.ports-security
release=cvsWerkzeuge zum Thema Sicherheit.ports-shells
release=cvsKommandozeilen-Shells.ports-sysutils
release=cvsSystem-Werkzeuge.ports-textproc
release=cvsProgramme zur Textverarbeitung (ohne Desktop
Publishing).ports-vietnamese
release=cvsVietnamesische
Sprachunterstützung.ports-www
release=cvsSoftware rund um das World Wide Web.ports-x11
release=cvsX-Window Programme.ports-x11-clocks
release=cvsX11-Uhren.ports-x11-fm
release=cvsX11-Dateiverwalter.ports-x11-fonts
release=cvsX11-Zeichensätze und Werkzeuge dazu.ports-x11-toolkits
release=cvsX11-Werkzeuge.ports-x11-serversX11-Server.ports-x11-wmX11-Fensterverwalter.src-all release=cvsDie FreeBSD-Quellen einschließlich der
Kryptographie-Module.src-base
release=cvsVerschiedene Dateien unter
/usr/src.src-bin
release=cvsBenutzer-Werkzeuge die im Einzelbenutzermodus
gebraucht werden
(/usr/src/bin).src-contrib
release=cvsWerkzeuge und Bibliotheken, die nicht aus dem
FreeBSD-Projekt stammen und wenig verändert
übernommen werden.
(/usr/src/contrib).src-crypto release=cvsKryptographische Werkzeuge und Bibliotheken,
die nicht aus dem FreeBSD-Projekt stammen und
wenig verändert übernommen werden.
(/usr/src/crypto).src-eBones release=cvsKerberos und DES
(/usr/src/eBones). Wird
in aktuellen Releases von FreeBSD nicht
benutzt.src-etc
release=cvsKonfigurationsdateien des Systems
(/usr/src/etc).src-games
release=cvsSpiele
(/usr/src/games).src-gnu
release=cvsWerkzeuge, die unter der GNU Public License
stehen (/usr/src/gnu).src-include
release=cvsHeader Dateien
(/usr/src/include).src-kerberos5
release=cvsKerberos5
(/usr/src/kerberos5).src-kerberosIV
release=cvsKerberosIV
(/usr/src/kerberosIV).src-lib
release=cvsBibliotheken
(/usr/src/lib).src-libexec
release=cvsSystemprogramme, die von anderen Programmen
ausgeführt werden
(/usr/src/libexec).src-release
release=cvsDateien, die zum Erstellen eines FreeBSD
Releases notwendig sind
(/usr/src/release).src-sbin release=cvsWerkzeuge für den Einzelbenutzermodus
(/usr/src/sbin).src-secure
release=cvsKryptographische Bibliotheken und Befehle
(/usr/src/secure).src-share
release=cvsDateien, die von mehreren Systemen
gemeinsam benutzt werden können
(/usr/src/share).src-sys
release=cvsDer Kernel
(/usr/src/sys).src-sys-crypto
release=cvsKryptographie Quellen des Kernels
(/usr/src/sys/crypto).src-tools
release=cvsVerschiedene Werkzeuge zur Pflege von FreeBSD
(/usr/src/tools).src-usrbin
release=cvsBenutzer-Werkzeuge
(/usr/src/usr.bin).src-usrsbin
release=cvsSystem-Werkzeuge
(/usr/src/usr.sbin).www release=cvsDie Quellen der FreeBSD-WWW-Seite.distrib release=selfDie Konfigurationsdateien des
CVSup Servers. Diese werden von
den CVSup benutzt.gnats release=currentDie GNATS Datenbank, in der Problemberichte verwaltet
werden.mail-archive release=currentDas Archiv der FreeBSD-Mailinglisten.www release=currentDie formatierten Dateien der FreeBSD-WWW-Seite (nicht die
Quellen). Diese werden von den WWW-Spiegeln benutzt.Weiterführende InformationenDie CVSup FAQ und weitere
Informationen über CVSup finden Sie
auf The
CVSup Home Page.FreeBSD spezifische Diskussionen über
CVSup finden auf der Mailingliste
&a.hackers; statt. Dort und auf der Liste &a.announce; werden neue
Versionen von CVSup
angekündigt.Fragen und Problemberichte sollten an den Autor des Programms
cvsup-bugs@polstra.com weitergeleitet werden.CVSup-ServerDie folgende Aufzählung enthält
CVSup Server für FreeBSD:
&chap.mirrors.cvsup.inc;
CVS-TagsWenn Sie Quellen mit CVS oder
CVSup erhalten oder aktualisieren wollen,
müssen Sie ein Tag angeben. Ein Tag kann einen bestimmten
&os;-Zweig oder einen bestimmten Zeitpunkt
(Release-Tag) bestimmen.Tags für ZweigeMit Ausnahme von HEAD (das immer
ein gültiges Tag ist), können die folgenden
Tags nur im src/-Quellbaum verwendet
werden. Die Quellbäume ports/,
doc/ und www/
sind nicht verzweigt.HEADSymbolischer Name für den Hauptzweig, auch
&os.current; genannt. Dies ist die Vorgabe, wenn keine
Revision angegeben wird.In CVSup wird dieses Tag mit
einem . (Punkt) bezeichnet.In CVS ist das die Vorgabe,
wenn Sie kein Tag oder eine Revision angeben. Außer
Sie wollen einen -STABLE Rechner auf -CURRENT aktualisieren,
ist es nicht ratsam, die -CURRENT
Quellen auf einem -STABLE Rechner einzuspielen.RELENG_5Der FreeBSD 5.X Entwicklungszweig, der
nach Erscheinen von FreeBSD-5.3 zu FreeBSD-STABLE
wird.RELENG_5_2Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.2 und
&os; 5.2.1 durchgeführt werden.RELENG_5_1Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.1 durchgeführt
werden.RELENG_5_0Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.0 durchgeführt
werden.RELENG_4Der FreeBSD 4.X Entwicklungszweig, der auch &os.stable;
genannt wird.RELENG_4_10Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.10 durchgeführt
werden.RELENG_4_9Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.9 durchgeführt
werden.RELENG_4_8Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.8 durchgeführt
werden.RELENG_4_7Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.7 durchgeführt
werden.RELENG_4_6Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.6 und
FreeBSD 4.6.2 durchgeführt werden.RELENG_4_5Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.5 durchgeführt
werden.RELENG_4_4Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.4 durchgeführt
werden.RELENG_4_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.3 durchgeführt
werden.RELENG_3Der FreeBSD-3.X Entwicklungszweig, der auch 3.X-STABLE
genannt wird.RELENG_2_2Der FreeBSD-2.2.X Entwicklungszweig, der auch 2.2-STABLE
genannt wird.Release-TagsDiese Tags geben den Zeitpunkt an, an dem eine bestimme
&os;-Version veröffentlicht wurde. Das Erstellen einer
Release ist in den Dokumenten
Release Engineering
Information und
Release
Process beschrieben. Der
src-Baum benutzt
Tags, deren Namen mit RELENG_ anfangen.
Die Bäume ports
und doc benutzen
Tags, deren Namen mit RELEASE anfangen.
Im Baum www werden
keine Release-Tags verwendet.RELENG_4_10_0_RELEASEFreeBSD 4.10RELENG_5_2_1_RELEASEFreeBSD 5.2.1RELENG_5_2_0_RELEASEFreeBSD 5.2RELENG_4_9_0_RELEASEFreeBSD 4.9RELENG_5_1_0_RELEASEFreeBSD 5.1RELENG_4_8_0_RELEASEFreeBSD 4.8RELENG_5_0_0_RELEASEFreeBSD 5.0RELENG_4_7_0_RELEASEFreeBSD 4.7RELENG_4_6_2_RELEASEFreeBSD 4.6.2RELENG_4_6_1_RELEASEFreeBSD 4.6.1RELENG_4_6_0_RELEASEFreeBSD 4.6RELENG_4_5_0_RELEASEFreeBSD 4.5RELENG_4_4_0_RELEASEFreeBSD 4.4RELENG_4_3_0_RELEASEFreeBSD 4.3RELENG_4_2_0_RELEASEFreeBSD 4.2RELENG_4_1_1_RELEASEFreeBSD 4.1.1RELENG_4_1_0_RELEASEFreeBSD 4.1RELENG_4_0_0_RELEASEFreeBSD 4.0RELENG_3_5_0_RELEASEFreeBSD-3.5RELENG_3_4_0_RELEASEFreeBSD-3.4RELENG_3_3_0_RELEASEFreeBSD-3.3RELENG_3_2_0_RELEASEFreeBSD-3.2RELENG_3_1_0_RELEASEFreeBSD-3.1RELENG_3_0_0_RELEASEFreeBSD-3.0RELENG_2_2_8_RELEASEFreeBSD-2.2.8RELENG_2_2_7_RELEASEFreeBSD-2.2.7RELENG_2_2_6_RELEASEFreeBSD-2.2.6RELENG_2_2_5_RELEASEFreeBSD-2.2.5RELENG_2_2_2_RELEASEFreeBSD-2.2.2RELENG_2_2_1_RELEASEFreeBSD-2.2.1RELENG_2_2_0_RELEASEFreeBSD-2.2.0AFS-ServerDie folgende Aufzählung enthält AFS Server für
FreeBSD:SchwedenDie Dateien sind unter dem Pfad
/afs/stacken.kth.se/ftp/pub/FreeBSD/
erreichbar.stacken.kth.se # Stacken Computer Club, KTH, Sweden
130.237.234.43 #hot.stacken.kth.se
130.237.237.230 #fishburger.stacken.kth.se
130.237.234.3 #milko.stacken.kth.seBetreuer ftp@stacken.kth.sersync-Serverrsync wird ähnlich wie
&man.rcp.1; verwendet, besitzt aber mehr Optionen und
verwendet das rsync remote-update Protokoll, das nur
geänderte Dateien überträgt und damit viel schneller
als ein normaler Kopiervorgang ist. rsync
ist sehr nützlich, wenn Sie einen FreeBSD-FTP-Spiegel oder einen
CVS-Spiegel betreiben. Das Programm ist für viele
Betriebssysteme erhältlich, mit FreeBSD können Sie den
Port net/rsync oder das fertige
Paket benutzen. Die folgenden Server stellen FreeBSD über das
rsync Protokoll zur Verfügung:Deutschlandrsync://grappa.unix-ag.uni-kl.de/Verfügbare Sammlungen:freebsd-cvs: Das vollständige
CVS-Repository von &os;.Neben anderen Repositories spiegelt diese Maschine auch die
Repositories der NetBSD- und OpenBSD-Projekte.Großbritannienrsync://rsync.mirror.ac.uk/Verfügbare Sammlungen:ftp.FreeBSD.org: Kompletter Spiegel des
FreeBSD-FTP-Servers.Niederlandersync://ftp.nl.FreeBSD.org/Verfügbare Sammlungen:vol/3/freebsd-core: Kompletter Spiegel des
FreeBSD-FTP-Servers.Tschechische Republikrsync://ftp.cz.FreeBSD.org/Verfügbare Sammlungen:ftp: Unvollständiger Spiegel des
FreeBSD-FTP-Servers.FreeBSD: Vollständiger Spiegel des
FreeBSD-FTP-Servers.USArsync://ftp-master.FreeBSD.org/Dieser Server darf nur von primären Spiegeln benutzt
werden.Verfügbare Sammlungen:FreeBSD: Das Hauptarchiv des FreeBSD
FTP Servers.acl: Die primäre ACL-Liste.rsync://ftp13.FreeBSD.org/Verfügbare Sammlungen:FreeBSD: Kompletter Spiegel des
FreeBSD-FTP-Servers.
diff --git a/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml b/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml
index 291c1a58e8..694229001f 100644
--- a/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml
@@ -1,2003 +1,2003 @@
RossLippertÜberarbeitet von MultimediaÜbersichtFreeBSD unterstützt viele unterschiedliche Soundkarten,
die Ihnen den Genuss von Highfidelity-Klängen auf Ihrem
Computer ermöglichen. Dazu gehört unter anderem die
Möglichkeit, Tonquellen in den Formaten MPEG Audio Layer 3
(MP3), WAV, Ogg Vorbis und vielen weiteren Formaten aufzunehmen
und wiederzugeben. Darüber hinaus enthält die FreeBSD
Ports-Sammlung Anwendungen, die Ihnen das Bearbeiten Ihrer
aufgenommenen Tonspuren, das Hinzufügen von Klangeffekten
und die Kontrolle der angeschlossenen MIDI-Geräte
erlauben.Wenn Sie etwas Zeit investieren, können Sie
mit &os; auch Videos und DVDs abspielen. Im Vergleich
zu Audio-Anwendungen gibt es weniger Anwendungen zum
Kodieren, Konvertieren und Abspielen von Video-Formaten.
Es gab, als dieses Kapitel geschrieben wurde, keine
Anwendung, die einzelne Video-Formate ähnlich wie
audio/sox konvertieren
konnte. Allerdings ändert sich die Software in
diesem Umfeld sehr schnell.In diesem Kapitel wird das Einrichten von Soundkarten
besprochen. beschreibt die Installation
und Konfiguration von X11 und das Einrichten von Videokarten.
Hinweise zur Verbesserung der Wiedergabe finden sich
in diesem Kapitel.Dieses Kapitel behandelt die folgenden Punkte:Die Konfiguration des Systems damit Ihre
Soundkarte erkannt wird.Wie Sie mit Beispielanwendungen die
Funktion einer Soundkarte prüfen.Wie Sie Fehler in den Einstellungen von
Soundkarten finden.Wie Sie MP3s und andere Audio-Formate wiedergeben
und erzeugen.Die Video-Unterstützung des X-Servers.Gute Anwendungen, die Videos abspielen und
kodieren.Die Wiedergabe von DVDs, .mpg-
und .avi-Dateien.Wie Sie CDs und DVDs in Dateien rippen.Die Konfiguration von TV-Karten.Das Einrichten von Scannern.Bevor Sie dieses Kapitel lesen, sollten Sie:Wissen, wie Sie einen neuen Kernel konfigurieren
und installieren ().Der Versuch eine Audio-CD mit &man.mount.8;
einzuhängen erzeugt mindestens einen Fehler;
schlimmstenfalls kann es zu einer Kernel-Panic
kommen. Die Medien besitzen eine andere Kodierung
als normale ISO-Dateisysteme.MosesMooreVon MarcFonvieilleAktualisiert für &os; 5.X von BenediktKöhlerÜbersetzt von UwePierauSoundkarten einrichtenDen Soundtreiber einrichtenPCIISASoundkartenZunächst sollten Sie in Erfahrung bringen,
welches Soundkartenmodell Sie besitzen, welchen Chip
die Karte benutzt und ob es sich um eine PCI- oder
ISA-Karte handelt. &os; unterstützt eine Reihe
von PCI- als auch von ISA-Karten. Die
Hardware-Notes
zählen alle unterstützten Karten und deren
Treiber auf.KernelKonfigurationUm Ihre Soundkarte benutzen zu können, müssen Sie
den richtigen Gerätetreiber laden. Sie haben zwei
Möglichkeiten, den Treiber zu laden: Am einfachsten
ist es, das Modul mit &man.kldload.8; zu laden. Sie
können dazu die Kommandozeile verwenden:&prompt.root; kldload snd_emu10k1Alternativ können Sie auch einen Eintrag
in der Datei /boot/loader.conf
erstellen:snd_emu10k1_load="YES"Beide Beispiele gelten für eine Creative &soundblaster;
Live! Soundkarte. Weitere ladbare Soundmodule sind in
der Datei /boot/defaults/loader.conf
aufgeführt. Wenn Sie nicht sicher sind, welchen
Gerätetreiber Sie laden müssen, laden Sie den
Treiber snd_driver:&prompt.root; kldload snd_driverDer Treiber snd_driver ist ein
Meta-Treiber, der alle gebräuchlichen Treiber lädt
und die Suche nach dem richtigen Treiber vereinfacht.
Weiterhin können alle Treiber über
/boot/loader.conf geladen werden.Um unter &os; 4.X alle Treiber zu laden,
müssen Sie das Modul snd
anstelle von snd_driver
verwenden.Alternativ können Sie die Unterstützung
für die Soundkarte direkt in den Kernel einkompilieren.
Diese Methode im nächsten Abschnitt beschrieben.
Weiteres über den Bau eines Kernels
erfahren Sie im Kapitel
Kernelkonfiguration.Soundkarten in der Kernelkonfiguration
einrichtenZuerst müssen Sie den allgemeinen Audio-Treiber
&man.sound.4; in die Kernelkonfiguration aufnehmen.
Fügen Sie dazu die folgende Zeile in die
Kernelkonfigurationsdatei ein:device soundUnter &os; 4.X benutzen Sie bitte stattdessen
die nachstehende Zeile:device pcmAls nächstes müssen Sie den richtigen
Treiber in die Kernelkonfiguration einfügen.
Den Treiber entnehmen Sie bitte der Liste der
unterstützen Soundkarten aus den
Hardware-Notes.
Zum Beispiel wird die Creative &soundblaster; Live!
Soundkarte vom Treiber &man.snd.emu10k1.4;
unterstützt. Für diese Karte verwenden
Sie die nachstehende Zeile:
- device snd_emu10k1
+ device "snd_emu10k1"Die richtige Syntax für die Zeile lesen
Sie bitte in der Hilfeseite des entsprechenden
Treibers nach. Die Syntax finden Sie ebenfalls
in der Datei /usr/src/sys/conf/NOTES
(/usr/src/sys/i386/conf/LINT
unter &os; 4.X).Nicht PnP-fähige ISA-Karten benötigen
weiterhin Angaben zu den Karteneinstellungen
(IRQ, I/O-Port). Die Karteneinstellungen tragen
Sie in die Datei /boot/device.hints
ein. Während des Systemstarts liest der
&man.loader.8; diese Datei und reicht die Einstellungen
an den Kernel weiter. Für eine alte
Creative &soundblaster; 16 ISA-Karte, die den
&man.snd.sbc.4; Treiber benutzt, fügen Sie
die folgende Zeile in die Kernelkonfiguration ein:device sbcIn die Datei /boot/device.hints
tragen Sie beispielsweise die folgenden Einstellungen
ein:hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"In diesem Beispiel benutzt die Karte den
I/O-Port 0x220 und den
IRQ 5.Die Hilfeseite des jeweiligen Treibers beschreibt
die Syntax der Einträge in der Datei
/boot/device.hints. Unter
&os; 4.X werden diese Einstellungen direkt in
der Kernelkonfigurationsdatei vorgenommen. Für
die oben gezeigte ISA-Karte wird die nachstehende
Zeile in die Kernelkonfiguration eingefügt:device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15Das Beispiel verwendet die vorgegebenen Werte.
Falls Ihre Karteneinstellungen andere Werte vorgeben,
müssen Sie die Werte in der Kernelkonfiguration
anpassen. Weiteres entnehmen Sie bitte der Hilfeseite
&man.snd.sbc.4;.Unter &os; 4.X benötigen manche Systeme
mit einer auf der Hauptplatine integrierten Soundkarte
noch die nachstehende Zeile in der
Kernelkonfiguration:options PNPBIOSDie Soundkarte testenNachdem Sie den neuen Kernel gestartet oder das
erforderliche Modul geladen haben, sollte Ihre
Soundkarte in den Systemmeldungen (&man.dmesg.8;)
auftauchen. Zum Beispiel:pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>Den Status der Karte können Sie über
die Datei /dev/sndstat
prüfen:&prompt.root; cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz
16384
kld snd_ich (1p/2r/0v channels duplex default)Die Ausgaben können auf Ihrem System anders
aussehen. Wenn das Gerät pcm
nicht erscheint, prüfen Sie bitte Ihre Konfiguration.
Stellen sie sicher, dass Sie den richtigen Treiber
gewählt haben.
beschreibt häufig auftretende Probleme.Wenn alles glatt lief, haben Sie nun eine
funktionierende Soundkarte. Wenn ein CD-ROM
oder DVD-ROM-Laufwerk an Ihrer Soundkarte angeschlossen
ist, können Sie jetzt mit &man.cdcontrol.1; eine
CD abspielen:&prompt.user; cdcontrol -f /dev/acd0 play 1Es gibt viele Anwendungen, wie
audio/workman, die
eine bessere Benutzerschnittstelle besitzen. Um sich
MP3-Audiodateien anzuhören, können Sie
eine Anwendung wie
audio/mpg123 installieren.
Eine schnelle Möglichkeit die Karte zu prüfen,
ist es, Daten an das Gerät /dev/dsp
zu senden:&prompt.user; cat Datei > /dev/dspFür Datei können
Sie eine beliebige Datei verwenden. Wenn Sie einige
Geräusche hören, funktioniert die Soundkarte.Unter &os; 4.X müssen Sie noch
Gerätedateien für die Soundkarte erstellen.
Wenn die Karte als pcm0
erkannt wurde, führen Sie als root
die nachstehenden Befehle aus:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV snd0Wenn auf den vorigen Befehl pcm1
als Ausgabe erschienen ist, dann müssen Sie dieselben
Befehle ausführen, nur dass Sie
snd0 durch
snd1 ersetzen.Der Befehl MAKEDEV erzeugt
mehrere Gerätedateien, die von Anwendungen
benutzt werden.Die Einstellungen des Mixers können Sie
mit dem Kommando &man.mixer.8; verändern.
Weiteres lesen Sie bitte in der Hilfeseite
&man.mixer.8; nach.Häufige ProblemeDevice NodeGerätedateiI/O portIRQDSPFehlerLösungunsupported subdevice XXEin oder mehrere Device Nodes wurden nicht
korrekt angelegt. Wiederholen Sie die oben angegebenen
Schritte.sb_dspwr(XX) timed outDer I/O Port ist nicht korrekt angegeben.bad irq XXDer IRQ ist falsch angegeben. Stellen Sie
sicher, dass der angegebene IRQ mit dem Sound IRQ
übereinstimmt.xxx: gus pcm not attached, out of memoryEs ist nicht genug Speicher verfügbar,
um das Gerät zu betreiben.xxx: can't open /dev/dsp!Überprüfen Sie mit fstat |
grep dsp ob eine andere Anwendung das
Gerät geöffnet hat. Häufige
Störenfriede sind esound
oder die Sound-Unterstützung von
KDE.MunishChopraBeigetragen von Mehrere Tonquellen abspielenOft sollen mehrere Tonquellen gleichzeitig
abgespielt werden, auch wenn
beispielsweise esound oder
artsd das Audiogerät
nicht mit einer anderen Anwendung teilen können.Unter FreeBSD können mit &man.sysctl.8;
virtuelle Tonkanäle
eingerichtet werden. Virtuelle Kanäle mischen
die Tonquellen im Kernel (so können mehr
Kanäle als von der Hardware unterstützt
benutzt werden).Die Anzahl der virtuellen Kanäle können
Sie als Benutzer root wie folgt
einstellen:&prompt.root; sysctl hw.snd.pcm0.vchans=4
&prompt.root; sysctl hw.snd.maxautovchans=4Im Beispiel werden vier virtuelle Kanäle
eingerichtet, eine im Normalfall ausreichende Anzahl.
hw.snd.pcm0.vchans ist die Anzahl
der virtuellen Kanäle des Geräts
pcm0. Die Anzahl kann konfiguriert
werden, sobald das Gerät existiert.
hw.snd.maxautovchans ist die Anzahl der
virtuellen Kanäle, die einem Gerät zugewiesen
werden, wenn es durch &man.kldload.8; eingerichtet
wird. Da das Modul pcm
unabhängig von den Hardware-Treibern geladen werden kann,
gibt hw.snd.maxautovchans die Anzahl
der virtuellen Kanäle an, die später eingerichtete
Geräte erhalten.Wenn Sie ein System ohne &man.devfs.5; einsetzen,
müssen Anwendungen die Geräte
/dev/dsp0.x
verwenden. Wenn hw.snd.pcm.0.vchans wie
oben auf 4 gesetzt wurde, läuft
x von 0
bis 4. Auf Systemen mit
&man.devfs.5; werden die Geräte automatisch
zugeteilt.JosefEl-RayesBeigetragen von Den Mixer einstellenDie Voreinstellungen des Mixers sind im Treiber
&man.pcm.4; fest kodiert. Es gibt zwar viele Anwendungen
und Dienste, die den Mixer einstellen können
und die eingestellten Werte bei jedem Start wieder
setzen, am einfachsten ist es allerdings, die Werte
direkt im Treiber einzustellen. Der Mixer kann in
der Datei /boot/device.hints
eingestellt werden:hint.pcm.0.vol="100"Die Zeile setzt die Lautstärke des Mixers
auf den Wert 100, sobald das Modul
&man.pcm.4; geladen wird.Diese Einstellungen funktionieren ab &os; 5.3.ChernLeeEin Beitrag von BenediktKöhlerÜbersetzt von MP3-AudioMP3 (MPEG Layer 3 Audio) ermöglicht eine
Klangwiedergabe in CD-ähnlicher Qualität, was Sie sich
auf Ihrem FreeBSD-Rechner nicht entgehen lassen sollten.MP3-PlayerXMMS (X Multimedia System) ist
bei weitem der beliebteste MP3-Player für
&xfree86;.
WinAmp-Skins können auch mit
XMMS genutzt werden, da die
Benutzerschnittstelle fast identisch mit der von Nullsofts
WinAmp ist. Daneben
unterstützt XMMS auch eigene
Plugins.XMMS kann als
multimedia/xmms Port oder Package installiert
werden.Die Benutzerschnittstelle von
XMMS ist leicht zu erlernen und
enthält eine Playlist, einen graphischen Equalizer und
vieles mehr. Diejenigen, die mit WinAmp vertraut sind, werden
XMMS sehr leicht zu benutzen
finden.Der Port audio/mpg123 ist
ein alternativer, kommandozeilenorientierter MP3-Player.mpg123 kann ausgeführt
werden, indem man das zu benutzende Sound Device und die
abzuspielende MP3-Datei auf der Kommandozeile wie unten
angibt:&prompt.root; mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
/dev/dsp1.0 sollten Sie dabei mit dem
dsp-Device Ihres Systems ersetzen.CD-Audio Tracks rippenBevor man eine ganze CD oder einen CD-Track in das
MP3-Format umwandeln kann, müssen die Audiodaten von der
CD auf die Festplatte gerippt werden. Dabei werden die CDDA
(CD Digital Audio) Rohdaten in WAV-Dateien kopiert.Die Anwendung cdda2wav die im
sysutils/cdrtools Paket enthalten
ist, kann zum Rippen der Audiodaten und anderen Informationen von CDs
genutzt werden.Wenn die Audio CD in dem Laufwerk liegt, können Sie
mit folgendem Befehl (als root) eine
ganze CD in einzelne WAV-Dateien (eine Datei für jeden
Track) rippen:&prompt.root; cdda2wav -D 0,1,0 -Bcdda2wav unterstützt
auch ATAPI (IDE) CD-ROM-Laufwerke. Um von einem IDE-Laufwerk
zu rippen, übergeben Sie auf der Kommandozeile
statt der SCSI-IDs den Gerätenamen. Das folgende
Kommando rippt den 7. Track:&prompt.root; cdda2wav -D /dev/acd0a -t 7Der Schalter bezieht sich auf
das SCSI Device 0,1,0, das sich aus
dem Ergebnis des Befehls cdrecord -scanbus
ergibt.Um einzelne Tracks zu rippen, benutzen Sie den
Schalter wie folgt:&prompt.root; cdda2wav -D 0,1,0 -t 7Dieses Beispiel rippt den siebten Track der Audio
CD-ROM. Um mehrere Tracks zu rippen, zum Beispiel die Tracks
eins bis sieben, können Sie wie folgt einen Bereich
angeben:&prompt.root; cdda2wav -D 0,1,0 -t 1+7Mit &man.dd.1; können Sie ebenfalls Audio-Stücke
von ATAPI-Laufwerken kopieren. Dies wird in
erläutert.MP3-Dateien kodierenGegenwärtig ist Lame der
meistbenutzte MP3-Encoder. Lame
finden Sie unter audio/lame im
Ports-Verzeichnis.Benutzen Sie die WAV-Dateien, die sie von CD gerippt
haben, und wandeln sie mit dem folgenden Befehl die Datei
audio01.wav in
audio01.mp3 um:&prompt.root; lame -h -b 128 \
--tt "Foo Liedtitel" \
--ta "FooBar Künstler" \
--tl "FooBar Album" \
--ty "2001" \
--tc "Geripped und kodiert von Foo" \
--tg "Musikrichtung" \
audio01.wav audio01.mp3128 kbits ist die gewöhnliche MP3-Bitrate. Viele
bevorzugen mit 160 oder 192 kbits eine höhere Qualität.
Je höher die Bitrate ist, desto mehr Speicherplatz
benötigt die resultierende MP3-Datei, allerdings wird die
Qualität dadurch auch besser. Der Schalter
verwendet den higher quality but a
little slower (höhere Qualität, aber etwas
langsamer) Modus. Die Schalter, die mit
beginnen, sind ID3-Tags, die in der Regel
Informationen über das Lied enthalten und in die
MP3-Datei eingebettet sind. Weitere Optionen können in
der Manualpage von Lame nachgelesen
werden.MP3-Dateien dekodierenUm aus MP3-Dateien eine Audio CD zu erstellen, müssen
diese in ein nicht komprimiertes WAV-Format umgewandelt
werden. Sowohl XMMS als auch
mpg123 unterstützen die Ausgabe
der MP3-Dateien in unkomprimierte Dateiformate.Dekodieren mit XMMS:Starten Sie XMMS.Klicken Sie mit der rechten Maustaste, um das
XMMS-Menu zu öffnen.Wählen Sie Preference im
Untermenü Options.Ändern Sie das Output-Plugin in Disk
Writer Plugin.Drücken Sie Configure.Geben Sie ein Verzeichnis ein (oder wählen Sie
browse), in das Sie die unkomprimierte Datei schreiben
wollen.Laden Sie die MP3-Datei wie gewohnt in
XMMS mit einer Lautstärke
von 100% und einem abgeschalteten EQ.Drücken Sie Play und es wird
so aussehen, als spiele XMMS
die MP3-Datei ab, aber keine Musik ist zu hören. Der
Player überspielt die MP3-Datei in eine Datei.Vergessen Sie nicht, das Output-Plugin wieder in den
Ausgangszustand zurückzusetzen um wieder MP3-Dateien
anhören zu können.Mit mpg123 nach stdout schreiben:Geben Sie mpg123 -s
audio01.mp3 > audio01.pcm
ein.XMMS schreibt die Datei im
WAV-Format aus während mpg123 die
MP3-Datei in rohe PCM-Audiodaten umwandelt.
cdrecord kann mit beiden Formaten
Audio-CDs erstellen, &man.burncd.8; kann nur rohe
PCM-Audiodaten verarbeiten. Der Dateikopf von WAV-Dateien
erzeugt am Anfang des Stücks ein Knacken. Sie können
den Dateikopf mit dem Werkzeug SoX,
das sich als Paket oder aus dem Port
audio/sox installieren
lässt, entfernen:&prompt.user; sox -t wav -r 44100 -s -w -c 2 track.wav track.rawLesen Sie in diesem Handbuch,
um mehr Informationen zur Benutzung von CD-Brennern mit FreeBSD zu
erhalten.RossLippertBeigetragen von Videos wiedergebenDie Wiedergabe von Videos ist ein neues, sich schnell
entwickelndes, Anwendungsgebiet. Seien Sie geduldig, es
wird nicht alles so glatt laufen, wie bei den
Audio-Anwendungen.Bevor Sie beginnen, sollten Sie das Modell Ihrer
Videokarte und den benutzten Chip kennen. Obwohl
&xorg; und
&xfree86; viele Vidiokarten
unterstützt, können nur einige Karten Videos
schnell genug wiedergeben. Eine Liste der Erweiterungen,
die der X-Server für eine Videokarte unterstützt,
erhalten Sie unter laufendem X11 mit dem Befehl
&man.xdpyinfo.1;.Halten Sie eine kurze MPEG-Datei bereit, mit der
Sie Wiedergabeprogramme und deren Optionen testen
können. Da einige DVD-Spieler in der Voreinstellung
das DVD-Gerät mit /dev/dvd ansprechen
oder diesen Namen fest einkodiert haben, wollen Sie
vielleicht symbolische Links auf die richtigen
Geräte anlegen:&prompt.root; ln -sf /dev/acd0c /dev/dvd
&prompt.root; ln -sf /dev/racd0c /dev/rdvdAuf FreeBSD 5.X mit &man.devfs.5; werden
andere symbolische Links benötigt:&prompt.root; ln -sf /dev/acd0 /dev/dvd
&prompt.root; ln -sf /dev/acd0 /dev/rdvdWegen &man.devfs.5; gehen gesondert angelegte Links
wie diese bei einem Neustart des Systems verloren.
Damit die symbolischen Links automatisch beim Neustart
des Systems angelegt werden, fügen Sie die
folgenden Zeilen in /etc/devfs.conf
ein:link acd0 dvd
link acd0 rdvdZum Entschlüsseln von DVDs müssen bestimmte
DVD-ROM-Funktionen aufgerufen werden und schreibender
Zugriff auf das DVD-Gerät erlaubt sein.Kerneloptionoptions CPU_ENABLE_SSEKerneloptionoptions USER_LDTEinige Ports sind auf die nachstehenden Kerneloptionen
angewiesen. Bevor Sie einen dieser Ports bauen, fügen
Sie die Kerneloptionen zu Ihrer Kernelkonfiguration hinzu.
Bauen und installieren Sie dann einen neuen Kernel und
starten Sie das System neu.option CPU_ENABLE_SSE
option USER_LDTUnter &os; 5.X existiert
option USER_LDT nicht.X11 benutzt Shared-Memory und Sie sollten die
nachstehenden &man.sysctl.8;-Variablen auf die
gezeigten Werte erhöhen:kern.ipc.shmmax=67108864
kern.ipc.shmall=32768Video-SchnittstellenXVideoSDLDGAEs gibt einige Möglichkeiten, Videos unter
X11 abzuspielen. Welche Möglichkeit funktioniert,
hängt stark von der verwendeten Hardware ab.
Ebenso hängt die erzielte Qualität von der
Hardware ab. Die Videowiedergabe unter X11 ist ein
aktuelles Thema, sodass jede neue Version von
&xorg; oder von
&xfree86; wahrscheinlich
erhebliche Verbesserung enthält.Gebräuchliche Video-Schnittstellen sind:X11: normale X11-Ausgabe über Shared-Memory.XVideo: Eine Erweiterung der X11-Schnittstelle,
die Videos in jedem X11-Drawable anzeigen kann.SDL: Simple Directmedia Layer.DGA: Direct Graphics Access.SVGAlib: Eine Schnittstelle zur Grafikausgabe auf
der Konsole.XVideoDie Erweiterung XVideo (auch Xvideo,
Xv oder xv) von &xorg; und
&xfree86; 4.X,
erlaubt die beschleunigte Wiedergabe von Videos in
jedem Drawable. Diese Erweiterung liefert auch auf
weniger leistungsfähigen Systemen
(beispielsweise einem PIII 400 MHz Laptop)
eine gute Wiedergabe.Ob die Erweiterung läuft, entnehmen Sie der
Ausgabe von xvinfo:&prompt.user; xvinfoXVideo wird untertsützt, wenn die Ausgabe wie
folgt aussieht:X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 2110)
"XV_BRIGHTNESS" (range -128 to 127)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
red, green, blue masks: 0x0, 0x0, 0x0Einige der aufgeführten Formate (wie YUV2 oder YUV12)
existieren in machen XVideo-Implementierungen nicht.
Dies kann zu Problemen mit einigen Spielern führen.XVideo wird wahrscheinlich von Ihrer Karte
nicht unterstützt, wenn die die Ausgabe wie
folgt aussieht:X-Video Extension version 2.2
screen #0
no adaptors presentWenn die XVideo-Erweiterung auf Ihrer Karte nicht
läuft, wird es nur etwas schwieriger, die
Anforderungen für die Wiedergabe von Videos zu
erfüllen. Abhängig von Ihrer Videokarte
und Ihrem Prozessor können Sie dennoch zufriedenstellende
Ergebnisse erzielen. Sie sollten vielleicht die
weiterführenden Quellen in zu Rate ziehen,
um die Geschwindigkeit Ihres Systems zu steigern.Simple Directmedia LayerDie Simple Directmedia Layer, SDL,
ist eine zwischen µsoft.windows;, BeOS und &unix;
portable Schnittstelle. Mit dieser Schnittstelle
können Anwendungen plattformunabhängig und
effizient Ton und Grafik benutzen. SDL
bietet eine hardwarenahe Schnittstelle, die manchmal
schneller als die X11-Schnittstelle sein kann.SDL finden Sie in den Ports
im Verzeichnis devel/sdl12.Direct Graphics AccessDie &xfree86;-Erweiterung
Direct Graphics Access (DGA) erlaubt es
Anwendungen, am X-Server vorbei direkt in den Framebuffer
zu schreiben. Da die Anwendung und der X-Server auf gemeinsame
Speicherbereiche zugreifen, müssen die Anwendungen
unter dem Benutzer root laufen.Die DGA-Erweiterung kann mit &man.dga.1; getestet
werden. Das Kommando dga wechselt,
jedes Mal wenn eine Taste gedrückt wird, die Farben
der Anzeige. Sie können das Programm mit der
Taste q verlassen.Video-AnwendungenVideo-AnwendungenDieser Abschnitt behandelt Anwendungen aus der
&os;-Ports-Collection, die Videos abspielen. An der
Videowiedergabe wird derzeit aktiv gearbeitet, sodass
der Funktionsumfang der Anwendungen von dem hier beschriebenen
abweichen kann.Viele unter &os; laufende Videoanwendungen wurden
unter Linux entwickelt und befinden
sich noch im Beta-Status. Der Betrieb dieser Anwendungen
unter &os; stößt vielleicht auf einige der
nachstehenden Probleme:Eine Anwendung kann eine Datei einer anderen
Anwendung nicht abspielen.Eine Anwendung kann eine selbst produzierte
Datei nicht abspielen.Wenn dieselbe Anwendung auf unterschiedlichen
Maschinen gebaut wird, wird ein Video unterschiedlich
wiedergegeben.Ein vergleichsweise einfacher Filter, wie die
Skalierung eines Bildes, führt zu deutlichen
Artefakten in der Darstellung.Eine Anwendung stürzt häufig ab.Die Dokumentation wird bei der Installation des Ports
nicht installiert. Sie befindet sich entweder auf
dem Internet oder im Verzeichnis
work des Ports.Viele Anwendungen sind zudem sehr Linux-lastig.
Probleme entstehen durch die Implementierung von
Standard-Bibliotheken in Linux-Distributionen oder
dadurch, dass die Anwendung bestimmte Linux-Kernelfunktionen
voraussetzt. Diese Probleme werden nicht immer
vom Betreuer eines Ports bemerkt und umgangen.
In der Praxis entstehen dadurch folgende Probleme:Eigenschaften des Prozessors werden über
/proc/cpuinfo ermittelt.Die falsche Anwendung von Threads führt dazu,
dass sich ein Programm aufhängt statt sich
zu beenden.Die Anwendung hängt von anderen Anwendungen
ab, die sich noch nicht in der &os;-Ports-Collection
befinden.Allerdings arbeiten die Anwendungsentwickler bislang mit
den Betreuern der Ports zusammen, sodass zusätzlicher
Portierungsaufwand minimiert wird.MPlayerMPlayer ist ein kürzlich
entstandener und sich stark weiterentwickelnder Video-Spieler.
Das Hauptaugenmerk des MPlayer-Teams
liegt auf Geschwindigkeit und Flexibilität auf
Linux und anderen &unix; Systemen. Das Projekt entstand
weil der Gründer des Teams unzufrieden mit der
Geschwindigkeit bestehender Video-Spieler war. Kritiker
behaupten, dass die Benutzeroberfläche der einfachen
Gestaltung zum Opfer fiel. Wenn Sie sich allerdings erstmal
an die Kommandozeilenoptionen und die Tastensteuerung
gewöhnt haben, funktioniert die Anwendung sehr gut.MPlayer bauenMPlayerbauenMPlayer finden Sie in der
Ports-Collection unter
multimedia/mplayer.
Der Bau von MPlayer
berücksichtigt die vorhandene Harware und erzeugt
ein Programm, das nicht auf ein anderes System übertragbar
ist. Es ist daher wichtig, dass Sie das Programm aus
den Ports bauen und nicht das fertige Paket installieren.
Zusätzlich können Sie auf der Kommandozeile
von make noch einige Optionen angeben,
die im Makefile beschrieben sind
und am die Anfang des Baus ausgegeben werden:&prompt.root; cd /usr/ports/multimedia/mplayer
&prompt.root; make
N - O - T - E
Take a careful look into the Makefile in order
to learn how to tune mplayer towards you personal preferences!
For example,
make WITH_GTK1
builds MPlayer with GTK1-GUI support.
If you want to use the GUI, you can either install
/usr/ports/multimedia/mplayer-skins
or download official skin collections from
http://www.mplayerhq.hu/homepage/dload.htmlFür die meisten Benutzer sind die
voreingestellten Option in Ordnung. Wenn Sie
den XviD-Codec benötigen, müssen
Sie auf der Kommandozeile die Option
WITH_XVID angeben. Das
DVD-Gerät können Sie mit der
Option WITH_DVD_DEVICE
angeben. Wenn Sie die Option nicht angeben,
wird /dev/acd0 benutzt.Als dieser Abschnitt verfasst wurde, baute der
MPlayer-Port die
HTML-Dokumentation sowie die beiden Programme
mplayer und
mencoder. Mit
mencoder können Sie
Videodateien umwandeln.Die HTML-Dokumentation von
MPlayer ist sehr lehrreich.
Wenn Sie in diesem Kapitel Informationen über
Video-Hardware oder Schnittstellen vermissen, ist
die MPlayer-Dokumentation
eine ausgezeichnete Quelle. Wenn Sie Informationen
über die Video-Unterstützung unter &unix;
benötigen, sollten Sie die
MPlayer-Dokumentation
auf jeden Fall lesen.MPlayer benutzenMPlayerbenutzenJeder Benutzer von MPlayer
muss in seinem Heimatverzeichnis das Verzeichnis
.mplayer
anlegen. Dieses Verzeichnis können Sie
wie folgt anlegen:&prompt.user; cd /usr/ports/multimedia/mplayer
&prompt.user; make install-userDie Kommandozeilenoptionen von mplayer
sind in der Hilfeseite aufgeführt. Eine genaue
Beschreibung befindet sich in der HTML-Dokumentation.
In diesem Abschnitt wird nur der normale Gebrauch
von mplayer beschrieben.Um eine Datei, wie
testfile.avi,
unter verschiedenen Video-Schnittstellen abzuspielen,
benutzen Sie die Option :&prompt.user; mplayer -vo xv testfile.avi&prompt.user; mplayer -vo sdl testfile.avi&prompt.user; mplayer -vo x11 testfile.avi&prompt.root; mplayer -vo dga testfile.avi&prompt.root; mplayer -vo 'sdl:dga' testfile.aviEs lohnt sich, alle Option zu testen. Die
erzielte Geschwindigkeit hängt von vielen
Faktoren ab und variiert beträchtlich je nach
eingesetzter Hardware.Wenn Sie eine DVD abspielen wollen, ersetzen Sie
testfile.avi durch
.
N ist die Nummer des
Stücks, das Sie abspielen wollen und
Gerät gibt den
Gerätenamen des DVD-ROMs an. Das nachstehende
Kommando spielt das dritte Stück von
/dev/dvd:&prompt.root; mplayer -vo dga -dvd://3 /dev/dvdDas standardmäßig verwendete
DVD-Laufwerk kann beim Bau des
MPlayer-Ports
mit der Option WITH_DVD_DEVICE
festgelegt werden. Die Voreinstellung verwendet
das Gerät /dev/acd0.
Genaueres finden Sie im Makefile
des Ports.Die Tastenkombinationen zum Abbrechen, Anhalten
und Weiterführen der Wiedergabe entnehmen Sie
bitte der Ausgabe von mplayer -h
oder der Hilfeseite.Weitere nützliche Optionen für die
Wiedergabe sind zur Wiedergabe
im Vollbild-Modus und
zur Steigerung der Geschwindigkeit.Damit die Kommandozeile von mplayer
kurz bleibt, kann ein Benutzer Vorgaben in der Datei
.mplayer/config hinterlegen:vo=xv
fs=yes
zoom=yesSchließlich kann mplayer
noch DVD-Stücke in .vob-Dateien
rippen. Das zweite Stück einer DVD wandeln Sie
wie folgt in eine Datei um:&prompt.root; mplayer -dumpstream -dumpfile out.vob -dvd://2 /dev/dvdDie Ausgabedatei out.vob
wird im MPEG-Format abgespeichert und kann mit
anderen Werkzeugen aus diesem Abschnitt bearbeitet
werden.mencodermencoderSie sollten die HTML-Dokumentation lesen, bevor
Sie mencoder benutzen. Es gibt
zwar eine Hilfeseite, die aber ohne die HTML-Dokumentation
nur eingeschräkt nützlich ist. Es gibt
viele Möglichkeiten die Qualität zu verbessern,
die Bitrate zu verringern und Formate zu konvertieren.
Einige davon haben erhebliche Auswirkungen auf die
Geschwindigkeit der Wiedergabe. Zum Start finden
Sie im Folgenden einige Kommandozeilen. Die erste
kopiert einfach eine Datei:&prompt.user; mencoder input.avi -oac copy -ovc copy -o output.aviFalsche Kombinationen von Kommandozeilenparametern
ergeben eventuell Dateien, die selbst
mplayer nicht mehr abspielen kann.
Wenn Sie in eine Datei rippen, sollten Sie daher auf
jeden Fall die Option von
mplayer verwenden.Die nachstehende Kommandozeile wandelt die Datei
input.avi nach MPEG4 mit MPEG3
für den Ton um (hierfür wird der Ports
audio/lame
benötigt):&prompt.user; mencoder input.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.aviDie Ausgabedatei lässt sowohl mit
mplayer als auch
xine abspielen.Wenn Sie input.avi durch
ersetzen und das
Kommando unter root laufen lassen,
können Sie ein DVD-Stück direkt konvertieren.
Da Sie wahrscheinlich beim ersten Mal unzufrieden mit
den Ergebnissen sind, sollten Sie das Stück zuerst
in eine Datei schreiben und anschließend
die Datei weiterverarbeiten.Der Video-Spieler xineDer Video-Spieler xine
ist ein Projekt mit großem Umfang. Das Projekt
will nicht nur ein Programm für alle Video-Anwendungen
bieten, sondern auch eine wiederverwendbare Bibliothek
und ein Programm, das durch Plugins erweiterbar ist.
Das Programm steht als fertiges Paket oder als Port
unter multimedia/xine
zur Verfügung.Der multimedia/xine-Spieler
hat noch ein paar Ecken und Kanten, macht aber insgesamt
einen guten Eindruck. Für einen reibungslosen
Betrieb benötigt xine
entweder eine schnelle CPU oder
die XVideo-Erweiterung. Das GUI
ist etwas schwerfällig.Zurzeit gibt es kein xine-Modul,
das CSS-kodierte DVDs abspielen kann und sich in
der &os; Ports-Collection befindet.xine ist benutzerfreundlicher
als MPlayer, bietet allerdings
nicht soviele Möglichkeiten. Am schnellsten läuft
xine mit der
XVideo-Erweiterung.In der Voreinstellung startet xine
eine grafische Benutzeroberfläche. Über
Menüs können Sie Dateien öffnen:&prompt.user; xineAlternativ können Sie das Programm auch ohne
GUI aufrufen und Dateien direkt abspielen:&prompt.user; xine -g -p mymovie.aviDie transcode-Werkzeugetranscode ist kein Spieler
sondern eine Sammlung von Werkzeugen, die
.avi- und
.mpg-Dateien umwandeln.
transcode mischt Video-Dateien
und kann kaputte Video-Dateien reparieren. Die
Werkzeuge werden als Filter verwendet, das heißt
die Ein- und Ausgaben verwenden
stdin/stdout.Wie MPlayer befindet sich
transcode in einem experimentellen
Stadium und sollte aus dem Port
multimedia/transcode
gebaut werden. Der Bau besitzt viele Optionen, wir
empfehlen die nachstehende Kommandozeile:&prompt.root; make WITH_LIBMPEG2=yesWenn Sie den Port
multimedia/avifile
installieren wollen, sollten Sie die Kommandozeile
um die Option erweitern:&prompt.root; make WITH_AVIFILE=yes WITH_LIBMPEG2=yesDie beiden folgenden Kommandozeilen wandeln
Videoformate um und skalieren dabei das Video.
Das erste Kommando wandelt das Video in eine
openDIVX-AVI-Datei um, das zweite wandelt das
Video in das portablere MPEG-Format um.&prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \
-y opendivx -N 0x55 -o output.avi&prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \
-y mpeg -N 0x55 -o output.tmp
&prompt.user; tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1Es gibt eine Hilfeseite für
transcode, allerdings existiert
kaum Dokumentation zu den verschiedenen
tc*-Werkzeugen (wie
tcmplex), die ebenfalls
installiert werden. Zu jedem Kommando gibt
aber die Option eine knappe
Beschreibung aus.transcode läuft erheblich
langsamer als mencoder, produziert
aber Dateien, die sich mit mehr Programmen abspielen
lassen. Beispielsweise lassen sich mit
transcode erzeugte MPEGs mit
&windows.media; Player und
Apples &quicktime; abspielen.Weiterführende QuellenDie Video-Software für &os; entwickelt sich
sehr schnell. Es ist wahrscheinlich, dass die hier
angesprochenen Probleme bald gelöst sind. Bis dahin
müssen Anwender, die das meiste aus den Audio- und
Video-Fähigkeiten von &os; machen wollen, Informationen
aus mehreren FAQs und Tutorien zusammensuchen und
verschiedene Anwendungen nebeneinander betreiben. Dieser
Abschnitt weist auf weitere Informationsquellen hin.Die
MPlayer-Dokumentation
ist sehr aufschlussreich. Die Dokumente sollten wahrscheinlich
von jedem gelesen werden, der hohe Fachkenntnisse über
Video auf &unix; Systemen erlangen will. Die
MPlayer-Mailinglisten reagiert
feindselig auf Personen, die es nicht für nötig
halten, die Dokumentation zu lesen. Wenn Sie Fehlerberichte
an die Liste schicken wollen, lesen Sie bitte vorher die
ausgezeichnete Dokumentation (RTFM).Das
xine HOWTO
enthält allgemein gültige Hinweise zur
Verbesserung der Wiedergabegeschwindigkeit.Schließlich gibt es noch weitere vielversprechende
Anwendungen, die Sie vielleicht ausprobieren wollen:Avifile
gibt es schon als Port
multimedia/avifile.Ogle
wurde ebenfalls schon portiert:
multimedia/ogle.Xtheater.multimedia/dvdauthor,
ist ein Open-Source-Paket, mit dem Sie DVDs erstellen
können.JosefEl-RayesBeigetragen von MarcFonvieilleÜberarbeitet von TV-Karten einrichtenTV-KartenEinführungMit TV-Karten können Sie mit Ihrem Rechner
über Kabel oder Antenne fernsehen. Die meisten
Karten besitzen einen RCA- oder S-Video-Eingang.
Einige Karten haben auch einen FM-Radio-Empfänger.Der &man.bktr.4;-Treiber von &os; unterstützt
PCI-TV-Karten mit einem Brooktree Bt848/849/878/879 oder
einem Conexant CN-878/Fusion 878a Chip. Die Karte sollte
einen der unterstützten Empfänger besitzen, die in
der Hilfeseite &man.bktr.4; aufgeführt sind.Den Treiber einrichtenUm Ihre Karte zu benutzen, müssen Sie den
&man.bktr.4;-Treiber laden. Fügen Sie die
nachstehende Zeile in die Datei
/boot/loader.conf ein:bktr_load="YES"Sie können den Treiber für die TV-Karte
auch fest in den Kernel compilieren. Erweitern Sie
dazu Ihre Kernelkonfiguration um die folgenden Zeilen:device bktr
device iicbus
device iicbb
device smbusDie zusätzlichen Treiber werden benötigt,
da die Komponenten der Karte über einen I2C-Bus
verbunden sind. Bauen und installieren Sie dann den
neuen Kernel.Anschließend müssen Sie Ihr System
neu starten. Während des Neustarts sollte
Ihre TV-Karte erkannt werden:bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicbus1: <Philips I2C bus> on iicbb0 master-only
smbus0: <System Management Bus> on bti2c0
bktr0: Pinnacle/Miro TV, Philips SECAM tuner.Abhängig von Ihrer Hardware können die
Meldungen natürlich anders aussehen. Sie sollten
aber prüfen, dass der Empfänger richtig erkannt wird.
Die entdeckten Geräte lassen sich mit &man.sysctl.8;
oder in der Kernelkonfigurationsdatei überschreiben.
Wenn Sie beispielsweise einen Philips-SECAM-Empfänger
erzwingen wollen, fügen Sie die folgende Zeile
zur Kernelkonfigurationsdatei hinzu:options OVERRIDE_TUNER=6Alternativ können Sie direkt &man.sysctl.8; benutzen:&prompt.root; sysctl hw.bt848.tuner=6Weiteres zu den Optionen entnehmen Sie bitte der
Hilfeseite &man.bktr.4; und der Datei
/usr/src/sys/conf/NOTES.
Unter &os; 4.X schauen Sie bitte in der Datei
/usr/src/sys/i386/conf/LINT nach.Nützliche AnwendungenUm die TV-Karte zu benutzen, müssen Sie eine
der nachstehenden Anwendungen installieren:multimedia/fxtv
lässt das Fernsehprogramm in einem Fenster laufen
und kann Bilder, Audio und Video aufzeichnen.multimedia/xawtv
eine weitere TV-Anwendung, mit den gleichen Funktionen
wie fxtv.misc/alevt dekodiert
und zeigt Videotext/Teletext an.Mit audio/xmradio
lässt sich der FM-Radio-Empfänger, der sich
auf einigen TV-Karten befindet, benutzen.audio/wmtune
ein leicht zu bedienender Radio-Empfänger.Weitere Anwendungen finden Sie in der &os;
Ports-Collection.FehlersucheWenn Sie Probleme mit Ihrer TV-Karte haben, prüfen
Sie zuerst, ob der Video-Capture-Chip und der Empfänger
auch wirklich vom &man.bktr.4;-Treiber unterstützt
werden. Prüfen Sie dann, ob Sie die richtigen
Optionen verwenden. Weitere Hilfe erhalten Sie auf
der Mailingliste &a.multimedia.name; und in deren
Archiven.MarcFonvieilleBeigetragen von ScannerScannerEinführungUnter &os; können Sie, wie unter jedem anderen
modernen Betriebssystem, Scanner benutzen. Die Anwendung
SANE (Scanner Access Now Easy)
aus der Ports-Collection stellt eine einheitliche Schnittstelle
(API)
für den Zugriff auf Scanner bereit.
SANE greift auf Scanner
mithilfe einiger &os;-Treiber zu.&os; unterstützt sowohl SCSI- als auch USB-Scanner.
Prüfen Sie vor der Konfiguration mithilfe der
Liste
der unterstützten Geräte ob Ihr Scanner
von SANE unterstützt wird.
Die Hilfeseite &man.uscanner.4; zählt ebenfalls die
unterstützten USB-Scanner auf.Den Kernel für Scanner einrichtenDa sowohl SCSI- als auch USB-Scanner unterstützt
werden, werden abhängig von der Schnittstelle
unterschiedliche Treiber benötigt.USB-ScannerIm GENERIC-Kernel sind
schon alle, für einen USB-Scanner notwendigen,
Treiber enthalten. Wenn Sie einen angepassten Kernel
benutzen, prüfen Sie, dass die Kernelkonfiguration
die nachstehenden Zeilen enthält:device usb
device uhci
device ohci
device uscannerAbhängig vom Chipsatz Ihrer Systemplatine
benötigen Sie in der Kernelkonfiguration entweder
die Option device uhci oder die
Option device ohci. Die
Kernelkonfiguration kann allerdings auch beide Optionen
enthalten.Wenn Sie den Kernel nicht neu bauen wollen
und einen angepassten Kernel verwenden, können
Sie den Treiber &man.uscanner.4; direkt mit dem
Kommando &man.kldload.8; laden:&prompt.root; kldload uscannerWenn Sie das Modul bei jedem Systemstart laden
wollen, fügen Sie in der Datei
/boot/loader.conf die nachstehende
Zeile hinzu:uscanner_load="YES"Nachdem Sie das System mit dem richtigen Kernel
neu gestartet oder das Modul geladen haben, stecken
Sie den USB-Scanner ein. In den Systemmeldungen
(&man.dmesg.8;) sollte ein Eintrag wie der folgende
erscheinen:uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2Die Meldung besagt, dass der Scanner die
Gerätedatei /dev/uscanner0
benutzt.Unter &os; 4.X muss der USB-Daemon (&man.usbd.8;)
laufen, damit manche USB-Geräte erkannt werden.
Um den USB-Daemon zu aktivieren, fügen Sie in
der Datei /etc/rc.conf die Anweisung
usbd_enable="YES" ein und starten
die Maschine neu.SCSI-ScannerWenn Ihr Scanner eine SCSI-Schnittstelle besitzt,
ist die Kernelkonfiguration abhängig vom
verwendeten SCSI-Controller. Der
GENERIC-Kernel unterstützt
die gebräuchlichen SCSI-Controller. Den richtigen
Treiber finden Sie in der Datei NOTES
(LINT unter &os; 4.X).
Neben dem Treiber muss Ihre Kernelkonfiguration
noch die nachstehenden Zeilen enthalten:device scbus
device passNachdem Sie einen Kernel gebaut haben, sollte
der Scanner beim Neustart in den Systemmeldungen
erscheinen:pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfersWenn der Scanner während des Systemstarts
ausgeschaltet war, können Sie die Geräteerkennung
erzwingen, indem Sie den SCSI-Bus erneut absuchen.
Verwenden Sie dazu das Kommando &man.camcontrol.8;:&prompt.root; camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successfulDer Scanner wird anschließend in der
SCSI-Geräteliste angezeigt:&prompt.root; camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)Weiteres über SCSI-Geräte lesen Sie
bitte in den Hilfeseiten &man.scsi.4; und &man.camcontrol.8;
nach.SANE konfigurierenSANE besteht aus zwei
Teilen: den Backends
(graphics/sane-backends)
und den Frontends
(graphics/sane-frontends).
Das Backend greift auf den Scanner zu. Welches Backend
welchen Scanner unterstützt, entnehmen Sie der
Liste
der unterstützten Geräte..
Der Betrieb eines Scanners ist nur dem richtigen
Backend möglich. Die Frontends sind die Anwendungen,
mit denen gescannt wird (xscanimage).Installieren Sie zuerst den Port oder das Paket
graphics/sane-backends.
Anschließend können Sie mit dem Befehl
sane-find-scanner prüfen, ob
SANE Ihren Scanner erkennt:&prompt.root; sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3Die Ausgabe zeigt die Schnittstelle und die verwendete
Gerätedatei des Scanners. Der Hersteller und das
Modell können in der Ausgabe fehlen.Bei einigen USB-Scannern müssen Sie die
Firmware aktualisieren, dies wird in der Hilfeseite
des Backends erklärt. Lesen Sie bitte auch
die Hilfeseiten &man.sane-find-scanner.1; und
&man.sane.7;.Als nächstes müssen Sie prüfen, ob
der Scanner vom Frontend erkannt wird. Die
SANE-Backends werden
mit dem Kommandozeilenwerkzeug &man.scanimage.1;
geliefert. Mit diesem Werkzeug können Sie
sich Scanner anzeigen lassen und den Scan-Prozess
von der Kommandozeile starten. Die Option
zeigt die Scanner an:&prompt.root; scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scannerErscheint die Meldung, dass kein Scanner gefunden
wurde oder wird gar keine Ausgabe erzeugt, konnte
&man.scanimage.1; keinen Scanner erkennen. In diesem
Fall müssen Sie in der Konfigurationsdatei des Backends
das zu benutzende Gerät eintragen. Die
Konfigurationsdateien der Backends befinden sich
im Verzeichnis
/usr/local/etc/sane.d/.
Erkennungsprobleme treten bei bestimmten USB-Scannern
auf.Mit dem USB-Scanner aus
zeigt sane-find-scanner die
folgende Ausgabe:&prompt.root; sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0Der Scanner wurde richtig erkennt, er benutzt eine
USB-Schnittstelle und verwendet die Gerätedatei
/dev/uscanner0. Ob der Scanner
vom Frontend erkannt wird, zeigt das nachstehende
Kommando:&prompt.root; scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).Da der Scanner nicht erkannt wurde, muss die Datei
/usr/local/etc/sane.d/epson.conf editiert
werden. Der verwendete Scanner war ein
&epson.perfection; 1650, daher wird das
epson-Backend benutzt. Lesen Sie
bitte alle Kommentare in der Konfigurationsdatei des
Backends. Die durchzuführenden Änderungen
sind einfach. Kommentieren Sie zunächst alle
Zeilen mit der falschen Schnittstelle aus. Da der
Scanner eine USB-Schnittstelle besitzt, wurden im
Beispiel alle Zeilen, die mit scsi
anfingen, auskommentiert. Fügen Sie dann die
Schnittstelle und den Gerätenamen am Ende der
Datei ein. In diesem Beispiel wurde die nachstehende
Zeile eingefügt:usb /dev/uscanner0Weitere Hinweise entnehmen Sie bitte der Hilfeseite
des Backends. Jetzt können Sie prüfen,
ob der Scanner richtig erkannt wird:&prompt.root; scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scannerDer Scanner wurde nun erkannt. Es ist nicht wichtig,
ob der Hersteller oder das Modell richtig angezeigt werden.
Wichtig ist die Ausgabe `epson:/dev/uscanner0',
die das richtige Backend und den richtigen Gerätenamen
anzeigt.Wenn scanimage -L den Scanner erkannt
hat, ist der Scanner eingerichtet und bereit, zu
scannen.Obwohl wir mit &man.scanimage.1; von der Kommandozeile
scannen können, ist eine graphische Anwendung
zum Scannen besser geeignet. SANE
bietet ein einfaches und effizientes Werkzeug:
xscanimage (graphics/sane-frontends).Xsane
(graphics/xsane)
ist eine weitere beliebte graphische Anwendung.
Dieses Frontend besitzt erweiterte Funktionen
wie den Scan-Modus (beispielsweise Photo, Fax),
eine Farbkorrektur und Batch-Scans. Beide Anwendungen
lassen sich als
GIMP-Plugin verwenden.Den Scanner für Benutzerkonten freigebenVorher wurden alle Tätigkeiten mit
root-Rechten ausgeführt.
Wenn andere Benutzer den Scanner benutzen sollen,
müssen sie Lese- und Schreibrechte auf die
Gerätedatei des Scanners besitzen. Im
Beispiel wird die Datei /dev/uscanner0
verwendet, die der Gruppe operator
gehört. Damit der Benutzer joe
auf den Scanner zugreifen kann, muss das Konto in
die Gruppe operator aufgenommen
werden:&prompt.root; pw groupmod operator -m joeWeiteres entnehmen Sie bitte der Hilfeseite
&man.pw.8;.Aus Sicherheitsgründen sollten Sie genau darauf
achten, wen Sie in eine Gruppe aufnehmen, besonders
wenn es sich um die Gruppe operator
handelt.
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 96eaeeb3bf..f3bac7be48 100644
--- a/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml
@@ -1,5328 +1,5520 @@
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.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 Der inetdSuper-ServerÜberblick&man.inetd.8; wird auch als Internet
Super-Server bezeichnet, weil er Verbindungen für
- mehrere Daemonen verwaltet. Daemonen sind Programme, die
- Netzwerkdienste anbieten, inetd
- dient also als Verwaltungsserver für andere Daemonen.
- Wenn eine Verbindung eintrifft, bestimmt
- inetd, welcher Daemon dafür
- zuständig ist, aktiviert den Daemon und gibt die
- Verbindung an ihn weiter. Durch die Nutzung einer einzigen
+ 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). Durch die Nutzung einer einzigen
Instanz des inetd-Daemons an Stelle
viele einzelner Daemonen lässt sich die Systemlast
verringern.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
/etc/rc.conf initialisiert. Die Option
inetd_enable ist in der Voreinstellung auf
NO gesetzt, wird aber oft von
sysinstall aktiviert, wenn man das
mittlere Sicherheitsprofil auswählt. Die Verwendung von
inetd_enable="YES" oder
inetd_enable="NO" in
/etc/rc.conf deaktiviert oder startet
inetd beim Systemstart.Weitere Optionen können über die Option
inetd_flags an
inetd übergeben werden.Kommandozeilenoptioneninetd verwendet folgende
Syntax:-dDebugging aktivieren.-lDie Protokollierung von erfolgreich aufgebauten
Verbindungen aktivieren.-wTCP-Wrapping für externe Dienste aktivieren
(Voreinstellung).-WTCP-Wrapping für interne, in
inetd eingebaute Dienste
aktivieren (Voreinstellung).-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.-aLegt die IP-Adresse fest, an die ein Dienst gebunden
wird. Alternativ kann auch ein Rechnername angegeben
werden. In diesem Fall wird die IPv4- oder IPv6-Adresse
des Rechners verwendet. Ein Rechnername wird meist dann
festgelegt, wenn inetd
innerhalb eines &man.jail.8;s läuft. In diesem Fall
entspricht der Rechnername der &man.jail.8;-Umgebung.Wenn ein Rechnername angegeben wird, und sowohl IPv4
als auch IPv6 benötigt werden, muss jedes Protokoll
durch einen Eintrag in
/etc/inetd.conf an jeden einzelnen
benötigten Dienst gebunden werden. Ein TCP-basierter
Dienst benötigt also zwei Einträge, einen
für tcp4, den anderen für
tcp6.-pLegt eine alternative Datei fest, in der Prozess-IDs
gespeichert werden sollen.Diese Argumente können durch das Setzen der Option
inetd_flags in der Datei
/etc/rc.conf an
inetd übergeben werden. In der
Voreinstellung hat inetd_flags den Wert
-wW. TCP-Wrapping ist also für interne
und externe Dienste von inetd
aktiviert. Im Normalfall müssen diese Parameter weder
geändert noch in /etc/rc.conf
eingetragen werden.Ein externer Dienst ist ein Daemon ausserhalb von
inetd, der nur aktiviert wird, wenn
eine Verbindung für ihn ankommt. Ein interner Dienst
wird hingegen von inetd selbst
bereitgestellt.inetd.confDie Konfiguration von inetd
erfolgt über die Datei
/etc/inetd.conf.Wenn /etc/inetd.conf geändert
wird, kann inetd durch Senden eines
HangUP-Signals an den inetd-Prozess
veranlasst werden, seine Konfigurationsdatei neu einzulesen.
Ein HangUP-Signal an inetd
senden&prompt.root; kill -HUP `cat /var/run/inetd.pid`Jede Zeile der Konfigurationsdatei beschreibt jeweils einen
Daemon. Kommentare beginnen mit einem #.
/etc/inetd.conf hat folgenden Aufbau:
service-name
socket-type
protocol
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]
user[:group][/login-class]
server-program
server-program-argumentsEin Eintrag für den IPv4 verwendenden
ftpd-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]] 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 Childdaemonen, 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.Zusätzlich zu kann
die maximale Anzahl von Verbindungen eines Rechners mit
einem bestimmten Daemon durch die Option
beschränkt werden. 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. Dadurch lassen sich ein
absichtlicher oder unabsichtlicher Ressourcenverbrauch
sowie die Auswirkungen eines
Denial of Service (DoS)-Angriffs auf
einen Rechner begrenzen. oder
sind in diesem Fall obligatorisch.
und
sind
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
fingerd-Daemon bereits in der
Voreinstellung verwendet:finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -suserDer 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 dem bei der Installation ausgewählten
Sicherheitsprofil werden viele der von
inetd verwalteten Daemonen automatisch
aktiviert! Wenn Sie einen bestimmten Daemon nicht
benötigen, deaktivieren Sie ihn! Dazu kommentieren Sie den
jeweiligen Daemon in /etc/inetd.conf mit
einem # aus, und senden ein
Hangup-Signal (HUP) an
inetd. Einige Daemonen, zum Beispiel
fingerd, sollten generell deaktiviert
werden, da sie einen potentiellen Angreifer mit zu viel
Informationen versorgen.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
und
zu beschränken.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 (ident,
identd) über das Netzwerk
an und ist bis zu einem bestimmten Grad konfigurierbar.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:In &os; 5.X wurde portmap
durch rpcbind ersetzt. Benutzer
von &os; 5.X müssen daher in den folgenden
Beispielen portmap durch
rpcbind ersetzen.Der Server benötigt folgende Daemonen:NFSServerDateiserverUnix-ClientsportmapmountdnfsdDaemonBeschreibungnfsdDer NFS-Daemon. Er bearbeitet
Anfragen der NFS-Clients.mountdDer NFS-Mount-Daemon. Er
bearbeitet die Anfragen, die &man.nfsd.8; an ihn
weitergibt.portmap 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:portmap_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:/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 -roSie müssen mountd nach jeder
Änderung von /etc/exports neu
starten, 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 auch das System neu starten.
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; portmap
&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;.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:portmapBegriffBeschreibungNIS-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.
portmapMuss laufen, damit RPC (Remote Procedure Call, ein
von NIS verwendetes Netzwerkprotokoll) funktioniert.
NIS-Server sowie Clients funktionieren ohne
portmap 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.Es wird dabei davon ausgegangen, dass Sie
FreeBSD 3.3 oder eine aktuellere Version verwenden.
Wahrscheinlich funktioniert diese Anleitung
auch für FreeBSD-Versionen ab 3.0, es gibt dafür aber
keine Garantie.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
tcpwrapper-Paket von Wietse Venema.
Mit diesem Paket kann der Administrator für
Zugriffskontrollen die Konfigurationsdateien von
tcpwrapper 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.tcpwrapperDie Verwendung von tcpwrapper
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. FreeBSD verwendet die
DHCP-Implementation von ISC (Internet Software Consortium),
daher beziehen sich alle implementationsspezifischen
Informationen in diesem Abschnitt auf die ISC-Distribution.
ÜbersichtDieser Abschnitt beschreibt sowohl die Client- als auch 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 FreeBSDDer ISC-DHCP-Client ist seit FreeBSD 3.2
vollständig 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.sysinstallDHCP wird von sysinstall
unterstützt. Richten Sie eine Netzkarte unter
sysinstall ein, wird Ihnen zuerst
folgende Frage gestellt: Wollen Sie diese Karte über
DHCP einrichten? 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
(pseudo-device bpf unter &os; 4.X)
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:dhcp_program="/sbin/dhclient"
dhcp_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 Portssammlung 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
(pseudo-device bpf unter &os; 4.X)in
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, können Sie den DHCP-Server 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-server
+ net/isc-dhcp3-relay
installieren. Weitere Informationen zu diesem Thema
finden Sie in &man.dhcrelay.8;.ChernLeeBeigetragen von DNS – Domain Name ServiceÜberblickBINDDNS ist das für die Umwandlung von Rechnernamen in
IP-Adressen zuständige Protokoll. FreeBSD verwendet dazu
BIND (Berkeley Internet Name Domain), die am häufigsten
verwendete Implementierung von DNS. Eine Anfrage nach
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 am jeweiligen Rechner kein Nameserver
installiert sein.DNSIm Internet wird DNS durch ein komplexes System von
autoritativen Root-Nameservern sowie anderen kleineren
Nameservern verwaltet, die individuelle Rechnerinformationen
speichern und untereinander abgleichen.Dieses Dokument beschreibt die unter FreeBSD verwendete
stabile Version BIND 8.x. BIND 9.x kann über den
Port net/bind9
installiert werden.Das DNS-Protokoll wird in den RFCs 1034 und 1035
beschrieben.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 umwandelnOrigin (Ursprung)Die in einer bestimmten Zonendatei beschriebene
Domäne.named, BIND,
NameserverGebräuchliche Namen für das unter FreeBSD
verwendete BIND-NameserverpaketResolverEin 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 Zone innerhalb der
Root-Zone.example.org.
ist eine Zone innerhalb der
org-Zone.foo.example.org.
ist eine Unterdomäne, eine Zone innerhalb der Zone
example.org.1.2.3.in-addr.arpa. ist die Zone mit
allen IP-Adressen des 3.2.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) auf
Anfragen antworten muss, weil der Hauptserver nicht
erreichbar ist.Ein cachender Nameserver ist notwendig, weilein lokaler DNS-Server Daten zwischenspeichern und daher
schneller auf Anfragen reagieren kann als ein entfernter
Server.die Datenmenge reduziert werden muss
(DNS-Verkehr macht etwa 5 % des gesamten Datenverkehrs im
Internet aus).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 FreeBSD wird der BIND-Daemon als
named bezeichnet.DateiBeschreibungnamedDer BIND-Daemon.ndcDas Steuerprogramm für
named./etc/namedbDas Verzeichnis, in dem sich die Zoneninformationen
für BIND befinden./etc/namedb/named.confDie Konfigurationsdatei für
named.Zonendateien befinden sich normalerweise im Verzeichnis
/etc/namedb und enthalten die vom
Nameserver angebotenen DNS-Zoneninformationen.BIND startenBINDStartDa BIND automatisch installiert wird, ist die Konfiguration
relativ einfach.Um den named-Daemon beim
Systemstart automatisch zu starten, fügen Sie folgende
Zeile in /etc/rc.conf ein:named_enable="YES"Um den Daemon (nach der Konfiguration) manuell zu starten,
geben Sie Folgendes ein:&prompt.root; ndc startKonfigurationsdateienBINDKonfigurationsdateienmake-localhost verwendenUm die lokale reverse-DNS-Zonendatei
/etc/namedb/localhost.rev korrekt zu
erzeugen, machen Sie Folgendes:&prompt.root; cd /etc/namedb
&prompt.root; sh make-localhost/etc/namedb/named.conf// $FreeBSD$
//
// Refer to the named(8) manual page for details. If you are ever going
// to setup a primary server, make sure you've understood the hairy
// details of how DNS is working. Even with simple mistakes, you can
// break connectivity for affected parties, or cause huge amount of
// useless Internet traffic.
options {
directory "/etc/namedb";
// In addition to the "forwarders" clause, you can force your name
// server to never initiate queries of its own, but always ask its
// forwarders only, by enabling the following line:
//
// forward only;
// If you've got a DNS server around at your upstream provider, enter
// its IP address here, and enable the line below. This will make you
// benefit from its cache, thus reduce overall DNS traffic in the
Internet.
/*
forwarders {
127.0.0.1;
};
*/ 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 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
/*
* If running in a sandbox, you may have to specify a different
* location for the dumpfile.
*/
// dump-file "s/named_dump.db";
};
// Note: the following will be supported in a future release.
/*
host { any; } {
topology {
127.0.0.0/8;
};
};
*/
// Setting up secondaries is way easier and the rough picture for this
// is explained below.
//
// If you enable a local name server, don't forget to enter 127.0.0.1
// into your /etc/resolv.conf so this server will be queried first.
// Also, make sure to enable it in /etc/rc.conf.
zone "." {
type hint;
file "named.root";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "localhost.rev";
};
zone
"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {
type master;
file "localhost.rev";
};
// NB: Do not use the IP addresses below, they are faked, and only
// serve demonstration/documentation purposes!
//
// Example secondary config entries. It can be convenient to become
// a secondary at least for the zone where your own domain is in. Ask
// your network administrator for the IP address of the responsible
// primary.
//
// Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
// (This is the first bytes of the respective IP address, in reverse
// order, with ".IN-ADDR.ARPA" appended.)
//
// Before starting to setup a primary zone, better make sure you fully
// understand how DNS and BIND works, however. There are sometimes
// unobvious pitfalls. Setting up a secondary is comparably simpler.
//
// NB: Don't blindly enable the examples below. :-) Use actual names
// and addresses instead.
//
// NOTE!!! FreeBSD runs BIND in a sandbox (see named_flags in rc.conf).
// The directory containing the secondary zones must be write accessible
// to BIND. The following sequence is suggested:
//
// mkdir /etc/namedb/s
// chown bind:bind /etc/namedb/s
// chmod 750 /etc/namedb/sWenn Sie BIND innerhalb einer Sandbox betreiben wollen,
lesen Sie bitte den
./*
zone "example.com" {
type slave;
file "s/example.com.bak";
masters {
192.168.1.1;
};
};
zone "0.168.192.in-addr.arpa" {
type slave;
file "s/0.168.192.in-addr.arpa.bak";
masters {
192.168.1.1;
};
};
*/ 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 "example.org";
}; Die Option legt fest, dass es sich
um eine Master-Zone handelt, deren Zoneninformationen sich in
der Datei /etc/namedb/example.org
befinden. Diese Datei wird durch die Option
festgelegt.zone "example.org" {
type slave;
file "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.ZonendateienDie in der Datei
/etc/namedb/example.org definierte
Zonendatei für
example.org könnte
etwa so aussehen:$TTL 3600
example.org. IN SOA ns1.example.org. admin.example.org. (
5 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
; DNS Servers
@ IN NS ns1.example.org.
@ IN NS ns2.example.org.
; Machine Names
localhost IN A 127.0.0.1
ns1 IN A 3.2.1.2
ns2 IN A 3.2.1.3
mail IN A 3.2.1.10
@ IN A 3.2.1.30
; Aliases
www IN CNAME @
; MX Record
@ IN MX 10 mail.example.org.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. (
5 ; 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).5Die Seriennummer der Datei. Sie muss
stets inkrementiert werden, wenn die Zonendatei
geändert wird. Viele Administratoren bevorzugen
ein JJJJMMTTRR-Format, um die
Seriennummer festzulegen.
2001041002 steht also für
den 10.04.2001, die beiden letzten Stellen für die
zweite Modifikation der Zonendatei an diesem Tag. Die
Seriennummer ist von großer Bedeutung, da
Slaveserver daran eine aktualisierte Zonendatei erkennen
können.@ IN NS ns1.example.org.Ein NS-Eintrag. Jeder Nameserver, der für eine Zone
verantwortlich ist, muss über einen solchen Eintrag
verfügen. Das Zeichen @ steht in
unserem Beispiel für
example.org.,
@ verweist also auf den Ursprung.localhost IN A 127.0.0.1
ns1 IN A 3.2.1.2
ns2 IN A 3.2.1.3
mail IN A 3.2.1.10
@ IN A 3.2.1.30Der Eintrag A bezieht sich auf
Rechnernamen. ns1.example.org
würde also zu 3.2.1.2
aufgelöst werden. Da das (Ursprungs-)Symbol
@ verwendet wird, wird
example.org zu
3.2.1.30 aufgelöst.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
Ursprungsrechner
(example.org oder
3.2.1.30). 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 vorhanden sein. Ein Mailserver, der eine Mail
an example.org verschicken
will, verwendet zuerst den MX mit der höchsten
Priorität, danach den mit der nächsthöheren,
bis die E-Mail zugestellt werden kann.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.2.3.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
5 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
3600 ) ; Minimum
@ IN NS ns1.example.org.
@ IN NS ns2.example.org.
2 IN PTR ns1.example.org.
3 IN PTR ns2.example.org.
10 IN PTR mail.example.org.
30 IN PTR example.org.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.named in einer Sandbox
ausführenBINDSandboxchrootEs ist möglich, &man.named.8; als nicht privilegierter
Benutzer in einer mit &man.chroot.8; definierten Sandbox
auszuführen. Dadurch hat der
named-Daemon keinen Zugriff auf
Verzeichnisse und Dateien außerhalb der Sandbox. Sollte
named kompromittiert werden,
lässt sich dadurch der mögliche Schaden begrenzen.
FreeBSD erzeugt dazu automatisch einen Benutzer und eine
Gruppe namens bind.Manchmal wird auch empfohlen, statt mit
chroot das Wurzelverzeichnis für
named zu ändern,
named innerhalb eines &man.jail.8;s
auszuführen. Diese Situation wird hier jedoch nicht
beschrieben.Da named keinen Zugriff auf
Dateien außerhalb der Sandbox (wie Systembibliotheken oder
Protokolldateien) hat, sind einige Vorbereitungen notwendig,
damit named korrekt funktioniert.
Im Folgenden wird angenommen, dass die Sandbox unter
/etc/namedb eingerichtet wird. Außerdem
befinden sich die Dateien in diesem Verzeichnis noch im
Originalzustand. Alle Schritte müssen als
root durchgeführt werden.Erzeugen Sie alle Verzeichnisse, die
named benötigt:&prompt.root; cd /etc/namedb
&prompt.root; mkdir -p bin dev etc var/tmp var/run master slave
&prompt.root; chown bind:bind slave var/*Da named nur schreibend
auf diese Verzeichnisse zugreifen muss, werden auch
keine weiteren Rechte zugeteilt.Erzeugen Sie die Basiszonen sowie die nötigen
Konfigurationsdateien:&prompt.root; cp /etc/localtime etc
&prompt.root; mv named.conf etc && ln -sf etc/named.conf
&prompt.root; mv named.root master
&prompt.root; sh make-localhost && mv localhost.rev localhost-v6.rev master&prompt.root; cat > master/named.localhost
$ORIGIN localhost.
$TTL 6h
@ IN SOA localhost. postmaster.localhost. (
1 ; serial
3600 ; refresh
1800 ; retry
604800 ; expiration
3600 ) ; minimum
IN NS localhost.
IN A 127.0.0.1
^DDadurch ist es named
möglich, die korrekte Systemzeit an &man.syslogd.8;
weiterzugeben.sysloglogsDNSWenn Sie FreeBSD in einer Version vor 4.9-RELEASE
verwenden, erzeugen Sie eine statisch gelinkte Kopie von
named-xfer und kopieren diese
in Ihre Sandbox:&prompt.root; cd /usr/src/lib/libisc
&prompt.root; make cleandir && make cleandir && make depend && make all
&prompt.root; cd /usr/src/lib/libbind
&prompt.root; make cleandir && make cleandir && make depend && make all
&prompt.root; cd /usr/src/libexec/named-xfer
&prompt.root; make cleandir && make cleandir && make depend && make NOSHARED=yes all
&prompt.root; cp named-xfer /etc/namedb/bin && chmod 555 /etc/namedb/bin/named-xferNachdem Sie ihre statische gelinkte Version von
named-xfer installiert haben,
müssen Sie etwas aufräumen, damit keine
veralteten Kopien von Bibliotheken oder Programmen in Ihrem
Quellbaum verbleiben:&prompt.root; cd /usr/src/lib/libisc
&prompt.root; make cleandir
&prompt.root; cd /usr/src/lib/libbind
&prompt.root; make cleandir
&prompt.root; cd /usr/src/libexec/named-xfer
&prompt.root; make cleandirDieser Schritt kann manchmal fehlschlagen. Wenn
dies passiert, machen Sie Folgendes:&prompt.root; cd /usr/src && make cleandir && make cleandirDanach löschen Sie
/usr/obj inklusive aller
Unterverzeichnisse:&prompt.root; rm -fr /usr/obj && mkdir /usr/objDadurch entfernen Sie den ganzen
Müll aus Ihrem Quellbaum und die
fehlgeschlagenen Schritte sollten nun ebenfalls
funktionieren.Wenn Sie &os; in der Version 4.9-RELEASE oder neuer
verwenden, wird die in /usr/libexec
vorhandene Kopie von named-xfer
automatisch statisch gelinkt und Sie können die Datei
einfach mit &man.cp.1; in Ihre Sandbox kopieren.Erzeugen Sie ein dev/null, auf
das named lesend und schreibend
zugreifen kann:&prompt.root; cd /etc/namedb/dev && mknod null c 2 2
&prompt.root; chmod 666 nullLinken Sie /etc/namedb/var/run/ndc
symbolisch nach /var/run/ndc:&prompt.root; ln -sf /etc/namedb/var/run/ndc /var/run/ndcDadurch können Sie auf die Option
verzichten, wenn Sie &man.ndc.8;
aufrufen. Der Inhalt von /var/run
wird beim Systemstart automatisch gelöscht. Diese
Anweisung kann unter Nutzung der Option
in die
crontab von root
eingebaut werden. Lesen Sie dazu auch die Hilfeseite
&man.crontab.5;.sysloglogsnamedWeisen Sie &man.syslogd.8; an, einen zusätzlichen
log-Socket zu erzeugen, auf den
named Schreibzugriff hat. Dazu
hängen Sie in der Datei
/etc/rc.conf an den Eintrag
syslogd_flags die Option
-l /etc/namedb/dev/log an.chrootStellen Sie sicher, dass
named gestartet wird und sein
Wurzelverzeichnis mittels chroot in die
Sandbox setzt, indem Sie folgende Einträge in
/etc/rc.conf einfügen:named_enable="YES"
named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf"Beachten Sie, dass die Konfigurationsdatei
/etc/named.conf durch einen
absoluten Pfad (aber relativ zur
Sandbox) festgelegt wird. Bei der im obigen Beispiel
angesprochenen Datei handelt es sich also um
/etc/namedb/etc/named.conf.Danach bearbeiten Sie
/etc/namedb/etc/named.conf, damit
named weiß, welche Zonen geladen
werden müssen und wo sich diese befinden. Es folgt nun
ein kommentiertes Beispiel (alle nicht dokumentierten
Einträge gelten auch für einen DNS-Server, der nicht
in einer Sandbox läuft):options {
directory "/";
named-xfer "/bin/named-xfer";
version ""; // Don't reveal BIND version
query-source address * port 53;
};
// ndc control socket
controls {
unix "/var/run/ndc" perm 0600 owner 0 group 0;
};
// Zones follow:
zone "localhost" IN {
type master;
file "master/named.localhost";
allow-transfer { localhost; };
notify no;
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "master/localhost.rev";
allow-transfer { localhost; };
notify no;
};
zone "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.int" {
type master;
file "master/localhost-v6.rev";
allow-transfer { localhost; };
notify no;
};
zone "." IN {
type hint;
file "master/named.root";
};
zone "private.example.net" in {
type master;
file "master/private.example.net.db";
allow-transfer { 192.168.10.0/24; };
};
zone "10.168.192.in-addr.arpa" in {
type slave;
masters { 192.168.10.2; };
file "slave/192.168.10.db";
}; directory wird als
/ festgelegt, da sich alle von
named benötigten Dateien in
diesem Verzeichnis befinden (analog zur
/etc/namedb eines
normalen Benutzers.Legt den vollständigen Pfad zur Binärdatei
named-xfer aus der Sicht von
named fest. Das ist nötig,
weil named per Voreinstellung
im Verzeichnis /usr/libexec nach
named-xfer sucht.Legt die Datei (relativ zum
directory-Statement) fest, in der
named die Zonendatei für
diese Zone findet.Legt die Datei (relativ zum
directory-Statement) fest, in die
named eine Kopie der Zonendatei
dieser Zone schreibt, nachdem diese erfolgreich vom
Masterserver angefordert wurde. Aus diesem Grund musste in
den vorherigen Schritten auch bind
der Eigentümer des Verzeichnisses
slave sein.Nachdem Sie diese Schritte erledigt haben, müssen Sie
entweder den Rechner oder &man.syslogd.8; neu starten. Danach
starten Sie &man.named.8; unter Verwendung der neuen, unter
syslogd_flags und
named_flags festgelegten Optionen. Sie
verwenden nun eine Sandboxversion von
named!SicherheitObwohl BIND die am meisten verwendete (und kontrollierte)
Implementierung von DNS darstellt, werden dennoch manchmal neue
Sicherheitsprobleme entdeckt.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.ndc.8;, &man.named.8;, &man.named.conf.5;Offizielle ISC-Seite
zu BIND
BIND FAQsO'Reilly
DNS and BIND 4th EditionRFC1034
- Domain Names - Concepts and FacilitiesRFC1035
- Domain Names - Implementation and Specification
+
+
+
+
+ Tom
+ Rhodes
+ Geschrieben von
+
+
+
+
+ BIND9 und &os;
+
+
+
+ bind9
+ Konfiguration
+
+ Mit &os; 5.3 wurde der DNS-Server
+ BIND9 in das Basissystem aufgenommen. Vorteile
+ der neuen Version sind die verbesserte Sicherheit, ein neues
+ Dateisystem sowie eine automatisierte Konfiguration von
+ &man.chroot.8;. Der erste Teil dieses Abschnitts beschreibt diese
+ Neuerungen inklusive ihrer Konfiguration, der zweite Abschnitt
+ konzentriert sich auf den Umstieg auf &os; 5.3. Der
+ BIND-Server wird im Folgenden als &man.named.8;
+ bezeichnet. Die Grundlagen von DNS wurden
+ bereits im letzten Abschnitt beschrieben. Lesen Sie sich diesen
+ Abschnitt noch einmal durch, bevor Sie fortfahren.
+
+ Die Konfigurationsdateien für named
+ befinden sich unter
+ /var/named/etc/namedb/ und
+ müssen von Ihnen angepasst werden, bevor sie verwendet werden
+ können. Ein Großteil der Änderungen betrifft
+ Dateien in diesem Verzeichnis.
+
+
+ Eine Master-Zone einrichten
+
+ Um eine Master-Zone einzurichten, wechseln Sie ins
+ Verzeichnis
+ /var/named/etc/namedb/
+ und geben den folgenden Befehl ein:
+
+ &prompt.root; sh make-localhost
+
+ Wenn alles klappt, wird die lokale reverse-DNS-Zonendatei
+ localhost.rev
+ (localhost-v6.rev bei Verwendung von
+ IPv6) im Verzeichnis
+ master angelegt. Da es
+ sich dabei um die Standardkonfigurationsdatei handelt, wird
+ diese automatisch in named.conf
+ eingebunden.
+
+
+
+ Eine Slave-Zone einrichten
+
+ Weitere Domains oder Subdomains werden konfiguriert, indem
+ man sie als Slave-Zonen einrichtet. In den meisten Fällen
+ kann master/localhost.rev einfach in das
+ Verzeichnis slave kopiert
+ und angepasst werden. Danach werden die Dateien in
+ named.conf eingebunden. Das folgende
+ Beispiel beschreibt die Konfiguration der Domain
+ example.com:
+
+ zone "example.com" {
+ type slave;
+ file "slave/example.com";
+ masters {
+ 10.0.0.1;
+ };
+};
+
+zone "0.168.192.in-addr.arpa" {
+ type slave;
+ file "slave/0.168.192.in-addr.arpa";
+ masters {
+ 10.0.0.1;
+ };
+};
+
+ Beachten Sie, dass die Master-IP-Adresse
+ nur den primären Domainserver festlegt, von dem die Zonen
+ transferiert werden. Das heißt aber nicht, dass dieser
+ Server auch als DNS-Server arbeitet.
+
+
+
+ BIND automatisch starten
+
+ Um den named-Daemon beim
+ Systemstart automatisch zu starten, fügen Sie
+ folgende Zeile in rc.conf ein:
+
+ named_enable="YES"
+
+ Obwohl es noch weitere Optionen gibt, sollten
+ Sie named bereits jetzt starten können.
+ Zusätzliche Konfigurationsoptionen werden in
+ &man.rc.conf.5; beschrieben. Wenn Sie named
+ nicht über die Datei rc.conf starten
+ wollen, können Sie auch den folgenden Befehl eingeben:
+
+ &prompt.root; /etc/rc.d/named start
+
+
+
+ BIND9 absichern
+
+ &os; führt named automatisch in
+ einer &man.chroot.8;-Umgebung (Sandbox) aus, es gibt aber
+ noch weitere Möglichkeiten, potentielle Angriffe auf Ihren
+ DNS-Server abzuwehren.
+
+
+ Zugriffskontrolllisten
+ (Access Control Lists)
+ verwenden
+
+ Durch Zugriffskontrolllisten können Sie die Abfrage
+ von Zoneninformationen einschränken. Dazu definieren Sie
+ das entsprechende Netzwerk im acl-Abschnitt
+ und fügen anschließend die
+ IP-Adressen in die Zonenkonfigurationsdatei
+ ein. Um den Zugriff auf Zoneninformationen zu erlauben,
+ fügen Sie Zeilen ähnlich den folgenden ein:
+
+ acl "example.com" {
+ 192.168.0.0/24;
+};
+
+zone "example.com" {
+ type slave;
+ file "slave/example.com";
+ masters {
+ 10.0.0.1;
+ };
+ allow-query { example.com; };
+};
+
+zone "0.168.192.in-addr.arpa" {
+ type slave;
+ file "slave/0.168.192.in-addr.arpa";
+ masters {
+ 10.0.0.1;
+ };
+ allow-query { example.com; };
+};
+
+
+
+ Die Ausgabe der Versionsnummer unterbinden
+
+ Die Abfrage der Versionsnummer des DNS-
+ Servers kann einem Angreifer den Zugriff auf das System
+ ermöglichen. Er ist dadurch in der Lage, gezielt nach
+ bekannten Sicherheitslücken dieser Version zu suchen und
+ diese auf Ihr System anzuwenden. Daher ist es eine gute
+ Idee, eine falsche Angabe im Abschitt
+ options der Datei
+ named.conf anzugeben:
+
+ options {
+ directory "/etc/namedb";
+ pid-file "/var/run/named/pid";
+ dump-file "/var/dump/named_dump.db";
+ statistics-file "/var/stats/named.stats";
+ version "None of your business";
+};
+
+
+
+
+
MurrayStokelyBeigetragen von Der Apache HTTP-ServerWebserverKonfigurationApacheÜ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/apache2 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
+ bin und
+ sbin unterhalb des
Serverwurzelverzeichnisses installiert, während sich
Konfigurationsdateien im Verzeichnis
- etc/apache
+ 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 beim Systemstart
zu starten, fügen Sie folgende Zeile in
/etc/rc.conf ein:apache_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-Portssammlung ermöglicht es Ihnen, den
Apache gemeinsam mit einigen der
beliebtesten Zusatzmodule zu installieren.mod_sslWebserversecureSSLVerschlü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 noch
+ 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.
+ wurde. Bevorzugen Sie den Apache 2.X, installieren Sie
+ stattdessen den Port
+ www/apache2, bei dem die
+ SSL-Unterstützung bereits in der Voreinstellung aktiviert
+ ist.mod_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.Wenn Sie den Apache noch
nicht installiert haben, können Sie über den
Port www/apache13-modperl eine
Apacheversion installieren, in die
mod_perl als Modul
einkompiliert wurde.PHPPHPPHP steht für PHP: Hypertext
Preprocessor und ist eine häufig verwendete und
als Open Source veröffentlichte Skriptsprache,
die besonders für die Internetprogrammierung geeignet
ist und in HTML eingebunden werden kann. Die Syntax
ähnelt der von C, &java; und Perl und ist einfach zu
erlernen. Das Hauptanliegen von PHP ist es,
Internetprogrammierern die rasche Erstellung von dynamisch
erzeugten Internetseiten zu ermöglichen. Die
Fähigkeiten von PHP gehen aber weit darüber
hinaus.PHP kann über den Port
lang/php5 installiert
werden.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.Wenn 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, ein HangUP-Signal an
inetd senden.Danach können Sie sich auf Ihrem FTP-Server anmelden:&prompt.user; ftp localhostWartungsysloglogsFTPDer 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/xferlogBeachten 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/etc/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/swatWie bereits in
beschrieben, müssen Sie ein HangUP-Signal an
inetd senden, 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 allen auf Ihrem
&unix;-Rechner vorhandenen Benutzern den Zugriff von einem
&windows;-Client aus ermöglichen wollen, verwenden Sie den
folgenden Befehl:
- &prompt.root; cat /etc/passwd | grep -v "^#" | make_smbpasswd > /usr/local/private/smbpasswd
+ &prompt.root; grep -v "^#" /etc/passwd | make_smbpasswd > /usr/local/private/smbpasswd
&prompt.root; chmod 600 /usr/local/private/smbpasswdFür ausführliche Informationen zur Konfiguration
von Samba sollten Sie die
mitinstallierte Dokumentation lesen. Sie sollten aber nach dem
Lesen dieses Abschnitts in der Lage sein,
Samba zu starten.Samba startenUm Samba beim Systemstart zu
aktivieren, fügen Sie folgende Zeile in
/etc/rc.conf ein:samba_enable="YES"Danach können Sie Samba
jederzeit durch folgenden Befehl starten:&prompt.root; /usr/local/etc/rc.d/samba.sh start
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.Samba verwendet drei Daemonen.
Beachten Sie, dass sowohl nmbd als
auch smbd durch das Skript
samba.sh 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.sh 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
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 ignoreWenn 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 notrust nomodify notrap
+ 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
xntpd_enable="YES" in
/etc/rc.conf ein. Wenn Sie weitere
Argumente an &man.ntpd.8; übergeben wollen, passen Sie
die Option xntpd_flags in der Datei
/etc/rc.conf entsprechend an.Um den NTP-Server ohne einen Systemneustart zu starten,
rufen Sie ntpd mit den unter
xntpd_flags in
/etc/rc.conf festgelegten Parametern auf.
Hierzu ein Beispiel:&prompt.root; ntpd -p /var/run/ntpd.pidUnter &os; 5.X wurden verschiedene Optionen in
/etc/rc.conf umbenannt. Daher
müssen Sie alle Vorkommen von xntpd
durch ntpd ersetzen.ntpd 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/.
diff --git a/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml b/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
index 7e20017a45..6cdec7219f 100644
--- a/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
@@ -1,868 +1,898 @@
PGP SchlüsselPGP-SchlüsselVerwenden Sie die nachstehenden Schlüssel, wenn Sie
eine Signatur überprüfen oder eine verschlüsselte
E-Mail an einen Ansprechpartner oder einen Entwickler schicken wollen.
Den vollständigen Schlüsselring der Benutzer von
FreeBSD.org finden Sie unter
http://www.FreeBSD.org/doc/pgpkeyring.txt.Ansprechpartner&a.security-officer;
&pgpkey.security-officer;
&a.core-secretary;
&pgpkey.core-secretary;
Mitglieder des Core Teams&a.jhb;
&pgpkey.jhb;
&a.kuriyama;
&pgpkey.kuriyama;
&a.scottl;
&pgpkey.scottl;
&a.imp;
&pgpkey.imp;
&a.wes;
&pgpkey.wes;
&a.murray;
&pgpkey.murray;
&a.peter;
&pgpkey.peter;
Entwickler&a.will;
&pgpkey.will;
&a.mat;
&pgpkey.mat;
&a.asami;
&pgpkey.asami;
&a.dougb;
&pgpkey.dougb;
&a.tobez;
&pgpkey.tobez;
&a.mbr;
&pgpkey.mbr;
&a.harti;
&pgpkey.harti;
&a.obraun;
&pgpkey.obraun;
&a.jmb;
&pgpkey.jmb;
&a.brueffer;
&pgpkey.brueffer;
&a.markus;
&pgpkey.markus;
&a.wilko;
&pgpkey.wilko;
&a.perky;
&pgpkey.perky;
&a.jon;
&pgpkey.jon;
&a.luoqi;
&pgpkey.luoqi;
&a.ache;
&pgpkey.ache;
&a.seanc;
&pgpkey.seanc;
&a.cjh;
&pgpkey.cjh;
&a.cjc;
&pgpkey.cjc;
&a.marcus;
&pgpkey.marcus;
&a.nik;
&pgpkey.nik;
&a.ceri;
&pgpkey.ceri;
&a.brooks;
&pgpkey.brooks;
+
+ &a.gnn;
+ &pgpkey.gnn;
+
+
&a.pjd;
&pgpkey.pjd;
&a.bsd;
&pgpkey.bsd;
&a.danfe;
&pgpkey.danfe;
&a.dd;
&pgpkey.dd;
&a.ale;
&pgpkey.ale;
&a.peadar;
&pgpkey.peadar;
&a.josef;
&pgpkey.josef;
&a.ue;
&pgpkey.ue;
&a.ru;
&pgpkey.ru;
&a.le;
&pgpkey.le;
&a.stefanf;
&pgpkey.stefanf;
&a.jedgar;
&pgpkey.jedgar;
&a.green;
&pgpkey.green;
&a.lioux;
&pgpkey.lioux;
&a.fanf;
&pgpkey.fanf;
&a.blackend;
&pgpkey.blackend;
&a.petef;
&pgpkey.petef;
&a.billf;
&pgpkey.billf;
&a.patrick;
&pgpkey.patrick;
&a.gioria;
&pgpkey.gioria;
&a.jmg;
&pgpkey.jmg;
&a.dannyboy;
&pgpkey.dannyboy;
&a.dhartmei;
&pgpkey.dhartmei;
&a.jhay;
&pgpkey.jhay;
&a.sheldonh;
&pgpkey.sheldonh;
&a.mikeh;
&pgpkey.mikeh;
+
+ &a.mheinen;
+ &pgpkey.mheinen;
+
+
&a.ghelmer;
&pgpkey.ghelmer;
&a.mux;
&pgpkey.mux;
&a.mich;
&pgpkey.mich;
&a.foxfair;
&pgpkey.foxfair;
&a.jkh;
&pgpkey.jkh;
+
+ &a.ahze;
+ &pgpkey.ahze;
+
+
&a.trevor;
&pgpkey.trevor;
&a.phk;
&pgpkey.phk;
&a.joe;
&pgpkey.joe;
&a.vkashyap;
&pgpkey.vkashyap;
&a.kris;
&pgpkey.kris;
&a.keramida;
&pgpkey.keramida;
&a.fjoe;
&pgpkey.fjoe;
&a.andreas;
&pgpkey.andreas;
+
+ &a.jkois;
+ &pgpkey.jkois;
+
+
&a.sergei;
&pgpkey.sergei;
&a.maxim;
&pgpkey.maxim;
&a.jkoshy;
&pgpkey.jkoshy;
&a.rik;
&pgpkey.rik;
&a.rushani;
&pgpkey.rushani;
&a.clement;
&pgpkey.clement;
&a.mlaier;
&pgpkey.mlaier;
&a.alex;
&pgpkey.alex;
&a.erwin;
&pgpkey.erwin;
&a.leeym;
&pgpkey.leeym;
&a.netchild;
&pgpkey.netchild;
&a.lesi;
&pgpkey.lesi;
&a.glewis;
&pgpkey.glewis;
&a.delphij;
&pgpkey.delphij;
&a.ijliao;
&pgpkey.ijliao;
&a.clive;
&pgpkey.clive;
&a.clsung;
&pgpkey.clsung;
&a.arved;
&pgpkey.arved;
+
+ &a.remko;
+ &pgpkey.remko;
+
+
&a.pav;
&pgpkey.pav;
&a.bmah;
&pgpkey.bmah;
&a.mtm;
&pgpkey.mtm;
&a.dwmalone;
&pgpkey.dwmalone;
&a.kwm;
&pgpkey.kwm;
&a.matusita;
&pgpkey.matusita;
&a.ken;
&pgpkey.ken;
&a.dinoex;
&pgpkey.dinoex;
&a.sanpei;
&pgpkey.sanpei;
&a.jim;
&pgpkey.jim;
&a.marcel;
&pgpkey.marcel;
&a.marck;
&pgpkey.marck;
&a.tmm;
&pgpkey.tmm;
&a.rich;
&pgpkey.rich;
&a.knu;
&pgpkey.knu;
&a.max;
&pgpkey.max;
&a.yoichi;
&pgpkey.yoichi;
&a.bland;
&pgpkey.bland;
&a.simon;
&pgpkey.simon;
&a.anders;
&pgpkey.anders;
&a.obrien;
&pgpkey.obrien;
&a.philip;
&pgpkey.philip;
&a.hmp;
&pgpkey.hmp;
&a.mp;
&pgpkey.mp;
&a.roam;
&pgpkey.roam;
&a.den;
&pgpkey.den;
&a.pirzyk;
&pgpkey.pirzyk;
&a.jdp;
&pgpkey.jdp;
&a.krion;
&pgpkey.krion;
&a.markp;
&pgpkey.markp;
&a.thomas;
&pgpkey.thomas;
&a.hq;
&pgpkey.hq;
&a.dfr;
&pgpkey.dfr;
&a.trhodes;
&pgpkey.trhodes;
&a.benno;
&pgpkey.benno;
&a.paul;
&pgpkey.paul;
&a.roberto;
&pgpkey.roberto;
&a.guido;
&pgpkey.guido;
&a.niklas;
&pgpkey.niklas;
&a.marks;
&pgpkey.marks;
&a.hrs;
&pgpkey.hrs;
&a.wosch;
&pgpkey.wosch;
&a.das;
&pgpkey.das;
&a.schweikh;
&pgpkey.schweikh;
&a.gshapiro;
&pgpkey.gshapiro;
&a.arun;
&pgpkey.arun;
&a.vanilla;
&pgpkey.vanilla;
&a.cshumway;
&pgpkey.cshumway;
&a.demon;
&pgpkey.demon;
&a.jesper;
&pgpkey.jesper;
&a.scop;
&pgpkey.scop;
&a.glebius;
&pgpkey.glebius;
&a.kensmith;
&pgpkey.kensmith;
&a.ben;
&pgpkey.ben;
&a.des;
&pgpkey.des;
&a.sobomax;
&pgpkey.sobomax;
&a.dcs;
&pgpkey.dcs;
&a.brian;
&pgpkey.brian;
&a.nsouch;
&pgpkey.nsouch;
&a.ssouhlal;
&pgpkey.ssouhlal;
&a.vs;
&pgpkey.vs;
&a.gsutter;
&pgpkey.gsutter;
&a.metal;
&pgpkey.metal;
&a.nyan;
&pgpkey.nyan;
&a.mi;
&pgpkey.mi;
&a.gordon;
&pgpkey.gordon;
&a.lth;
&pgpkey.lth;
&a.thierry;
&pgpkey.thierry;
&a.viny;
&pgpkey.viny;
+
+ &a.ups;
+ &pgpkey.ups;
+
+
&a.nectar;
&pgpkey.nectar;
&a.adamw;
&pgpkey.adamw;
&a.nate;
&pgpkey.nate;
&a.wollman;
&pgpkey.wollman;
&a.joerg;
&pgpkey.joerg;
&a.bz;
&pgpkey.bz;
&a.phantom;
&pgpkey.phantom;
diff --git a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml
index 25f3f6d803..ca7397f7a5 100644
--- a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml
@@ -1,6091 +1,6088 @@
MatthewDillonViel von diesem Kapitel stammt aus der security(7)
Manualpage von MartinHeinenÜbersetzt von SicherheitSicherheitÜbersichtDieses Kapitel bietet eine Einführung in die Konzepte
der Systemsicherheit. Neben einigen Daumenregeln werden
weiterführende Themen wie S/Key, OpenSSL und Kerberos
diskutiert. Die meisten der hier besprochenen Punkte treffen
sowohl auf die Systemsicherheit sowie die Internetsicherheit zu.
Das Internet hat aufgehört ein friedlicher
Ort zu sein, an dem Sie nur nette Leute finden werden. Es ist
unumgänglich, dass Sie Ihre Daten, Ihr geistiges Eigentum,
Ihre Zeit und vieles mehr vor dem Zugriff von Hackern
schützen.&os; besitzt eine Reihe von Werkzeugen und Mechanismen, um die
Integrität und die Sicherheit Ihrer Systeme und Netzwerke
zu gewährleisten.Nach dem Sie dieses Kapitel durchgearbeitet haben, werden
Sie:Grundlegende auf &os; bezogene Sicherheitsaspekte
kennen.Die verschiedenen Verschlüsselungsmechanismen
von &os;, wie DES oder
MD5, kennen.Wissen, wie Sie ein Einmalpasswörter
zur Authentifizierung verwenden.TCP-Wrapper für
inetd einrichten können.Wissen, wie Sie KerberosIV
vor 5.0-Release einrichten.Wissen, wie Sie Kerberos5
ab 5.0-Release einrichten.Firewalls mit IPFW
erstellen können.Wissen, wie Sie IPsec konfigurieren und ein
VPN zwischen &os;/&windows;
Systemen einrichten,OpenSSH, &os;s
Implementierung von SSH, konfigurieren
und benutzen können.Mit &os;-Sicherheitshinweisen umgehen können.Bevor Sie dieses Kapitel lesen, sollten SieGrundlegende Konzepte von &os; und dem Internet
verstehen.EinführungSicherheit ist ein Konzept, das beim Systemadministrator anfängt
und aufhört. Obwohl alle BSD &unix; Mehrbenutzersysteme über
Sicherheitsfunktionen verfügen, ist es wohl eine der
größten Aufgaben eines Systemadministrators zusätzliche
Sicherheitsmechanismen zu erstellen und zu pflegen. Maschinen sind
nur so sicher wie sie gemacht werden und Sicherheitsanforderungen
stehen oft der Benutzerfreundlichkeit entgegen. Auf &unix; Systemen
können sehr viele Prozesse gleichzeitig laufen und viele dieser
Prozesse sind Server, das heißt von außen kann auf sie
zugegriffen werden. In einer Zeit, in der die Minicomputer und
Mainframes von gestern die Desktops von heute sind und Rechner
immer mehr vernetzt werden, kommt der Sicherheit eine große
Bedeutung zu.Sicherheit wird am besten in mehreren Schichten implementiert.
Kurz gesagt wollen Sie eine angemessene Anzahl Schichten einrichten,
und dann das System auf Einbrüche hin beobachten. Die
Sicherheitsmaßnahmen sollten nicht überzogen werden,
da sie sonst das Entdecken von Einbrüchen stören und die
Möglichkeit, Einbrüche zu entdecken, ist einer der wichtigsten
Aspekte einer Sicherheitsmaßnahme. Es macht zum Beispiel wenig
Sinn, jedes Programm mit der schg Option (siehe auch
&man.chflags.1;) zu schützen, weil dies verhindert, dass ein
Angreifer eine leicht zu entdeckende Veränderung vornimmt und
vielleicht dazu führt, dass Ihre Sicherheitsvorkehrungen den
Angreifer überhaupt nicht entdecken.Zur Systemsicherheit gehört auch die Beschäftigung mit
verschiedenen Arten von Angriffen, auch solchen, die versuchen,
ein System still zu legen, oder sonst unbrauchbar zu machen ohne
root zu kompromittieren. Sicherheitsaspekte
lassen sich in mehrere Kategorien unterteilen:Denial-of-Service Angriffe.Kompromittierte Accounts.Kompromittierter root-Account durch
zugreifbare Server.Kompromittierter root-Account durch
kompromittierte Accounts.Einrichten von Hintertüren.DoS AngriffeDenial-of-Service (DoS)SicherheitDoS AngriffeDenial-of-Service (DoS)Denial-of-Service (DoS)Ein Denial-of-Service (Verhinderung von Diensten, DoS) Angriff
entzieht einer Maschine Ressourcen, die sie zur Bereitstellung
von Diensten benötigt. Meist versuchen Denial-of-Service Angriffe
die Dienste oder den Netzwerkstack einer Maschine zu überlasten,
um so die Maschine auszuschalten oder nicht nutzbar zu machen. Einige
Angriffe versuchen, Fehler im Netzwerkstack auszunutzen, und die
Maschine mit einem einzigen Paket auszuschalten. Diese Art des
Angriffs kann nur verhindert werden, indem der entsprechende Fehler
im Kernel behoben wird. Oft können Angriffe auf Dienste durch
die Angabe von Optionen verhindert werden, die die Last, die ein
Dienst auf das System unter widrigen Umständen ausüben kann,
begrenzt. Angriffen auf das Netzwerk ist schwerer zu begegnen.
Außer durch Trennen der Internetverbindung ist zum Beispiel
einem Angriff mit gefälschten Paketen nicht zu begegnen.
Diese Art von Angriff wird Ihr System zwar nicht unbrauchbar machen,
kann aber die Internetverbindung sättigen.Sicherheitkompromittierte AccountsKompromittierte Accounts kommen noch häufiger als
DoS Angriffe vor. Viele Systemadministratoren lassen auf ihren
Maschinen noch die Dienste telnetd,
rlogind, rshd
und ftpd laufen. Verbindungen zu diesen
Servern werden nicht verschlüsselt. Wenn Sie eine
größere Benutzerzahl auf Ihrem System haben, die sich von
einem entfernten System anmelden, ist die Folge davon, dass
das Passwort eines oder mehrerer Benutzer ausgespäht wurde.
Ein aufmerksamer Systemadministrator wird die Logs über Anmeldungen
von entfernten Systemen auf verdächtige Quelladressen, auch
für erfolgreiche Anmeldungen, untersuchen.Es ist immer davon auszugehen, dass ein Angreifer, der
Zugriff auf einen Account hat, Zugang zum
root-Account erlangt. Allerdings gibt der
Zugriff auf einen Account auf einem gut gesicherten und
gepflegten System nicht notwendig Zugriff auf den
root-Account. Diese Unterscheidung ist wichtig,
da ein Angreifer, der keinen Zugang zu root
besitzt, seine Spuren nicht verwischen kann. Er kann höchstens
die Dateien des betreffenden Benutzers verändern oder die
Maschine stilllegen. Kompromittierte Accounts sind sehr
häufig, da Benutzer meist nicht dieselben Vorsichtsmaßnahmen
wie Administratoren treffen.SicherheitHintertürenEs gibt viele Wege, Zugang zum root-Account
eines Systems zu bekommen: Ein Angreifer kann das Passwort von
root kennen, er kann einen Fehler in einem
Server entdecken, der unter root läuft und
dann über eine Netzwerkverbindung zu diesem Server einbrechen.
Oder er kennt einen
Fehler in einem SUID-root Programm, der es
ihm erlaubt, root zu werden, wenn er einmal
einen Account kompromittiert hat. Wenn ein Angreifer einen
Weg gefunden hat, root zu werden, braucht er
vielleicht keine Hintertür auf dem System installieren.
Viele der heute
bekannten und geschlossenen Sicherheitslöcher, die zu einem
root Zugriff führen, verlangen vom Angreifer
einen erheblichen Aufwand, um seine Spuren zu verwischen. Aus diesem
Grund wird er sich wahrscheinlich entschließen, eine Hintertür
(engl. Backdoor) zu installieren.
Eine Hintertür erlaubt es
dem Angreifer leicht auf den root-Account
zuzugreifen. Einem klugen Systemadministrator erlaubt sie allerdings
auch, den Einbruch zu entdecken. Wenn Sie es einem Angreifer verwehren,
Hintertüren zu installieren, kann das schädlich für
Ihre Sicherheit sein, da es vielleicht verhindert, dass die
Lücke, die der Angreifer für den Einbruch ausgenutzt hat,
entdeckt wird.Sicherheitsmaßnahmen sollten immer in mehreren Schichten
angelegt werden. Die Schichten können wie folgt eingeteilt
werden:Absichern von root und
Accounts.Absichern von unter root laufenden
Servern und SUID/SGID Programmen.Absichern von Accounts.Absichern der Passwort-Datei.Absichern des Kernels, der Geräte und von
Dateisystemen.Schnelles Aufdecken von unbefugten Veränderungen des
Systems.Paranoia.Die einzelnen Punkte der obigen Liste werden im nächsten
Abschnitt genauer behandelt.Absichern von FreeBSDSicherheitFreeBSD absichernKommandos und ProtokolleIn diesem Abschnitt werden Anwendungen
fett gekennzeichnet, spezifische
Kommandos werden in einer Fixschrift
dargestellt und Protokolle verwenden die normale Schriftart.
Diese typographische Konvention hilft, Begriffe wie ssh
zu unterscheiden, die sowohl Protokoll als auch Kommando
sein können.Die folgenden Abschnitte behandeln die im
letzten Abschnitt erwähnten
Methoden Ihr FreeBSD-System zu sichern.Absichern von root und
AccountssuZuallererst, kümmern Sie sich nicht um die Absicherung
von Accounts, wenn Sie root
noch nicht abgesichert haben. Auf den meisten Systemen ist
root ein Passwort zugewiesen. Sie
sollten immer davon ausgehen, dass
dieses Passwort kompromittiert ist. Das heißt nicht,
dass Sie das Passwort entfernen sollten, da es meist
für den Konsolenzugriff notwendig ist. Vielmehr heißt
es, dass Sie das Passwort nicht außerhalb der
Konsole, auch nicht zusammen mit &man.su.1;, verwenden sollten.
Stellen Sie sicher, dass Ihre PTYs in ttys als
unsicher markiert sind und damit Anmeldungen von
root mit telnet oder
rlogin verboten sind. Wenn Sie andere
Anwendungen wie SSH zum Anmelden
benutzen, vergewissern Sie sich, dass dort ebenfalls
Anmeldungen als root verboten sind. Für
SSH editieren Sie
/etc/ssh/sshd_config und überprüfen,
dass PermitRootLogin auf NO
gesetzt ist. Beachten Sie jede Zugriffsmethode – Dienste
wie FTP werden oft vergessen. Nur an der Systemkonsole sollte
ein direktes Anmelden als root möglich
sein.wheelNatürlich müssen Sie als Systemadministrator
root-Zugriff erlangen können. Dieser
sollte aber durch zusätzliche Passwörter
geschützt sein. Ein Weg, Zugang zu root
zu ermöglichen, ist es, berechtigte Mitarbeiter in
/etc/group in die Gruppe
wheel aufzunehmen. Die Personen, die
Mitglieder in der Gruppe wheel sind,
können mit su zu root
wechseln. Ihre Mitarbeiter sollten niemals die Gruppe
wheel als primäre Gruppe in
/etc/passwd besitzen. Mitarbeiter sollten
der Gruppe staff angehören und über
/etc/group in wheel
aufgenommen werden. Es sollten auch nur die Mitarbeiter, die
wirklich root Zugriff benötigen in
wheel aufgenommen werden. Mit anderen
Authentifizierungsmethoden müssen Sie niemanden in
wheel aufnehmen. Wenn Sie z.B.
Kerberos benutzen, wechseln Sie mit
&man.ksu.1; zu root und der Zugriff wird
mit der Datei .k5login geregelt. Dies ist
vielleicht eine bessere Lösung, da es der
wheel-Mechanismus einem Angreifer immer
noch möglich macht, den root-Account
zu knacken, nachdem er einen Mitarbeiter-Account geknackt hat.
Obwohl der wheel-Mechanismus besser als
gar nichts ist, ist er nicht unbedingt die sicherste Lösung.Indirekt können Sie die Accounts von Mitarbeitern und
damit auch den Zugriff auf root schützen,
indem Sie eine alternative Zugangsmethode verwenden und die
Accounts der Mitarbeiter mit einem ungültigen verschlüsselten
Passwort versehen. Mit &man.vipw.8; können Sie jedes
verschlüsselte Passwort mit einem
* Zeichen ersetzen. Das Kommando
wird /etc/master.passwd und die
Benutzer/Passwort Datenbank aktualisieren und die Passwort
Authentifizierung abstellen.Ein Account wiefoobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshsollte wie folgt abgeändert werden:foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshDa ein verschlüsseltes Passwort niemals
ein * sein kann, verhindert dies
die normale Anmeldung. Damit müssen sich die Mitarbeiter
mit anderen Mechanismen wie &man.kerberos.1; oder &man.ssh.1;
authentifizieren. Wenn Sie etwas wie
Kerberos benutzen, müssen Sie
die Maschinen, die die Kerberos-Server
beheimaten und die Maschinen der Benutzer absichern. Wenn Sie
öffentliche/private Schlüssel mit
SSH benutzen, muss die Maschine
von der die Anmeldung gestartet wird, gesichert
werden. Als zusätzliche Sicherheitsschicht können Sie
das Schlüsselpaar beim Erstellen mit &man.ssh-keygen.1; durch
ein Passwort schützen. Dadurch, dass Sie die
Passwörter Ihrer Mitarbeiter als ungültig markiert
haben, stellen Sie sicher, dass sich die Mitarbeiter nur mit
den sicheren Methoden, die Sie aufgesetzt haben, anmelden können.
Dies zwingt alle Mitarbeiter, verschlüsselte Verbindungen
für ihre Sitzungen zu verwenden, und schließt ein
wichtiges Loch, dass gerne von Angreifern ausgenutzt wird:
Das Abhören des Netzwerks von einer anderen weniger gesicherten
Maschine.Die indirekten Sicherheitsmechanismen setzen voraus, dass
Sie sich von einer restriktiven Maschine auf einer weniger restriktiven
Maschine anmelden. Wenn zum Beispiel auf Ihrem Hauptrechner alle
möglichen Arten von Servern laufen, so sollten auf Ihrer
Workstation keine Server laufen. Um Ihre Workstation vernünftig
abzusichern, sollten auf Ihr so wenig Server wie möglich bis hin
zu keinem Server laufen. Sie sollten zudem über einen
Bildschirmschoner verfügen, der mit einem Passwort
gesichert ist. Natürlich kann ein Angreifer, der physikalischen
Zugang zu einer Maschine hat, jede Art von Sicherheitsmechanismen
umgehen. Dieses Problem sollten Sie daher auch in Ihren
Überlegungen berücksichtigen. Beachten Sie dabei aber,
dass der Großteil der Einbrüche über das
Netzwerk erfolgt und die Einbrecher keinen Zugang zu der Maschine
besitzen.KerberosIVMit Kerberos können Sie das
Passwort eines Mitarbeiters an einer Stelle ändern
und alle Maschinen, auf denen der Mitarbeiter einen Account hat,
beachten die Änderung sofort. Wird der Account eines
Mitarbeiters einmal kompromittiert, so sollte die Fähigkeit, das
Passwort mit einem Schlag auf allen Maschinen zu ändern,
nicht unterschätzt werden. Mit einzelnen Passwörtern
wird es schwierig, das Passwort auf N Maschinen zu ändern.
Mit Kerberos können Sie auch
Beschränkungen für Passwörter festlegen:
Nicht nur das Ticket kann nach einiger Zeit ungültig werden,
Sie können auch festlegen, dass ein Benutzer nach einer
bestimmten Zeit, z.B. nach einem Monat, das Passwort wechseln
muss.Absichern von unter root laufenden
Servern und SUID/SGID ProgrammenntalkcomsatfingerSandkästensshdtelnetdrshdrlogindEin kluger Systemadministrator lässt nur die
Dienste, die er wirklich braucht, laufen; nicht mehr und auch
nicht weniger. Beachten Sie, dass Server von Dritten die
fehleranfälligsten sind. Wenn Sie z.B. eine alte Version von
imapd oder popper
laufen lassen, ist das so, als würden Sie der ganzen Welt
freien Zugang zu root geben. Lassen Sie keine
Server laufen, die Sie vorher nicht genau überprüft haben.
Viele Server müssen nicht unter root
laufen, zum Beispiel können ntalk,
comsat und finger
in speziellen Sandkästen unter
einem Benutzer laufen. Ein Sandkasten ist keine perfekte Lösung,
wenn Sie nicht eine Menge Arbeit in die Konfiguration investieren,
doch bewährt sich hier das Prinzip, die Sicherheit in Schichten
aufzubauen. Wenn es einem Angreifer gelingt, in einen Server,
der in einem Sandkasten läuft, einzubrechen, dann muss
er immer noch aus dem Sandkasten selber ausbrechen. Je mehr Schichten
der Angreifer zu durchbrechen hat, desto kleiner sind seine Aussichten
auf Erfolg. In der Vergangenheit wurden praktisch in jedem
Server, der unter root läuft, Lücken
gefunden, die zu einem root Zugriff führten.
Dies betrifft selbst die grundlegenden Systemdienste. Wenn Sie eine
Maschine betreiben, auf der man sich nur mit
SSH anmelden kann, dann stellen Sie die
Dienste telnetd,
rshd oder rlogind
ab!In der Voreinstellung laufen unter FreeBSD
ntalkd, comsat
und finger nun in einem Sandkasten. Ein
weiteres Programm, das in einem Sandkasten laufen sollte, ist
&man.named.8;. In /etc/defaults/rc.conf sind
die notwendigen Argumente, um named in
einem Sandkasten laufen zu lassen, in kommentierter Form schon
enthalten. Abhängig davon, ob Sie ein neues System installieren
oder ein altes System aktualisieren, sind die hierfür
benötigten Benutzer noch nicht installiert.
Ein kluger Systemadministrator sollte immer nach Möglichkeiten
suchen, Server in einem Sandkasten laufen zu lassen.sendmailEinige Server wie sendmail,
popper, imapd
und ftpd werden normalerweise nicht in
Sandkästen betrieben. Zu einigen Servern gibt es Alternativen,
aber diese wollen Sie vielleicht wegen der zusätzlich nötigen
Arbeit nicht installieren (ein weiteres Beispiel für den
Widerspruch zwischen Sicherheit und Benutzerfreundlichkeit).
In diesem Fall müssen Sie die
Server unter root laufen lassen und auf die
eingebauten Mechanismen vertrauen, Einbrüche zu entdecken.Weitere potentielle Löcher, die zu einem
root-Zugriff führen können, sind
die auf dem System installierten SUID- und SGID-Programme. Die
meisten dieser Programme wie rlogin stehen
in /bin, /sbin,
/usr/bin, oder /usr/sbin.
Obwohl nichts 100% sicher ist, können Sie davon ausgehen,
dass die SUID- und SGID-Programme des Basissystems ausreichend
sicher sind. Allerdings werden ab und an in diesen Programmen
Löcher gefunden. 1998 wurde in Xlib ein
Loch gefunden, das xterm, der
normal mit SUID installiert wird, verwundbar machte. Es ist besser
auf der sicheren Seite zu sein, als sich später zu beklagen,
darum wird ein kluger Systemadministrator den Zugriff auf
SUID-Programme mit einer Gruppe, auf die nur Mitarbeiter zugreifen
können, beschränken. SUID-Programme, die niemand benutzt,
sollten mit chmod 000 deaktiviert werden. Zum
Beispiel braucht ein Server ohne Bildschirm kein
xterm Programm. SGID-Programme sind
vergleichbar gefährlich. Wenn ein Einbrecher Zugriff auf
SGID-kmem Programm erhält, kann er
vielleicht /dev/kmem und damit die
verschlüsselte Passwortdatei lesen. Dies kompromittiert
unter Umständen jeden Account, der mit einem Passwort
geschützt ist. Alternativ kann ein Einbrecher, der in die
Gruppe kmem eingebrochen ist, die
Tastendrücke auf PTYs verfolgen. Dies schließt
auch PTYs mit ein, auf denen sich ein Benutzer mit sicheren
Methoden anmeldet. Ein Einbrecher, der Zugriff auf die
tty Gruppe hat, kann auf fast jeden Terminal
anderer Benutzer schreiben. Wenn der Benutzer einen Terminal-Emulator
benutzt, der über eine Tastatur-Simulation verfügt,
könnte der Angreifer Daten generieren, die den Terminal
veranlassen, ein Kommando unter diesem Benutzer laufen zu lassen.Absichern von AccountsAccounts sind für gewöhnlich sehr schwierig
abzusichern. Während Sie drakonische Beschränkungen
für Ihre Mitarbeiter einrichten und deren Passwörter
als ungültig markieren können, werden Sie das
vielleicht bei den normalen Accounts nicht durchsetzen.
Wenn Sie über ausreichend Macht verfügen, gelingt es Ihnen
vielleicht doch, ansonsten müssen Sie diese Accounts
aufmerksam überwachen. Wegen der zusätzlichen
Administrationsarbeit und der nötigen technischen
Unterstützung ist die Verwendung von
SSH und Kerberos
mit normalen Accounts erschwert, obwohl das natürlich
sicherer als die Verwendung von verschlüsselten
Passwörtern ist.Absichern der Passwort-DateiDer einzig sichere Weg ist, so viele Accounts wie möglich als
ungültig zu markieren und SSH oder
Kerberos zu benutzen, um auf sie
zuzugreifen. Obwohl die Datei /etc/spwd.db,
die die verschlüsselten Passwörter enthält,
nur von root gelesen werden kann, mag ein
Angreifer lesenden Zugriff auf diese Datei erlangen, ohne die
Fähigkeit sie auch zu beschreiben.Ihre Überwachungsskripten sollten Änderungen
an der Passwort-Datei melden (siehe Überprüfen der
Integrität von Dateien weiter unten).Absichern des Kernels, der Geräte und von
DateisystemenWenn ein Angreifer root-Zugriff erlangt,
kann er so ziemlich alles mit Ihrem System anstellen, doch sollten Sie
es ihm nicht zu leicht machen. Die meisten modernen Kernel haben
zum Beispiel einen Gerätetreiber, der es erlaubt, Pakete
abzuhören. Unter FreeBSD wird das Gerät
bpf genannt. Für gewöhnlich
wird ein Angreifer versuchen, dieses Gerät zu nutzen, um
Pakete abzuhören. Sie sollten ihm diese Gelegenheit nicht
geben und auf den meisten Systemen ist das Gerät
bpf nicht nötig.sysctlAuch wenn Sie bpf nicht verwenden,
müssen Sie sich immer noch um /dev/mem
und /dev/kmem sorgen. Außerdem
kann der Angreifer immer noch auf die rohen Geräte
(raw devices)
schreiben. Weiterhin gibt es ein Programm zum Nachladen von
Modulen in den Kernel: &man.kldload.8;. Ein unternehmungslustiger
Angreifer kann dies benutzen, um sein eigenes
bpf oder ein anderes zum Abhören
geeignetes Gerät in den laufenden Kernel einzubringen. Um diese
Probleme zu vermeiden, müssen Sie den Kernel auf einer
höheren Sicherheitsstufe, mindestens 1,
laufen lassen. Die Sicherheitsstufe wird durch die Variable
kern.securelevel, die mit sysctl
gesetzt werden kann, angegeben. Nachdem Sie die Sicherheitsstufe
auf 1 gesetzt haben, sind schreibende Zugriffe
auf rohe Geräte verboten und die speziellen
chflags Optionen, wie schg
werden erzwungen. Sie müssen sicherstellen, dass die
schg Option auf allen kritischen Programmen,
Verzeichnissen und Skripten, die bis zum Setzen der Option laufen,
aktiviert ist. Das mag übertrieben sein da eine Migration
des Systems erschwert wird, wenn Sie auf einer höheren
Sicherheitsstufe arbeiten. Sie können einen Kompromiss
erreichen, indem Sie das System auf einer erhöhten
Sicherheitsstufe laufen lassen, aber die schg
Option nicht für jede Datei und jedes Verzeichnis auf der Welt
setzen. Eine andere Möglichkeit besteht darin,
/ und /usr einfach
schreibgeschützt einzuhängen. Bedenken Sie, dass
Sie das Aufdecken eines Einbruchs vielleicht verhindern, wenn
Sie zu drastische Maßnahmen zum Schutz Ihres Systems
verwenden.Überprüfen der Integrität von DateienSie können die Systemkonfiguration und die Dateien
nur so weit schützen, wie es die Benutzbarkeit des
Systems nicht einschränkt. Wenn Sie zum Beispiel
mit chflags die Option schg
auf die meisten Dateien in / und
/usr setzen, kann das Ihre Arbeit mehr behindern
als nützen. Die Maßnahme schützt zwar die
Dateien, schließt aber auch eine Möglichkeit,
Veränderungen zu entdecken, aus. Die letzte Schicht des
Sicherheitsmodells – das Aufdecken von Einbrüchen –
ist sicherlich die wichtigste. Alle Sicherheitsmaßnahmen sind
nichts wert, oder wiegen Sie in falscher Sicherheit, wenn Sie
nicht in der Lage sind, einen möglichen Einbruch zu entdecken.
Die Hälfte der Sicherheitsmaßnahmen hat die Aufgabe,
einen Einbruch zu verlangsamen, um es zu ermöglichen, den
Einbrecher auf frischer Tat zu ertappen.Der beste Weg, einen Einbruch zu entdecken, ist es, nach
veränderten, fehlenden oder unerwarteten Dateien zu suchen.
Der wiederum beste Weg, nach veränderten Dateien zu suchen, ist
es, die Suche von einem anderen (oft zentralen) besonders
geschützten System durchzuführen. Es ist wichtig, dass
Ihre Sicherheitsüberprüfungen vor einem Angreifer
verborgen bleiben und daher sind sie auf einem besonders
geschützten System gut aufgehoben. Um dies optimal auszunutzen,
müssen Sie dem besonders geschützten System Zugriffsrechte
auf die zu schützenden Systeme geben. Sie können die
Dateisysteme der zu schützenden Systeme schreibgeschützt
für das besonders geschützte System exportieren, oder
Sie können der besonders geschützten Maschine
SSH auf die anderen Maschinen erlauben,
indem Sie SSH Schlüsselpaare
installieren. Mit Ausnahme des verursachten Netzwerkverkehrs
ist die NFS-Methode die am wenigsten sichtbare. Sie erlaubt es Ihnen,
nahezu unentdeckt die Dateisysteme der Clients zu beobachten. Wenn
Ihr besonders geschütztes System mit den Clients über
einen Switch verbunden ist, ist die NFS-Methode oft das Mittel der
Wahl. Wenn das besonders geschützte System allerdings
mit einem Hub verbunden ist, oder der Zugriff über mehrere
Router geschieht, ist die NFS-Methode aus der Netzwerksicht zu
unsicher. In einem solchen Fall ist SSH
besser geeignet, auch wenn es deutliche Spuren
hinterlässt.Wenn das besonders geschützte System lesenden Zugriff
auf die Clients hat, müssen Sie Skripten schreiben, die die
Überwachung durchführen. Wenn Sie die NFS-Methode
verwenden, können Sie dazu einfache Systemwerkzeuge wie
&man.find.1; und &man.md5.1; benutzen. Am besten berechnen
Sie einmal am Tag MD5-Prüfsummen der Dateien, Konfigurationsdateien
in /etc und /usr/local/etc
sollten öfter überprüft werden. Wenn Unstimmigkeiten
zwischen den auf der besonders geschützten Maschine gehaltenen
MD5-Prüfsummen und den ermittelten Prüfsummen festgestellt
werden, sollte Ihr System einen Systemadministrator benachrichtigen,
der den Unstimmigkeiten dann nachgehen sollte. Ein gutes Skript
überprüft das System auch auf verdächtige
SUID-Programme sowie gelöschte oder neue Dateien in
/ und /usr.Wenn Sie SSH anstelle von NFS
benutzen, wird das Erstellen der Skripten schwieriger. Sie müssen
die Skripten und die Programme wie find mit
scp auf den Client kopieren. Damit machen
Sie die Überprüfung für einen Angreifer sichtbar.
Außerdem kann der SSH-Client auf dem
Zielsystem schon kompromittiert sein. Zusammenfassend, kann der
Einsatz von SSH nötig sein,
wenn Sie über ungesicherte Verbindungen arbeiten, aber
der Umgang mit dieser Methode ist auch sehr viel schwieriger.Ein gutes Sicherheitsskript wird auch Dateien von Benutzern,
die den Zugriff auf ein System ermöglichen, wie
.rhosts, .shosts,
.ssh/authorized_keys usw., auf
Veränderungen untersuchen, die über die Möglichkeiten
einer Überprüfung mit MD5,
die ja nur Veränderungen feststellen kann, hinausgehen.Wenn Sie über große Partitionen verfügen, kann
es zu lange dauern, jede Datei zu überprüfen. In diesem
Fall sollten Sie beim Einhängen des Dateisystems Optionen
setzen, die das Ausführen von SUID-Programmen und den
Zugriff auf Geräte verbieten. &man.mount.8; stellt dazu
die Optionen und
zur Verfügung. Sie sollten diese Dateien aber trotzdem
mindestens einmal die Woche überprüfen, da das Ziel
dieser Schicht das Aufdecken eines Einbruchs, auch wenn er nicht
erfolgreich war, ist.Die Prozessüberwachung (siehe &man.accton.8;)
des Betriebssystems steht ein günstiges Werkzeug zur
Verfügung, dass sich bei der Analyse eines Einbruchs
als nützlich erweisen kann. Insbesondere können Sie
damit herausfinden, wie der Einbrecher in das System eingedrungen ist,
vorausgesetzt die Dateien der Prozessüberwachung sind
noch alle intakt.Schließlich sollten die Sicherheitsskripten die Logdateien
analysieren. Dies sollte so sicher wie möglich durchgeführt
werden, nützlich ist das Schreiben von Logdateien auf
entfernte Systeme mit syslog. Ein Einbrecher
wird versuchen, seine Spuren zu verwischen. Die Logdateien
sind wichtig für den Systemadministrator, da er aus ihnen
den Zeitpunkt und die Art des Einbruchs bestimmen kann. Eine
Möglichkeit, die Logdateien unverändert aufzuheben,
ist es, die Systemkonsole auf einen seriellen Port zu legen
und die Informationen dort von einer gesicherten Maschine
auszulesen.ParanoiaEs schadet nicht, ein bisschen paranoid zu sein.
Grundsätzlich darf ein Systemadministrator jede
Sicherheitsmaßnahme treffen, die die Bedienbarkeit des
Systems nicht einschränkt. Er kann auch Maßnahmen
treffen, die die Bedienbarkeit einschränken,
wenn er diese vorher genau durchdacht hat. Was noch wichtiger
ist: Halten Sie sich nicht sklavisch an dieses Dokument, sondern
führen Sie eigene Maßnahmen ein, um nicht einem
künftigen Angreifer, der auch Zugriff auf dieses Dokument
hat, alle Ihre Methoden zu verraten.Denial-of-Service AngriffeDenial-of-Service (DoS)Dieser Abschnitt behandelt Denial-of-Service Angriffe (DoS).
Ein DoS-Angriff findet typischerweise auf der Paketebene statt.
Während Sie nicht viel gegen moderne Angriffe mit falschen
Paketen, die das Netzwerk sättigen, ausrichten können,
können Sie allerdings den Schaden in der Hinsicht begrenzen,
dass Ihre Server von einem solchen Angriff nicht gestoppt
werden.Begrenzen von fork() Aufrufen.Begrenzen von Sprungbrett-Angriffen (ICMP response Angriffen,
ping zu Broadcast-Adressen usw.).Kernel-Cache für Routen.Ein häufiger DoS-Angriff gegen forkende Server versucht
den Server dazu zu bringen, möglichst viele Prozesse, viele
Dateideskriptoren und viel Speicher zu verbrauchen, bis hin zu
dem Punkt, an dem die Maschine ausfällt. &man.inetd.8;
besitzt einige Optionen, um diese Art von Angriffen zu begrenzen.
Beachten Sie bitte, dass es möglich ist, einen
Ausfall einer Maschine zu verhindern, doch ist es generell nicht
möglich, den Ausfall eines Dienstes bei dieser Art
von Angriffen zu verhindern. Lesen Sie sich bitte die Manualpages
von inetd gut durch und achten Sie speziell
auf die Optionen , und
. Angriffe mit gefälschten IP-Adressen
umgehen , so dass normalerweise eine
Kombination der Optionen benutzt werden muss. Manche Server,
die nicht von inetd gestartet werden,
besitzen Optionen, um den Start über fork()
einzuschränken.Sendmail besitzt die Option
, die besser als die
eingebauten Optionen zur Begrenzung der Systemauslastung funktioniert.
Sie sollten beim Start von sendmailMaxDaemonChildren so hoch setzen, dass Sie
die erwartete Auslastung gut abfangen können. Allerdings
sollten Sie den Wert nicht so hoch setzen, dass der
Rechner über seine eigenen Füße fällt.
Es ist auch klug, sendmail im
Queue-Modus () laufen zu
lassen. Der Dæmon (sendmail -bd) sollte
getrennt von den Queue-Läufen (sendmail -q15m)
laufen. Wenn Sie trotzdem eine sofortige Auslieferung der Post
wünschen, können Sie die Queue in einem geringeren
Intervall, etwa , abarbeiten. Geben Sie
für diesessendmail aber einen vernünftigen
Wert für MaxDaemonChildren an, um
Fehler zu verhindern.Syslogd kann direkt angegriffen
werden. Daher empfehlen wir Ihnen unbedingt die Option
zu benutzen. Sollte das nicht möglich
sein, benutzen Sie bitte .Vorsicht ist auch mit Diensten geboten, die automatisch
eine Rückverbindung eröffnen, wie der
reverse-identd der tcpwrapper.
Diese Funktion der tcpwrapper
sollten Sie normalerweise nicht benutzen.Es empfiehlt sich sehr, interne Dienste vor externen Zugriffen
durch eine Firewall an der Grenze Ihres Netzwerks zu schützen.
Dahinter steckt mehr die Idee, das Netzwerk vor Überlastung
durch Angriffe von außen zu schützen, als interne
Dienste vor einem root-Zugriff aus dem Netz
zu schützen. Konfigurieren Sie immer eine Firewall, die
alle Zugriffe blockiert, das heißt blockieren Sie
alles außer den Ports A, B, C, D
und M-Z. Damit können Sie Zugriffe auf alle niedrigen
Ports blockieren und Zugriffe auf spezielle Dienste wie
named, wenn Sie den primären
Namensdienst für eine Zone anbieten,
ntalkd oder
sendmail erlauben. Wenn Sie die
Firewall so konfigurieren, das sie in der Voreinstellung alle
Zugriffe erlaubt, ist es sehr wahrscheinlich, dass Sie
vergessen, eine Reihe von Diensten zu blockieren bzw. einen
internen Dienst einführen und dann vergessen die Firewall
zu aktualisieren. Sie können immer die höheren
Portnummern öffnen, ohne die niedrigen Portnummern,
die nur von root benutzt werden dürfen,
zu kompromittieren. Beachten Sie bitte auch, dass es
FreeBSD erlaubt, die Portnummern, die für dynamische
Verbindungen zur Verfügung stehen, zu konfigurieren.
Mit sysctl lassen sich verschiedene
Bereiche der net.inet.ip.portrange Variablen
setzen (eine Liste erhalten Sie mit sysctl -a | fgrep
portrange).
So können Sie zum Beispiel die Portnummern 4000 bis 5000
für den normalen Bereich und die Nummern 49152 bis 65535
für den hohen Bereich vorsehen. Dies erleichtert Ihnen
die Konfiguration der Firewall, da Sie nun Zugriffe auf Ports
unterhalb von 4000, mit Ausnahme der Dienste, die von außen
erreichbar sein sollen, blockieren können.ICMP_BANDLIMEine andere Form eines DoS-Angriffs nutzt einen Server
als Sprungbrett, der Server wird dabei so angegriffen, dass
seine Antworten ihn selber, das lokale Netzwerk oder einen
anderen Server überlasten. Der am häufigsten verwendete
Angriff dieser Art ist der ICMP ping broadcast
Angriff. Der Angreifer fälscht dazu
ping-Pakete, die zu der Broadcast-Adresse
Ihres LANs gesendet werden, indem er darin als Quelladresse
die Adresse des Opfers einsetzt. Wenn die Router an der Grenze
Ihres Netzwerks ping-Pakete auf
Broadcast-Adressen nicht abwehren, wird Ihr LAN genügend
Netzwerkverkehr generieren, um das Ziel des Angriffs zu
überlasten. Dies kann besonders effektiv sein, wenn der
Angreifer diese Methode mit mehreren Dutzend Broadcast-Adressen
über mehrere Netzwerke einsetzt. Es wurden schon
Broadcast-Angriffe mit über 120 Megabit pro Sekunde
gemessen. Ein zweiter Sprungbrett-Angriff wird gegen
das Fehlerbehandlungssystem von ICMP eingesetzt. Indem ein Angreifer
Pakete konstruiert, die eine ICMP-Fehlermeldung hervorrufen, kann
er das einkommende Netzwerk des Servers sättigen und diesen
wiederum veranlassen sein ausgehendes Netzwerk mit ICMP-Antworten
zu sättigen. Diese Art des Angriffs kann alle mbuf-Strukturen
auf dem Server aufbrauchen und damit den Server stilllegen,
insbesondere wenn der Server nicht in der Lage ist, die generierten
ICMP-Antworten schnell genug abzuführen. Der FreeBSD-Kernel
besitzt eine neue Option , die die
Auswirkungen von solchen Angriffen begrenzen kann. Die letzte
weit verbreitete Form von Sprungbrett-Angriffen verwendet
interne inetd-Dienste wie den
UDP echo-Dienst. Der Angreifer fälscht
dazu einfach ein UDP-Paket, indem er als Quellport den
echo-Port von Server A
und als Zielport den echo-Port von
Server B angibt, wobei beide
Server in Ihrem LAN stehen. Die beiden Server werden nun
dieses Paket zwischen sich hin und her schicken. Der Angreifer
kann die beiden Server und das LAN einfach damit überlasten,
dass er mehrere Pakete dieser Art generiert. Ähnliche
Probleme gibt es mit dem internen
chargen-Port, daher sollten Sie
die internen inetd-Testdienste
abstellen.Gefälschte IP-Pakete können dazu benutzt werden,
den Kernel-Cache für Routen zu überlasten. Schauen Sie
sich bitte die sysctl-Parameter
net.inet.ip.rtexpire, rtminexpire
und rtmaxcache an. Ein Angriff der gefälschte
Pakete mit zufälligen Quelladressen einsetzt, bewirkt, dass
der Kernel eine Route im Route-Cache anlegt, die Sie sich mit
netstat -rna | fgrep W3 ansehen können.
Diese Routen verfallen für gewöhnlich nach 1600 Sekunden.
Wenn der Kernel feststellt, dass die Routingtabelle im Cache
zu groß geworden ist, wird er dynamisch den Wert von
rtexpire verringern. Dieser Wert wird aber nie
kleiner werden als rtminexpire. Daraus
ergeben sich zwei Probleme:Der Kernel reagiert nicht schnell genug, wenn ein
Server mit einer niedrigen Grundlast plötzlich angegriffen
wird.rtminexpire ist nicht klein genug,
um einen anhaltenden Angriff zu überstehen.Wenn Ihre Server über eine T3 oder eine noch schnellere
Leitung mit dem Internet verbunden sind, ist es klug, mit
&man.sysctl.8; die Werte für rtexpire und
rtminexpire händisch zu setzen. Setzen
Sie bitte keinen der Werte auf Null, außer Sie wollen die
Maschine zum Erliegen bringen. Ein Wert von 2 Sekunden für
beide Parameter sollte ausreichen, um die Routingtabelle vor
einem Angriff zu schützen.Anmerkungen zum Zugriff mit Kerberos und SSHsshKerberosIVEs gibt ein paar Punkte, die Sie beachten sollten, wenn Sie
Kerberos oder SSH
einsetzen wollen. Kerberos V ist ein
ausgezeichnetes Authentifizierungsprotokoll. Leider gibt es
Fehler, in den für Kerberos
angepassten Versionen von telnet und
rlogin, die sie ungeeignet für den
Umgang mit binären Datenströmen machen. Weiterhin
verschlüsselt Kerberos Ihre Sitzung
nicht, wenn Sie nicht die Option verwenden,
mit SSH wird dagegen alles
verschlüsselt.Ein Problem mit SSH sind Weiterleitungen von Verbindungen.
Wenn Sie von einer sicheren Maschine, auf der sich Ihre
Schlüssel befinden, eine Verbindung zu einer
ungesicherten Maschine aufmachen, wird für die Dauer der
Sitzung ein Port für Weiterleitungen geöffnet.
Ein Angreifer, der auf der unsicheren Maschine Zugang zu
root hat, kann diesen Port
benutzen, um Zugriff auf andere Maschinen zu
erlangen, die mit Ihren Schlüsseln zugänglich
sind.Wir empfehlen Ihnen, für die Logins Ihrer Mitarbeiter immer
SSH zusammen mit
Kerberos einzusetzen. Damit reduzieren
Sie die Abhängigkeit von potentiell gefährdeten
Schlüsseln und schützen gleichzeitig die Passwörter
mit Kerberos.
SSH-Schlüsselpaare sollten nur
für automatisierte Aufgaben von einem besonders gesicherten
Server eingesetzt werden (Kerberos
kann für diese Art von Aufgaben nicht eingesetzt werden).
Weiterhin empfehlen wir Ihnen, das Weiterreichen von Schlüsseln
in der SSH-Konfiguration abzustellen bzw.
die from=IP/DOMAIN Option in
authorized_keys zu verwenden, die den
Schlüssel nur von bestimmten Maschinen aus nutzbar macht.BillSwingleTeile umgeschrieben und aktualisiert von DES, MD5, und crypt()Sicherheitcrypt()crypt()DESMD5Jedem Benutzer eines &unix; Systems ist ein Passwort zugeordnet.
Es scheint offensichtlich, dass das Passwort nur dem Benutzer
und dem System bekannt sein muss. Um die Passwörter
geheim zu halten, werden sie mit einer nicht umkehrbaren Hash-Funktion
verschlüsselt, das heißt sie können leicht
verschlüsselt aber nicht entschlüsselt werden. Was wir
gerade als offensichtlich dargestellt haben, ist also nicht wahr: Das
Betriebssystem kennt das Passwort wirklich
nicht, es kennt nur das verschlüsselte
Passwort. Die einzige Möglichkeit, das originale Passwort
herauszufinden, besteht darin, alle möglichen Passwörter
auszuprobieren (brute force Suche).Zu der Zeit als &unix; entstanden ist, war die einzig sichere
Möglichkeit Passwörter zu verschlüsseln, leider
DES (Data Encryption Standard). Für die Einwohner der USA
stellte das kein Problem dar, aber da der Quellcode von DES nicht aus
den USA exportiert werden durfte, musste ein Weg gefunden werden,
der die Gesetze der USA nicht verletzte und gleichzeitig die
Kompatibilität mit anderen &unix; Systemen, die immer noch DES
benutzten, wahrte.Die Lösung bestand darin, die Verschlüsselungsbibliotheken
aufzuspalten. Benutzer in den USA konnten die DES-Bibliotheken
installieren und nutzen. In der Grundeinstellung benutzt FreeBSD
MD5 als Verschlüsselungsmethode, das exportiert werden durfte
und damit von jedem genutzt werden konnte. Es wird davon ausgegangen,
dass MD5 sicherer als DES ist, so dass DES nur aus
Kompatibilitätsgründen installiert werden sollte.Erkennen der VerschlüsselungsmethodeVor FreeBSD 4.4 war libcrypt.a ein
symbolischer Link, der auf die Library zeigte, die die
Verschlüsselungsroutinen enthielt. Seit FreeBSD 4.4 enthält
libcrypt.a verschiedene Hash-Funktionen, deren
Anwendung sich konfigurieren lässt. Momentan werden
DES-, MD5- und Blowfish-Hash Funktionen unterstützt. In der
Voreinstellung benutzt FreeBSD die MD5-Hash Funktion.Sie können leicht herausfinden, welche
Verschlüsselungsmethode von FreeBSD verwendet wird. Ein Weg
besteht darin, die verschlüsselten Passwörter in
/etc/master.passwd zu untersuchen.
Passwörter, die mit MD5 verschlüsselt wurden,
sind länger als die mit DES verschlüsselten und
beginnen mit den Zeichen $1$.
Passwörter, die mit $2a$
anfangen, wurden mit der Blowfish-Funktion verschlüsselt.
DES Passwörter besitzen keine offensichtlichen Merkmale,
an denen sie identifiziert werden könnten. Sie sind aber
kürzer als MD5-Passwörter und sind in einem
64 Zeichen umfassenden Alphabet kodiert, das das
$-Zeichen nicht enthält. Ein relativ
kurzes Passwort, das nicht mit einem
$-Zeichen anfängt, ist wahrscheinlich
ein DES-Passwort.Die Verschlüsselungsmethode für neue
Passwörter wird durch passwd_format in
/etc/login.conf bestimmt. Der Wert dieser
Variablen kann entweder des, md5
oder blf sein. Näheres schlagen Sie bitte
in &man.login.conf.5; nach.EinmalpasswörterEinmalpasswörterSicherheitEinmalpasswörterS/Key ist ein Einmalpasswort System, das auf einer nicht
umkehrbaren Hash-Funktion beruht. Aus Kompatibilitätsgründen
benutzt FreeBSD MD4-Hashes, andere Systeme benutzen MD5 und DES-MAC.
S/Key ist seit Version 1.1.5 Teil des FreeBSD-Basissystems und wird
auf einer wachsenden Anzahl anderer Systeme benutzt. S/Key
ist eine geschützte Warenmarke von
Bell Communications Research, Inc.Ab FreeBSD 5.0 wurde S/Key durch OPIE
(One-time Passwords In Everything), das die gleichen Funktionen
bietet, abgelöst. OPIE benutzt MD5 Hash-Funktionen.Im Folgenden werden drei verschiedene
Passwörter verwendet. Das Erste ist Ihr normales System- oder
Kerberos-Passwort und wird im Folgenden System-Passwort
genannt. Das Zweite ist das Einmalpasswort, das bei S/Key
von key oder bei OPIE von
opiekey generiert wird. Dieses Passwort wird von
den Programmen keyinit oder
opiepasswd und dem Login-Programm akzeptiert. Im
Folgenden wird es Einmalpasswort genannt. Das Dritte
Passwort ist das geheime Passwort, das Sie mit den Programmen
key/opiekey (manchmal auch mit
keyinit/opiepasswd) zum Erstellen
der Einmalpasswörter verwenden. Dieses Passwort
werden wir im Folgenden geheimes Passwort
oder schlicht Passwort nennen.Das geheime Passwort steht in keiner Beziehung zu Ihrem
System-Passwort, beide können gleich sein, obwohl das nicht
empfohlen wird. Die geheimen Passwörter von S/Key oder
OPIE sind nicht auf eine Länge von 8 Zeichen,
wie alte &unix; PasswörterUnter &os; darf das System-Passwort maximal
128 Zeichen lang sein., beschränkt.
Sie können so lang sein, wie Sie wollen. Gebräuchlich sind
Passwörter, die sich aus sechs bis sieben Wörtern
zusammensetzen. Das S/Key oder OPIE System arbeitet
größtenteils unabhängig von den
auf &unix; Systemen verwendeten Passwort-Mechanismen.Neben dem Passwort gibt es noch zwei Werte, die für
S/Key und OPIE wichtig sind. Der erste ist der
Initialwert (engl. seed
oder key), der aus zwei Buchstaben
und fünf Ziffern besteht. Der zweite Wert ist der
Iterationszähler, eine Zahl zwischen
1 und 100. S/Key generiert das Einmalpasswort, indem
es den Initialwert und das geheime Passwort aneinander hängt
und dann die MD4/MD5 Hash-Funktion so oft, wie durch den
Iterationszähler gegeben, anwendet. Das Ergebnis wird in
sechs englische Wörter umgewandelt, die Ihr Einmalpasswort
sind. Das Authentifizierungssystem (meistens PAM) merkt sich das
zuletzt benutzte Einmalpasswort und Sie sind authentisiert,
wenn die Hash-Funktion des Passworts dem vorigen Passwort
entspricht. Da nicht umkehrbare Hash-Funktionen benutzt werden,
ist es unmöglich, aus einem bekannten Passwort weitere
gültige Einmalpasswörter zu berechnen. Der
Iterationszähler wird nach jeder erfolgreichen Anmeldung um
eins verringert und stellt so die Synchronisation zwischen Benutzer
und Login-Programm sicher. Wenn der Iterationszähler den
Wert 1 erreicht, müssen S/Key und OPIE neu initialisiert
werden.In jedem System werden drei Programme verwendet, die weiter unten
beschrieben werden. Die Programme key und
opiekey verlangen einen Iterationszähler,
einen Initialwert und ein geheimes Passwort. Daraus generieren
sie ein Einmalpasswort oder eine Liste von
Einmalpasswörtern. Die Programme keyinit
und opiepasswd werden benutzt, um S/Key bzw.
OPIE zu initialisieren. Mit ihnen können Passwörter,
Iterationszähler oder Initialwerte geändert werden.
Als Parameter verlangen sie entweder ein geheimes Passwort
oder einen Iterationszähler oder einen Initialwert und ein
Einmalpasswort. Die Programme keyinfo
und opieinfo geben den momentanen
Iterationszähler und Initialwert eines Benutzers aus. Diese
werden aus den Dateien /etc/skeykeys bzw.
/etc/opiekeys ermittelt.Im Folgenden werden vier verschiedene Tätigkeiten beschrieben.
Zuerst wird erläutert, wie keyinit oder
opiepasswd über eine gesicherte Verbindung
eingesetzt werden, um Einmalpasswörter das erste Mal
zu konfigurieren oder das Passwort oder den Initialwert
zu ändern. Als nächstes wird erklärt, wie
keyinit oder opiepasswd
über eine nicht gesicherte Verbindung, zusammen mit
key oder opiekey über eine
gesicherte Verbindung, eingesetzt werden, um dasselbe zu erreichen.
Als drittes wird beschrieben, wie
key/opiekey genutzt werden,
um sich über eine nicht gesicherte Verbindung anzumelden.
Die vierte Tätigkeit beschreibt, wie mit key
oder opiekey eine Reihe von Schlüsseln
generiert werden, die Sie sich aufschreiben oder ausdrucken können,
um sich von Orten anzumelden, die über keine gesicherten
Verbindungen verfügen.Einrichten über eine gesicherte VerbindungBenutzen Sie keyinit um S/Key das erste
Mal einzurichten, das Passwort oder den Initialwert
zu ändern, während Sie über eine gesicherte
Verbindung, das heißt an der Konsole oder über
SSH angemeldet, sind:&prompt.user; keyinit
Adding unfurl:
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
Enter secret password:
Again secret password:
ID unfurl s/key is 99 to17757
DEFY CLUB PRO NASH LACE SOFTMit OPIE benutzen Sie stattdessen
opiepasswd:&prompt.user; opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED
Nach der Aufforderung Enter new secret pass phrase:
oder Enter secret password: geben Sie bitte Ihr
Passwort ein. Dies ist nicht das Passwort, mit dem Sie sich
anmelden, sondern es wird genutzt, um das Einmalpasswort
zu generieren. Die Zeile, die mit ID anfängt,
enthält Ihren Login-Namen, den Iterationszähler und den
Initialwert. Diese Werte müssen Sie sich nicht behalten, da
das System sie zeigen wird, wenn Sie sich anmelden. In der letzten
Zeile steht das Einmalpasswort, das aus diesen Parametern
und Ihrem geheimen Passwort ermittelt wurde. Wenn sie sich jetzt
wieder anmelden wollten, dann müssten Sie dieses
Passwort benutzen.Einrichten über eine nicht gesicherte VerbindungUm Einmalpasswörter über eine nicht gesicherte
Verbindung einzurichten, oder das geheime Passwort zu ändern,
müssen Sie über eine gesicherte Verbindung zu einer Stelle
verfügen, an der Sie die Kommandos key
oder opiekey ausführen. Dies kann
ein Desk Accessory auf einem &macintosh; oder
die Eingabeaufforderung auf einer Maschine, der Sie vertrauen, sein.
Zudem müssen Sie einen Iterationszähler vorgeben (100
ist ein guter Wert) und einen Initialwert wählen, wobei
Sie auch einen zufällig generierten benutzen können.
Benutzen Sie keyinit -s über die ungesicherte
Verbindung zu der Maschine, die Sie einrichten wollen:&prompt.user; keyinit -s
Updating unfurl:
Old key: to17758
Reminder you need the 6 English words from the key command.
Enter sequence count from 1 to 9999: 100
Enter new key [default to17759]:
s/key 100 to 17759
s/key access password:
s/key access password:CURE MIKE BANE HIM RACY GOREMit OPIE benutzen Sie opiepasswd:&prompt.user; opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY
Drücken Sie Return, um die Vorgabe
für den Initialwert, der von keyinitkey genannt wird, zu akzeptieren. Bevor
Sie nun das Zugriffspasswort
(engl. access password)
eingeben, rufen Sie über die gesicherte Verbindung
key mit denselben Parametern auf:&prompt.user; key 100 to17759
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
CURE MIKE BANE HIM RACY GOREMit OPIE benutzen Sie opiekey:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
Gehen Sie nun zurück zu der nicht gesicherten Verbindung
und geben dort das eben generierte Einmalpasswort ein.Erzeugen eines einzelnen EinmalpasswortesNachdem Sie S/Key oder OPIE eingerichtet haben, werden Sie beim
nächsten Anmelden wie folgt begrüßt:&prompt.user; telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <username>
s/key 97 fw13894
Password: OPIE begrüßt Sie wie folgt:&prompt.user; telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <username>
otp-md5 498 gr4269 ext
Password: Anmerkung: S/Key und OPIE besitzen eine nützliche Eigenschaft,
die hier nicht gezeigt ist. Wenn Sie an der Eingabeaufforderung
Return eingeben, wird die echo-Funktion eingeschaltet,
das heißt Sie sehen, was Sie tippen. Dies ist besonders
nützlich, wenn Sie ein generiertes Passwort von einem
Ausdruck abtippen müssen.MS-DOSWindowsMacOSJetzt müssen Sie Ihr Einmalpasswort generieren,
um der Anmeldeaufforderung nachzukommen. Dies muss auf
einem gesicherten System geschehen, auf dem Sie key
oder opiekey ausführen können.
Diese Programme gibt es übrigens auch für DOS, &windows; und
&macos;. Beide Programme benötigen den Iterationszähler
sowie den Initialwert als Parameter, die Sie mittels
cut-and-paste direkt von der Login Aufforderung
nehmen können.Auf dem sicheren System:&prompt.user; key 97 fw13894
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password:
WELD LIP ACTS ENDS ME HAAGMit OPIE:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHATMit dem jetzt generierten Einmalpasswort können
Sie die Anmeldeprozedur fortsetzen:login: <username>
s/key 97 fw13894
Password: <return to enable echo>
s/key 97 fw13894
Password [echo on]: WELD LIP ACTS ENDS ME HAAG
Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ...Erzeugen von mehreren EinmalpasswörternManchmal müssen Sie sich an Orte begeben, an denen
Sie keinen Zugriff auf eine sichere Maschine oder eine
sichere Verbindung haben. In diesem Fall können Sie
vorher mit key oder opiekey
einige Einmalpasswörter generieren, die Sie sich
ausdrucken und mitnehmen können. Zum Beispiel:&prompt.user; key -n 5 30 zz99999
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
26: SODA RUDE LEA LIND BUDD SILT
27: JILT SPY DUTY GLOW COWL ROT
28: THEM OW COLA RUNT BONG SCOT
29: COT MASH BARR BRIM NAN FLAG
30: CAN KNEE CAST NAME FOLK BILKMit OPIE:&prompt.user; opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHIMit fordern Sie fünf
Passwörter der Reihe nach an. Der letzte
Iterationszähler wird durch gegeben.
Beachten Sie bitte, dass die Passwörter in der
umgekehrten Reihenfolge, in der sie
zu benutzen sind, ausgeben werden. Wenn Sie wirklich paranoid
sind, schreiben Sie sich jetzt die Passwörter auf,
ansonsten drucken Sie sie mit lpr aus.
Beachten Sie, dass jede Zeile den Iterationszähler
und das Einmalpasswort zeigt, trotzdem finden Sie es
vielleicht hilfreich, eine Zeile nach Gebrauch durchzustreichen.Einschränken der Benutzung von
System-PasswörternMit S/Key können Sie die Verwendung von
System-Passwörtern, basierend auf dem Hostnamen,
Benutzernamen, Terminal oder IP-Adresse, einschränken.
Die Beschränkungen werden in
/etc/skey.access definiert. Die
Manualpage &man.skey.access.5; beschreibt das Format dieser
Datei sowie einige Vorsichtsmaßnahmen, die Sie treffen
sollten, bevor Sie diese Datei einsetzen.Wenn /etc/skey.access nicht existiert
(wie auf FreeBSD 4.X Systemen), dann dürfen sich
alle Benutzer mit ihren System-Passwörtern anmelden.
Wenn die Datei existiert, dann müssen alle Benutzer
S/Key zum Anmelden benutzen. Ausnahmen müssen explizit
in skey.access konfiguriert werden.
In allen Fällen werden System-Passwörter
beim Anmelden auf der Konsole erlaubt.Das folgende Beispiel für skey.access
zeigt die drei geläufigsten Konfigurationsoptionen:Das folgende Beispiel zeigt die drei häufigsten
Ausnahmen:permit internet 192.168.0.0 255.255.0.0
permit user fnord
permit port ttyd0Die erste Zeile (permit internet) erlaubt
es Benutzern, deren IP-Adresse, die immer noch gefälscht werden
kann, mit dem angegebenen Wert und der angegebenen Maske
übereinstimmt, System-Passwörter zu benutzen. Dies
sollte nicht als Sicherheitsmechanismus missverstanden werden,
sondern sollte autorisierte Benutzer daran erinnern, dass sie
ein ungesichertes Netzwerk benutzen und sich mit S/Key anmelden
müssen.Die zweite Zeile (permit user) erlaubt
es dem angegebenen Benutzer, hier fnord,
jederzeit System-Passwörter zu verwenden. Dies sollte
allerdings nur für Benutzer konfiguriert werden, die das
key Programm nicht benutzen können (Leute
mit dumb Terminals oder wirklich uneinsichtige).Die dritte Zeile (permit port) erlaubt allen
Benutzern, die sich an dem angegebenen Terminal anmelden,
System-Passwörter zu benutzen. Sie sollte für
Einwählverbindungen genutzt werden.Wie S/Key kann OPIE die Verwendung von System-Passwörtern
abhängig von der Quell-IP-Adresse einschränken.
Die dazu nötigen Einstellungen werden in der Datei
/etc/opieaccess vorgenommen, die
auf Systemen ab FreeBSD 5.0 vorhanden ist. Weitere
Informationen über diese Datei und Sicherheitshinweise
zu ihrer Verwendung entnehmen Sie bitte der Hilfeseite
&man.opieaccess.5;.Die Datei opieaccess könnte
beispielsweise die folgende Zeile enthalten:permit 192.168.0.0 255.255.0.0Diese Zeile erlaubt es Benutzern, die sich von einer der
angegebenen Quell-IP-Adressen anmelden, ihr System-Passwort
zu verwenden. Beachten Sie bitte, dass eine Quell-IP-Adresse
leicht gefälscht werden kann.Findet sich in opieaccess kein
passender Eintrag, muss die Anmeldung mit OPIE erfolgen.TomRhodesBeigetragen von TCP-WrapperTCP-WrapperWahrscheinlich hat jeder, der &man.inetd.8; kennt,
schon mal von den TCP-Wrappern gehört. Die
wenigsten erkennen den vollen Nutzen der TCP-Wrapper
in einer Netzumgebung. Es scheint, dass die meisten
Leute Netzverbindungen mit einer Firewall absichern
wollen. Auch wenn eine Firewall ein mächtiges
Instrument ist, gibt es Sachen, die eine Firewall
nicht kann. Eine Firewall kann beispielsweise keine
Nachricht an den Verbindungsursprung senden. Genau
das und mehr können aber die
TCP-Wrapper. Im Folgenden werden
die Funktionen der TCP-Wrapper
und Beispiele für deren Konfiguration vorgestellt.Die TCP-Wrapper erweitern die
Steuerungsmöglichkeiten, die inetd
über die Dienste unter seiner Kontrolle hat.
Beispielsweise können Verbindungen protokolliert,
Nachrichten zurückgesandt oder nur interne Verbindungen
angenommen werden. Die TCP-Wrapper
bieten nicht nur eine weitere Sicherheitsschicht, die
teilweise auch von Firewalls geboten wird, sie bieten
darüber hinaus Funktionen zur Steuerung von
Verbindungen, die eine Firewall nicht bietet.Die erweiterten Funktionen der
TCP-Wrapper sind kein Firewall-Ersatz.
Sie sollten zusammen mit einer Firewall und anderen
Sicherheitsvorkehrungen eingesetzt werden. Die
TCP-Wrapper sind eine weitere
Sicherheitsschicht zum Schutz eines Systems.Da die Wrapper die Funktion von inetd
erweitern, wird im Folgenden vorausgesetzt, dass Sie den
Abschnitt über die
inetd-Konfiguration
schon gelesen haben.
+
+ Streng genommen handelt es sich bei den von &man.inetd.8;
+ gestarteten Programmen nicht um Daemonen. Da
+ sich diese Bezeichnung aber eingebürgert hat, wird sie auch
+ in diesem Abschnitt verwendet.
+
+
TCP-Wrapper einrichtenUm die TCP-Wrapper unter &os;
zu benutzen, muss nur der inetd
aus rc.conf mit den voreingestellten
Optionen gestartet werden.
Die Konfigurationsdatei /etc/hosts.allow
darf keine Fehler enthalten; falls doch, werden die
Fehler mit &man.syslogd.8; protokolliert.Im Gegensatz zu anderen Implementationen der
TCP-Wrapper wird vom Gebrauch
der Datei hosts.deny abgeraten.
Die Konfiguration sollte sich vollständig in der
Datei /etc/hosts.allow befinden.In der einfachsten Konfiguration werden Dienste
abhängig vom Inhalt der Datei
/etc/hosts.allow erlaubt oder
gesperrt. Unter &os; wird in der Voreinstellung
jeder von inetd gestartete Dienst
erlaubt. Sehen wir uns zunächst die Grundkonfiguration
an.Eine Konfigurationszeile ist wie folgt aufgebaut:
Dienst : Adresse : Aktion.
Dienst ist der von inetd
gestartete Dienst (auch Daemon genannt). Die
Adresse kann ein gültiger
Rechnername, eine IP-Adresse oder
eine IPv6-Adresse in Klammern
([]) sein.
Der Wert allow im Feld
Aktion erlaubt Zugriffe, der Wert
deny verbietet Zugriffe.
Die Zeilen in hosts.allow
werden für jede Verbindung der Reihe nach
abgearbeitet. Trifft eine Zeile auf eine Verbindung
zu, wird die entsprechende Aktion ausgeführt
und die Abarbeitung ist beendet.Es gibt noch weitere Konfigurationsoptionen, die
gleich erläutert werden. Das bisher Gesagte
reicht, um eine einfache Regel aufzustellen. Wenn
Sie einkommende POP3-Verbindungen
für den Dienst
mail/qpopper
erlauben wollen, erweitern Sie
hosts.allow um die nachstehende
Zeile:# This line is required for POP3 connections:
qpopper : ALL : allowNachdem Sie die Zeile hinzugefügt haben, muss der
inetd neu gestartet werden. Sie
können dazu das Kommando &man.kill.1; verwenden
oder /etc/rc.d/inetd restart
ausführen.Erweiterte Konfiguration der TCP-WrapperDie TCP-Wrapper besitzen
weitere Optionen, die bestimmen, wie Verbindungen
behandelt werden. In einigen Fällen ist es
gut, wenn bestimmten Rechnern oder Diensten eine
Nachricht geschickt wird. In anderen Fällen
soll vielleicht der Verbindungsaufbau protokolliert
oder eine E-Mail an einen Administrator versandt
werden. Oder ein Dienst soll nur für das
lokale Netz bereitstehen. Dies alles ist mit so genannten
Wildcards, Metazeichen und der Ausführung externer
Programme möglich und wird in den nächsten
zwei Abschnitten erläutert.Externe Kommandos ausführenStellen Sie sich vor, eine Verbindung soll
verhindert werden und gleichzeitig soll demjenigen,
der die Verbindung aufgebaut hat, eine Nachricht
geschickt werden. Auf welche Art müssen
die TCP-Wrapper konfiguriert werden?
Die Option führt beim
Verbindungsaufbau ein Kommando aus. In der Datei
hosts.allow ist ein Beispiel
für diese Option enthalten:# Alle anderen Dienste sind geschützt
ALL : ALL \
: severity auth.info \
: twist /bin/echo "You are not welcome to use %d from %h."Für jeden Dienst, der nicht vorher in
der Datei hosts.allow konfiguriert
wurde, wird die Meldung You are not allowed to use
daemon from
hostname. zurückgegegeben.
Dies ist besonders nützlich, wenn Sie die
Gegenstelle sofort benachrichtigen wollen, nachdem
die Verbindung getrennt wurde. Beachten Sie, dass
der Text der Meldung in Anführungszeichen
(") stehen muss,
es gibt keine Ausnahmen zu dieser Regel.Ein so konfigurierter Server ist anfällig
für Denial-of-Service-Angriffe. Ein Angreifer
kann die gesperrten Dienste mit Verbindungsanfragen
überfluten.Um einem Denial-of-Service-Angriff zu entgehen,
benutzen Sie die Option .
Wie die Option verbietet
die Verbindung und führt
externe Kommandos aus. Allerdings sendet die
Option der Gegenstelle
keine Rückmeldung. Sehen Sie sich die
nachstehende Konfigurationsdatei an:# Verbindungen von example.com sind gesperrt:
ALL : .example.com \
: spawn (/bin/echo %a from %h attempted to access %d >> \
/var/log/connections.log) \
: denyDamit sind Verbindungen von der Domain
*.example.com gesperrt.
Jeder Verbindungsaufbau wird zudem in der Datei
/var/log/connections.log
protokolliert. Das Protokoll enthält den
Rechnernamen, die IP-Adresse
und den Dienst, der angesprochen wurde.In der Konfigurationsdatei wurde beispielsweise
das Metazeichen %a verwendet. Es gibt weitere
Metazeichen, die in der Hilfeseite &man.hosts.access.5;
beschrieben werden.WildcardsBisher verwendeten die Beispiele immer die
Wildcard ALL. Die Wildcard
ALL passt beispielsweise auf
jeden Dienst, jede Domain oder jede
IP-Adresse. Eine andere
Wildcard ist PARANOID. Sie passt
auf jeden Rechner dessen IP-Adresse
möglicherweise gefälscht ist. Dies ist dann
der Fall, wenn der Verbindungsaufbau von einer
IP-Adresse erfolgt, die nicht
zu dem übermittelten Rechnernamen passt.
Für solche Fälle werden mit der
Wildcard PARANOID Aktionen
festgelegt, beispielsweise:# Block possibly spoofed requests to sendmail:
sendmail : PARANOID : denyIn diesem Beispiel werden alle Verbindungen zu
sendmail verboten, die von einer
IP-Adresse ausgehen, die nicht zum
Rechnernamen passt.Die Wildcard PARANOID
kann einen Dienst unbrauchbar machen, wenn der
Client oder der Server eine fehlerhafte
DNS-Konfiguration besitzt.
Setzen Sie die Wildcard bitte umsichtig ein.Weiteres über Wildcards und deren Funktion
lesen Sie bitte in der Hilfeseite &man.hosts.access.5;
nach.In der Voreinstellung sind alle Dienste erlaubt.
Damit die gezeigten Beispiele funktionieren, müssen
Sie die erste Konfigurationszeile in der Datei
hosts.allow auskommentieren.MarkMurrayBeigesteuert von MarkDapozBasiert auf einem Beitrag von KerberosIVKerberosIVKerberos ist ein zusätzliches Netzwerkprotokoll, das es
Benutzern erlaubt, sich über einen sicheren Server zu
authentifizieren. Dienste wie rlogin,
rcp oder das sichere Kopieren von Dateien
zwischen Systemen und andere risikoreiche Tätigkeiten werden
durch Kerberos erheblich sicherer und kontrollierbarer.Die folgende Anleitung kann nur als Wegweiser dazu dienen, wie
Sie Kerberos für FreeBSD konfigurieren. Eine komplette
Beschreibung des Systems finden Sie in den entsprechenden
Hilfeseiten.Installation von KerberosIVMITKerberosIVInstallationKerberos ist eine optionale Komponente von &os;. Am
leichtesten installieren Sie die Software, wenn Sie bei
der ersten Installation von FreeBSD in
sysinstall die Distribution
krb4 oder krb5
auswählen. Damit installieren Sie entweder die
eBones (KerberosIV) oder Heimdal
(Kerberos5) Version von Kerberos. Beide Versionen werden
mit FreeBSD ausgeliefert, da sie außerhalb von den
USA oder Kanada entwickelt werden.
Sie unterliegen deshalb auch nicht den restriktiven
Exportbeschränkungen der USA und sind auch für
Bewohner anderer Länder zugänglich.Als Alternative steht die MIT Variante von Kerberos in der
Ports-Kollektion unter security/krb5 zur
Verfügung.Erstellen der initialen DatenbankDie folgenden Schritte werden nur auf dem Kerberos-Server
durchgeführt. Stellen Sie bitte vorher sicher, dass
keine alten Kerberos-Datenbanken mehr vorhanden sind. Im
Verzeichnis /etc/kerberosIV sollten sich nur
die folgenden Dateien befinden:&prompt.root; cd /etc/kerberosIV
&prompt.root; ls
README krb.conf krb.realmsWenn noch andere Dateien, wie principal.*
oder master_key, existieren, müssen
Sie die alte Kerberos-Datenbank mit kdb_destroy
löschen. Wenn Kerberos nicht läuft, können Sie
die Dateien auch einfach löschen.Sie sollten nun die Dateien krb.conf und
krb.realms editieren, um Ihr Kerberos-Realm zu
definieren. Das folgende Beispiel zeigt dies für das Realm
EXAMPLE.COM auf dem Server
grunt.example.com.
krb.conf sollte wie folgt aussehen:&prompt.root; cat krb.conf
EXAMPLE.COM
EXAMPLE.COM grunt.example.com admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.govDie zusätzlich aufgeführten Realms brauchen Sie nicht
anzulegen. Sie zeigen hier nur, wie man Kerberos dazu bringt, andere
Realms zu erkennen. Sie können Sie also auch weglassen.Die erste Zeile benennt das Realm, in dem das System arbeitet.
Die anderen Zeilen enthalten Realm/Host Paare. Der erste Wert jeder
Zeile ist das Realm, der zweite Teil ein Host, der in diesem
Realm Key Distribution Center ist. Die
Schlüsselwörter admin server nach einem
Hostnamen bedeuten, dass dieser Host auch einen administrativen
Datenbankserver zur Verfügung stellt. Weitere Erklärungen zu
diesen Begriffen finden Sie in den Kerberos Manualpages.Als nächstes muss
grunt.example.com in das Realm
EXAMPLE.COM aufgenommen werden. Des Weiteren
erstellen wir einen Eintrag, der alle Rechner der Domäne
.example.com in das Realm
EXAMPLE.COM aufnimmt.
krb.realms sollte danach so aussehen:&prompt.root; cat krb.realms
grunt.example.com EXAMPLE.COM
.example.com EXAMPLE.COM
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDUDie zusätzlichen Realms sind hier wieder als Beispiel
gedacht. Sie können sie der Einfachheit halber auch
weglassen.Die erste Zeile nimmt ein einzelnes System
in das Realm auf. Die anderen Zeilen zeigen, wie bestimmte
Subdomänen einem bestimmten Realm zugeordnet werden.Das folgende Kommando muss nur auf dem Kerberos-Server
(oder Key Distribution Center) laufen. Mit
kdb_init können wir die Datenbank
anlegen:&prompt.root; kdb_initRealm name [default ATHENA.MIT.EDU ]:EXAMPLE.COM
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter Kerberos master key:Anschließend muss der Schlüssel gespeichert
werden, damit Server auf der lokalen Maschine darauf zugreifen
können. Dies geschieht mit kstash:&prompt.root; kstashEnter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!Das verschlüsselte Master-Passwort wurde in
/etc/kerberosIV/master_key gesichert.Anlegen von PrinzipalsFür jedes System, das mit Kerberos
gesichert werden soll, müssen zwei Prinzipale in die
Datenbank eingetragen werden. Ihre Namen sind
kpasswd und rcmd. Beide
Prinzipale müssen für jedes System angelegt werden, wobei
die Instanz der Name des jeweiligen Systems ist.Die Dæmonen kpasswd und
rcmd erlauben es anderen Systemen,
Kerberos-Passwörter zu ändern und Kommandos wie
&man.rcp.1;, &man.rlogin.1; und &man.rsh.1;
laufen zu lassen.Beide Einträge werden im Folgenden angelegt:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:passwdInstance:grunt
<Not found>, Create [y] ?y
Principal: passwd, Instance: grunt, kdc_key_ver: 1
New Password: <---- geben Sie hier Zufallswerte ein
Verifying password
New Password: <---- geben Sie hier Zufallswerte ein
Random password [y] ?y
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name:rcmdInstance:grunt
<Not found>, Create [y] ?
Principal: rcmd, Instance: grunt, kdc_key_ver: 1
New Password: <---- geben Sie hier Zufallswerte ein
Verifying password
New Password: <---- geben Sie hier Zufallswerte ein
Random password [y] ?
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- geben Sie nichts an, um das Programm zu verlassenErstellen der Server-DateiWir müssen nun für jede Maschine die Instanzen,
die Dienste definieren, aus der Datenbank mit
ext_srvtab extrahieren. Die erstelle Datei
muss auf einem sicheren Weg in das
/etc/kerberosIV Verzeichnis jedes Clients
kopiert werden. Die Datei muss auf jedem Server und auf
jedem Client vorhanden sein und ist unabdingbar für
Kerberos.&prompt.root; ext_srvtab gruntEnter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....Das Kommando erzeugt Dateien mit einem temporären Namen,
der es anderen Servern erlaubt, ihre Datei abzuholen. Die Datei
muss auf dem entsprechenden System in srvtab
umbenannt werden. Auf dem originalen System können Sie
&man.mv.1; benutzen, um die Datei umzubenennen:&prompt.root; mv grunt-new-srvtab srvtabWenn die Datei für ein Client-System bestimmt ist und das
Netzwerk nicht sicher ist, kopieren Sie die Datei auf ein bewegliches
Medium und transportieren sie physikalisch. Kopieren Sie die Datei
auf den Client in das Verzeichnis /etc/kerberosIV.
Benennen Sie die Datei in srvtab um und setzen Sie
schließlich noch die Berechtigungen auf 600:&prompt.root; mv grumble-new-srvtab srvtab
&prompt.root; chmod 600 srvtabFüllen der DatenbankWir können nun Benutzer in der Datenbank anlegen. Mit
kdb_edit legen wir zuerst die Benutzerin
jane an:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:janeInstance:
<Not found>, Create [y] ?y
Principal: jane, Instance: , kdc_key_ver: 1
New Password: <---- geben Sie ein sicheres Passwort ein
Verifying password
New Password: <---- wiederholen Sie die Eingabe
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- geben Sie nichts an, um das Programm zu verlassenTestenZuerst müssen die Kerberos-Dæmonen gestartet sein.
Wenn Sie /etc/rc.conf richtig angepasst haben,
passiert das automatisch, wenn Sie booten. Dieser Schritt ist nur
auf dem Kerberos-Server notwendig, die Clients bekommen alles
was sie brauchen aus dem /etc/kerberosIV
Verzeichnis.&prompt.root; kerberos &
Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Current Kerberos master key version is 1
Local realm: EXAMPLE.COM
&prompt.root; kadmind -n &
KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead
Current Kerberos master key version is 1.
Master key entered. BEWARE!Jetzt können wir mit kinit versuchen,
ein Ticket für die ID jane, die wir
oben angelegt haben, zu erhalten:&prompt.user; kinit jane
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane"
Password:Mit klist können Sie sich vergewissern,
dass Sie die Tickets auch erhalten haben:&prompt.user; klist
Ticket file: /tmp/tkt245
Principal: jane@EXAMPLE.COM
Issued Expires Principal
Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.EXAMPLE.COM@EXAMPLE.COMVersuchen Sie nun das Passwort mit &man.passwd.1;
zu ändern, um zu überprüfen, dass der
kpasswd Dæmon auch auf der
Kerberos-Datenbank autorisiert ist:&prompt.user; passwd
realm EXAMPLE.COM
Old password for jane:New Password for jane:
Verifying password
New Password for jane:
Password changed.Anlegen von su PrivilegienMit Kerberos kann jedem Benutzer, der
root-Privilegien braucht, ein
eigenes Passwort für
&man.su.1; zugewiesen werden. Dies wird dadurch
erreicht, dass die Instanz eines Prinzipals
root ist. Mit kbd_edit
legen wir nun den Eintrag jane.root in der
Kerberos-Datenbank an:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:janeInstance:root
<Not found>, Create [y] ? y
Principal: jane, Instance: root, kdc_key_ver: 1
New Password: <---- geben Sie ein sicheres Passwort ein
Verifying password
New Password: <---- geben Sie das Passwort erneut ein
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?12 <--- Keep this short!
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- geben Sie nichts an, um das Programm zu verlassenVersuchen Sie nun, für diesen Prinzipal Tickets zu
bekommen:&prompt.root; kinit jane.root
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane.root"
Password:Als nächstes fügen wir den Prinzipal in
.klogin von root ein:&prompt.root; cat /root/.klogin
jane.root@EXAMPLE.COMJetzt benutzen wir &man.su.1;:&prompt.user; su
Password:und kontrollieren, welche Tickets wir haben:&prompt.root; klist
Ticket file: /tmp/tkt_root_245
Principal: jane.root@EXAMPLE.COM
Issued Expires Principal
May 2 20:43:12 May 3 04:43:12 krbtgt.EXAMPLE.COM@EXAMPLE.COMWeitere KommandosIn einem der Beispiele haben wir einen Prinzipal mit
dem Namen jane und der Instanz
root angelegt. Der Prinzipal entstand aus
einem Benutzer mit dem gleichen Namen. Unter Kerberos ist es
Standard, dass ein
principal.instance der Form
username.root es dem
Benutzer username erlaubt, mit
&man.su.1; root zu werden, wenn die
entsprechenden Einträge in .klogin von
root existieren:&prompt.root; cat /root/.klogin
jane.root@EXAMPLE.COMDas gilt auch für die .klogin-Datei
im Heimatverzeichnis eines Benutzers:&prompt.user; cat ~/.klogin
jane@EXAMPLE.COM
jack@EXAMPLE.COMDie Einträge erlauben jedem, der sich im Realm
EXAMPLE.COM als jane oder
jack mit kinit authentifiziert
hat, mittels &man.rlogin.1;, &man.rsh.1; oder &man.rcp.1;
auf den Account jane und dessen
Dateien zuzugreifen.Im folgenden Beispiel meldet sich jane
mit Kerberos auf grunt an:&prompt.user; kinit
MIT Project Athena (grunt.example.com)
Password:
&prompt.user; rlogin grunt
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995Im folgenden Beispiel wurde der Prinzipal jack
mit einer Instanz null angelegt. Mit der obigen
.klogin-Datei kann er sich nun auf derselben
Maschine als jane anmelden:&prompt.user; kinit
&prompt.user; rlogin grunt -l jane
MIT Project Athena (grunt.example.com)
Password:
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995TillmanHodgsonBeigetragen von MarkMurrayBeruht auf einem Beitrag von Kerberos5Das Basissystem enthält ab &os; 5.1
nur noch Kerberos5. Die
Konfiguration von Kerberos5
ist der Konfiguration von KerberosIV
sehr ähnlich. Wenn Sie KerberosIV
benötigen, installieren Sie den Port
security/krb4.
Der folgende Abschnitt beschreibt ausschließlich
Kerberos5 für &os;-Releases
ab 5.0.Kerberos ist ein Netzwerk-Protokoll,
das Benutzer mithilfe eines sicheren Servers authentifiziert.
Mit Risiken behaftete Dienste, wie das Anmelden an entfernten
Systemen oder das Kopieren von Daten auf entfernte Systeme,
werden durch Kerberos erheblich
sicherer und lassen sich leichter steuern.Kerberos hat eine Aufgabe:
Die sichere Prüfung der Identität eines Benutzers
(Authentifizierung) über das Netzwerk. Das System
überprüft weder die Berechtigungen der Benutzer
(Autorisierung), noch verfolgt es die durchgeführten
Aktionen (Audit). Daher sollte Kerberos
zusammen mit anderen Sicherheits-Systemen eingesetzt werden, die
diese Funktionen bereitstellen. Die Daten einer Kommunikation
können verschlüsselt werden, nachdem die
Kommunikationspartner mit Kerberos
ihre Identität geprüft haben.Die folgenden Anweisungen beschreiben, wie Sie das mit
&os; gelieferte Kerberos einrichten.
Eine vollständige Beschreibung des Systems entnehmen
Sie bitte den entsprechenden Hilfeseiten.Die Beschreibung der
Kerberos-Installation benutzt
folgende Namensräume:Die DNS-Domain (Zone) heißt
example.org.Das Kerberos-Realm
heißt EXAMPLE.ORG.Benutzen Sie echte Domain-Namen, wenn Sie
Kerberos einrichten. Damit
vermeiden Sie DNS-Probleme und stellen
die Zusammenarbeit mit anderen
Kerberos-Realms sicher.GeschichteKerberos5GeschichteDas MIT entwickelte
Kerberos, um Sicherheitsprobleme
auf dem Netzwerk zu lösen. Das
Kerberos-Protokoll verwendet
starke Kryptographie, sodass ein Server die Identität
eines Clients (der umgekehrte Vorgang ist auch möglich)
über ein unsicheres Netzwerk feststellen kann.Der Begriff Kerberos wird sowohl für das Protokoll
als auch für Programme verwendet, die
Kerberos benutzen (wie
Kerberos-Telnet). Die aktuelle
Protokollversion ist 5 und wird in
RFC 1510 beschrieben.Mehrere Implementierungen des Protokolls stehen frei
zur Verfügung und decken viele Betriebssysteme ab.
Das Massachusetts Institute of Technology
(MIT), an dem Kerberos
ursprünglich entwickelt wurde, entwickelt seine
Kerberos-Version weiter. In den
USA wird diese Version häufig
eingesetzt, unterlag aber Export-Beschränkungen,
da sie in den USA entwickelt wurde.
Die MIT-Version von
Kerberos befindet sich im Port
security/krb5.
Heimdal ist eine weitere Implementierung der Protokollversion 5.
Sie wurde außerhalb der USA entwickelt
und unterliegt daher keinen Export-Beschränkungen.
Heimdal-Kerberos befindet sich
im Port security/heimdal
und das Basissystem von &os; enthält eine minimale
Installation von Heimdal.Um möglichst viele Benutzer anzusprechen, verwenden
die folgenden Beispiele die in &os; enthaltene
Heimdal-Distribution.Das Heimdal KDC einrichtenKerberos5Key Distribution Center einrichtenKerberos authentifiziert
Benutzer an einer zentralen Stelle: dem Key Distribution
Center (KDC). Das KDC
verteilt Tickets, mit denen ein
Dienst die Identität eines Benutzers feststellen kann.
Alle Mitglieder eines Kerberos-Realms
vertrauen dem KDC, daher gelten für
das KDC erhöhte
Sicherheitsanforderungen.Obwohl das KDC wenig Ressourcen eines
Rechners benötigt, sollte es wegen der
Sicherheitsanforderungen auf einem separaten Rechner
installiert werden.Das KDC wird in
/etc/rc.conf wie folgt aktiviert:kerberos5_server_enable="YES"
kadmind5_server_enable="YES"
kerberos_stash="YES"Die Option gibt es
nur in &os; 4.X.Danach wird die Konfigurationsdatei von
Kerberos,
/etc/krb5.conf, erstellt:[libdefaults]
default_realm = EXAMPLE.ORG
[realms]
EXAMPLE.ORG = {
kdc = kerberos.example.org
}
[domain_realm]
.example.org = EXAMPLE.ORGDiese Einstellungen setzen voraus, dass der voll
qualifizierte Name des KDCs
kerberos.example.org ist.
Wenn Ihr KDC einen anderen Namen hat,
müssen Sie in der DNS-Zone einen Alias-Eintrag (CNAME-Record)
für das KDC hinzufügen.Auf großen Netzwerken mit einem ordentlich
konfigurierten BIND
DNS-Server kann die Datei verkürzt
werden:[libdefaults]
default_realm = EXAMPLE.ORGDie Zonendatei von example.org
muss dann die folgenden Zeilen enthalten:_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.
_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.
_kerberos IN TXT EXAMPLE.ORG.Im nächsten Schritt wird die
Kerberos-Datenbank eingerichtet.
Die Datenbank enthält die Schlüssel aller Prinzipale
und ist mit einem Passwort geschützt. Dieses Passwort
brauchen Sie nicht zu behalten, da ein davon abgeleiteter
Schlüssel in der Datei /var/heimdal/m-key
gespeichert wird. Den Schlüssel erstellen Sie, indem
Sie das Programm kstash aufrufen und
ein Passwort eingeben.Nachdem Sie den Schlüssel in
/var/heimdal/m-key erstellt haben,
können Sie die Datenbank mit dem Kommando
kadmin initialisieren. Verwenden
Sie hierbei die Option (lokal). Mit
dieser Option wird die Datenbank lokal modifiziert. Normal
würde der kadmind-Dienst benutzt,
der aber zu diesem Zeitpunkt noch nicht läuft. An
der Eingabeaufforderung von kadmin
können Sie mit dem Kommando init
die Datenbank des Realms einrichten.Zuletzt erstellen Sie mit dem Kommando add
Ihren ersten Prinzipal. Benutzen Sie die voreingestellten
Optionen; Sie können die Einstellungen später
mit dem Kommando modify ändern.
An der Eingabeaufforderung zeigt das Kommando
? Hilfetexte an.Zusammengefasst wird die Datenbank wie folgt
eingerichtet:&prompt.root; kstash
Master key: xxxxxxxx
Verifying password - Master key: xxxxxxxx
&prompt.root; kadmin -l
kadmin> init EXAMPLE.ORG
Realm max ticket life [unlimited]:
kadmin> add tillman
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
Password: xxxxxxxx
Verifying password - Password: xxxxxxxxJetzt kann das KDC gestartet werden.
Führen Sie zum Start der Dienste die Kommandos
/etc/rc.d/kerberos start und
/etc/rc.d/kadmind start aus. Obwohl
zu diesem Zeitpunkt noch keine kerberisierten Dienste
laufen, können Sie die Funktion des KDCs
schon überprüfen. Für den eben angelegten
Benutzer können Sie sich vom KDC
Tickets holen und diese Tickets anzeigen:&prompt.user; k5init tillman
tillman@EXAMPLE.ORG's Password:
&prompt.user; k5list
Credentials cache: FILE: /tmp/krb5cc_500
Principal: tillman@EXAMPLE.ORG
Issued Expires Principal
Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORGKerberos-Dienste
einrichtenKerberos5Dienste einrichtenAlle Rechner, die kerberisierte Dienste anbieten,
müssen eine Kopie der
Kerberos-Konfigurationsdatei
/etc/krb5.conf besitzen. Sie
können die Datei einfach vom KDC
kopieren.Anschließend müssen Sie die Datei
/etc/krb5.keytab erzeugen. Im
Gegensatz zu normalen Workstations benötigt jeder
Server eine keytab.
Diese Datei enthält den Schlüssel des
Servers, mit dem sich der Server und das
KDC gegenseitig authentifizieren
können. Die Datei muss sicher auf den Server
transportiert werden (beispielsweise mit &man.scp.1;
oder einer Diskette). Unter keinen Umständen
darf die Datei im Klartext, zum Beispiel mit
FTP, übertragen werden,
da sonst die Sicherheit des Servers gefährdet
ist.Sie können die keytab auch
mit dem Programm kadmin übertragen.
Da Sie mit kadmin sowieso einen Host-Prinzipal
für den Server einrichten müssen, ist das ganz
praktisch.Sie müssen allerdings schon ein Ticket
besitzen und berechtigt sein, kadmin
auszuführen. Die Berechtigung erhalten Sie durch
einen Eintrag in der Zugriffskontrollliste
kadmind.acl. Weitere Informationen
über Zugriffskontrolllisten erhalten Sie in den
Heimdal-Info-Seiten (info heimdal)
im Abschnitt Remote administration. Wenn
der Zugriff auf kadmin von entfernten
Maschinen verboten ist, müssen Sie sich sicher
auf dem KDC anmelden (lokale Konsole,
&man.ssh.1; oder kerberisiertes Telnet) und die
keytab lokal mit
kadmin -l erzeugen.Nachdem Sie die Datei /etc/krb5.conf
installiert haben, können Sie das Kommando
kadmin benutzen. An der Eingabeaufforderung
von kadmin erstellt das Kommando
add --random-key den Host-Prinzipal
und das Kommando ext extrahiert den
Schlüssel des Prinzipals in eine Datei:&prompt.root; kadmin
kadmin> add --random-key host/myserver.example.org
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
kadmin> ext host/myserver.example.org
kadmin> exitDas Kommando ext (von
extract) speichert den
extrahierten Schlüssel in der Datei
/etc/krb5.keytab.Wenn auf dem KDC, vielleicht aus
Sicherheitsgründen, kadmind
nicht läuft, können Sie das Kommando
kadmin von entfernten Rechnern nicht
benutzen. In diesem Fall legen Sie den Host-Prinzipal
host/myserver.EXAMPLE.ORG direkt
auf dem KDC an. Den Schlüssel
extrahieren Sie in eine temporäre Datei (damit
die Datei /etc/krb5.keytab nicht
überschrieben wird):&prompt.root; kadmin
kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org
kadmin> exitAnschließend müssen Sie die erzeugte
example.keytab sicher auf den
Server kopieren (mit scp oder
mithilfe einer Diskette). Geben Sie auf jeden Fall
einen anderen Namen für die keytab
an, weil sonst die keytab des
KDCs überschrieben würde.Wegen der Datei krb5.conf kann
der Server nun mit dem KDC kommunizieren
und seine Identität mithilfe der Datei
krb5.keytab nachweisen. Jetzt
können wir kerberisierte Dienste aktivieren.
Für telnet muss die folgende
Zeile in /etc/inetd.conf eingefügt
werden:telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a userAusschlaggebend ist, dass die Authentifizierungs-Methode
mit auf user gesetzt
wird. Weitere Details entnehmen Sie bitte der Hilfeseite
&man.telnetd.8;.Nachdem sie die Zeile in /etc/inetd.conf
eingefügt haben, starten Sie &man.inetd.8; mit
dem Kommando /etc/rc.d/inetd restart
durch.Kerberos-Clients
einrichtenKerberos5Clients einrichtenEin Client lässt sich leicht einrichten.
Sie benötigen nur die
Kerberos-Konfigurationsdatei
/etc/krb5.conf. Kopieren Sie
die Konfigurationsdatei einfach vom KDC
auf den Client.Sie können jetzt mit kinit
Tickets anfordern, mit klist Tickets
anzeigen und mit kdestroy Tickets
löschen. Sie können mit
Kerberos-Anwendungen kerberisierte
Server ansprechen. Wenn das nicht funktioniert,
Sie aber Tickets anfordern können, hat wahrscheinlich
der kerberisierte Server ein Problem und nicht der
Client oder das KDC.Wenn Sie eine Anwendung wie telnet
testen, können Sie mit einem Paket-Sniffer
(beispielsweise &man.tcpdump.1;) überprüfen,
dass Passwörter verschlüsselt übertragen
werden. Probieren Sie auch die Option
von telnet, die den gesamten Datenverkehr
verschlüsselt (analog zu ssh).Die Kerberos-Basisanwendungen
kinit, klist,
kdestroy und kpasswd
gehören zum &os;-Basissystem. Beachten Sie, dass
die Programme vor &os; 5.0 in k5init,
k5list, k5destroy,
k5passwd und k5stash
umbenannt wurden.Zu Heimdal gehören noch weitere Anwendungen.
Allerdings enthält das &os;-Basissystem eine
minimale Heimdal-Installation und nur eine
kerberisierte Anwendung: telnet.Der Heimdal-Port enthält noch mehr kerberisierte
Anwendungen wie ftp, rsh,
rcp und rlogin.
Der MIT-Port enthält ebenfalls
weitere kerberisierte Anwendungen..k5login und
.k5usersKerberos5.k5loginKerberos5.k5usersNormalerweise wird ein
Kerberos-Prinzipal wie
tillman@EXAMPLE.ORG auf ein lokales
Benutzerkonto, beispielsweise tillman,
abgebildet. Daher benötigen Client-Anwendungen (zum
Beispiel telnet) keinen Benutzernamen.Manchmal wird aber Zugriff auf ein lokales Benutzerkonto
benötigt, zu dem es keinen passenden
Kerberos-Prinzipal gibt.
Der Prinzipal tillman@EXAMPLE.ORG
bräuchte beispielsweise Zugriff auf das Konto
webdevelopers. Ebenso könnten
andere Prinzipale auf dieses Konto zugreifen wollen.Die Dateien .k5login und
.k5users im Heimatverzeichnis eines
Benutzerkontos gewähren Zugriffe ähnlich wie
die Dateien .hosts und
.rhosts. Um den Prinzipalen
tillman@example.org und
jdoe@example.org auf das Konto
webdevelopers zu geben, wird im
Heimatverzeichnis von webdevelopers
die Datei .k5login mit folgendem
Inhalt angelegt:tillman@example.org
jdoe@example.orgDie angegebenen Prinzipale haben nun ohne ein gemeinsames
Passwort Zugriff auf das Konto.Einzelheiten entnehmen Sie bitte den Hilfeseiten
zu diesen Dateien. Die Datei .k5users
wird in der Hilfeseite des Kommandos ksu
beschrieben.Tipps und FehlersucheKerberos5FehlersucheWenn Sie den Heimdal-Port oder den
MIT-Port benutzen, muss in der
Umgebungsvariable PATH der Pfad zu
den Programmen des Ports vor dem Pfad zu den
Kerberos-Programmen des Systems
stehen.Sind die Uhrzeiten der Systeme synchronisiert?
Wenn nicht, schlägt vielleicht die Authentifizierung
fehl. beschreibt, wie
Sie mithilfe von NTP die Uhrzeiten
synchronisieren.Die MIT- und Heimdal-Systeme
arbeiten bis auf kadmin gut zusammen.
Für kadmin wurde das Protokoll
nicht normiert.Wenn Sie den Namen eines Rechners ändern,
müssen Sie auch den host/-Prinzipal
ändern und die Datei keytab
aktualisieren. Dies betrifft auch spezielle Einträge
wie den Prinzipal für Apaches www/mod_auth_kerb.Die Rechnernamen müssen vor- und
rückwärts aufgelöst werden (im
DNS oder in
/etc/hosts).
CNAME-Einträge im
DNS funktionieren, aber die
entsprechenden A- und PTR-Einträge müssen
vorhanden und richtig sein. Wenn sich Namen nicht
auflösen lassen, ist die Fehlermeldung nicht
gerade selbstsprechend: Kerberos5 refuses
authentication because Read req
failed: Key table entry not found.Einige Betriebssysteme installieren
ksu mit falschen Zugriffsrechten;
es fehlt das Set-UID-Bit für root.
Das mag aus Sicherheitsgründen richtig sein,
doch funktioniert ksu dann nicht.
Dies ist kein Fehler des KDCs.Wenn Sie für einen Prinzipal unter
MIT-Kerberos
Tickets mit einer längeren Gültigkeit als
der vorgegebenen zehn Stunden einrichten wollen,
müssen Sie zwei Sachen ändern. Benutzen
Sie das modify_principal von
kadmin, um die maximale
Gültigkeitsdauer für den Prinzipal selbst
und den Prinzipal krbtgt
zu erhöhen.Mit einem Packet-Sniffer können Sie feststellen,
dass Sie sofort nach dem Aufruf von kinit
eine Antwort vom KDC
bekommen – noch bevor Sie überhaupt ein
Passwort eingegeben haben! Das ist in Ordnung:
Das KDC händigt
ein Ticket-Granting-Ticket (TGT)
auf Anfrage aus, da es durch einen vom Passwort
des Benutzers abgeleiteten Schlüssel
geschützt ist. Wenn das Passwort
eingegeben wird, wird es nicht zum KDC
gesendet, sondern zum Entschlüsseln der
Antwort des KDCs benutzt, die
kinit schon erhalten hat.
Wird die Antwort erfolgreich entschlüsselt,
erhält der Benutzer einen Sitzungs-Schlüssel
für die künftige verschlüsselte
Kommunikation mit dem KDC und das
Ticket-Granting-Ticket. Das Ticket-Granting-Ticket
wiederum ist mit dem Schlüssel des KDCs
verschlüsselt. Diese Verschlüsselung ist
für den Benutzer völlig transparent und
erlaubt dem KDC,
die Echtheit jedes einzelnen TGT
zu prüfen.Wenn Sie OpenSSH verwenden
und Tickets mir einer langen Gültigkeit
(beispielsweise einer Woche) benutzen, setzen Sie die Option
in der Datei
sshd_config auf no.
Ansonsten werden Ihre Tickets gelöscht, wenn Sie
sich abmelden.Host-Prinzipale können ebenfalls Tickets mit
längerer Gültigkeit besitzen. Wenn der
Prinzipal eines Benutzers über ein Ticket verfügt,
das eine Woche gültig ist, das Ticket des
Host-Prinzipals aber nur neun Stunden gültig ist,
funktioniert der Ticket-Cache nicht wie erwartet.
Im Cache befindet sich dann ein abgelaufenes Ticket
des Host-Prinzipals.Wenn Sie mit krb5.dict die
Verwendung schlechter Passwörter verhindern wollen,
geht das nur mit Prinzipalen, denen eine Passwort-Policy
zugewiesen wurde. Die Hilfeseite von
kadmind beschreibt kurz, wie
krb5.dict verwendet wird. Das
Format von krb5.dict ist
einfach: Die Datei enthält pro Zeile ein Wort.
Sie können daher einen symbolischen Link auf
/usr/share/dict/words erstellen.Unterschiede zum MIT-PortDer Hauptunterschied zwischen
MIT-Kerberos
und Heimdal-Kerberos
ist das Kommando kadmin.
Die Befehlssätze des Kommandos (obwohl funktional
gleichwertig) und das verwendete
Protokoll unterscheiden sich in beiden Varianten.
Das KDC lässt sich nur mit
dem kadmin Kommando der passenden
Kerberos-Variante verwalten.Für dieselbe Funktion können auch die
Client-Anwendungen leicht geänderte Kommandozeilenoptionen
besitzen. Folgen Sie bitte der Anleitung auf der
Kerberos-Seite
() des
MITs. Achten Sie besonders auf den
Suchpfad für Anwendungen. Der MIT-Port
wird standardmäßig in /usr/local/
installiert. Wenn die Umgebungsvariable PATH
zuerst die Systemverzeichnisse enthält, werden die
Systemprogramme anstelle der MIT-Programme
ausgeführt.Wenn Sie den MIT-Port
security/krb5 verwenden,
erscheint bei der Anmeldung mit telnetd
und klogind die Fehlermeldung
incorrect permissions on cache file.
Lesen Sie dazu bitte die im Port enthaltene Datei
/usr/local/share/doc/krb5/README.FreeBSD.
Wichtig ist, dass zur Authentifizierung die Binärdatei
login.krb5 verwendet wird, die
für durchgereichte Berechtigungen die Eigentümer
korrekt ändert.Beschränkungen von
KerberosKerberos5BeschränkungenKerberos muss ganzheitlich
verwendet werdenJeder über das Netzwerk angebotetene Dienst
muss mit Kerberos
zusammenarbeiten oder auf anderen Wegen gegen Angriffe
aus dem Netzwerk geschützt sein. Andernfalls
können Berechtigungen gestohlen und wiederverwendet
werden. Es ist beispielsweise nicht sinnvoll, für
Anmeldungen mit rsh und
telnetKerberos
zu benutzen, dagegen aber POP3-Zugriff
auf einen Mail-Server zu erlauben, da POP3
Passwörter im Klartext versendet.Kerberos ist für
Einbenutzer-Systeme gedachtIn Mehrbenutzer-Umgebungen ist
Kerberos unsicherer als in
Einbenutzer-Umgebungen, da die Tickets im für alle
lesbaren Verzeichnis /tmp
gespeichert werden. Wenn ein Rechner von mehreren
Benutzern verwendet wird, ist es möglich, dass
Tickets gestohlen werden.Dieses Problem können Sie lösen, indem Sie mit
der Kommandozeilenoption oder besser
mit der Umgebungsvariablen KRB5CCNAME einen
Ort für die Tickets vorgeben. Diese Vorgehensweise
wird leider selten benutzt. Es reicht, die Tickets
im Heimatverzeichnis eines Benutzers zu speichern und
mit Zugriffsrechten zu schützen.Das KDC ist verwundbarDas KDC muss genauso abgesichert
werden wie die auf ihm befindliche Passwort-Datenbank.
Auf dem KDC dürfen keine anderen
Dienste laufen und der Rechner sollte physikalisch
gesichert sein. Die Gefahr ist groß, da
Kerberos alle Passwörter
mit einem Schlüssel, dem Haupt-Schlüssel,
verschlüsselt. Der Haupt-Schlüssel wiederum
wird in einer Datei auf dem KDC
gespeichert.Ein kompromittierter Haupt-Schlüssel ist nicht
ganz so schlimm wie allgemein angenommen. Der
Haupt-Schlüssel wird nur zum Verschlüsseln
der Passwort-Datenbank und zum Initialisieren des
Zufallsgenerators verwendet. Solange der Zugriff
auf das KDC abgesichert ist, kann
ein Angreifer wenig mit dem Haupt-Schlüssel
anfangen.Wenn das KDC nicht zur Verfügung
steht, vielleicht wegen eines Denial-of-Service Angriffs
oder wegen eines Netzwerkproblems, ist eine Authentifizierung
unmöglich. Damit können die Netzwerk-Dienste
nicht benutzt werden; das KDC ist
also ein optimales Ziel für einen Denial-of-Service
Angriff. Sie können diesem Angriff ausweichen,
indem Sie mehrere KDCs (einen Master
und einen oder mehrere Slaves) verwenden. Der Rückfall
auf ein sekundäres KDC oder
eine andere Authentifizierungs-Methode (dazu ist
PAM bestens geeignet) muss sorgfältig
eingerichtet werden.Mängel von
KerberosMit Kerberos können
sich Benutzer, Rechner und Dienste gegenseitig
authentifizieren. Allerdings existiert kein Mechanismus,
der das KDC gegenüber Benutzern,
Rechnern oder Diensten authentifiziert. Ein verändertes
kinit könnte beispielsweise alle
Benutzernamen und Passwörter abfangen. Die von
veränderten Programmen ausgehende Gefahr können
Sie lindern, indem Sie die Integrität von Dateien
mit Werkzeugen wie
security/tripwire
prüfen.Weiterführende DokumentationKerberos5weiterführende DokumentationThe
Kerberos FAQDesigning
an Authentication System: a Dialogue in Four
ScenesRFC 1510,
The Kerberos Network
Authentication Service (V5)MIT
Kerberos-SeiteHeimdal
Kerberos-SeiteGaryPalmerBeigetragen von AlexNashFirewallsFirewallSicherheitFirewallsFirewalls sind sehr wichtig für Leute, die mit dem Internet
verbunden sind. Weiterhin halten sie Einzug in private Netzwerke, um
dort die Sicherheit zu verbessern. Dieser Abschnitt erklärt,
was Firewalls sind, wie sie benutzt werden und wie man die
Möglichkeiten von FreeBSD benutzen kann, um eine Firewall zu
implementieren.Es wird oft gedacht, dass eine Firewall zwischen dem internen
Netzwerk und dem weiten, schlechten Internet
alle Sicherheitsprobleme löst. Eine Firewall kann die Sicherheit
erhöhen, doch eine schlecht aufgesetzte Firewall ist ein
größeres Sicherheitsrisiko als gar keine Firewall. Eine
Firewall ist nur eine weitere Sicherheitsschicht, sie verhindert
aber nicht, dass ein wirklich entschlossener Cracker in
Ihr internes Netz eindringt. Wenn Sie Ihre interne Sicherheit
vernachlässigen, weil Sie Ihre Firewall für undurchdringlich
halten, machen Sie den Crackern die Arbeit leichter.Was ist eine Firewall?Auf dem Internet sind momentan zwei Arten von Firewalls
gebräuchlich. Die erste Art ist ein
Paketfilter, in dem ein Kernel auf einer
Maschine mit mehreren Netzwerkkarten auf Grund von Regeln
entscheidet, ob er ein Paket weiterleitet oder nicht. Der zweite
Typ sind Proxy-Server, die auf Dæmonen
angewiesen sind. Die Dæmonen authentifizieren Benutzer
und leiten Pakete weiter, das heißt sie können auf
Maschinen mit mehreren Netzwerkverbindungen laufen, auf denen
das Weiterleiten von Paketen durch den Kernel ausgeschaltet ist.Manchmal werden beide Arten einer Firewall kombiniert und es
ist nur einer besonderen Maschine, die
Bastion Host genannt wird, erlaubt, Pakete
in das interne Netzwerk über einen Paketfilter zu schicken.
Auf dem Bastion Host laufen Proxy-Dienste, die im Allgemeinen
sicherer als normale Authentifizierungsmechanismen sind.FreeBSD besitzt einen Kernel-Paketfilter (IPFW), der im Rest
dieses Abschnitts behandelt wird. Proxy-Server können
mithilfe Software Dritter auf FreeBSD eingerichtet werden.
Da es so viele unterschiedliche Proxy-Server gibt, können
wir sie nicht in diesem Abschnitt besprechen.PaketfilterEin Router ist eine Maschine, die Pakete zwischen zwei oder
mehr Netzwerken weiterleitet. Ein Paketfilter ist ein spezieller
Router, der mit einem Regelwerk entscheidet, ob er Pakete
weiterleitet. Um den Filter zu aktivieren, müssen
Sie zuerst die Regeln definieren, die festlegen, ob ein
Paket weitergeleitet wird oder nicht.Um zu entscheiden, ob ein Paket weitergeleitet wird, sucht
die Firewall eine Regel, die auf den Inhalt des Paketheaders
passt. Wenn eine passende Regel gefunden wurde, wird die Aktion
der Regel ausgeführt. Die Aktion kann das Paket blockieren,
weiterleiten oder auch dem Sender eine ICMP-Nachricht schicken.
Die Regeln werden der Reihenfolge nach durchsucht und nur die
erste passende Regel wird angewandt. Daher wird auch von einer
Regelkette gesprochen.Die Kriterien, nach denen Sie ein Paket spezifizieren
können, hängen von der eingesetzten Software ab.
Typischerweise können Sie Pakete nach der Quell IP-Adresse,
der Ziel IP-Adresse, dem Quellport, dem Zielport (bei Protokollen,
die diese unterscheiden) oder dem Pakettyp (UDP, TCP, ICMP)
unterscheiden.Proxy-ServerAuf Proxy-Servern werden die normalen Systemdienste,
wie telnetd
oder ftpd,
durch besondere Server ersetzt. Diese Server werden
Proxy-Server genannt, da sie normalerweise
nur weitergehende Verbindungen erlauben
(proxy engl. für
Stellvertreter). Zum Beispiel können Sie auf Ihrer
Firewall einen Proxy-Server für
telnet laufen lassen, der Verbindungen
aus dem Internet erlaubt. Ein Authentifizierungsmechanismus
auf dem Proxy-Server erlaubt dann den Zugriff auf Ihr
internes Netzwerk. Für den umgekehrten Weg können Sie
natürlich auch Proxy-Server einsetzen.Proxy-Server sind in aller Regel sicherer als normale Server
und bieten oft eine Reihe von Authentifizierungsmechanismen. Dazu
gehören Einmalpasswort Systeme, bei denen das zum
Anmelden verwendete Passwort sofort ungültig wird und
nicht zu einer weiteren Anmeldung benutzt werden kann, auch wenn
es abgehört wurde. Da Proxy-Server den Benutzern keinen
Zugang zu dem System geben, wird es für einen Angreifer
sehr schwer, Hintertüren zur Umgehung Ihres Sicherheitssystems
zu installieren.Mit Proxy-Servern lassen sich die Zugriffe meist noch weiter
beschränken. Der Zugriff kann auf bestimmte Rechner
eingeschränkt werden und oft ist es möglich,
festzulegen, welcher Benutzer mit welcher Zielmaschine kommunizieren
darf. Welche Möglichkeiten Sie haben, hängt stark
von der Proxy-Software ab, die Sie einsetzen.Was kann ich mit IPFW machen?ipfwIPFW, das von FreeBSD zur Verfügung gestellt wird,
ist ein Paketfilter und ein Accounting-System, das im Kernel
läuft und mit &man.ipfw.8; ein Werkzeug im Userland
zur Verfügung stellt. Beide Teile zusammen erlauben es Ihnen,
die Regeln für Routing Entscheidungen im Kernel zu definieren
oder abzufragen.In IPFW gibt es zwei zusammenhängende Teile: Die
Firewall filtert Pakete und das IP-Accounting-Modul
überwacht mit einem Regelwerk, ähnlich dem der
Firewall, die Nutzung Ihres Routers.
Damit können Sie zum Beispiel sehen, wie viel Verkehr auf
Ihrem Router von einer bestimmten Maschine kommt oder wie viel
WWW (World Wide Web) Verkehr durch Ihren Router geht.Durch das Design von IPFW können Sie IPFW auch auf
Maschinen, die keine Router sind, einsetzen und einen Paketfilter
für eingehende und ausgehende Verbindungen konfigurieren.
Dies ist ein Spezialfall der normalen Verwendung von IPFW
und daher werden dieselben Kommandos und Techniken benutzt.Aktivieren von IPFWipfwaktivierenDer größte Teil des IPFW-Systems befindet sich im
Kernel, daher müssen Sie die Konfigurationsdatei des Kernels
editieren und anschließend den Kernel neu übersetzen.
Das Kapitel Konfiguration des
FreeBSD-Kernels beschreibt, wie Sie dazu
vorzugehen haben.In der Voreinstellung verbietet IPFW
alle Verbindungen. Sie
haben sich ausgesperrt, wenn Sie den Kernel mit
Firewall-Unterstützung starten und keine eigenen Regeln,
die einen Zugriff erlauben, definiert haben. Zum ersten
Überprüfen der Firewall-Funktion können Sie die
Firewall öffnen, indem Sie
firewall_type=open in
/etc/rc.conf eintragen und danach, wenn
alles funktioniert hat, die Regeln in
/etc/rc.firewall anpassen. Um zu vermeiden,
dass Sie sich aus Versehen aussperren, konfigurieren Sie die
Firewall nicht über eine
SSH-Verbindung sondern an der Konsole.
Sie können auch in der Voreinstellung alle Verbindungen
zulassen, indem Sie die Option
IPFIREWALL_DEFAULT_TO_ACCEPT in die
Kernelkonfiguration aufnehmen.Momentan gibt es vier Optionen in der Kernelkonfiguration, die
IPFW betreffen:options IPFIREWALLFügt den Paketfilter-Code in den Kernel ein.options IPFIREWALL_VERBOSEAktiviert das Loggen von Paketen mit &man.syslogd.8;.
Ohne diese Option werden keine Pakete geloggt, auch wenn Sie
in den Filterregeln das Loggen angeben.options IPFIREWALL_VERBOSE_LIMIT=10Begrenzt die Anzahl der über &man.syslogd.8;
geschriebenen Einträge. Die Option ist in Umgebungen
mit hoher Aktivität nützlich, in denen Sie die
Firewall Aktivitäten loggen möchten, aber einem
Angreifer nicht die Möglichkeit eines Denial-of-Service
Angriffs durch das Überlasten von syslog geben
wollen.Erreicht eine Regel der Regelkette die angegebene Grenze,
so wird für diesen Eintrag das Loggen abgestellt. Um
das Loggen von Paketen wieder zu aktivieren, müssen Sie
den Zähler mit &man.ipfw.8; zurücksetzen:&prompt.root; ipfw zero 4500Hier ist 4500 die Nummer der Regel in
der Regelkette, für die Sie das Log weiterführen
möchten.options IPFIREWALL_DEFAULT_TO_ACCEPTÄndert die Voreinstellung der Firewall, sodass alle
Verbindungen erlaubt anstatt verboten sind. Diese
Einstellung vermeidet, dass Sie sich aussperren, wenn Sie
einen Kernel mit IPFIREWALL und ohne
eigene Regeln starten. Wenn Sie &man.ipfw.8; wie einen
Filter zum Lösen spezieller Probleme bei deren
Auftreten verwenden, kann diese Option sehr nützlich
sein. Diese Einstellung öffnet die Firewall und
verändert ihre Arbeitsweise. Gehen Sie daher sehr
vorsichtig mit ihr um.
-
-
- options PFIL_HOOKS
-
-
- Ab &os; 5.3-RELEASE ist diese Option erforderlich,
- um Einsprungpunkte für Paketfilter festlegen.
- Ohne diese Option funktioniert IPFW nicht.
-
- Frühere Versionen von FreeBSD stellten die Option
IPFIREWALL_ACCT zur Verfügung. Die Option
ist mittlerweile überholt, da der Firewall Code automatisch
Accounting Möglichkeiten bereitstellt.Konfiguration von IPFWipfwKonfigurationMit &man.ipfw.8; konfigurieren Sie die IPFW-Software. Die
Syntax dieses Kommandos sieht ziemlich kompliziert aus, doch wenn
Sie einmal den Aufbau der Kommandos verstanden haben, ist es sehr
einfach.Das Kommando unterstützt vier verschiedene Operationen:
Hinzufügen/Löschen, Anzeigen und Zurücksetzen von
Regeln, sowie das Zurücksetzen von Paketzählern. Die
Operationen Hinzufügen/Löschen werden genutzt, um die
Regeln, nach denen Pakete akzeptiert, blockiert oder geloggt
werden, zu erstellen. Die Operation Anzeigen zeigt die Regelkette
und die Paketzähler an. Die Operation Zurücksetzen
löscht alle Regeln der Regelkette. Mit der letzten Operation
können Sie ein oder mehrere Paketzähler auf den Wert Null
zurücksetzen.Ändern der IPFW-RegelnDie Syntax für diese Operation lautet:
ipfw-NKommandoindexAktionlogProtokollAdressenOptionenDieser Aufruf unterstützt eine Option:-NLöst Adressen und Namen von Diensten in der
Ausgabe auf.Kommando kann auf die kürzeste
eindeutige Länge reduziert werden. Gültig sind die
Werte:addFügt einen Eintrag in die Firewall/Accounting
Regelkette ein.deleteLöscht einen Eintrag in der Firewall/Accounting
Regelkette.Frühere Versionen von IPFW verfügten über
getrennte Firewall- und Accounting-Einträge in der Regelkette.
In der jetzigen Version steht das Accounting für jeden
Eintrag in der Firewall-Regelkette zur Verfügung.Wenn ein Wert für index angegeben
ist, so wird die Regel an entsprechender Stelle in die Regelkette
eingefügt. Ansonsten wird die Regel an das Ende der Kette
gestellt, wobei der Index um 100 größer ist als der
Index der letzten Regel (die voreingestellte letzte Regel mit der
Nummer 65535 wird in diesem Verfahren nicht
berücksichtigt).Wenn der Kernel mit IPFIREWALL_VERBOSE
erstellt wurde, gibt die Regel mit der Option
log Meldungen auf der Systemkonsole
aus.Gültige Werte für Aktion
sind:rejectBlockiert das Paket und schickt dem Sender die
ICMP-Nachricht host or port unreachable.allowLeitet das Paket normal weiter. Zulässige Aliase
sind pass, permit
und accept.denyBlockiert das Paket und benachrichtigt den Sender
nicht mit einer ICMP-Nachricht. Dem
Sender kommt es so vor, als hätte das Paket sein Ziel
nie erreicht.countErhöht den Paketzähler für diese Regel,
trifft aber keine Entscheidung wie mit dem Paket zu
verfahren ist, das heißt die nächste Regel der
Kette wird auf das Paket angewendet.Es ist möglich, die kürzeste eindeutige Form der
Aktion anzugeben.Für Protokoll können die
folgenden Werte angegeben werden:allTrifft auf jedes IP-Paket zu.icmpPasst auf jedes ICMP-Paket.tcpPasst auf jedes TCP-Paket.udpTrifft auf jedes UDP-Paket zu.Die Syntax für Adresse
lautet:fromAdresse/MaskePorttoAdresse/MaskePortvia InterfacePort können Sie nur angeben,
wenn das Protokoll auch Ports
unterstützt (UDP und TCP). ist optional und gibt die IP-Adresse,
den Domainnamen eines lokalen Interfaces oder den Namen des
Interfaces (z.B. ed0) an und trifft nur
auf Pakete zu, die durch dieses Interface gehen. Die Nummern der
Interfaces können mit einem Platzhalter angegeben werden,
ppp* trifft auf alle Kernel-PPP Interfaces
zu.Adresse/Maske können Sie wie
folgt angeben:
Adresse
oder
Adresse/Bitmaske
oder
Adresse:MaskenmusterAnstelle einer IP-Adresse können Sie einen gültigen
Hostnamen angeben.
ist eine
dezimale Zahl, die angibt, wie viele Bits in der Adressmaske
gesetzt werden sollen. Die Angabe
192.216.222.1/24 erstellt
eine Maske, die auf jede Adresse des Klasse C Subnetzes
192.216.222 zutrifft.
Das
wird mit der gegebenen IP-Adresse logisch UND verknüpft.
Das Schlüsselwort any trifft auf jede
IP-Adresse zu.Die Portnummern werden wie folgt angegeben:
Port,Port,Port…
Dies gibt entweder einen Port oder eine Liste von Ports an.
Port-Port
Gibt einen Portbereich an. Sie können einen einzelnen
Bereich mit einer Liste kombinieren, müssen aber den Bereich
immer zuerst angeben.Die verfügbaren Optionen
sind:fragTrifft auf Pakete zu, die nicht das erste Fragment
eines Datagrams sind.inTrifft auf eingehende Pakete zu.outTrifft auf ausgehende Pakete zu.ipoptions specTrifft auf alle IP-Pakete zu, deren Header die in
spec angegebenen, durch Kommata
separierte, Optionen enthalten. Die unterstützten
IP-Optionen sind: ssrr (strict source
route), lsrr (loose source route),
rr (record packet route), und
ts (time stamp). Ein führendes
! trifft auf alle Pakete zu, die diese
Option nicht gesetzt haben.establishedTrifft auf alle Pakete zu, die zu einer schon
bestehenden TCP-Verbindung gehören, das heißt
das RST- oder ACK-Bit ist gesetzt. Sie können den
Durchsatz der Firewall verbessern, wenn Sie die
established Regeln soweit wie
möglich an den Anfang der Regelkette stellen.setupPasst auf alle Pakete, die versuchen eine
TCP-Verbindung aufzubauen, das heißt das SYN-Bit ist
gesetzt und das ACK-Bit ist nicht gesetzt.tcpflags flagsTrifft auf alle Pakete zu, die im TCP-Header eine der
durch Kommata getrennten Option gesetzt haben. Die
gültigen Optionen sind: fin,
syn, rst,
psh, ack und
urg. Mit einem führenden
! kann die Abwesenheit einer Option
angegeben werden.icmptypes typesTrifft auf ICMP-Pakete vom Typ
types. Hier kann eine
Kommata separierte Aufzählung von Bereichen oder
einzelnen Typen angegeben werden. Gebräuchliche Typen
sind: 0 echo reply (ping reply),
3 destination unreachable,
5 redirect, 8 echo
request (ping request) und 11 time
exceeded, das die Überschreitung der TTL angibt und
zum Beispiel von &man.traceroute.8; genutzt wird.Anzeigen der IPFW-RegelnDie Syntax für dieses Kommando lautet:
ipfw-a-c-d-e-t-N-SlistSieben Optionen sind für diese Form gültig:-aZeigt die Paketzähler zu den Regeln an. Diese
Option ist die einzige Möglichkeit, die Zähler zu
sehen.-cZeigt die Regeln in einer kompakten
Darstellung an.-dZeigt zusätzlich zu den statischen Regeln
die dynamischen Regeln an.-eZeigt auch abgelaufene dynamische Regeln an, wenn
die Option zusammen mit angegeben
wird.-tZeigt die Zeit, zu der die Regel zuletzt aktiviert
wurde. Die Syntax dieser Ausgabe ist nicht kompatibel mit
der Eingabesyntax von &man.ipfw.8;.-NVersucht Adressen und Namen von Diensten
aufzulösen.-SZeigt den Regelsatz an, zu dem die Regel gehört.
Inaktive Regeln werden ohne diesen Schalter nicht
angezeigt.Zurücksetzen der IPFW-RegelnDie Regeln setzen Sie wie folgt zurück:
ipfwflushDamit werden alle Regeln der Regelkette, mit Ausnahme der
Vorgaberegel 65535 gelöscht. Seien Sie
vorsichtig, wenn Sie die Regeln zurücksetzen. Die Vorgabe
für die Regel 65535 ist es, alle Pakete
zu blockieren, das heißt, das System ist solange vom
Netzwerk abgeschnitten, bis wieder neue Regeln in die Kette
eingefügt werden.Zurücksetzen der PaketzählerUm einen oder mehrere Paketzähler zurückzusetzen,
verwenden Sie folgende Syntax:
ipfwzeroindexWenn Sie das Argument index nicht
angeben, werden alle Paketzähler zurückgesetzt. Wenn
Sie das Argument angeben, wird nur der Zähler der
angegebenen Regel zurückgesetzt.Beispiel für ipfw
KommandozeilenDas folgende Kommando blockiert alle Pakete, die von dem Host
evil.crackers.org auf den Telnet-Port
von nice.people.org gehen:&prompt.root; ipfw add deny tcp from evil.crackers.org to nice.people.org 23Das nächste Beispiel verbietet jeden IP-Verkehr von dem
ganzen crackers.org Klasse C
Netzwerk zu der Maschine nice.people.org:&prompt.root; ipfw add deny log tcp from evil.crackers.org/24 to nice.people.orgWenn Sie X-Sitzungen zu Ihrem internen Netzwerk, einem Subnetz
eines C Klasse Netzwerkes, verbieten wollen, wenden Sie das
folgende Kommando an:&prompt.root; ipfw add deny tcp from any to my.org/28 6000 setupUm die Accounting Einträge zu sehen:
&prompt.root; ipfw -a list
oder kürzer
&prompt.root; ipfw -a lDen Zeitpunkt, an dem eine Regel das letzte Mal aktiviert
wurde, sehen Sie mit:&prompt.root; ipfw -at lAufbau einer Firewall mit PaketfilternBeachten Sie bitte, dass die folgenden Vorschläge
wirklich nur Vorschläge sind. Die Anforderungen jeder
Firewall sind verschieden und wir können Ihnen wirklich
nicht sagen, wie Sie Ihre maßgeschneiderte Firewall einrichten
müssen.Wenn Sie Ihre Firewall außerhalb eines kontrollierten
Testumfelds aufbauen, empfehlen wir Ihnen dringend, das Loggen der
Regeln im Kernel zu aktivieren und Regeln zu verwenden, die loggen.
Das macht es Ihnen leichter, Fehler zu finden und diese ohne
große Unterbrechungen zu beheben. Auch nachdem Sie die
Firewall aufgesetzt haben, empfehlen wir Ihnen, die `deny'-Regeln
zu loggen. Dies macht es leichter, Angriffen nachzugehen und das
Regelwerk Ihrer Firewall zu ändern, wenn sich die Anforderungen
einmal ändern.Wenn Sie Pakete der accept-Regel loggen,
denken Sie bitte daran, dass Sie leicht sehr
große Datenmengen erzeugen können, da jedes
durchgelassene Paket einen Eintrag im Log generiert. Es kann
vorkommen, das große FTP oder HTTP Übertragungen das
System langsamer machen. Weiterhin wird für jedes der
betroffenen Pakete die Latenzzeit erhöht, da von Seiten des
Kernels mehr Arbeit zum Weiterleiten des Paketes erforderlich ist.
Da alle Daten auf die Platte ausgeschrieben werden wird
syslogd auch mehr Prozessorzeit
beanspruchen und es kann leicht passieren, dass die
Partition, die /var/log enthält voll
läuft.Sie sollten Ihre Firewall aus
/etc/rc.conf.local oder
/etc/rc.conf aktivieren. Die entsprechende
Manualpage zeigt Ihnen, welche Einstellungen Sie vornehmen
müssen und zeigt einige vorgegebene Firewall-Konfigurationen.
Wenn Sie keine der Vorgaben verwenden, können Sie Ihre
Regelkette mit ipfw list in eine Datei ausgeben
und diese Datei in /etc/rc.conf angeben. Wenn
sie weder /etc/rc.conf.local oder
/etc/rc.conf benutzen, um Ihre Firewall zu
aktivieren, stellen Sie bitte sicher, dass die Firewall
aktiviert ist, bevor die IP-Interfaces konfiguriert werden.Als nächstes müssen Sie festlegen, was Ihre Firewall
machen soll. Das wird sehr stark davon abhängen welche
Zugriffe Sie von außen auf Ihr Netzwerk erlauben wollen und
welche Zugriffe von innen nach außen erlaubt sein sollen.
Einige gebräuchliche Regeln sind:Blockieren Sie jeden einkommenden Zugriff auf Ports unter
1024 für TCP. Dort befinden sich die meisten der
sicherheitsrelevanten Dienste wie finger, SMTP (Post) und
telnet.Blockieren Sie jeden einkommenden
UDP-Verkehr. Es gibt wenige nützliche UDP-Dienste und
die, die nützlich sind, stellen meist eine Bedrohung der
Sicherheit dar (z.B. die RPC- und NFS-Protokolle von Sun).
Dies bringt allerdings auch Nachteile mit sich. Da UDP ein
verbindungsloses Protokoll ist, verbieten Sie auch die
Antworten auf ausgehende UDP-Pakete, wenn Sie eingehende
UDP-Verbindungen blockieren. Dies kann zum Beispiel Probleme
für Anwender des internen Netzwerks hervorrufen, wenn
diese einen externen Archie-Server (prospero) verwenden. Wenn
Sie den Zugriff auf Archie erlauben wollen, müssen Sie
Pakete von den Ports 191 und 1525 zu jedem internen UDP-Port
durch Ihre Firewall lassen. Ein anderer Dienst, den Sie
vielleicht erlauben wollen, ist ntp,
der vom Port 123 ausgeht.Verbieten Sie Verkehr von außen zum Port 6000. Der
Port 6000 wird für den Zugriff auf X-Server genutzt und
kann eine Bedrohung der Sicherheit darstellen, insbesondere
wenn die Anwender gewohnt sind xhost + zu
benutzen. Tatsächlich kann X einen Bereich von Ports
verwenden, der bei 6000 anfängt. Die Obergrenze ist durch
die Anzahl der Displays, die auf einer Maschine laufen, gegeben.
Laut RFC 1700 (Assigned Numbers) hat der höchst
mögliche Port die Nummer 6063.Überprüfen Sie, welche Ports von internen Servern
(z.B. SQL-Servern) benutzt werden. Da diese normalerweise aus
dem oben angesprochenen Bereich von 1-1024 fallen, ist es
wahrscheinlich gut, diese Ports ebenfalls zu blockieren.Eine Checkliste zum Aufbau einer Firewall ist vom CERT unter
erhältlich.Wie oben schon gesagt, können wir Ihnen nur
Richtlinien geben. Sie müssen selbst
entscheiden, welche Regeln Sie auf Ihrer Firewall einsetzen wollen.
Wir übernehmen keine Verantwortung
dafür, dass jemand in Ihr Netzwerk eindringt, auch wenn
Sie die obigen Ratschläge befolgt haben.IPFW Overhead und OptimierungenViele Leute wollen wissen, wie viel zusätzliche Last IPFW
auf einem System erzeugt. Hauptsächlich hängt dies von
der Art der Regelkette und der Geschwindigkeit des Prozessors ab.
Für die meisten Anwendungen mit einer kleinen Regelkette auf
einem Ethernet ist der Aufwand vernachlässigbar klein. Wenn
Sie genaue Zahlen brauchen, lesen Sie bitte weiter.Die folgenden Messungen wurden auf einem 486-66 mit
2.2.5-STABLE durchgeführt. Obwohl sich IPFW in
späteren FreeBSD-Versionen leicht geändert hat, läuft
es doch mit vergleichbarer Geschwindigkeit. Zur Durchführung
der Messungen wurde in IPFW die verbrauchte Zeit in der Routine
ip_fw_chk gemessen. Die Ergebnisse wurden alle
1000 Pakete auf der Konsole ausgegeben.Zwei Regelsätze mit je 1000 Regeln wurden getestet. Der
erste Regelsatz sollte den schlimmsten Fall durch wiederholte
Anwendung der folgenden Regel demonstrieren:&prompt.root; ipfw add deny tcp from any to any 55555Da ein Großteil der Routine, die die Pakete
überprüft, durchlaufen werden muss, bevor
entschieden werden kann, ob das Paket wegen der Portnummer nicht
auf die Regel passt, wird mit dieser Regel der schlimmste Fall gut
simuliert. Nach 999 Wiederholungen dieser Regel folgte die Regel
allow ip from any to any.Der zweite Regelsatz wurde so entworfen, dass die
Überprüfung der Regel schnell abgeschlossen werden
kann:&prompt.root; ipfw add deny ip from 1.2.3.4 to 1.2.3.4Die Regel kann aufgrund einer nicht passenden IP-Adresse sehr
schnell verlassen werden. Nach 999 Wiederholungen dieser Regel
folgte wie im ersten Fall die Regel allow ip from any to
any.Im ersten Fall betrug der zusätzliche Aufwand 2,703 ms pro
Paket also ungefähr 2,7 µs pro Regel. Damit könnten
maximal ungefähr 370 Pakete pro Sekunde verarbeitet werden.
Mit einem 10 Mbps Ethernet und Paketen, die ungefähr 1500
Bytes groß sind, entspricht dies einer Ausnutzung von 55% der zur
Verfügung stehenden Bandbreite.Im letzten Fall wurde jedes Paket in 1,172 ms abgearbeitet, was
ungefähr 1,2 µs pro Regel entspricht. In diesem Fall
könnten maximal 853 Pakete pro Sekunde verarbeitet werden, was
die Bandbreite eines 10 Mbps Ethernet vollständig
ausnutzt.Die große Anzahl und die Beschaffenheit der Regeln in den
Beispielen entsprechen nicht der Wirklichkeit. Die Regeln dienten
nur der Messung der Geschwindigkeit. Wenn Sie eine effiziente
Regelkette aufbauen wollen, sollten Sie die folgenden
Ratschläge berücksichtigen:Setzen Sie eine established Regel so
früh wie möglich in die Regelkette, um den
Großteil des TCP Verkehrs abzudecken. Vor dieser Regel
sollten Sie keine allow tcp Regeln stehen
haben.Plazieren Sie häufig benutzte Regeln vor selten
benutzten Regeln, ohne dabei den Sinn der Regelkette zu
ändern. Welche Regeln häufig durchlaufen werden,
können Sie den Paketzählern mit ipfw
-a l entnehmen.TomRhodesBeigetragen von OpenSSLSicherheitOpenSSLOpenSSLEs wird oft übersehen, dass
OpenSSL Teil des &os;-Basissystems
ist. OpenSSL bietet eine
verschlüsselte Transportschicht oberhalb der
normalen Kommunikationsschicht und kann daher zusammen
mit vielen Netzdiensten benutzt werden.Anwendungsbeispiele für OpenSSL
sind die verschlüsselte Authentifizierung von
E-Mail-Clients oder Web-Transaktionen wie das Bezahlen mit
einer Kreditkarte. OpenSSL
kann während des Baus in viele Ports, wie
www/apache13-ssl und
mail/sylpheed-claws,
integriert werden.Ist beim Aufruf von make die
Variable WITH_OPENSSL_BASE nicht
explizit auf yes gesetzt, baut
die Ports-Collection meist den Port
security/openssl.Das OpenSSL von &os; stellt
die Protokolle Secure Sockets Layer v2/v3 (SSLv2/SSLv3) und
Transport Layer Security v1 (TLSv1) zur Verfügung.
Anwendungen können die
OpenSSL-Bibliotheken zum
Verschlüsseln benutzen.Mit OpenSSL kann der
IDEA-Algorithmus verwendet werden,
wegen Patenten in den USA ist der Algorithmus in der
Voreinstellung allerdings deaktiviert. Wenn Sie die
IDEA-Lizenz akzeptieren, können
Sie den IDEA-Algorithmus aktivieren,
indem Sie die Variable MAKE_IDEA
in make.conf setzen.Meist wird OpenSSL eingesetzt,
um Zertifikate für Anwendungen bereitzustellen. Die
Zertifikate stellen die Identität einer Firma oder
eines Einzelnen sicher. Wenn ein Zertifikat nicht von
einer Zertifizierungsstelle (Certificate
Authority, CA)
gegengezeichnet wurde, erhalten Sie normalerweise eine
Warnung. Eine Zertifizierungsstelle ist eine Firma
wie VeriSign, die Zertifikate von Personen oder Firmen
gegenzeichnet und damit die Korrektheit der Zertifikate
bestätigt. Diese Prozedur kostet Geld, ist aber
keine Voraussetzung für den Einsatz von Zertifikaten,
beruhigt aber sicherheitsbewusste Benutzer.Zertifikate erzeugenOpenSSLZertifikate erzeugenEin Zertifikat erzeugen Sie mit dem nachstehenden
Kommando:&prompt.root; openssl req -new -nodes -out req.pem -keyout cert.pem
Generating a 1024 bit RSA private key
................++++++
.......................................++++++
writing new private key to 'cert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Pittsburgh
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Systems Administrator
Common Name (eg, YOUR name) []:localhost.example.org
Email Address []:trhodes@FreeBSD.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:SOME PASSWORD
An optional company name []:Another NameBeachten Sie bitte, dass die Eingabe bei
Common Name ein gültiger Domain-Name
sein muss. Eine andere Eingabe erzeugt ein unbrauchbares
Zertifikat. Das Zertifikat kann mit einer
Gültigkeitsdauer und anderen
Verschlüsselungsalgorithmen erzeugt werden.
Die Hilfeseite &man.openssl.1; beschreibt die zur
Verfügung stehenden Optionen.Das Verzeichnis, in dem Sie das Kommando abgesetzt
haben, enthält nun die Datei
cert.pem. Dies ist das Zertifikat,
dass Sie einer Zertifizierungsstelle zum Gegenzeichnen
schicken können.Wenn Sie keine Signatur einer Zertifizierungsstelle
benötigen, können Sie ein selbst-signiertes
Zertifikat erstellen. Erstellen Sie dazu zuerst einen
CA-Schlüssel:&prompt.root; openssl gendsa -des3 -out \
myca.key 1024Erstellen Sie mit diesem Schlüssel das
Zertifikat:&prompt.root; openssl req -new -x509 -days 365 -key \
myca.key -out new.crtZwei neue Dateien befinden sich nun im Verzeichnis:
Der Schlüssel der Zertifizierungsstelle
myca.key und das Zertifikat selbst,
new.crt. Sie sollten in einem
Verzeichnis, vorzugsweise unterhalb von
/etc abgelegt
werden, das nur von root lesbar
ist. Setzen Sie die Zugriffsrechte der Dateien mit
chmod auf 0600.Beispiel für ZertifikateWas fangen Sie mit einem Zertifikat an? Sie
könnten damit beispielsweise die Verbindungen zu
Sendmail verschlüsseln.
Dies würde die Klartext-Authentifizierung
für Benutzer des lokalen MTA
überflüssig machen.Das ist nicht unbedingt die beste Lösung,
da einige MUAs Warnungen ausgeben,
wenn ein Zertifikat nicht lokal installiert ist.
Die Installation von Zertifikaten wird in der
Dokumentation der MUAs
beschrieben.Ergänzen Sie die Konfigurationsdatei von
sendmail (.mc)
um die nachstehenden Zeilen:dnl SSL Options
define(`confCACERT_PATH',`/etc/certs')dnl
define(`confCACERT',`/etc/certs/new.crt')dnl
define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
define(`confTLS_SRV_OPTIONS', `V')dnlIm Verzeichnis
/etc/certs
befindet sich der Schlüssel und das Zertifikat.
Bauen Sie danach im Verzeichnis
/etc/mail
mit dem Kommando make install
die .cf-Datei und starten
Sie anschließend sendmail
mit make restart neu.Wenn alles gut ging, erscheinen keine Fehlermeldungen
in der Datei /var/log/maillog und
Sie sehen sendmail in der
Prozessliste.Testen Sie nun den Mailserver mit dem Kommando
&man.telnet.1;:&prompt.root; telnet example.com 25
Trying 192.0.34.166...
Connected to example.com.
Escape character is '^]'.
220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
ehlo example.com
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 example.com closing connection
Connection closed by foreign host.Wenn in einer Zeile STARTTLS
erscheint, hat alles funktioniert.NikClaytonnik@FreeBSD.orgGeschrieben von VPNs mit IPsecDieser Abschnitt beschreibt, wie Sie mit FreeBSD-Gateways
ein Virtual-Private-Network
(VPN) einrichten. Als Beispiel wird ein
VPN zwischen zwei Netzen verwendet,
die über das Internet miteinander verbunden sind.Hiten M.Pandyahmp@FreeBSD.orgGeschrieben von IPsec GrundlagenDieser Abschnitt zeigt Ihnen, wie Sie IPsec einrichten
und damit FreeBSD-Systeme und µsoft.windows; 2000/XP Systeme
sicher miteinander verbinden. Um IPsec einzurichten,
sollten Sie einen neuen Kernel erzeugen können (siehe
).IPsec ist ein Protokoll, das auf dem Internet-Protokoll
(IP) aufbaut. Mit IPsec können mehrere Systeme
geschützt miteinander kommunizieren. Das in
FreeBSD realisierte IPsec-Protokoll baut auf der
KAME-Implementierung
auf und unterstützt sowohl IPv4 als auch IPv6.FreeBSD 5.X enthält eine von Hardware
beschleunigte Variante des IPsec-Protokolls. Diese
Variante wurde von OpenBSD übernommen und wird
Fast-IPsec genannt. Das
&man.crypto.4;-Subsystem arbeitet mit Kryptographie-Hardware
zusammen, die IPsec beschleunigt. Das Subsystem
ist neu und bietet noch nicht alle Funktionen, die
KAME-IPsec bietet. Wenn Sie die Hardware-Beschleunigung
nutzen wollen, fügen Sie folgende Zeile der
Kernelkonfiguration hinzu:options FAST_IPSEC # new IPsec (cannot define w/ IPSEC)Momentan können Sie Fast-IPsec
nicht zusammen mit KAME-IPsec benutzen. Weiteres zu
Fast-IPsec erfahren Sie in der
Hilfeseite &man.fast.ipsec.4;.IPsec besteht wiederum aus zwei Protokollen:Encapsulated Security Payload (ESP)
verschlüsselt IP-Pakete mit einem symmetrischen Verfahren
(beispielsweise Blowfish oder 3DES). Damit werden
die Pakete vor Manipulationen Dritter geschützt.Der Authentication Header (AH)
enthät eine kryptographische Prüsumme,
die sicher stellt, dass ein IP-Paket nicht verändert
wurde. Der Authentication-Header folgt nach dem
normalen IP-Header und erlaubt dem Empfänger
eines IP-Paketes, dessen Integrität zu
prüfen.ESP und AH
können, je nach Situation, zusammen oder einzeln
verwendet werden.IPsec kann in zwei Modi betrieben werden: Der
Transport-Modus verschlüsselt
die Daten zwischen zwei Systemen. Der
Tunnel-Modus verbindet zwei
Subnetze miteinander. Durch einen Tunnel können
dann beispielsweise verschlüsselte Daten übertragen
werden. Ein Tunnel wird auch als Virtual-Private-Network (VPN)
bezeichnet. Detaillierte Informationen über
das IPsec-Subsystem von FreeBSD enthält die
Hilfeseite &man.ipsec.4;.Die folgenden Optionen in der Kernelkonfiguration
aktivieren IPsec:options IPSEC #IP security
options IPSEC_ESP #IP security (crypto; define w/ IPSEC)Wenn Sie zur Fehlersuche im IPsec-Subsystem
Unterstützung wünschen, sollten Sie die
folgende Option ebenfalls aktivieren:options IPSEC_DEBUG #debug for IP securityWas ist ein VPN?Es gibt keinen Standard, der festlegt, was ein
Virtual-Private-Network ist. VPNs können mit
verschiedenen Techniken, die jeweils eigene Vor- und
Nachteile besitzen, implementiert werden.
Dieser Abschnitt stellt eine Möglichkeit vor,
ein VPN aufzubauen.VPN zwischen zwei Netzen über das InternetDieses Szenario hat die folgenden Vorausetzungen:Es müssen zwei Netzwerke vorhanden sein.Beide Netzwerke müssen intern IP benutzen.Beide Netzwerke sind über einen FreeBSD-Gateway
mit dem Internet verbunden.Der Gateway jedes Netzwerks besitzt mindestens
eine öffentliche IP-Adresse.Die intern verwendeten IP-Adressen können
private oder öffentliche Adressen sein.
Der Gateway kann, wenn nötig, IP-Adressen mit
NAT umschreiben.Die IP-Adressen der internen Netzwerke
dürfen nicht überlappen.
Mit NAT ließe sich diese Anforderung zwar umgehen, doch
wäre die Konfiguration und Pflege des resultierenden
Netzwerks zu aufwändig.Wenn die zu verbindenden Netzwerke intern dieselben
IP-Adressen benutzen (beispielsweise
192.168.1.x), müssen
einem der Netzwerke neue IP-Adressen zugewiesen werden.Die Netzwerktopologie sieht wie folgt aus:Netzwerk #1 [ Interne Rechner ] Privates Netz, 192.168.1.2-254
[ Win9x/NT/2K ]
[ UNIX ]
|
|
.---[fxp1]---. Private IP, 192.168.1.1
| FreeBSD |
`---[fxp0]---' Öffentliche IP, A.B.C.D
|
|
-=-=- Internet -=-=-
|
|
.---[fxp0]---. Öffentliche IP, W.X.Y.Z
| FreeBSD |
`---[fxp1]---' Private IP, 192.168.2.1
|
|
Netzwerk #2 [ Interne Rechner ]
[ Win9x/NT/2K ] Privates Netz, 192.168.2.2-254
[ UNIX ]Beachten Sie die beiden öffentlichen IP-Adressen.
Im Folgenden werden sie durch Buchstaben (als Platzhalter)
gekennzeichnet. Setzen Sie hierfür Ihre eigenen
öffentlichen IP-Adressen ein. Beide Gateways
besitzen die interne Adresse
x.x.x.1 und beide
Netzwerke besitzen unterschiedliche private IP-Adressen:
192.168.1.x und
192.168.2.x. Die Default-Route
aller internen Systeme ist jeweils die Gateway-Maschine
(x.x.x.1).Aus der Sicht der Systeme sollen jetzt beide
Netzwerke wie über einen Router, der in diesem
Fall etwas langsamer ist, verbunden werden.Auf dem Rechner 192.168.1.20
soll also beispielsweise der folgende Befehl funktionieren:ping 192.168.2.34&windows;-Systeme sollen die Systeme auf dem anderen
Netzwerk erkennen und Shares sollen funktionieren. Alles
soll genauso wie in lokalen Netzwerken funktionieren.Zusätzlich soll die Kommunikation zwischen beiden
Netzwerken noch verschlüsselt werden.Das VPN wird in mehreren Schritten aufgebaut:Zuerst wird eine virtuelle Verbindung zwischen
beiden Netzwerken über das Internet eingerichtet.
Die virtuelle Verbindung können Sie mit Werkzeugen
wie &man.ping.8; prüfen.Danach wird eine Sicherheitsrichtlinie
(Security-Policy) festgelegt,
die automatisch den Datenverkehr zwischen beiden
Netzwerken verschlüsselt und entschlüsselt.
Mit Werkzeugen wie &man.tcpdump.1; können Sie
überprüfen, dass die Daten tatsächlich
verschlüsselt werden.Wenn sich &windows;-Systeme im VPN gegenseitig
erkennen sollen, so sind noch weitere
Konfigurationsschritte notwendig, die aber nicht
in diesem Abschnitt beschrieben werden.Schritt 1: Die virtuelle Verbindung einrichtenNehmen wir an, sie wollten von der Gateway-Maschine
im Netzwerk #1 (öffentliche IP-Adresse
A.B.C.D, private IP-Adresse
192.168.1.1) das Kommando
ping 192.168.2.1 absetzen.
192.168.2.1 ist die private
IP-Adresse des Systems W.X.Y.Z
im Netzwerk #2. Welche Voraussetzungen müssen
erfüllt sein, damit der Befehl funktioniert?Die Gateway-Maschine muss das System
192.168.2.1 erreichen
können. Das heißt, eine Route zu diesem
System muss existieren.Private IP-Adressen, wie der Bereich
192.168.x, sollten im
Internet nicht verwendet werden. Jedes Paket zu
192.168.2.1 muss daher
in ein anderes Paket gepackt werden, das von
A.B.C.D kommt und
zu W.X.Y.Z geschickt
wird. Das erneute Verpacken der Pakete wird als
Kapselung bezeichnet.Wenn das Paket W.X.Y.Z
erreicht, muss es dort ausgepackt und an
192.168.2.1 ausgeliefert
werden.Sie können sich diese Prozedur so vorstellen,
dass ein Tunnel zwischen beiden Netzwerken existiert.
Die beiden Tunnel-Enden besitzen die IP-Adressen
A.B.C.D und
W.X.Y.Z. Der Tunnel
muss zudem Verkehr zwischen den privaten IP-Adressen
erlauben und transportiert so Daten zwischen privaten
IP-Adressen über das Internet.Unter FreeBSD wird der Tunnel mit
gif-Geräten (generic
interface) erstellt. Auf jedem Gateway
muss das gif-Gerät mit
vier IP-Adressen eingerichtet werden: Zwei öffentliche
IP-Adressen und zwei private IP-Adressen.Die gif-Geräte werden vom
Kernel bereitgestellt und müssen in der
Kernelkonfigurationsdatei auf beiden Maschinen angegeben
werden:pseudo-device gifWie gewöhnlich müssen Sie danach einen
neuen Kernel erstellen, installieren und das System
neu starten.Der Tunnel wird in zwei Schritten aufgebaut. Mit
&man.gifconfig.8; werden zuerst die öffentlichen
IP-Adressen konfiguriert. Anschließend werden
die privaten IP-Adressen mit &man.ifconfig.8; eingerichtet.In &os; 5.X sind die Funktionen von
&man.gifconfig.8; in das Kommando &man.ifconfig.8;
integriert.Auf der Gateway-Maschine im Netzwerk #1 bauen
Sie den Tunnel mit den folgenden Kommandos auf:gifconfig gif0 A.B.C.D W.X.Y.Z
ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffffAuf dem anderen Gateway benutzen Sie dieselben Kommandos,
allerdings mit vertauschten IP-Adressen:gifconfig gif0 W.X.Y.Z A.B.C.D
ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffffDie Konfiguration können Sie anschließend mit
dem folgenden Kommando überprüfen:gifconfig gif0Auf dem Gateway in Netzwerk #1 sollten Sie
beispielsweise die nachstehende Ausgabe erhalten:&prompt.root; gifconfig gif0
gif0: flags=8011<UP,POINTTOPOINT,MULTICAST> mtu 1280
inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff
physical address inet A.B.C.D --> W.X.Y.ZWie Sie sehen, ist ein Tunnel zwischen den IP-Adressen
A.B.C.D und
W.X.Y.Z aufgebaut worden,
der Verkehr zwischen den Adressen
192.168.1.1 und
192.168.2.1 zulässt.Gleichzeitig wurde ein Eintrag in der Routing-Tabelle
erstellt, den Sie sich mit netstat -rn
ansehen können. Auf der Gateway-Maschine in Netzwerk #1
sieht das so aus:&prompt.root; netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
...
192.168.2.1 192.168.1.1 UH 0 0 gif0
...Die Route ist eine Host-Route, wie in der Spalte
Flags angegeben. Das heißt
die beiden Gateways wissen wie sie einander erreichen,
sie kennen allerdings nicht das Netzwerk auf der
anderen Seite. Dieses Problem werden wir gleich
angehen.Wahrscheinlich ist auf beiden Gateways eine Firewall
eingerichtet. Für den VPN-Verkehr muss die Firewall
umgegangen werden. Sie können generell den Verkehr
zwischen beiden Netzwerken erlauben oder Regeln erstellen,
die beide Tunnel-Enden des VPNs voreinander schützen.Der Test des VPNs wird erheblich leichter, wenn Sie
jeden Verkehr zwischen den Tunnel-Enden in der Firewall
erlauben. Wenn Sie auf der Gateway-Maschine &man.ipfw.8;
einsetzen, erlaubt die folgende Regel jeden Verkehr
zwischen den Tunnel-Enden, ohne die anderen Regeln zu
beeinflussen:ipfw add 1 allow ip from any to any via gif0Diese Regel muss offensichtlich auf beiden Gateway-Maschinen
existieren.Damit sollten Sie das Kommando ping
jetzt absetzen können. Auf dem System
192.168.1.1 sollte der
nachstehende Befehl Antworten erhalten:ping 192.168.2.1Denselben Test können Sie auch auf der anderen
Gateway-Maschine ausführen.Allerdings können Sie noch nicht die anderen
internen Maschinen auf den Netzwerken erreichen. Die Ursache
ist das Routing – die Gateway kennen sich zwar
gegenseitig, wissen aber noch nichts von den Netzwerken
hinter dem anderen Gateway.Um die Netzwerke bekannt zu geben, muss auf jeder
Gateway-Maschine noch eine statische Route hinzugefügt
werden. Auf der ersten Gateway-Maschine setzen Sie dazu
das folgende Kommando ab:route add 192.168.2.0 192.168.2.1 netmask 0xffffff00Dies entspricht der Anweisung: Um Rechner
auf dem Netz 192.168.2.0
zu erreichen, schicke die Pakete zum System
192.168.2.1. Auf
dem anderen Gateway muss das analoge Kommando (mit den
IP-Adressen 192.168.1.x)
abgesetzt werden.Damit ist jetzt der IP-Verkehr zwischen beiden
Netzwerken möglich.Zwei Drittel des VPNs zwischen beiden Netzen
ist nun eingerichtet. Es ist virtuell und
es ist ein Netzwerk. Es ist allerdings
noch nicht privat. Dies können Sie
mit &man.ping.8; und &man.tcpdump.1; überprüfen.
Setzen Sie auf dem ersten Gateway den folgenden Befehl ab:tcpdump dst host 192.168.2.1Starten Sie dann, ebenfalls auf dem ersten Gateway, den
folgenden Befehl:ping 192.168.2.1Sie werden die nachstehende Ausgabe erhalten:16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply
16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply
16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo replyDie ICMP-Nachrichten werden unverschlüsselt
übertragen. Mit der Option
von &man.tcpdump.1; können Sie sich weitere Daten
der Pakete anzeigen lassen.Die Daten sollen aber automatisch verschlüsselt
werden. Wie das geht, wird im nächsten Abschnitt
erläutert.Zusammenfassung:Richten sie in beiden Kerneln das
gif-Gerät ein.Fügen Sie auf dem Gateway in Netzwerk #1
folgende Zeilen in /etc/rc.conf
ein:gifconfig_gif0="A.B.C.D W.X.Y.Z"
ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"Setzen Sie dabei die richtigen IP-Adressen für
die Platzhalter ein.Fügen Sie auf beiden Gateways die nachstehende
Regel in das Firewall-Skript (zum Beispiel
/etc/rc.firewall) ein:ipfw add 1 allow ip from any to any via gif0Nehmen Sie in /etc/rc.conf auf dem
Gateway #2 analoge Änderungen, die IP-Adressen
müssen vertauscht werden, vor.Schritt 2: Die Verbindung mit IPsec schützenUm die Verbindung zu schützen, verwenden wir IPsec.
IPsec bietet einen Mechanismus, mit dem sich zwei
Systeme auf einen Schlüssel einigen können.
Mit diesem Schlüssel wird dann der Datenverkehr zwischen
beiden Systemen verschlüsselt.Es gibt hierbei zwei Sachen die konfiguriert werden
müssen:Die Security-Association bestimmt,
mit welchen Methoden der Verkehr zwischen beiden Systemen
verschlüsselt wird.Die Security-Policy bestimmt,
was verschlüsselt wird. Es soll ja nicht der
gesamte Datenverkehr nach außen verschlüsselt
werden, sondern nur der Teil des Verkehrs, der zum
VPN gehört.Die Security-Association wie auch die Security-Policy
werden vom Kernel verwaltet und können von Anwendungen
verändert werden. Dazu müssen allerdings zuerst
IPsec und das Encapsulated-Security-Payload (ESP) Protokoll
in die Kernelkonfigurationsdatei eingetragen werden:options IPSEC
options IPSEC_ESPWie üblich, müssen Sie danach den Kernel
übersetzen, installieren und das System neu starten.
Die Kernel müssen auf beiden Gateway-Maschinen
neu erstellt werden.Sie können die Security-Association auf zwei
Arten konfigurieren: Manuell, dann müssen Sie
den Verschlüsselungsalgorithmus, die Schlüssel
und alles Weitere selbst konfigurieren. Oder automatisch,
mithilfe eines Dæmons, der das Internet-Key-Exchange
Protokoll (IKE) beherrscht.Im Allgemeinen wird die letzte Variante bevorzugt.
Sie ist auch wesentlich leichter einzurichten.Mit &man.setkey.8; können Sie Security-Policies
editieren und anzeigen. Die Beziehung von
setkey und der Tabelle der
Security-Policies im Kernel entspricht
dem Verhältnis von &man.route.8; und der Routing-Tabelle.
Die momentanen Security-Associations lassen sich ebenfalls
mit setkey anzeigen;
setkey verhält sich in diesem Fall
wie netstat -r, um die Analogie
fortzuführen.Sie haben die Wahl zwischen mehreren Programmen,
wenn Sie Security-Associations mit FreeBSD verwalten
wollen. Im Folgenden wird racoon
beschrieben. racoon lässt sich in gewohnter
Weise aus der Ports-Collection installieren. Sie finden
das Programm unter
security/racoon.Auf beiden Gateway-Maschinen muss racoon laufen.
Auf jedem System wird es mit der IP-Adresse der Gegenstelle
und einem geheimen Schlüssel konfiguriert. Auf beiden
Gateway-Maschinen muss der gleiche Schlüssel verwendet
werden.Die beiden raccon-Daemonen prüfen mithilfe des
geheimen Schlüssels gegenseitig ihre Identität.
Anschließend generieren Sie einen neuen geheimen
Schlüssel, mit dem dann der Datenverkehr im VPN
verschlüsselt wird. Dieser Schlüssel wird
von Zeit zu Zeit geändert. Ein Angreifer,
der einen der Schlüssel geknackt hat – das ist
schon ziemlich unwahrscheinlich – kann somit nicht
viel mit diesem Schlüssel anfangen, da schon wieder ein
anderer Schlüssel verwendet wird.Die Konfiguration von racoon befindet sich in
${PREFIX}/etc/racoon. In der
dort befindlichen Konfigurationsdatei sollten Sie nicht
allzu viele Änderungen vornehmen müssen.
Sie müssen allerdings den so genannten
Pre-Shared-Key (den vorher ausgetauschten
Schlüssel) ändern.In der Voreinstellung befindet sich dieser Schlüssel
in der Datei ${PREFIX}/etc/racoon/psk.txt.
Dieser Schlüssel wird nicht zum
Verschlüsseln des Datenverkehrs verwendet. Er dient
lediglich der Authentifizierung der beiden racoon-Daemonen.Für jeden entfernten Kommunikationspartner enthält
psk.txt eine Zeile. Damit besteht die
Datei psk.txt in unserem Beispiel
aus einer Zeile (wir verwenden einen entfernten
Kommunikationspartner).Auf dem Gateway #1 sieht diese Zeile wie
folgt aus:W.X.Y.Z geheimDie Zeile besteht aus der öffentlichen IP-Adresse
der Gegenstelle, Leerzeichen und dem geheimen Schlüssel.
Sie sollten natürlich nicht geheim
verwenden. Für den geheimen Schlüssel gelten
dieselben Regeln wie für Passwörter.Auf dem anderen Gateway sieht die Zeile
folgendermaßen aus:A.B.C.D geheimDie Zeile besteht aus der öffentlichen IP-Adresse
der Gegenstelle, Leerzeichen und dem geheimen Schlüssel.
Die Zugriffsrechte von psk.txt müssen
auf 0600 (Lese- und Schreibzugriff nur
für root) gesetzt sein, bevor
racoon gestartet wird.Auf beiden Gateway-Maschinen muss racoon laufen. Sie
brauchen ebenfalls Firewall-Regeln, die IKE-Verkehr
erlauben. IKE verwendet UDP, um Nachrichten zum
ISAKMP-Port (Internet Security Association Key Management Protocol)
zu schicken. Die Regeln sollten früh in der
Regelkette auftauchen:ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmpWenn racoon läuft, können Sie versuchen,
mit ping von einem Gateway-Rechner aus
den anderen Gateway zu erreichen. Die Verbindung wird zwar immer
noch nicht verschlüsselt, aber racoon wird die
Security-Association zwischen beiden Systemen einrichten.
Dies kann eine Weile dauern, und Sie bemerken vielleicht
eine kleine Verzögerung, bevor die Antworten von
der Gegenstelle kommen.Die Security-Association können Sie sich auf einem
der beiden Gateway-Systeme mit &man.setkey.8; ansehen:setkey -DDamit ist die erste Hälfte der Arbeit getan.
Jetzt muss noch die Security-Policy konfiguriert werden.Damit wir eine sinnvolle Security-Policy erstellen
können, fassen wir das bisher geleistete zusammen.
Die Diskussion gilt für beide Enden des Tunnels.Jedes gesendete IP-Paket enthält im Header
Informationen über das Paket selbst. Im Header
befinden sich die IP-Adressen des Senders und des
Empfängers. Wie wir bereits wissen, dürfen
private IP-Adressen, wie
192.168.x.y nicht auf
das Internet gelangen. Pakete zu privaten IP-Adressen
müssen zuerst in einem anderen Paket gekapselt
werden. In diesem Paket werden die privaten IP-Adressen
durch öffentliche IP-Adressen ersetzt.Das ausgehende Paket hat beispielsweise wie folgt
ausgesehen:
.----------------------.
| Src: 192.168.1.1 |
| Dst: 192.168.2.1 |
| <other header info> |
+----------------------+
| <packet data> |
`----------------------'Es wird in ein anderes Paket umgepackt (gekapselt)
und sieht danach wie folgt aus:
.--------------------------.
| Src: A.B.C.D |
| Dst: W.X.Y.Z |
| <other header info> |
+--------------------------+
| .----------------------. |
| | Src: 192.168.1.1 | |
| | Dst: 192.168.2.1 | |
| | <other header info> | |
| +----------------------+ |
| | <packet data> | |
| `----------------------' |
`--------------------------'Die Kapselung wird vom gif-Gerät
vorgenommen. Das neue Paket enthält im Header eine
öffentliche IP-Adresse und der Datenteil des Pakets
enthält das ursprüngliche Paket.Natürlich soll der gesamte Datenverkehr des VPNs
verschlüsselt werden. Dies kann man wie folgt
ausdrücken:Wenn ein Paket von A.B.C.D
zu W.X.Y.Z geschickt wird,
verschlüssele es entsprechend der
Security-Association.Wenn ein Paket von W.X.Y.Z
kommt und für A.B.C.D
bestimmt ist, entschlüssele es entsprechend der
Security-Association.Das ist fast richtig. Mit diesen Regeln würde
der ganze Verkehr von und zu W.X.Y.Z
verschlüsselt, auch wenn er nicht zum VPN gehört.
Die richtige Formulierung lautet:Wenn ein Paket, das ein gekapseltes Paket enthält,
von A.B.C.D zu
W.X.Y.Z geschickt wird,
verschlüssele es entsprechend der
Security-Association.Wenn ein Paket, das ein gekapseltes Paket enthält,
von W.X.Y.Z kommt und für
A.B.C.D bestimmt ist,
entschlüssele es entsprechend der
Security-Association.Dies ist eine zwar subtile aber eine
notwendige Änderung.Die Security-Policy können Sie mit &man.setkey.8;
erstellen. &man.setkey.8; besitzt eine Konfigurations-Syntax
zur Erstellung der Security-Policy. Sie können die
Konfiguration über die Standardeingabe oder in einer
Datei, die Sie mit der Option angeben,
erstellen.Gateway #1 (öffentliche IP-Adresse:
A.B.C.D) muss
folgendermaßen konfiguriert werden, um alle
ausgehenden Pakete an W.X.Y.Z
zu verschlüsseln:spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;Speichern Sie dieses Kommando in einer Datei, beispielsweise
/etc/ipsec.conf ab. Rufen Sie
anschließend das nachstehende Kommando auf:&prompt.root; setkey -f /etc/ipsec.conf weist &man.setkey.8; an,
der Security-Policy-Datenbank eine Regel hinzuzufügen.
Der Rest der Zeile gibt an, auf welche Pakete diese
Regel zutrifft. A.B.C.D/32
und W.X.Y.Z/32 sind
die IP-Adressen und Netzmasken, die Systeme angeben,
auf die diese Regel zutrifft. Im Beispiel gilt die
Regel für die beiden Gateway-Systeme.
zeigt an, dass die Regel nur
für Pakete gilt, die gekapselte Pakete enthalten.
legt fest, dass die Regel nur
für ausgehende Pakete gilt. gibt an, dass die Pakete
geschützt werden. Das benutzte Protokoll
wird durch angegeben.
kapselt das Paket in ein
IPsec-Paket. Die nochmalige Angabe von
A.B.C.D und
W.X.Y.Z gibt die
Security-Association an. Das abschließende
erzwingt die Verschlüsselung
der Pakete.Diese Regel gilt nur für ausgehende Pakete.
Sie brauchen eine analoge Regel für eingehende
Pakete:spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;In dieser Regel wird anstelle
von benutzt und die IP-Adressen
sind notwendigerweise umgekehrt angegeben.Das zweite Gateway-System mit der IP-Adresse
W.X.Y.Z braucht
entsprechende Regeln:spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;Schließlich brauchen Sie auf beiden Gateway-Systemen
noch Firewall-Regeln, die ESP- und IPENCAP-Pakete in beide
Richtungen erlauben:ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.DDa die Regeln symmetrisch sind, können sie auf
beiden Systemen verwendet werden.Damit sehen ausgehende Pakete wie folgt aus:
.------------------------------. --------------------------.
| Src: A.B.C.D | |
| Dst: W.X.Y.Z | |
| < weitere Header > | | Encrypted
+------------------------------+ | packet.
| .--------------------------. | -------------. | contents
| | Src: A.B.C.D | | | | are
| | Dst: W.X.Y.Z | | | | completely
| | < weitere Header > | | | |- secure
| +--------------------------+ | | Encap'd | from third
| | .----------------------. | | -. | packet | party
| | | Src: 192.168.1.1 | | | | Original |- with real | snooping
| | | Dst: 192.168.2.1 | | | | packet, | IP addr |
| | | < weitere Header > | | | |- private | |
| | +----------------------+ | | | IP addr | |
| | | <Paket-Daten> | | | | | |
| | `----------------------' | | -' | |
| `--------------------------' | -------------' |
`------------------------------' --------------------------'
Am anderen Ende des VPNs werden die Pakete zuerst
entsprechend der von racoon ausgehandelten Security-Association
entschlüsselt. Das gif-Interface
entfernt dann die zweite Schicht, damit das ursprüngliche
Paket zum Vorschein kommt. Dieses kann dann in das interne
Netzwerk transportiert werden.Dass die Pakete wirklich verschlüsselt werden,
können Sie wieder mit &man.ping.8; überprüfen.
Melden Sie sich auf dem Gateway
A.B.C.D an und rufen
das folgende Kommando auf:tcpdump dst host 192.168.2.1Auf demselben Rechner setzen Sie dann noch das
nachstehende Kommando ab:ping 192.168.2.1Dieses Mal wird die Ausgabe wie folgt aussehen:XXX tcpdump outputJetzt zeigt &man.tcpdump.1; ESP-Pakete an. Auch wenn
Sie diese mit der Option untersuchen,
werden Sie wegen der Verschlüsselung nur
unverständliche Zeichen sehen.Herzlichen Glückwunsch. Sie haben soeben ein
VPN zwischen zwei entfernten Netzen eingerichtet.ZusammenfassungIPsec muss in beiden Kernelkonfigurationsdateien
enthalten sein:options IPSEC
options IPSEC_ESPInstallieren Sie security/racoon. Tragen Sie
auf beiden Rechnern in
${PREFIX}/etc/racoon/psk.txt jeweils
die IP-Adresse des entfernten Gateways und den geheimen
Schlüssel ein. Setzen Sie die Zugriffsrechte der
Datei auf 0600.Fügen Sie auf jedem Rechner die folgenden
Zeilen zu /etc/rc.conf hinzu:ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"Erstellen Sie auf jedem Rechner die Datei
/etc/ipsec.conf mit den nötigen
-Zeilen. Auf dem Gateway #1
hat die Datei folgenden Inhalt:spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;Auf dem Gateway #2 sieht die Datei so aus:spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;Fügen Sie auf beiden Rechnern Firewall-Regeln
hinzu, die IKE-, ESP- und IPENCAP-Verkehr erlauben:ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.DDas VPN wurde in zwei Schritten eingerichtet. Maschinen
auf beiden Netzen können miteinander kommunizieren
und der Datenverkehr zwischen beiden Netzen wird automatisch
verschlüsselt.ChernLeeBeigetragen von OpenSSHOpenSSHSicherheitOpenSSHOpenSSH stellt Werkzeuge bereit,
um sicher auf entfernte
Maschinen zuzugreifen. Die Kommandos rlogin,
rsh, rcp und
telnet können durch
OpenSSH ersetzt werden.
Zusätzlich können andere TCP/IP-Verbindungen sicher durch
SSH weitergeleitet (getunnelt) werden. Mit SSH werden alle
Verbindungen verschlüsselt, dadurch wird verhindert, dass
die Verbindung zum Beispiel abgehört oder übernommen
(Hijacking) werden kann.OpenSSH wird vom OpenBSD-Projekt
gepflegt und basiert auf SSH v1.2.12 mit allen aktuellen
Fixen und Aktualisierungen. OpenSSH
ist mit den SSH-Protokollen der Versionen 1 und 2 kompatibel. Seit
FreeBSD 4.0 ist die OpenSSH Teil
des Basissystems.Vorteile von OpenSSHMit &man.telnet.1; oder &man.rlogin.1; werden Daten in
einer unverschlüsselten Form über das Netzwerk
gesendet. Daher besteht die Gefahr, das Benutzer/Passwort
Kombinationen oder alle Daten an beliebiger Stelle zwischen
dem Client und dem Server abgehört werden. Mit
OpenSSH stehen eine Reihe von
Authentifizierungs- und Verschlüsselungsmethoden zur
Verfügung, um das zu verhindern.Aktivieren von sshdOpenSSHaktivierenStellen Sie sicher, dass /etc/rc.conf
die folgende Zeile enthält:sshd_enable="YES"Dadurch wird &man.sshd.8;, der Dæmon von
OpenSSH bei dem nächsten Neustart
geladen. Alternativ können Sie den Dæmon auch
direkt starten, indem Sie auf der Kommandozeile das Kommando
sshd absetzen.SSH ClientOpenSSHClient&man.ssh.1; arbeitet ähnlich wie &man.rlogin.1;:&prompt.root; ssh user@example.com
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes
Host 'example.com' added to the list of known hosts.
user@example.com's password: *******Der Anmeldevorgang wird danach, wie von
rlogin oder telnet gewohnt,
weiterlaufen. SSH speichert einen Fingerabdruck des
Serverschlüssels. Die Aufforderung, yes
einzugeben, erscheint nur bei der ersten Verbindung zu einem
Server. Weitere Verbindungen zu dem Server werden gegen den
gespeicherten Fingerabdruck des Schlüssels geprüft und
der Client gibt eine Warnung aus, wenn sich der empfangene
Fingerabdruck von dem gespeicherten unterscheidet. Die
Fingerabdrücke der Version 1 werden in
~/.ssh/known_hosts, die der Version 2 in
~/.ssh/known_hosts2 gespeichert.In der Voreinstellung akzeptieren
OpenSSH-Server Verbindungen
mit SSH v1 und SSH v2. Die Clients können sich aber das
Protokoll auswählen, dabei wird die Protokollversion 2
als robuster und sicherer als die Vorgängerversion
angesehen.Mit den Optionen oder
kann die Protokollversion, die ssh verwendet,
erzwungen werden.Secure CopyOpenSSHsecure copyscpMit &man.scp.1; lassen sich Dateien analog wie mit
&man.rcp.1; auf entfernte Maschinen kopieren. Mit
scp werden die Dateien allerdings in einer
sicheren Weise übertragen.&prompt.root; scp user@example.com:/COPYRIGHT COPYRIGHT
user@example.com's password:
COPYRIGHT 100% |*****************************| 4735
00:00
&prompt.root;Da der Fingerabdruck schon im vorigen Beispiel abgespeichert
wurde, wird er bei der Verwendung von scp in
diesem Beispiel überprüft. Da die Fingerabdrücke
übereinstimmen, wird keine Warnung ausgegeben.Die Argumente, die scp übergeben
werden, gleichen denen von cp in der Beziehung,
dass die ersten Argumente die zu kopierenden Dateien sind und
das letzte Argument den Bestimmungsort angibt. Da die Dateien
über das Netzwerk kopiert werden, können ein oder mehrere
Argumente die Form
besitzen.KonfigurationOpenSSHKonfigurationDie für das ganze System gültigen
Konfigurationsdateien des
OpenSSH-Dæmons und des Clients
finden sich in dem Verzeichnis
/etc/ssh.Die Client-Konfiguration befindet sich in
ssh_config, die des Servers befindet sich in
sshd_config.Das SSH-System lässt sich weiterhin über die
Anweisungen (Vorgabe ist
/usr/sbin/sshd) und
in /etc/rc.conf
konfigurieren.ssh-keygenMit &man.ssh-keygen.1; können RSA-Schlüssel für
einen Benutzer erzeugt werden, die anstelle von
Passwörtern verwendet werden können:&prompt.user; ssh-keygen -t rsa1
Initializing random number generator...
Generating p: .++ (distance 66)
Generating q: ..............................++ (distance 498)
Computing the keys...
Key generation complete.
Enter file in which to save the key (/home/user/.ssh/identity):
Enter passphrase:
Enter the same passphrase again:
Your identification has been saved in /home/user/.ssh/identity.
...&man.ssh-keygen.1; erzeugt einen öffentlichen und einen
privaten Schlüssel für die Authentifizierung. Der private
Schlüssel wird in ~/.ssh/identity, der
öffentliche Schlüssel in
~/.ssh/identity.pub gespeichert. Damit die
RSA-Schlüssel zur Authentifizierung verwendet werden
können, muss der öffentliche Schlüssel in der
Datei ~/.ssh/authorized_keys auf der
entfernten Maschine abgelegt werden.Damit werden Verbindungen zu der entfernten Maschine über
den RSA-Mechanismus anstelle von Passwörtern
authentifiziert.Die erstellt RSA-Schlüssel
für die Version 1 des SSH-Protokolls.
RSA-Schlüssel für die Version 2 des
SSH-Protokolls erstellen Sie mit dem Kommando
ssh-keygen -t rsa.Wenn bei der Erstellung der Schlüssel mit
&man.ssh-keygen.1; ein Passwort angegeben wurde, wird der
Benutzer bei jeder Anmeldung zur Eingabe des Passworts
aufgefordert.Zum gleichen Zweck kann ein DSA-Schlüssel
für Version 2 des SSH-Protokolls mit dem Kommando
ssh-keygen -t dsa erstellt werden.
Dies erzeugt ein DSA-Schlüsselpaar, das nur in Sitzungen
der Protokollversion 2 verwendet wird.
Der öffentliche Schlüssel wird in
~/.ssh/id_dsa.pub, der private Schlüssel
in ~/.ssh/id_dsa gespeichert.Die öffentlichen DSA-Schlüssel werden auch in
~/.ssh/authorized_keys auf der entfernten
Maschine abgelegt.Mit &man.ssh-agent.1; und &man.ssh-add.1; können Sie
mehrere durch Passwörter geschützte private
Schlüssel verwalten.Die Kommandozeilemoptionen und Dateinamen sind
abhängig von der OpenSSH-Version.
Die für Ihr System gültigen Optionen finden Sie
in der Hilfeseite &man.ssh-keygen.1;.SSH-TunnelOpenSSHTunnelMit OpenSSH ist es möglich,
einen Tunnel zu erstellen, in dem ein anderes Protokoll
verschlüsselt übertragen wird.Das folgende Kommando erzeugt einen Tunnel für
telnet:&prompt.user; ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com
&prompt.user;Dabei wurden die folgenden Optionen von ssh
verwendet:Erzwingt die Version 2 des Protokolls (Benutzen Sie die
Option nicht mit langsamen
SSH-Servern).Zeigt an, dass ein Tunnel erstellt werden soll.
Ohne diese Option würde ssh eine
normale Sitzung öffnen.Zwingt ssh im Hintergrund zu
laufen.Ein lokaler Tunnel wird in der Form
localport:remotehost:remoteport
angegeben. Die Verbindung wird dabei von dem lokalen Port
localport auf einen entfernten
Rechner weitergeleitet.Gibt den entfernten SSH server an.Ein SSH-Tunnel erzeugt ein Socket auf
localhost und dem angegebenen Port. Jede
Verbindung, die auf dem angegebenen Socket aufgemacht wird, wird
dann auf den spezifizierten entfernten Rechner und Port
weitergeleitet.Im Beispiel wird der Port 5023 auf
die entfernte Maschine und dort auf localhost
Port 23 weitergeleitet. Da der Port
23 für
Telnet reserviert ist,
erzeugt das eine sichere
Telnet-Verbindung durch einen
SSH-Tunnel.Diese Vorgehensweise kann genutzt werden, um jedes unsichere
TCP-Protokoll wie SMTP, POP3, FTP, usw. weiterzuleiten.Mit SSH einen sicheren Tunnel für SMTP erstellen&prompt.user; ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
user@mailserver.example.com's password: *****
&prompt.user; telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTPZusammen mit &man.ssh-keygen.1; und zusätzlichen
Benutzer-Accounts können Sie leicht benutzbare SSH-Tunnel
aufbauen. Anstelle von Passwörtern können Sie
Schlüssel benutzen und jeder Tunnel kann unter einem eigenen
Benutzer laufen.Beispiel für SSH-TunnelSicherer Zugriff auf einen POP3-ServerNehmen wir an, an Ihrer Arbeitsstelle gibt es einen
SSH-Server, der Verbindungen von außen akzeptiert. Auf
dem Netzwerk Ihrer Arbeitsstelle soll sich zudem noch ein
Mail-Server befinden, der POP3 spricht. Das Netzwerk oder die
Verbindung von Ihrem Haus zu Ihrer Arbeitsstelle ist unsicher
und daher müssen Sie Ihre E-Mail über eine gesicherte
Verbindung abholen können. Die Lösung zu diesem
Problem besteht darin, eine SSH-Verbindung von Ihrem Haus zu
dem SSH-Server an Ihrer Arbeitsstelle aufzubauen, und von dort
weiter zum Mail-Server zu tunneln.&prompt.user; ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com
user@ssh-server.example.com's password: ******Wenn Sie den Tunnel eingerichtet haben, konfigurieren Sie
Ihren Mail-Client so, dass er POP3 Anfragen zu
localhost Port 2110 sendet. Die Verbindung
wird dann sicher zu mail.example.com
weitergeleitet.Umgehen einer strengen FirewallEinige Netzwerkadministratoren stellen sehr drakonische
Firewall-Regeln auf, die nicht nur einkommende Verbindungen
filtern, sondern auch ausgehende. Es kann sein, dass Sie
externe Maschinen nur über die Ports 22 und 80 (SSH und
Web) erreichen.Sie wollen auf einen Dienst, der vielleicht nichts mit
Ihrer Arbeit zu tun hat, wie einen Ogg Vorbis Musik-Server,
zugreifen. Wenn der Ogg Vorbis Server nicht auf den Ports 22
oder 80 läuft, können Sie aber nicht auf ihn
zugreifen.Die Lösung hier ist es, eine SSH-Verbindung zu einer
Maschine außerhalb der Firewall aufzumachen und durch
diese zum Ogg Vorbis Server zu tunneln.&prompt.user; ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org
user@unfirewalled-system.example.org's password: *******Konfigurieren Sie Ihren Client so, dass er
localhost und Port 8888 benutzt. Die Verbindung
wird dann zu music.example.com Port 8000
weitergeleitet und Sie haben die Firewall erfolgreich
umgangen.Weiterführende Informationen:OpenSSH&man.ssh.1; &man.scp.1; &man.ssh-keygen.1;
&man.ssh-agent.1; &man.ssh-add.1;&man.sshd.8; &man.sftp-server.8;TomRhodesBeigetragen von ACLZugriffskontrolllisten für DateisystemeZusammen mit anderen Verbesserungen des Dateisystems wie
Schnappschüsse gibt es ab FreeBSD 5.0
Zugriffskontrolllisten (access
control list, ACL).Zugriffskontrolllisten erweitern die normalen Zugriffsrechte
von &unix; Systemen auf eine kompatible (&posix;.1e) Weise
und bieten feiner granulierte Sicherheitsmechanismen.Zugriffskontrolllisten für Dateisysteme werden mit der
nachstehenden Zeile in der Kernelkonfiguration aktiviert:options UFS_ACLDiese Option ist in der GENERIC-Konfiguration
aktiviert. Das System gibt eine Warnung aus, wenn ein Dateisystem mit
ACLs eingehangen werden soll und die
Unterstützung für ACLs nicht im Kernel
aktiviert ist. Das Dateisystem muss weiterhin erweiterte Attribute
zur Verfügung stellen, damit ACLs verwendet
werden können. Das neue UNIX-Dateisystem
UFS2 stellt diese Attribute
standardmäßig zur Verfügung.Die Konfiguration erweiterter Attribute auf
UFS1 ist mit einem höheren Aufwand als die
Konfiguration erweiterter Attribute auf UFS2
verbunden. Zudem ist UFS2 mit erweiterten
Attributen leistungsfähiger als UFS1.
Zugriffskontrolllisten sollten daher mit UFS2
verwendet werden.Die Angabe der Option in
/etc/fstab aktiviert Zugriffskontrolllisten
für ein Dateisystem. Die bevorzugte Möglichkeit ist
die Verwendung von Zugriffskontrolllisten mit &man.tunefs.8; (Option
), im Superblock des Dateisystems festzuschreiben.
Diese Möglichkeit hat mehrere Vorteile:Nochmaliges Einhängen eines Dateisystems (Option
von &man.mount.8;) verändert den Status
der Zugriffskontrolllisten nicht. Die Verwendung von
Zugriffskontrolllisten kann nur durch Abhängen und erneutes
Einhängen eines Dateisystems verändert werden. Das
heißt auch, dass Zugriffskontrolllisten nicht
nachträglich auf dem Root-Dateisystem aktiviert werden
können.Die Zugriffskontrolllisten auf den Dateisystemen sind,
unabhängig von den Option in /etc/fstab
oder Namensänderungen der Geräte, immer aktiv. Dies
verhindert auch, dass Zugriffskontrolllisten aus Versehen
auf Dateisystem ohne Zugriffskontrolllisten aktiviert werden und
durch falsche Zugriffsrechte Sicherheitsprobleme entstehen.Es kann sein, dass sich der Status von Zugriffskontrolllisten
später durch nochmaliges Einhängen des Dateisystems
(Option von &man.mount.8;) ändern
lässt. Die momentane Variante ist aber sicherer, da der
Status der Zugriffskontrolllisten nicht versehentlich geändert
werden kann. Allgemein sollten Zugriffskontrolllisten auf einem
Dateisystem, auf dem sie einmal verwendet wurden, nicht deaktiviert
werden, da danach die Zugriffsrechte falsch sein können.
Werden Zugriffskontrolllisten auf einem solchen Dateisystem wieder
aktiviert, werden die Zugriffsrechte von Dateien, die sich
zwischenzeitlich geändert haben, überschrieben, was zu
erneuten Problemen führt.Die Zugriffsrechte einer Datei werden durch ein
+ (Plus) gekennzeichnet, wenn die Datei durch
Zugriffskontrolllisten geschützt ist:drwx------ 2 robert robert 512 Dec 27 11:54 private
drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3
drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_htmlDie Verzeichnisse directory1,
directory2 und directory3
sind durch Zugriffskontrolllisten geschützt, das Verzeichnis
public_html nicht.Zugriffskontrolllisten benutzenDas Werkzeug &man.getfacl.1; zeigt Zugriffskontrolllisten
an. Das folgende Kommando zeigt die ACLs
auf der Datei test:&prompt.user; getfacl test
#file:test
#owner:1001
#group:1001
user::rw-
group::r--
other::r--Das Werkzeug &man.setfacl.1; ändert oder entfernt
ACLs auf Dateien. Zum Beispiel:&prompt.user; setfacl -k testDie Option entfernt alle
ACLs einer Datei oder eines Dateisystems.
Besser wäre es, die Option
zu verwenden, da sie die erforderlichen Felder
beibehält.&prompt.user; setfacl -m u:trhodes:rwx,g:web:r--,o::--- testMit dem vorstehenden Kommando werden die eben
entfernten Zugriffskontrolllisten wiederhergestellt.
Der Befehl gibt die Fehlermeldung
Invalid argument aus,
wenn Sie nicht existierende Benutzer oder Gruppen
als Parameter angeben.TomRhodesBeigesteuert von Sicherheitshinweise&os; SicherheitshinweiseWie für andere hochwertige Betriebssysteme auch
werden für &os; Sicherheitshinweise herausgegeben.
Die Hinweise werden gewöhnlich auf den Sicherheits-Mailinglisten
und in den Errata veröffentlicht, nachdem das
Sicherheitsproblem behoben ist. Dieser Abschnitt beschreibt
den Umgang mit den Sicherheitshinweisen.Wie sieht ein Sicherheitshinweis aus?Der nachstehende Sicherheitshinweis stammt von
der Mailingliste &a.security-notifications.name;:=============================================================================
&os;-SA-XX:XX.UTIL Security Advisory
The &os; Project
Topic: denial of service due to some problem
Category: core
Module: sys
Announced: 2003-09-23
Credits: Person@EMAIL-ADDRESS
Affects: All releases of &os;
&os; 4-STABLE prior to the correction date
Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)
&os; only: NO
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
http://www.FreeBSD.org/security/.
I. Background
II. Problem Description
III. Impact
IV. Workaround
V. Solution
VI. Correction details
VII. ReferencesDas Feld Topic enthält eine
Beschreibung des Sicherheitsproblems und benennt das
betroffene Programm.Das Feld Category beschreibt den
betroffenen Systemteil. Mögliche Werte für dieses
Feld sind core, contrib
oder ports. Die Kategorie
core gilt für Kernkomponenten
des &os;-Betriebssystems, die Kategorie
contrib beschreibt zum Basissystem
gehörende Software Dritter beispielsweise
sendmail. Die Kategorie
ports beschreibt Software, die
Teil der Ports-Collection ist.Das Feld Module beschreibt die
betroffene Komponente. Im Beispiel ist
sys angegeben, das heißt
dieses Problem betrifft eine Komponente, die vom
Kernel benutzt wird.Das Feld Announced gibt den
Zeitpunkt der Bekanntgabe des Sicherheitshinweises
an. Damit existiert das Sicherheitsproblem,
ist vom Sicherheits-Team bestätigt worden
und eine entsprechende Korrektur wurde in das
Quellcode-Repository von &os; gestellt.Das Feld Credits gibt die Person
oder Organisation an, die das Sicherheitsproblem
bemerkte und gemeldet hat.Welche &os;-Releases betroffen sind, ist im Feld
Affects angegeben. Die Version einer
Datei, die zum Kernel gehört, können Sie
schnell mit ident ermitteln. Bei Ports
ist die Versionsnummer angegeben, die Sie im Verzeichnis
/var/db/pkg finden.
Wenn Sie Ihr System nicht täglich aktualisieren,
ist Ihr System wahrscheinlich betroffen.Wann das Problem in welchem Release behoben wurde,
steht im Feld Corrected.Im Feld &os; only wird angegeben,
ob das Sicherheitsproblem nur &os; oder auch andere
Betriebssysteme betrifft.Im Feld Background wird
das betroffene Werkzeug beschrieben. Meist finden Sie
hier warum das Werkzeug Bestandteil von &os; ist,
wofür es benutzt wird und eine kurze
Darstellung der Herkunft des Werkzeugs.Im Feld Problem Description befindet
sich eine genaue Darstellung des Sicherheitsproblems.
Hier wird fehlerhafter Code beschrieben oder geschildert,
wie ein Werkzeug ausgenutzt wird.Das Feld Impact beschreibt die
Auswirkungen des Sicherheitsproblems auf ein System,
beispielsweise erweiterte Rechte oder gar
Superuser-Rechte für normale Benutzer.Im Feld Workaround wird
eine Umgehung des Sicherheitsproblems beschrieben.
Die Umgehung ist für Administratoren gedacht,
die ihr System aus Zeitnot, Netzwerk-technischen oder
anderen Gründen nicht aktualisieren können.
Nehmen Sie Sicherheitsprobleme ernst: Auf einem
betroffenen System sollte das Problem entweder behoben
oder, wie hier beschrieben, umgangen werden.Im Feld Solution enthält eine
getestete Schritt-für-Schritt Anleitung, die das
Sicherheitsproblem behebt.Das Feld Correction Details
enthält die CVS-Tags der betroffenen Dateien
zusammen mit zugehörigen Revisionsnummern.Im Feld References finden sich
Verweise auf weitere Informationsquellen. Dies können
URLs zu Webseiten, Bücher, Mailinglisten und Newsgroups
sein.
diff --git a/de_DE.ISO8859-1/books/handbook/users/chapter.sgml b/de_DE.ISO8859-1/books/handbook/users/chapter.sgml
index 2919c8d8fe..bf9000c8c3 100644
--- a/de_DE.ISO8859-1/books/handbook/users/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/users/chapter.sgml
@@ -1,1193 +1,1193 @@
NeilBlakey-MilnerBeigetragen von RobertDrehmelÜbersetzt von Benutzer und grundlegende Account-VerwaltungÜbersichtEinen FreeBSD-Computer können mehrere Benutzer zur selben
Zeit benutzen, allerdings kann immer nur einer vor der Konsole sitzen
Außer Sie verwenden, wie in besprochen, zusätzliche Terminals, über das Netzwerk können beliebig viele
Benutzer angemeldet sein. Jeder Benutzer muss einen Account
haben, um das System benutzen zu können.Nachdem Sie dieses Kapitel gelesen haben, werden Siedie verschiedenen Account-Typen von FreeBSD kennen,wissen, wie Accounts angelegt werden,wissen, wie Sie Accounts löschen,wie Sie Attribute eines Accounts, wie den Loginnamen oder
die Login-Shell ändern,wissen, wie Sie Limits für einen Account setzen, um
beispielsweise Ressourcen, wie Speicher oder CPU-Zeit,
einzuschränken,wie Sie mit Gruppen die Verwaltung der Accounts
vereinfachen.Vor dem Lesen dieses Kapitels sollten Siedie Grundlagen von &unix; und FreeBSD ()
verstanden haben.EinführungJeder Zugriff auf das System geschieht über Accounts und alle
Prozesse werden von Benutzern gestartet, also sind Benutzer- und
Account-Verwaltung von wesentlicher Bedeutung in FreeBSD-Systemen.Mit jedem Account eines FreeBSD-Systems sind bestimmte Informationen
verknüpft, die diesen Account identifizieren.LoginnamenDen Loginnamen geben Sie bei der Anmeldung ein, wenn Sie
dazu mit login: aufgefordert werden.
Loginnamen müssen auf dem System eindeutig sein, das
heißt auf einem System kann es nicht zwei Accounts mit
demselben Loginnamen geben. In &man.passwd.5; wird
beschrieben, wie ein gültiger Loginname gebildet wird.
Normalerweise sollten Sie Namen verwenden, die aus
Kleinbuchstaben bestehen und bis zu acht Zeichen lang sind.PasswortMit jedem Account ist ein Passwort verknüpft. Wenn
das Passwort leer ist, wird es bei der Anmeldung nicht
abgefragt. Das ist allerdings nicht zu empfehlen, daher sollte
jeder Account ein Passwort besitzen.User ID (UID)Die UID ist üblicherweise eine Zahl zwischen
0 und 65535Für UIDs und GIDs können Zahlen bis
einschließlich 4294967295 verwendet werden.
Allerdings können solche IDs erhebliche
Probleme mit Anwendungen verursachen, die
Annahmen über den Wertebereich der IDs
treffen., die einen
Account eindeutig identifiziert. Intern verwendet FreeBSD nur
die UID, Loginnamen werden zuerst in eine UID umgewandelt,
mit der das System dann weiter arbeitet. Das bedeutet, dass
Sie Accounts mit unterschiedlichen Loginnamen aber gleicher
UID einrichten können. Vom Standpunkt des Systems handelt
es sich dabei um denselben Account. In der Praxis werden Sie
diese Eigenschaft des Systems wahrscheinlich nicht
benutzen.Group ID (GID)Die GID ist üblicherweise eine Zahl zwischen 0 und
65536, die eine Gruppe
eindeutig identifiziert. Mit Gruppen kann der Zugriff auf
Ressourcen über die GID anstelle der UID geregelt werden.
Einige Konfigurationsdateien werden durch diesen Mechanismus
deutlich kleiner. Ein Account kann mehreren Gruppen
zugehören.Login-KlasseLogin-Klassen erweitern das Gruppenkonzept. Sie
erhöhen die Flexibilität des Systems in der Handhabung
der verschiedenen Accounts.Gültigkeit von PasswörternEin regelmäßiges Ändern des Passworts wird in
der Voreinstellung von FreeBSD nicht erzwungen. Sie
können allerdings einen Passwortwechsel nach einer
gewissen Zeit auf Basis einzelner Accounts erzwingen.Verfallszeit eines AccountsIn der Voreinstellung verfallen unter FreeBSD keine
Accounts. Wenn Sie Accounts einrichten, die nur für eine
bestimmte Zeit gültig sein sollen, beispielsweise Accounts
für Teilnehmer eines Praktikums, können Sie angeben,
wie lange der Account gültig sein soll. Nachdem die
angegebene Zeitspanne verstrichen ist, kann dieser Account
nicht mehr zum Anmelden verwendet werden, obwohl alle
Verzeichnisse und Dateien, die diesem Account gehören,
noch vorhanden sind.vollständiger BenutzernameFreeBSD identifiziert einen Account eindeutig über
den Loginnamen, der aber keine Ähnlichkeit mit dem
richtigen Namen des Benutzers haben muss. Der
vollständige Benutzername kann daher beim Einrichten eines
Accounts angegeben werden.HeimatverzeichnisDas Heimatverzeichnis gibt den vollständigen Pfad zu
dem Verzeichnis an, in dem sich der Benutzer nach erfolgreicher
Anmeldung befindet. Es ist üblich, alle
Heimatverzeichnisse unter
/home/Loginname
oder
/usr/home/Loginname
anzulegen. Im Heimatverzeichnis oder in dort angelegten
Verzeichnissen werden die Dateien eines Benutzers
gespeichert.Login-ShellGrundsätzlich ist die Schnittstelle zum System eine
Shell, von denen es viele unterschiedliche gibt. Die
bevorzugte Shell eines Benutzers kann seinem Account zugeordnet
werden.Es gibt drei Haupttypen von Accounts: Der
Superuser,
Systembenutzer und
Benutzer-Accounts. Der
Superuser-Account, normalerweise root genannt, wird
benutzt, um das System ohne Beschränkungen auf Privilegien zu
verwalten. Systembenutzer starten Dienste. Abschließend werden
Benutzer-Accounts von echten Menschen genutzt, die sich einloggen, Mails
lesen und so weiter.Der Superuser-AccountAccountsSuperuser (root)Der Superuser-Account, normalerweise root
genannt, ist vorkonfiguriert und erleichtert die Systemverwaltung, sollte
aber nicht für alltägliche Aufgaben wie das Verschicken und
Empfangen von Mails, Entdecken des Systems oder Programmierung benutzt
werden.Das ist so, da der Superuser im Gegensatz zu normalen
Benutzer-Accounts ohne Beschränkungen operiert und falsche
Anwendung des Superuser-Accounts in spektakulären Katastrophen
resultieren kann. Benutzer-Accounts sind nicht in der Lage, das System
versehentlich zu zerstören, deswegen ist es generell am besten
normale Benutzer-Accounts zu verwenden, solange man nicht
hauptsächlich die extra Privilegien benötigt.Kommandos, die Sie als Superuser eingeben, sollten Sie immer
doppelt und dreifach überprüfen, da ein
zusätzliches Leerzeichen oder ein fehlender Buchstabe irreparablen
Datenverlust bedeuten kann.Das erste, das Sie tun sollten, nachdem Sie dieses Kapitel gelesen
haben, ist einen unprivilegierten Benutzer für Ihre eigene normale
Benutzung zu erstellen, wenn Sie das nicht bereits getan haben. Das
trifft immer zu, egal ob Sie ein Mehrbenutzersystem oder ein System
laufen haben, welches Sie alleine benutzen. Später in diesem
Kapitel besprechen wir, wie man zusätzliche Accounts erstellt und
wie man zwischen dem normalen Benutzer und dem Superuser wechselt.System-AccountsAccountsSystem-AccountsSystembenutzer starten Dienste wie DNS, Mail-Server, Web-Server und so
weiter. Der Grund dafür ist die Sicherheit; wenn die Programme
von dem Superuser gestartet werden, können Sie ohne
Einschränkungen handeln.AccountsdaemonAccountsoperatorBeispiele von Systembenutzern sind daemon,
operator, bind (für den
Domain Name Service) und news. Oft erstellen
Systemadministratoren den Benutzer httpd, um
Web-Server laufen zu lassen, die sie installieren.Accountsnobodynobody ist der generische unprivilegierte
Systembenutzer. Bedenken Sie aber, dass je mehr Dienste
nobody benutzen, desto mehr Dateien und Prozesse
diesem Benutzer gehören und dieser Benutzer damit umso
privilegierter wird.Benutzer-AccountsAccountsBenutzer-AccountsBenutzer-Accounts sind das primäre Mittel des Zugriffs für
Menschen auf das System und isolieren Benutzer und Umgebung,
schützen die Benutzer davor, das System oder Daten anderer Benutzer
zu beschädigen und erlauben Benutzern ihre Umgebung selbst
einzurichten, ohne das sich dies auf andere auswirkt.Jede Person, die auf Ihr System zugreift, sollte ihren eigenen
Account besitzen. Das erlaubt Ihnen herauszufinden, wer was macht
und hält Leute davon ab, die Einstellungen der anderen zu
verändern oder Mails zu lesen, die nicht für sie bestimmt
waren.Jeder Benutzer kann sich eine eigene Umgebung mit alternativen
Shells, Editoren, Tastaturbelegungen und Sprachen einrichten.Accounts verändernAccountsverändernUnter &unix; gibt es verschiedene Kommandos, um Accounts zu
verändern. Die gebräuchlichsten Kommandos sind unten,
gefolgt von einer detaillierten Beschreibung, zusammengefasst.KommandoZusammenfassung&man.adduser.8;Das empfohlene Werkzeug, um neue Accounts zu
erstellen.&man.rmuser.8;Das empfohlene Werkzeug, um Accounts zu
löschen.&man.chpass.1;Ein flexibles Werkzeug, um Informationen in der
Account-Datenbank zu verändern.&man.passwd.1;Ein einfaches Werkzeug, um Passwörter von Accounts
zu ändern.&man.pw.8;Ein mächtiges und flexibles Werkzeug um alle
Informationen über Accounts zu ändern.adduserAccountserstellenadduser/usr/share/skel&man.adduser.8; ist ein einfaches Programm
um neue Benutzer hinzuzufügen. Es erstellt
passwd und group
Einträge für den
Benutzer, genauso wie ein home Verzeichnis, kopiert ein paar
vorgegebene Dotfiles aus /usr/share/skel und kann
optional dem Benutzer eine ,,Willkommen``-Nachricht zuschicken.Für &os; 5.0 wurde &man.adduser.8; in Perl
neugeschrieben und fungiert jetzt als Stellvertreter für
das Shell-Skript &man.pw.8;. Daher unterscheidet sich die
Benutzung von &man.adduser.8; unter &os; 5.X leicht von
der unter &os; 4.X.Um die anfängliche Konfigurationsdatei zu erstellen,
benutzen Sie: adduser -s -config_create.
Das bringt &man.adduser.8;
dazu, weniger Fragen und Fehlermeldungen auszugeben.
Wir benutzen später, wenn wir die
Voreinstellungen ändern wollen.
Zunächst konfigurieren wir Voreinstellungen von
&man.adduser.8; und erstellen unseren ersten
Benutzer-Account, da es böse und unangenehm ist,
root für normale Aufgaben zu
verwenden.adduser konfigurieren und Benutzer
unter &os; 4.X hinzufügen&prompt.root; adduser -v
Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh zsh [sh]: zsh
Your default shell is: zsh -> /usr/local/bin/zsh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
Send message from file: /etc/adduser.message no
[/etc/adduser.message]: no
Do not send message
Use passwords (y/n) [y]: y
Write your changes to /etc/adduser.conf? (y/n) [n]: y
Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jru
Enter full name []: J. Random User
Enter shell csh date no sh tcsh zsh [zsh]:
Enter home directory (full path) [/home/jru]:
Uid [1001]:
Enter login class: default []:
Login group jru [jru]:
Login group is ``jru''. Invite jru into other groups: guest no
[no]: wheel
Enter password []:
Enter password again []:
Name: jru
Password: ****
Fullname: J. Random User
Uid: 1001
Gid: 1001 (jru)
Class:
Groups: jru wheel
HOME: /home/jru
Shell: /usr/local/bin/zsh
OK? (y/n) [y]: y
Added user ``jru''
Copy files from /usr/share/skel to /home/jru
Add another user? (y/n) [y]: n
Goodbye!
&prompt.root;Zusammengefasst haben wir die vorgegebene Shell in
zsh (eine zusätzliche Shell aus
der Ports-Sammlung) geändert und das Senden einer
,,Willkommen``-Nachricht an neue Benutzer abgeschaltet.
Danach haben wir die Konfiguration abgespeichert und anschließend
einen Account für jru eingerichtet
und sichergestellt, dass jru in der
Gruppe wheel ist, so dass Sie mit
&man.su.1; zu root wechseln
kann.Wenn Sie das Passwort eingeben, werden weder Passwort noch
Sternchen angezeigt. Passen Sie auf, dass Sie das Passwort nicht
zweimal falsch eingeben.Benutzen Sie ab jetzt &man.adduser.8; ohne Argumente,
dann müssen Sie nicht jedes mal die Vorgaben neu einstellen.
Wenn das Programm Sie fragt, ob Sie die Vorgaben ändern wollen,
verlassen und starten Sie es erneut mit der
Option.Benutzer unter &os; 5.X hinzufügen&prompt.root; adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : jru
Password : ****
Full Name : J. Random User
Uid : 1001
Class :
Groups : jru wheel
Home : /home/jru
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
&prompt.root;rmuserrmuserAccountslöschenBenutzen Sie &man.rmuser.8;, um einen Account
vollständig aus dem System zu entfernen.
&man.rmuser.8; führt die folgenden Schritte
durch:Entfernt den &man.crontab.1; Eintrag des Benutzers
(wenn dieser existiert).Entfernt alle &man.at.1; jobs, die dem Benutzer gehören.
Schließt alle Prozesse des Benutzers.Entfernt den Benutzer aus der lokalen Passwort-Datei des
Systems.Entfernt das Heimatverzeichnis des Benutzers (falls es dem
Benutzer gehört).Entfernt eingegange E-Mails des Benutzers
aus /var/mail.Entfernt alle Dateien des Benutzers aus temporären
Dateispeicherbereichen wie /tmp.Entfernt den Loginnamen von allen Gruppen, zu denen er
gehört, aus /etc/group.
Wenn eine Gruppe leer wird und der Gruppenname mit dem
Loginnamen identisch ist, wird die Gruppe entfernt; das
ergänzt sich mit den einzelnen Benutzer-Gruppen, die von
&man.adduser.8; für jeden neuen Benutzer erstellt werden.
Der Superuser-Account kann nicht mit &man.rmuser.8; entfernt
werden, da dies in den meisten Fällen das System unbrauchbar
macht.Als Vorgabe wird ein interaktiver Modus benutzt, der
sicherzustellen versucht, dass Sie wissen, was Sie tun.Interaktives Löschen von Account mit
rmuser&prompt.root; rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
&prompt.root;chpasschpass&man.chpass.1; ändert Informationen der
Benutzerdatenbank wie Passwörter, Shells und persönliche
Informationen.Nur Systemadministratoren, mit Superuser-Rechten, können die
Informationen und Passwörter der anderen Benutzer mit
&man.chpass.1; verändern.Werden keine Optionen neben dem optionalen Loginnamen
angegeben, zeigt &man.chpass.1; einen Editor
mit Account-Informationen an und aktualisiert die
Account-Datenbank, wenn dieser verlassen wird.Unter &os; 5.X wird nach dem Verlassen des Editors
nach dem Passwort gefragt, es sei denn, man ist als Superuser
angemeldet.Interaktives chpass des Superusers#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:Der normale Benutzer kann nur einen kleinen Teil dieser
Informationen verändern und natürlich nur die Daten des
eigenen Accounts.Interaktives chpass eines normalen
Benutzers#Changing user database information for jru.
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:&man.chfn.1; und &man.chsh.1; sind
nur Verweise auf &man.chpass.1; genauso wie
&man.ypchpass.1;, &man.ypchfn.1; und
&man.ypchsh.1;. NIS wird automatisch unterstützt,
deswegen ist es nicht notwendig das yp vor dem
Kommando einzugeben. NIS wird später
- in besprochen.
+ in besprochen.
passwdpasswdAccountsPasswort wechseln&man.passwd.1; ist der übliche Weg, Ihr
eigenes Passwort als Benutzer zu ändern oder das Passwort eines
anderen Benutzers als Superuser.Um unberechtigte Änderungen zu verhindern,
muss bei einem Passwortwechsel zuerst das ursprüngliche
Passwort eingegeben werden.Wechseln des Passworts&prompt.user; passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done
&prompt.root; passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: doneAls Superuser das Passwort eines anderen Accounts
verändern&prompt.root; passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: doneWie bei &man.chpass.1; ist &man.yppasswd.1;
nur ein Verweis auf &man.passwd.1;. NIS wird von
jedem dieser Kommandos unterstützt.pwpw&man.pw.8; ist ein Kommandozeilenprogramm, mit
dem man Accounts und Gruppen erstellen, entfernen, verändern
und anzeigen kann. Dieses Kommando dient als Schnittstelle zu den
Benutzer- und Gruppendateien des Systems. &man.pw.8;
besitzt eine Reihe mächtiger Kommandozeilenschalter, die es
für die Benutzung in Shell-Skripten geeignet machen, doch
finden neue Benutzer die Bedienung des Kommandos komplizierter, als
die der anderen hier vorgestellten Kommandos.Benutzer einschränkenBenutzer einschränkenAccountseinschränkenWenn ein System von mehreren Benutzern verwendet wird, ist es
vielleicht notwendig, den Gebrauch des Systems zu beschränken.
FreeBSD bietet dem Systemadministrator mehrere Möglichkeiten
die System-Ressourcen, die ein einzelner Benutzer verwenden kann,
einzuschränken. Diese Limitierungen sind in zwei Kategorien
eingeteilt: Festplattenkontingente und andere
Ressourcenbeschränkungen.QuotasBenutzer einschränkenQuotasFestplatten QuotasFestplatten-Kontingente schränken den Plattenplatz, der
einem Benutzer zur Verfügung steht, ein. Sie bieten zudem,
ohne aufwändige Berechnung, einen schnellen Überblick
über den verbrauchten Plattenplatz.
Kontingente werden in diskutiert./etc/login.confDie Login-Klassen werden in /etc/login.conf
definiert. Auf die präzisen Semantiken gehen wir hier nicht
weiter ein, sie können jedoch in &man.login.conf.5;
nachgelesen werden. Es ist ausreichend zu sagen, dass jeder
Benutzer einer Login-Klasse zugewiesen wird (standardmäßig
default) und dass jede Login-Klasse mit einem Satz
von Login-Fähigkeiten verbunden ist. Eine Login-Fähigkeit
ist ein Name=Wert
Paar, in dem Name
die Fähigkeit bezeichnet und Wert
ein willkürlicher Text ist, der je nach Name
entsprechend verarbeitet wird. Login-Klassen und
-Fähigkeiten zu definieren, ist fast schon selbsterklärend
und wird auch in &man.login.conf.5; beschrieben.Das System verwendet die Datei
/etc/login.conf nicht direkt sondern
die Datenbank /etc/login.conf.db.
Das nachstehende Kommando erzeugt die Datenbank
/etc/login.conf.db aus der Datei
/etc/login.conf:&prompt.root; cap_mkdb /etc/login.confRessourcenbeschränkungen unterscheiden sich von normalen
Login-Fähigkeiten zweifach. Erstens gibt es für jede
Beschränkung ein aktuelles und ein maximales Limit. Das
aktuelle Limit kann vom Benutzer oder einer Anwendung beliebig
bis zum maximalen Limit verändert werden. Letzteres kann
der Benutzer nur heruntersetzen. Zweitens gelten die meisten
Ressourcenbeschränkungen für jeden vom Benutzer
gestarteten Prozess, nicht für den Benutzer selbst.
Beachten Sie jedoch, dass diese Unterschiede durch das spezifische
Einlesen der Limits und nicht durch das System der
Login-Fähigkeiten entstehen (das heißt,
Ressourcenbeschränkungen sind keine
Login-Fähigkeiten).Hier befinden sich die am häufigsten benutzten
Ressourcenbeschränkungen (der Rest kann zusammen mit den
anderen Login-Fähigkeiten in &man.login.conf.5; gefunden
werden):coredumpsizecoredumpsizeBenutzer einschränkencoredumpsizeDas Limit der Größe einer core-Datei, die
von einem Programm generiert wird, unterliegt aus
offensichtlichen Gründen anderen Limits der
Festplattenbenutzung (zum Beispiel filesize
oder Festplattenkontingenten). Es wird aber trotzdem
oft als weniger harte Methode zur Kontrolle des
Festplattenplatz-Verbrauchs verwendet: Da Benutzer die
core-Dateien nicht selbst erstellen, und sie oft nicht
löschen, kann sie diese Option davor retten, dass
ihnen kein Festplattenspeicher mehr zur Verfügung
steht, sollte ein großes Programm, wie
emacs, abstürzen.cputimecputimeBenutzer einschränkencputimeDie maximale Rechenzeit, die ein Prozess eines Benutzers
verbrauchen darf. Überschreitet der Prozess diesen Wert,
wird er vom Kernel beendet.
Die Rechenzeit wird limitiert,
nicht die prozentuale Prozessorenbenutzung, wie es in
einigen Feldern in &man.top.1; und &man.ps.1; dargestellt
wird. Letzteres war zu der Zeit, als dies hier geschrieben
wurde nicht möglich und würde eher nutzlos sein:
Ein Compiler – ein wahrscheinlich legitimer
Vorgang – kann leicht fast 100% des Prozessors in
Anspruch nehmen.filesizefilesizeBenutzer einschränkenfilesizeHiermit lässt sich die maximale Größe einer Datei
bestimmen, die der Benutzer besitzen darf. Im Gegensatz zu
Festplattenkontingenten ist diese
Beschränkung nur für jede einzelne Datei gültig
und nicht für den Platz, den alle Dateien eines Benutzers
verwenden.maxprocmaxprocBenutzer einschränkenmaxprocDas ist die maximale Anzahl von Prozessen, die ein
Benutzer starten darf, und beinhaltet sowohl Vordergrund-
als auch Hintergrundprozesse. Natürlich darf dieser
Wert nicht höher sein als das System-Limit, das in
kern.maxproc angegeben ist. Vergessen
Sie auch nicht, dass ein zu kleiner Wert den Benutzer in
seiner Produktivität einschränken könnte;
es ist oft nützlich, mehrfach eingeloggt zu sein, oder
PipelinesPipeline =
Leitung.
Mit Pipes sind Verbindungen
zwischen zwei Sockets in meistens zwei verschiedenen
Prozessen gemeint.
zu verwenden. Ein paar Aufgaben, wie die Kompilierung eines
großen Programms, starten mehrere Prozesse (zum Beispiel
&man.make.1;, &man.cc.1; und andere).memorylockedmemorylockedBenutzer einschränkenmemorylockedDieses Limit gibt an, wie viel virtueller Speicher von einem
Prozess maximal im Arbeitsspeicher festgesetzt werden kann.
(siehe auch &man.mlock.2;). Ein paar systemkritische Programme,
wie &man.amd.8;, verhindern damit einen Systemzusammenbruch, der
auftreten könnte, wenn sie aus dem Speicher genommen werden.
memoryusememoryuseBenutzer einschränkenmemoryuseBezeichnet den maximalen Speicher, den ein Prozess benutzen
darf und beinhaltet sowohl Arbeitsspeicher-, als auch Swap-
Benutzung. Es ist kein allübergreifendes Limit für
den Speicherverbrauch, aber ein guter Anfang.openfilesopenfilesBenutzer einschränkenopenfilesMit diesem Limit lässt sich die maximale Anzahl
der von einem Prozess des Benutzers geöffneten Dateien
festlegen. In FreeBSD werden Dateien auch verwendet, um Sockets
und IPC-Kanäle
IPC steht für
Interprocess Communication.
darzustellen. Setzen Sie es deshalb nicht zu niedrig. Das
System-Limit ist im kern.maxfiles
&man.sysctl.8; definiert.sbsizesbsizeBenutzer einschränkensbsizeDieses Limit beschränkt den Netzwerk-Speicher, und damit
die mbufs, die ein Benutzer verbrauchen darf. Es stammt aus einer
Antwort auf einen DoS-Angriff, bei dem viele Netzwerk-Sockets
geöffnet wurden, kann aber generell dazu benutzt werden
Netzwerk-Verbindungen zu beschränken.stacksizeDas ist die maximale Größe, auf die der Stack
eines Prozesses heranwachsen darf. Das allein ist natürlich
nicht genug, um den Speicher zu beschränken, den ein Programm
verwenden darf. Es sollte deshalb in Verbindung mit anderen
Limits gesetzt werden.Beim Setzen von Ressourcenbeschränkungen sind noch andere
Dinge zu beachten. Nachfolgend ein paar generelle Tipps, Empfehlungen
und verschiedene Kommentare.Von /etc/rc beim Hochfahren des Systems
gestartete Prozesse werden der daemon
Login-Klasse zugewiesen.Obwohl das mitgelieferte /etc/login.conf
eine Quelle von vernünftigen Limits darstellt, können nur
Sie, der Administrator, wissen, was für Ihr System angebracht
ist. Ein Limit zu hoch anzusetzen könnte Ihr System für
Missbrauch öffnen, und ein zu niedriges Limit der
Produktivität einen Riegel vorschieben.Benutzer des X-Window Systems (X11) sollten wahrscheinlich
mehr Ressourcen zugeteilt bekommen als andere Benutzer. X11
beansprucht selbst schon eine Menge Ressourcen, verleitet die
Benutzer aber auch, mehrere Programme gleichzeitig laufen zu
lassen.Bedenken Sie, dass viele Limits für einzelne Prozesse
gelten und nicht für den Benutzer selbst. Setzt man
zum Beispiel openfiles auf 50, kann jeder
Prozess des Benutzers bis zu 50 Dateien öffnen. Dadurch
ist die maximale Anzahl von Dateien, die von einem Benutzer
geöffnet werden können, openfiles
mal maxproc. Das gilt auch für den
Speicherverbrauch.Weitere Informationen über
Ressourcenbeschränkungen, Login-Klassen und -Fähigkeiten
enthalten die Hilfeseiten
&man.cap.mkdb.1;, &man.getrlimit.2; und &man.login.conf.5;.Benutzer personalisierenDie Lokalisierung ist eine Umgebung, die vom Systemadministrator
oder Benutzer eingerichtet wird, um verschiedene Sprachen,
Zeichensätze, Datum- und Zeitstandards und so weiter
unterzubringen. Dies wird im Kapitel über die
Lokalisierung
besprochen.GruppenGruppen/etc/groupsAccountsGruppenEine Gruppe ist einfach eine Zusammenfassung von Accounts.
Gruppen werden durch den Gruppennamen und die GID (group ID)
identifiziert. Der Kernel von FreeBSD (und den meisten anderen &unix;
Systemen) entscheidet anhand der UID und der Gruppenmitgliedschaft
eines Prozesses, ob er dem Prozess etwas erlaubt oder nicht. Im
Unterschied zur UID kann ein Prozess zu einer Reihe von Gruppen
gehören. Wenn jemand von der GID eines
Benutzers oder Prozesses spricht, meint er damit meistens die erste
Gruppe der Gruppenliste.Die Zuordnung von Gruppennamen zur GID steht in
/etc/group, einer Textdatei mit vier durch
Doppelpunkte getrennten Feldern. Im ersten Feld steht der
Gruppenname, das zweite enthält ein verschlüsseltes
Passwort, das dritte gibt die GID an und das vierte besteht aus einer
Komma separierten Liste der Mitglieder der Gruppe. Diese Datei kann
einfach editiert werden (natürlich nur, wenn Sie dabei keine
Syntaxfehler machen). Eine ausführliche Beschreibung der Syntax
dieser Datei finden Sie in &man.group.5;.Wenn Sie /etc/group nicht händisch
editieren möchten, können Sie &man.pw.8; zum Editieren
benutzen. Das folgende Beispiel zeigt das Hinzufügen einer
Gruppe mit dem Namen teamtwo:Hinzufügen einer Gruppe mit pw&prompt.root; pw groupadd teamtwo
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:Die Zahl 1100 ist die GID der Gruppe
teamtwo. Momentan hat
teamtwo noch keine Mitglieder und ist daher
ziemlich nutzlos. Um das zu ändern, nehmen wir nun
jru in teamtwo
auf.Ein Gruppenmitglied mit pw
hinzufügen&prompt.root; pw groupmod teamtwo -M jru
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:jruAls Argument von geben Sie eine Komma
separierte Liste von Mitgliedern an, die Sie in die Gruppe aufnehmen
möchten. Aus den vorherigen Abschnitten ist bekannt, dass die
Passwort-Datei ebenfalls eine Gruppe für jeden Benutzer
enthält. Das System teilt dem Benutzer automatisch eine Gruppe
zu, die aber vom Kommando von &man.pw.8;
nicht angezeigt wird. Diese Information wird allerdings von
&man.id.1; und ähnlichen Werkzeugen angezeigt. Das heißt,
dass &man.pw.8; nur /etc/group manipuliert,
es wird nicht versuchen, zusätzliche Informationen aus
/etc/passwd zu lesen.Mit id die Gruppenzugehörigkeit
bestimmen&prompt.user; id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)Wie Sie sehen, ist jru Mitglied von
jru und teamtwo.Weitere Informationen entnehmen Sie bitte &man.pw.8;.
diff --git a/de_DE.ISO8859-1/share/sgml/articles.ent b/de_DE.ISO8859-1/share/sgml/articles.ent
index 11a71f9013..3f7c8238ad 100644
--- a/de_DE.ISO8859-1/share/sgml/articles.ent
+++ b/de_DE.ISO8859-1/share/sgml/articles.ent
@@ -1,28 +1,28 @@
%man;
%freebsd;
%authors;
%teams;
%mailing-lists;
-
+
%newsgroups;
%de-trademarks;
%trademarks;
%l10n;
%l10n-common;
%urls;
diff --git a/de_DE.ISO8859-1/share/sgml/catalog b/de_DE.ISO8859-1/share/sgml/catalog
index c31c50c430..ecb4c5727c 100644
--- a/de_DE.ISO8859-1/share/sgml/catalog
+++ b/de_DE.ISO8859-1/share/sgml/catalog
@@ -1,42 +1,45 @@
-- ...................................................................... --
-- FreeBSD SGML Public Identifiers ...................................... --
-- ...................................................................... --
-- German specific ...................................................... --
-- $FreeBSD$ --
- -- $FreeBSDde: de-docproj/share/sgml/catalog,v 1.9 2004/08/20 15:22:17 ue Exp $ --
+ -- $FreeBSDde: de-docproj/share/sgml/catalog,v 1.10 2004/11/28 18:16:45 jkois Exp $ --
-- basiert auf: 1.5 --
PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//DE"
"articles.ent"
PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Books Entity Set//DE"
"books.ent"
PUBLIC "-//FreeBSD//DOCUMENT DocBook Stylesheet//EN"
"freebsd.dsl"
PUBLIC "-//FreeBSD//ENTITIES DocBook Language Specific Entities//EN"
"l10n.ent"
PUBLIC "-//FreeBSD//ENTITIES DocBook Mailing List Entities//DE"
"mailing-lists.ent"
+PUBLIC "-//FreeBSD//ENTITIES DocBook Newsgroup Entities//DE"
+ "newsgroups.ent"
+
PUBLIC "-//FreeBSD//ENTITIES DocBook Team Entities//DE"
"teams.ent"
PUBLIC "-//FreeBSD//ENTITIES DocBook BookInfo Entities//DE"
"bookinfo.ent"
PUBLIC "-//FreeBSD//DOCUMENT DocBook Stylesheet//DE"
"freebsd.dsl"
PUBLIC "-//FreeBSD//DOCUMENT DocBook Language Neutral Stylesheet//DE"
"freebsd.dsl"
PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//DE"
"translators.ent"
PUBLIC "-//FreeBSD//ENTITIES DocBook Trademark Entities//DE"
"trademarks.ent"
diff --git a/de_DE.ISO8859-1/share/sgml/mailing-lists.ent b/de_DE.ISO8859-1/share/sgml/mailing-lists.ent
index 232178c57a..fcbd676d98 100644
--- a/de_DE.ISO8859-1/share/sgml/mailing-lists.ent
+++ b/de_DE.ISO8859-1/share/sgml/mailing-lists.ent
@@ -1,478 +1,486 @@
FreeBSD list server">
&a.mailman.listinfo;">
de-bsd-translators@de.FreeBSD.org">
de-bsd-questions@de.FreeBSD.org">
FreeBSD ACPI">
freebsd-acpi">
FreeBSD advocacy">
freebsd-advocacy">
FreeBSD AFS porting">
freebsd-afs">
FreeBSD Adapteci
AIC7xxx discussions">
freebsd-aic7xxx">
FreeBSD Alpha porting">
freebsd-alpha">
Porting
FreeBSD to AMD64 systems">
freebsd-amd64">
FreeBSD
announcements">
freebsd-announce">
FreeBSD Apache">
freebsd-apache">
FreeBSD architecture and
design">
freebsd-arch">
FreeBSD ARM porting">
freebsd-arm">
FreeBSD ATM networking">
freebsd-atm">
FreeBSD source code
audit">
freebsd-audit">
FreeBSD binary update
system">
freebsd-binup">
FreeBSD
bugbusters">
freebsd-bugbusters">
FreeBSD problem reports">
freebsd-bugs">
FreeBSD chat">
freebsd-chat">
FreeBSD clustering">
freebsd-cluster">
FreeBSD committers">
FreeBSD installation
and configuration tools">
freebsd-config">
FreeBSD core team">
&os.current;">
freebsd-current">
CTM
announcements">
ctm-announce">
CTM
distribution of CVS files">
ctm-cvs-cur">
CTM 4-STABLE
src branch distribution">
ctm-src-4">
CTM -CURRENT
src branch distribution">
ctm-src-cur">
CTM user
discussion">
ctm-users">
FreeBSD CVS commit
message">
cvs-all">
FreeBSD CVS doc
commit">
cvs-doc">
FreeBSD CVS ports
commit">
cvs-ports">
FreeBSD CVS
projects commit">
cvs-projects">
FreeBSD CVS src
commit">
cvs-src">
FreeBSD CVSweb
maintenance">
freebsd-cvsweb">
FreeBSD based
Databases">
freebsd-database">
FreeBSD developers">
FreeBSD documentation
project">
freebsd-doc">
FreeBSD doc/ Committer">
FreeBSD doc/ developers">
FreeBSD-emulation">
freebsd-emulation">
FreeBSD FireWire
(IEEE 1394) discussion">
freebsd-firewire">
FreeBSD filesystem project">
freebsd-fs">
FreeBSD GEOM">
freebsd-geom">
FreeBSD GNOME and
GNOME applications">
freebsd-gnome">
FreeBSD technical
discussions">
freebsd-hackers">
FreeBSD hardware
and equipment">
freebsd-hardware">
FreeBSD mirror sites">
freebsd-hubs">
FreeBSD
internationalization">
freebsd-i18n">
FreeBSD i386-specific
issues">
freebsd-i386">
FreeBSD IA32 porting">
freebsd-ia32">
FreeBSD IA64 porting">
freebsd-ia64">
FreeBSD IPFW code">
freebsd-ipfw">
FreeBSD ISDN">
freebsd-isdn">
FreeBSD Internet service
providers">
freebsd-isp">
FreeBSD Java Language">
freebsd-java">
FreeBSD related employment">
freebsd-jobs">
FreeBSD KDE/Qt and KDE
applications">
freebsd-kde">
FreeBSD LFS porting">
freebsd-lfs">
FreeBSD libh installation
and packaging system">
freebsd-libh">
FreeBSD MIPS porting">
freebsd-mips">
FreeBSD
mirror site administrators">
mirror-announce">
FreeBSD laptop computer">
freebsd-mobile">
FreeBSD port of the
Mozilla browser">
freebsd-mozilla">
FreeBSD
multimedia">
freebsd-multimedia">
FreeBSD networking">
freebsd-net">
FreeBSD new users">
freebsd-newbies">
New Bus Architecture">
freebsd-new-bus">
FreeBSD
OpenOffice">
freebsd-openoffice">
FreeBSD
performance">
freebsd-performance">
FreeBSD Perl">
freebsd-perl">
+
+FreeBSD packet filter mailing list">
+freebsd-pf">
+
FreeBSD non-Intel
platforms porting">
freebsd-platforms">
FreeBSD core team
policy decisions">
freebsd-policy">
FreeBSD ports">
freebsd-ports">
FreeBSD ports/ developers">
FreeBSD
ports bugs">
freebsd-ports-bugs">
FreeBSD ports/ Committer">
FreeBSD PowerPC porting">
freebsd-ppc">
FreeBSD Quality Assurance">
freebsd-qa">
FreeBSD general
questions">
freebsd-questions">
FreeBSD realtime
extensions">
freebsd-realtime">
FreeBSD SCSI subsystem">
freebsd-scsi">
FreeBSD security">
freebsd-security">
FreeBSD security notifications">
freebsd-security-notifications">
FreeBSD-small">
freebsd-small">
FreeBSD symmetric
multiprocessing">
freebsd-smp">
FreeBSD SPARC porting">
freebsd-sparc64">
FreeBSD src/ Committer">
FreeBSD src/ developers">
&os.stable;">
freebsd-stable">
FreeBSD C99 and
POSIX compliance">
freebsd-standards">
FreeBSD test">
freebsd-test">
FreeBSD performance
and stability testing">
freebsd-testing">
FreeBSD threads">
freebsd-threads">
FreeBSD
tokenring">
freebsd-tokenring">
+
+FreeBSD USB">
+freebsd-usb">
+
FreeBSD user group
coordination">
freebsd-user-groups">
FreeBSD vendors
pre-release coordination">
freebsd-vendors">
Diskussion über
die Infrastruktur von VuXML">
freebsd-vuxml">
FreeBSD Webmaster">
freebsd-www">
FreeBSD X11 mailing list">
freebsd-x11">
majordomo@FreeBSD.org">
diff --git a/de_DE.ISO8859-1/share/sgml/newsgroups.ent b/de_DE.ISO8859-1/share/sgml/newsgroups.ent
new file mode 100644
index 0000000000..b3eb855021
--- /dev/null
+++ b/de_DE.ISO8859-1/share/sgml/newsgroups.ent
@@ -0,0 +1,11 @@
+
+
+comp.unix.bsd.freebsd.misc" >
+
diff --git a/de_DE.ISO8859-1/share/sgml/teams.ent b/de_DE.ISO8859-1/share/sgml/teams.ent
index 32d8973cf2..342aef535e 100644
--- a/de_DE.ISO8859-1/share/sgml/teams.ent
+++ b/de_DE.ISO8859-1/share/sgml/teams.ent
@@ -1,44 +1,52 @@
admins@FreeBSD.org">
core-secretary@FreeBSD.org ">
-cvs@FreeBSD.org">
+cvsadm@FreeBSD.org">
cvsup-master@FreeBSD.org">
+dcvs@FreeBSD.org">
+
doceng@FreeBSD.org">
donations@FreeBSD.org">
faq@FreeBSD.org">
ftp-master@FreeBSD.org">
mirror-admin@FreeBSD.org">
+ncvs@FreeBSD.org">
+
+pcvs@FreeBSD.org">
+
portmgr@FreeBSD.org">
+projcvs@FreeBSD.org">
+
re@FreeBSD.org">
security-officer@FreeBSD.org">
www@FreeBSD.org">