6657 lines
259 KiB
XML
6657 lines
259 KiB
XML
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
|
|
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD German Documentation Project
|
|
|
|
$FreeBSD$
|
|
$FreeBSDde: de-docproj/books/handbook/advanced-networking/chapter.sgml,v 1.195 2011/02/23 12:30:43 jkois Exp $
|
|
basiert auf: 1.436
|
|
-->
|
|
|
|
<chapter id="advanced-networking">
|
|
<chapterinfo>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Johann</firstname>
|
|
<surname>Kois</surname>
|
|
<contrib>Übersetzt von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</chapterinfo>
|
|
|
|
<title>Weiterführende Netzwerkthemen</title>
|
|
|
|
<sect1 id="advanced-networking-synopsis">
|
|
|
|
<title>Übersicht</title>
|
|
|
|
<para>Dieses Kapitel beschreibt verschiedene
|
|
weiterführende Netzwerkthemen.</para>
|
|
|
|
<para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Die Grundlagen von Gateways und Routen kennen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>&bluetooth;- sowie drahtlose, der Norm &ieee; 802.11
|
|
entsprechende, Geräte mit FreeBSD verwenden
|
|
können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Eine Bridge unter FreeBSD einrichten können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Einen plattenlosen Rechner über das Netzwerk starten
|
|
können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man NAT (Network Address Translation)
|
|
einrichtet.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Zwei Computer über PLIP verbinden können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>IPv6 auf einem FreeBSD-Rechner einrichten
|
|
können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>ATM einrichten können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>CARP, das Common Address Redundancy Protocol, unter
|
|
&os; einsetzen können.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Bevor Sie dieses Kapitel lesen, sollten Sie</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Die Grundlagen der <filename>/etc/rc</filename>-Skripte
|
|
verstanden haben.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Mit der grundlegenden Netzwerkterminologie vertraut
|
|
sein.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Einen neuen FreeBSD-Kernel konfigurieren und installieren
|
|
können (<xref linkend="kernelconfig"/>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man zusätzliche Softwarepakete von
|
|
Drittherstellern installiert (<xref linkend="ports"/>).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 id="network-routing">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Coranth</firstname>
|
|
<surname>Gryphon</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Gateways und Routen</title>
|
|
|
|
<indexterm>
|
|
<primary>Routing</primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>Gateway</primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>Subnetz</primary>
|
|
</indexterm>
|
|
|
|
<para>Damit 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 <firstterm>Routing</firstterm>
|
|
bezeichnet. Eine <quote>Route</quote> besteht aus einem
|
|
definierten Adressenpaar: Einem <quote>Ziel</quote> und einem
|
|
<quote>Gateway</quote>. Dieses Paar zeigt an, dass Sie
|
|
über das <emphasis>Gateway</emphasis> zum
|
|
<emphasis>Ziel</emphasis> gelangen wollen. Es gibt drei Arten
|
|
von Zielen: Einzelne Rechner (Hosts), Subnetze und das
|
|
<quote>Standard</quote>ziel. Die <quote>Standardroute</quote>
|
|
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 <quote>Links</quote>
|
|
bezeichnet), sowie Ethernet Hardware-Adressen (MAC-Adressen).
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Ein Beispiel</title>
|
|
|
|
<para>Um die verschiedenen Aspekte des Routings zu
|
|
veranschaulichen, verwenden wir folgende Ausgaben von
|
|
<command>netstat</command>:</para>
|
|
|
|
<screen>&prompt.user; <userinput>netstat -r</userinput>
|
|
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
|
|
</screen>
|
|
|
|
<indexterm>
|
|
<primary>Defaultroute</primary>
|
|
</indexterm>
|
|
|
|
<para>Die ersten zwei Zeilen geben die Standardroute (die wir
|
|
im <link linkend="network-routing-default"> nächsten
|
|
Abschnitt</link> behandeln), sowie die
|
|
<hostid>localhost</hostid> Route an.</para>
|
|
|
|
<indexterm>
|
|
<primary>Loopback-Gerät</primary>
|
|
</indexterm>
|
|
|
|
<para>Das in der Routingtabelle für
|
|
<literal>localhost</literal> festgelegte Interface
|
|
(<literal>Netif</literal>-Spalte)
|
|
<devicename>lo0</devicename>, 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.</para>
|
|
|
|
<indexterm>
|
|
<primary>Ethernet</primary>
|
|
<secondary>MAC-Adresse</secondary>
|
|
</indexterm>
|
|
|
|
<para>Der nächste auffällige Punkt sind die mit
|
|
<hostid role="mac">0:e0:</hostid> 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 <hostid>test0</hostid>)
|
|
und fügt eine direkte Route zu diesem Rechner hinzu. Dies
|
|
passiert über die Ethernet-Schnittstelle
|
|
<devicename>ed0</devicename>. Außerdem existiert ein Timeout
|
|
(in der Spalte <literal>Expire</literal>) 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.</para>
|
|
|
|
<indexterm>
|
|
<primary>Subnetz</primary>
|
|
</indexterm>
|
|
|
|
<para>FreeBSD fügt außerdem Subnetzrouten für das
|
|
lokale Subnetz hinzu (<hostid
|
|
role="ipaddr">10.20.30.255</hostid> ist die Broadcast-Adresse
|
|
für das Subnetz <hostid role="ipaddr">10.20.30</hostid>,
|
|
<hostid role="domainname">example.com</hostid> ist der zu
|
|
diesem Subnetz gehörige Domainname). Das Ziel
|
|
<literal>link#1</literal> bezieht sich auf die erste
|
|
Ethernet-Karte im Rechner. Sie können auch feststellen,
|
|
dass keine zusätzlichen Schnittstellen angegeben
|
|
sind.</para>
|
|
|
|
<para>Routen für Rechner im lokalen Netz und lokale
|
|
Subnetze werden automatisch durch den
|
|
<application>routed</application> Daemon konfiguriert. Ist
|
|
dieser nicht gestartet, sind nur statisch definierte
|
|
(explizit eingegebene) Routen vorhanden.</para>
|
|
|
|
<para>Die Zeile <literal>host1</literal> bezieht sich auf
|
|
unseren Rechner, der durch seine Ethernetadresse bekannt ist.
|
|
Da unser Rechner der Sender ist, verwendet FreeBSD automatisch
|
|
das Loopback-Gerät (<devicename>lo0</devicename>),
|
|
anstatt den Datenverkehr über die Ethernetschnittstelle
|
|
zu senden.</para>
|
|
|
|
<para>Die zwei <literal>host2</literal> 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 <literal>=></literal> (nach der
|
|
<devicename>lo0</devicename>-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 <literal>link#1</literal>
|
|
Zeile.</para>
|
|
|
|
<para>Die letzte Zeile (Zielsubnetz <literal>224</literal>)
|
|
behandelt das Multicasting, das wir in einem anderen Abschnitt
|
|
besprechen werden.</para>
|
|
|
|
<para>Schließlich gibt es für Routen noch
|
|
verschiedene Attribute, die Sie in der Spalte
|
|
<literal>Flags</literal> finden. Nachfolgend finden Sie eine
|
|
kurze Übersicht von einigen dieser Flags und ihrer
|
|
Bedeutung:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="4*"/>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>U</entry>
|
|
|
|
<entry>Up: Die Route ist aktiv.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>H</entry>
|
|
|
|
<entry>Host: Das Ziel der Route ist ein einzelner
|
|
Rechner (Host).</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>G</entry>
|
|
|
|
<entry>Gateway: Alle Daten, die an dieses Ziel gesendet
|
|
werden, werden von diesem System an ihr jeweiliges
|
|
Ziel weitergeleitet.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>S</entry>
|
|
|
|
<entry>Static: Diese Route wurde manuell konfiguriert,
|
|
das heißt sie wurde <emphasis>nicht</emphasis>
|
|
automatisch vom System erzeugt.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>C</entry>
|
|
|
|
<entry>Clone: 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.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>W</entry>
|
|
|
|
<entry>WasCloned: Eine Route, die automatisch
|
|
konfiguriert wurde. Sie basiert auf einer lokalen
|
|
Netzwerkroute (Clone).</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>L</entry>
|
|
|
|
<entry>Link: Die Route beinhaltet einen Verweis auf eine
|
|
Ethernetkarte (MAC-Adresse).</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
|
|
<sect2 id="network-routing-default">
|
|
<title>Standardrouten</title>
|
|
|
|
<indexterm>
|
|
<primary>Defaultroute</primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Standardroute</primary>
|
|
<see>Defaultroute</see>
|
|
</indexterm>
|
|
|
|
<para>Wenn 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
|
|
(<foreignphrase>Cloned route</foreignphrase>), dann versucht der
|
|
lokale Rechner über diese Schnittstelle eine Verbindung
|
|
herzustellen.</para>
|
|
|
|
<para>Wenn alle bekannten Pfade nicht funktionieren, hat der
|
|
lokale Rechner eine letzte Möglichkeit: Die
|
|
Standardroute (Defaultroute). Bei dieser
|
|
Route handelt es sich um eine spezielle Gateway-Route
|
|
(gewöhnlich die einzige im System vorhandene), die im
|
|
Flags-Feld immer mit <literal>C</literal> gekennzeichnet ist.
|
|
Für Rechner im lokalen Netzwerk ist dieses Gateway auf
|
|
<emphasis>welcher Rechner auch immer eine Verbindung nach
|
|
außen hat</emphasis> gesetzt (entweder über eine
|
|
PPP-Verbindung, DSL, ein Kabelmodem, T1 oder eine beliebige
|
|
andere Netzwerkverbindung).</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Sehen wir uns ein Beispiel für Standardrouten an. So
|
|
sieht eine übliche Konfiguration aus:</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="advanced-networking/net-routing"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced">
|
|
[Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW]
|
|
</literallayout>
|
|
</textobject>
|
|
</mediaobject>
|
|
|
|
<para>Die Rechner <hostid>Local1</hostid> und
|
|
<hostid>Local2</hostid> befinden sich auf Ihrer Seite.
|
|
<hostid>Local1</hostid> 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.</para>
|
|
|
|
<para>Die Standardrouten für Ihre Maschinen lauten:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Host</entry>
|
|
|
|
<entry>Standard Gateway</entry>
|
|
|
|
<entry>Schnittstelle</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>Local2</entry>
|
|
|
|
<entry>Local1</entry>
|
|
|
|
<entry>Ethernet</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Local1</entry>
|
|
|
|
<entry>T1-GW</entry>
|
|
|
|
<entry>PPP</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Eine häufig gestellte Frage lautet: <quote>Warum (oder
|
|
wie) sollten wir <hostid>T1-GW</hostid> als Standard-Gateway
|
|
für <hostid>Local1</hostid> setzen, statt den (direkt
|
|
verbundenen) ISP-Server zu verwenden?</quote>.</para>
|
|
|
|
<para>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 <hostid>T1-GW</hostid> erreichen
|
|
können! Es ist also unnötig, einen Zwischenschritt
|
|
über den ISP-Server zu machen.</para>
|
|
|
|
<para>Es ist üblich, die Adresse <hostid
|
|
role="ipaddr">X.X.X.1</hostid> als Gateway-Adresse für
|
|
ihr lokales Netzwerk zu verwenden. Für unser Beispiel
|
|
bedeutet dies Folgendes: Wenn Ihr lokaler Klasse-C-Adressraum
|
|
<hostid role="ipaddr">10.20.30</hostid> ist und Ihr ISP
|
|
<hostid role="ipaddr">10.9.9</hostid> verwendet, sehen die
|
|
Standardrouten so aus:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Rechner (Host)</entry>
|
|
|
|
<entry>Standardroute</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>Local2 (10.20.30.2)</entry>
|
|
|
|
<entry>Local1 (10.20.30.1)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Local1 (10.20.30.1, 10.9.9.30)</entry>
|
|
|
|
<entry>T1-GW (10.9.9.1)</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Sie können die Standardroute ganz einfach in der Datei
|
|
<filename>/etc/rc.conf</filename> festlegen. In unserem
|
|
Beispiel wurde auf dem Rechner <hostid>Local2</hostid>
|
|
folgende Zeile in <filename>/etc/rc.conf</filename>
|
|
eingefügt:</para>
|
|
|
|
<programlisting>defaultrouter="10.20.30.1"</programlisting>
|
|
|
|
<para>Die Standardroute kann über &man.route.8; auch direkt
|
|
gesetzt werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>route add default 10.20.30.1</userinput></screen>
|
|
|
|
<para>Weitere Informationen zum Bearbeiten von
|
|
Netzwerkroutingtabellen finden Sie in &man.route.8;.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-dual-homed-hosts">
|
|
<title>Rechner mit zwei Heimatnetzen</title>
|
|
<indexterm>
|
|
<primary>Dual-Homed-Hosts</primary>
|
|
</indexterm>
|
|
|
|
<para>Es 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>In beiden Fällen werden Routingtabellen erstellt,
|
|
damit jedes Subnetz weiß, dass dieser Rechner als Gateway
|
|
zum anderen Subnetz arbeitet (<foreignphrase>inbound
|
|
route</foreignphrase>). 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.
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-dedicated-router">
|
|
<title>Einen Router konfigurieren</title>
|
|
|
|
<indexterm>
|
|
<primary>Router</primary>
|
|
</indexterm>
|
|
|
|
<para>Ein 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:</para>
|
|
|
|
<programlisting>gateway_enable="YES" # Auf YES setzen, wenn der Rechner als Gateway arbeiten soll</programlisting>
|
|
|
|
<para>Diese Option setzt die &man.sysctl.8;-Variable
|
|
<varname>net.inet.ip.forwarding</varname> auf
|
|
<literal>1</literal>. Wenn Sie das Routing kurzzeitig
|
|
unterbrechen wollen, können Sie die Variable auf
|
|
<literal>0</literal> setzen.</para>
|
|
|
|
<indexterm><primary>BGP</primary></indexterm>
|
|
<indexterm><primary>RIP</primary></indexterm>
|
|
<indexterm><primary>OSPF</primary></indexterm>
|
|
|
|
<para>Ihr 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
|
|
<filename role="package">net/zebra</filename>
|
|
unterstützt. Es stehen auch kommerzielle Produkte
|
|
wie <application>gated</application> zur Verfügung.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-static-routes">
|
|
<sect2info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Al</firstname>
|
|
<surname>Hoang</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect2info>
|
|
|
|
<title>Statische Routen einrichten</title>
|
|
|
|
<sect3>
|
|
<title>Manuelle Konfiguration</title>
|
|
|
|
<para>Nehmen wir an, dass wir über folgendes Netzwerk
|
|
verfügen:</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="advanced-networking/static-routes"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced">
|
|
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
|
|
</literallayout>
|
|
</textobject>
|
|
</mediaobject>
|
|
|
|
<para><hostid>RouterA</hostid>, ein &os;-Rechner, dient als
|
|
Router für den Zugriff auf das Internet. Die
|
|
Standardroute ist auf <hostid role="ipaddr">10.0.0.1</hostid>
|
|
gesetzt, damit ein Zugriff auf das Internet möglich wird.
|
|
Wir nehmen nun an, dass <hostid>RouterB</hostid> bereits
|
|
konfiguriert ist und daher weiß, wie er andere Rechner
|
|
erreichen kann. Dazu wird die Standardroute von
|
|
<hostid>RouterB</hostid> auf
|
|
<hostid role="ipaddr">192.168.1.1</hostid> gesetzt, da dieser
|
|
Rechner als Gateway fungiert.</para>
|
|
|
|
<para>Sieht man sich die Routingtabelle für
|
|
<hostid>RouterA</hostid> an, erhält man folgende Ausgabe:
|
|
</para>
|
|
|
|
<screen>&prompt.user; <userinput>netstat -nr</userinput>
|
|
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 xl1</screen>
|
|
|
|
<para>Mit dieser Routingtabelle kann <hostid>RouterA</hostid>
|
|
unser internes Netz 2 nicht erreichen, da keine Route zum
|
|
Rechner <hostid role="ipaddr">192.168.2.0/24</hostid>
|
|
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
|
|
<hostid>RouterA</hostid> aufgenommen, indem
|
|
<hostid role="ipaddr">192.168.1.2</hostid> als nächster
|
|
Zwischenschritt verwenden wird:</para>
|
|
|
|
<screen>&prompt.root; <userinput>route add -net 192.168.2.0/24 192.168.1.2</userinput></screen>
|
|
|
|
<para>Ab sofort kann <hostid>RouterA</hostid> alle Rechner des
|
|
Netzwerks <hostid role="ipaddr">192.168.2.0/24</hostid>
|
|
erreichen.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Routen dauerhaft einrichten</title>
|
|
|
|
<para>Das 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 <filename>/etc/rc.conf</filename> eingetragen:</para>
|
|
|
|
<programlisting># Add Internal Net 2 as a static route
|
|
static_routes="internalnet2"
|
|
route_internalnet2="-net 192.168.2.0/24 192.168.1.2"</programlisting>
|
|
|
|
<para>Die Variable <literal>static_routes</literal> enthält
|
|
eine Reihe von Strings, die durch Leerzeichen getrennt sind.
|
|
Jeder String bezieht sich auf den Namen einer Route. In
|
|
unserem Beispiel hat <literal>static_routes</literal>
|
|
<replaceable>internalnet2</replaceable> als einzigen String.
|
|
Zusätzlich verwendet man die Konfigurationsvariable
|
|
<literal>route_<replaceable>internalnet2</replaceable></literal>,
|
|
in der alle sonstigen an &man.route.8; zu übergebenden
|
|
Parameter festgelegt werden. In obigen Beispiel hätte
|
|
man folgenden Befehl verwendet:</para>
|
|
|
|
<screen>&prompt.root; <userinput>route add -net 192.168.2.0/24 192.168.1.2</userinput></screen>
|
|
|
|
<para>Daher wird
|
|
<literal>"-net 192.168.2.0/24 192.168.1.2"</literal> als
|
|
Parameter der Variable <literal>route_</literal> angegeben.
|
|
</para>
|
|
|
|
<para>Wie bereits erwähnt, können bei
|
|
<literal>static_routes</literal> 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
|
|
<hostid role="ipaddr">192.168.0.0/24</hostid> sowie <hostid
|
|
role="ipaddr">192.168.1.0/24</hostid> definiert:</para>
|
|
|
|
<programlisting>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"</programlisting>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="network-routing-propagation">
|
|
<title>Verteilung von Routing-Informationen</title>
|
|
<indexterm>
|
|
<primary>routing propagation</primary>
|
|
</indexterm>
|
|
|
|
<para>Wir haben bereits darüber gesprochen, wie wir unsere
|
|
Routen zur Außenwelt definieren, aber nicht darüber,
|
|
wie die Außenwelt uns finden kann.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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?</para>
|
|
|
|
<para>Es gibt ein System (ähnlich dem verbreiteten DNS),
|
|
das alle zugewiesenen Adressräume verwaltet und ihre
|
|
Verbindung zum Internet-Backbone definiert und dokumentiert.
|
|
Der <quote>Backbone</quote> 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.</para>
|
|
|
|
<para>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
|
|
<emphasis>Bekanntmachung von Routen</emphasis>
|
|
(<foreignphrase>routing propagation</foreignphrase>)
|
|
bezeichnet.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-routing-troubleshooting">
|
|
<title>Problembehebung</title>
|
|
<indexterm>
|
|
<primary><command>traceroute</command></primary>
|
|
</indexterm>
|
|
|
|
<para>Manchmal 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;).</para>
|
|
|
|
<para>&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).</para>
|
|
|
|
<para>Weitere Informationen finden Sie in
|
|
&man.traceroute.8;.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-routing-multicast">
|
|
<title>Multicast-Routing</title>
|
|
<indexterm>
|
|
<primary>Multicast-Routing</primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Kerneloptionen</primary>
|
|
<secondary>MROUTING</secondary>
|
|
</indexterm>
|
|
|
|
<para>&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:</para>
|
|
|
|
<programlisting>options MROUTING</programlisting>
|
|
|
|
<para>Zusätzlich muss &man.mrouted.8;, der
|
|
Multicast-Routing-Daemon, über die Datei
|
|
<filename>/etc/mrouted.conf</filename> eingerichtet werden,
|
|
um Tunnel und <acronym>DVMRP</acronym> zu aktivieren. Weitere
|
|
Informationen zu diesem Thema finden Sie in
|
|
&man.mrouted.8;.</para>
|
|
|
|
<note>
|
|
<para>&man.mrouted.8;, der Multicast Routing Daemon,
|
|
verwendet das <acronym>DVMRP</acronym> Multicast Routing
|
|
Protocol, das inzwischen in den meisten Multicast-Installationen
|
|
durch &man.pim.4; ersetzt wurde. &man.mrouted.8; sowie die
|
|
damit in Verbindung stehenden Werkzeuge &man.map-mbone.8; und
|
|
&man.mrinfo.8;können über die &os;-Ports-Sammlung
|
|
(genauer den Port <filename
|
|
role="package">net/mrouted</filename>) installiert werden.</para>
|
|
</note>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-wireless">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<othername>Loader</othername>
|
|
</author>
|
|
|
|
<author>
|
|
<firstname>Marc</firstname>
|
|
<surname>Fonvieille</surname>
|
|
</author>
|
|
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Drahtlose Netzwerke</title>
|
|
|
|
<indexterm><primary>Netzwerke, drahtlos</primary></indexterm>
|
|
<indexterm>
|
|
<primary>802.11</primary>
|
|
<see>drahtlose Netzwerke</see>
|
|
</indexterm>
|
|
|
|
<sect2>
|
|
<title>Grundlagen</title>
|
|
|
|
<para>Die meisten drahtlosen Netzwerke basieren auf dem
|
|
Standard &ieee; 802.11. Sie bestehen aus Stationen, die
|
|
in der Regel im 2,4 GHz- oder im 5 GHz-Band
|
|
miteinander kommunizieren. Es ist aber auch
|
|
möglich, dass regional andere Frequenzen,
|
|
beispielsweise im 2,3 GHz- oder 4,9 GHz-Band,
|
|
verwendet werden.</para>
|
|
|
|
<para>802.11-Netzwerke können auf zwei verschiedene
|
|
Arten aufgebaut sein: Im
|
|
<emphasis>Infrastruktur-Modus</emphasis> agiert eine
|
|
Station als Master, mit dem sich alle anderen Stationen
|
|
verbinden. Die Summe aller Stationen wird als BSS
|
|
(Basic Service Set), die Master-Station hingegen als
|
|
Access Point (AP) bezeichnet. In einem BSS läuft
|
|
jedwede Kommunikation über den Access Point. Die
|
|
zweite Form drahtloser Netzwerke sind die sogenannten
|
|
<emphasis>Ad-hoc-Netzwerke</emphasis> (auch als IBSS
|
|
bezeichnet), in denen es keinen Access Point gibt und
|
|
in denen die Stationen direkt miteinander
|
|
kommunizieren.</para>
|
|
|
|
<para>Die ersten 802.11-Netzwerke arbeiteten im
|
|
2,4 GHz-Band und nutzten dazu Protokolle der
|
|
&ieee;-Standards 802.11 sowie 802.11b. Diese Standards
|
|
legen unter anderem Betriebsfrequenzen sowie Merkmale
|
|
des MAC-Layers (wie Frames und Transmissionsraten) fest.
|
|
Später kam der Standard 802.11a hinzu, der im
|
|
5 GHz-Band, im Gegensatz zu den ersten beiden
|
|
Standards aber mit unterschiedlichen Signalmechanismen
|
|
und höheren Transmissionsraten arbeitet. Der
|
|
neueste Standard 802.11g implementiert die Signal- und
|
|
Transmissionsmechanismen von 802.11a im 2,4 GHz-Band,
|
|
ist dabei aber abwärtskompatibel zu
|
|
802.11b-Netzwerken.</para>
|
|
|
|
<para>Unabhängig von den zugrundeliegenden
|
|
Transportmechanismen verfügen 802.11-Netzwerke
|
|
über diverse Sicherheitsmechanismen. Der
|
|
ursprüngliche 802.11-Standard definierte lediglich
|
|
ein einfaches Sicherheitsprotokoll namens WEP. Dieses
|
|
Protokoll verwendet einen fixen (gemeinsam verwendeten)
|
|
Schlüssel sowie die RC4-Kryptografie-Chiffre,
|
|
um Daten verschlüsselt über das drahtlose
|
|
Netzwerk zu senden. Alle Stationen des Netzwerks
|
|
müssen sich auf den gleichen fixen Schlüssel
|
|
einigen, um miteinander kommunizieren zu können. Dieses
|
|
Schema ist sehr leicht zu knacken und wird deshalb heute
|
|
kaum mehr eingesetzt. Aktuelle Sicherheitsmechanismen
|
|
bauen auf dem Standard &ieee; 802.11i auf, der neue
|
|
kryptografische Schlüssel (Chiffren), ein neues
|
|
Protokoll für die Anmeldung von Stationen an einem
|
|
Access Point, sowie Mechanismen zum Austausch von
|
|
Schlüsseln als Vorbereitung der Kommunikation zwischen
|
|
verschiedenen Geräten festlegt. Kryptografische
|
|
Schlüssel werden regelmäßig getauscht.
|
|
Außerdem gibt es Mechanismen, um Einbruchsversuche
|
|
zu entdecken (und Gegenmaßnahmen ergreifen zu können).
|
|
Ein weiteres häufig verwendetes Sicherheitsprotokoll ist
|
|
WPA. Dabei handelt es sich um einen Vorläufer von 802.11i,
|
|
der von einem Industriekonsortium als Zwischenlösung bis
|
|
zur endgültigen Verabschiedung von 802.11i entwickelt
|
|
wurde. WPA definiert eine Untergruppe der Anforderungen des
|
|
802.11i-Standards und ist für den Einsatz in älterer
|
|
Hardware vorgesehen. WPA benötigt nur den (auf dem
|
|
ursprünglichen WEP-Code basierenden) TKIP-Chiffre. 802.11i
|
|
erlaubt zwar auch die Verwendung von TKIP, fordert aber
|
|
zusätzlich eine stärkere Chiffre (AES-CCM)
|
|
für die Datenverschlüsselung. (AES war für
|
|
WPA nicht vorgesehen, weil man es als zu rechenintensiv
|
|
für den Einsatz in älteren Geräten ansah.)</para>
|
|
|
|
<para>Neben den weiter oben erwähnten Standards ist auch
|
|
der Standard 802.11e von großer Bedeutung. Dieser
|
|
definiert Protokolle zur Übertragung von
|
|
Multimedia-Anwendungen wie das Streaming von Videodateien
|
|
oder Voice-over-IP (VoIP) in einem 802.11-Netzwerk. Analog
|
|
zu 802.11i verfügt auch 802.11e über eine
|
|
vorläufige Spezifikation namens WMM (ursprünglich
|
|
WME), die von einem Industriekonsortium als Untergruppe
|
|
von 802.11e spezifiziert wurde, um Multimedia-Anwendungen
|
|
bereits vor der endgültigen Verabschiedung des
|
|
802.11e-Standards implementieren zu können. 802.11e
|
|
sowie WME/WMM erlauben eine Prioritätenvergabe beim
|
|
Datentransfer im einem drahtlosen Netzwerk. Möglich
|
|
wird dies durch den Einsatz von Quality of Service-Protokollen
|
|
(QoS) und erweiterten Medienzugriffsprotokollen. Werden
|
|
diese Protokolle korrekt implementiert, erlauben sie daher
|
|
hohe Datenübertragungsraten und einen priorisierten
|
|
Datenfluss.</para>
|
|
|
|
<para>&os; unterstützt die Standards
|
|
802.11a, 802.11b, sowie 802.11g. Ebenfalls unterstützt
|
|
werden WPA sowie die Sicherheitsprotokolle gemäß
|
|
802.11i (dies sowohl für 11a, 11b als auch 11g). QoS und
|
|
Verkehrspriorisierung, die von den WME/WMM-Protokollen
|
|
benötigt werden, werden ebenfalls (allerdings nicht
|
|
für alle drahtlosen Geräte) unterstützt.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-wireless-basic">
|
|
<title>Basiskonfiguration</title>
|
|
|
|
<sect3>
|
|
<title>Kernelkonfiguration</title>
|
|
|
|
<para>Um ein drahtloses Netzwerk zu nutzen, benötigen
|
|
Sie eine drahtlose Netzwerkkarte und einen Kernel, der
|
|
drahtlose Netzwerke unterstützt. Der &os;-Kernel
|
|
unterstützt den Einsatz von Kernelmodulen. Daher
|
|
müssen Sie nur die Unterstützung für die
|
|
von Ihnen verwendeten Geräte aktivieren.</para>
|
|
|
|
<para>Als Erstes benötigen Sie ein drahtloses Gerät.
|
|
Die meisten drahtlosen Geräte verwenden Bauteile von
|
|
Atheros und werden deshalb vom &man.ath.4;-Treiber
|
|
unterstützt. Um diesen Treiber zu verwenden,
|
|
nehmen Sie die folgende Zeile in die Datei
|
|
<filename>/boot/loader.conf</filename> auf:</para>
|
|
|
|
<programlisting>if_ath_load="YES"</programlisting>
|
|
|
|
<para>Der Atheros-Treiber besteht aus drei Teilen:
|
|
dem Treiber selbst (&man.ath.4;), dem
|
|
Hardware-Support-Layer für die
|
|
chip-spezifischen Funktionen (&man.ath.hal.4;)
|
|
sowie einem Algorithmus zur Auswahl der korrekten
|
|
Frame-Übertragungsrate (ath_rate_sample).
|
|
Wenn Sie die Unterstützung für diesen
|
|
Treiber als Kernelmodul laden, kümmert sich
|
|
dieses automatisch um diese Aufgaben. Verwenden
|
|
Sie ein Nicht-Atheros-Gerät, so müssen
|
|
Sie hingegen das für dieses Gerät geeignete
|
|
Modul laden, beispielsweise</para>
|
|
|
|
<programlisting>if_wi_load="YES"</programlisting>
|
|
|
|
<para>für Geräte, die auf Bauteilen von
|
|
Intersil Prism basieren und daher den Treiber
|
|
&man.wi.4; voraussetzen.</para>
|
|
|
|
<note>
|
|
<para>In den folgenden Abschnitten wird der
|
|
&man.ath.4;-Treiber verwendet. Verwenden Sie ein
|
|
anderes Gerät, müssen Sie diesen Wert
|
|
daher an Ihre Konfiguration anpassen. Eine Liste aller
|
|
verfügbaren Treiber und unterstützten
|
|
drahtlosen Geräte finden sich in den &os;
|
|
Hardware Notes. Diese sind für verschiedene
|
|
Releases und Architekturen auf der Seite <ulink
|
|
url="http://www.FreeBSD.org/releases/index.html">
|
|
Release Information</ulink> der &os; Homepage. Gibt es
|
|
keinen nativen &os;-Treiber für Ihr drahtloses
|
|
Gerät, können Sie möglicherweise mit
|
|
<link linkend="config-network-ndis">NDIS</link> einen
|
|
&windows;-Treiber verwenden.</para>
|
|
</note>
|
|
|
|
<para>Unter &os; 7.X benötigen Sie zusätlich
|
|
zum korrekten Treiber auch die Unterstützung
|
|
für 802.11-Netzwerke. Für
|
|
den &man.ath.4;-Treiber werden dazu mindestens die
|
|
Module &man.wlan.4;, <literal>wlan_scan_ap</literal>
|
|
sowie <literal>wlan_scan_sta</literal> benötigt.
|
|
Das &man.wlan.4;-Kernelmodul wird automatisch mit dem
|
|
Treiber des drahtlosen Geräts geladen, die beiden
|
|
anderen Module werden jeweils durch einen Eintrag in der
|
|
Datei <filename>/boot/loader.conf</filename> beim Systemstart
|
|
geladen:</para>
|
|
|
|
<programlisting>wlan_scan_ap_load="YES"
|
|
wlan_scan_sta_load="YES"</programlisting>
|
|
|
|
<para>Ab &os; 8.0 sind diese Module Teil des
|
|
&man.wlan.4;-Treibers und werden bei Bedarf automatisch
|
|
geladen.</para>
|
|
|
|
<para>Zusätzlich
|
|
benötigen Sie noch Module zur Verschlüsselung
|
|
ihres drahtlosen Netzwerks. Diese werden normalerweise
|
|
dynamisch vom &man.wlan.4;-Modul geladen. Im folgenden
|
|
Beispiel erfolgt allerdings eine manuelle Konfiguration.
|
|
Folgende Module sind verfügbar: &man.wlan.wep.4;,
|
|
&man.wlan.ccmp.4; sowie &man.wlan.tkip.4;. Sowohl
|
|
&man.wlan.ccmp.4; als auch &man.wlan.tkip.4; werden nur
|
|
benötigt, wenn Sie WPA und/oder die Sicherheitsprotokolle
|
|
von 802.11i verwenden wollen. Wollen Sie Ihr Netzwerk
|
|
hingegen ohne Verschlüsselung betreiben,
|
|
benötigen Sie nicht einmal
|
|
die &man.wlan.wep.4;-Unterstützung. Um alle drei
|
|
Module beim Systemstart zu laden, fügen Sie folgende
|
|
Zeilen in die Datei <filename>/boot/loader.conf</filename>
|
|
ein:</para>
|
|
|
|
<programlisting>wlan_wep_load="YES"
|
|
wlan_ccmp_load="YES"
|
|
wlan_tkip_load="YES"</programlisting>
|
|
|
|
<para>Um diese neuen Einträge in der Datei
|
|
<filename>/boot/loader.conf</filename> zu aktivieren, müssen
|
|
Sie Ihr &os;-System neu starten. Alternativ können Sie
|
|
die Kernelmodule aber auch manuell mit &man.kldload.8; laden.</para>
|
|
|
|
<note>
|
|
<para>Wollen Sie keine Kernelmodule verwenden, können
|
|
Sie die benötigten Treiber auch in Ihren Kernel
|
|
kompilieren. Daz nehmen Sie folgende Zeilen in Ihre
|
|
Kernelkonfigurationsdatei auf:</para>
|
|
|
|
<programlisting>device wlan # 802.11 support
|
|
device wlan_wep # 802.11 WEP support
|
|
device wlan_ccmp # 802.11 CCMP support
|
|
device wlan_tkip # 802.11 TKIP support
|
|
device wlan_amrr # AMRR transmit rate control algorithm
|
|
device ath # Atheros pci/cardbus NIC's
|
|
device ath_hal # pci/cardbus chip support
|
|
options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors
|
|
device ath_rate_sample # SampleRate tx rate control for ath</programlisting>
|
|
|
|
<para>Verwenden Sie &os; 7.X, müssen Sie auch die beiden
|
|
Module <literal>wlan_scan_ap</literal> und
|
|
<literal>wlan_scan_sta</literal> in den Kernel aufnehmen (unter
|
|
&os; 8.X ist dies hingegen nicht mehr notwendig):</para>
|
|
|
|
<programlisting>device wlan_scan_ap # 802.11 AP mode scanning
|
|
device wlan_scan_sta # 802.11 STA mode scanning</programlisting>
|
|
|
|
<para>Danach bauen Sie den neuen Kernel und starten Ihr
|
|
&os;-System neu.</para>
|
|
</note>
|
|
|
|
<para>Während des Systemstarts sollten nun einige
|
|
Informationen ähnlich den folgenden über das von
|
|
Ihnen verwendete drahtlose Gerät ausgegeben
|
|
werden:</para>
|
|
|
|
<screen>ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus1
|
|
ath0: [ITHREAD]
|
|
ath0: AR2413 mac 7.9 RF2413 phy 4.5</screen>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Infrastruktur-Modus</title>
|
|
|
|
<para>Drahtlose Netzwerke werden in der Regel im
|
|
Infrastruktur-Modus (auch BSS-Modus genannt) betrieben.
|
|
Dazu werden mehrere drahtlose Access Points zu einem
|
|
gemeinsamen drahtlosen Netzwerk verbunden. Jedes dieser
|
|
drahtlosen Netzwerke hat einen eigenen Namen, der als
|
|
<emphasis>SSID</emphasis> bezeichnet wird. Alle Clients
|
|
eines drahtlosen Netzwerks verbinden sich in diesem Modus
|
|
mit einem Access Point.</para>
|
|
|
|
<sect3>
|
|
<title>&os;-Clients</title>
|
|
|
|
<sect4>
|
|
<title>Einen Access Point finden</title>
|
|
|
|
<para>Um nach drahtlosen Netzwerken zu suchen verwenden Sie
|
|
<command>ifconfig</command>. Dieser Scanvorgang kann einige
|
|
Zei in Anspruch nehmen, da dazu jede verfügbare
|
|
Frequenz auf verfügbare Access Points hin
|
|
überprüft werden muss. Um die Suche zu starten,
|
|
müssen Sie als Super-User angemeldet sein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>ath0</replaceable></userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> up scan</userinput>
|
|
SSID/MESH ID BSSID CHAN RATE S:N INT CAPS
|
|
dlinkap 00:13:46:49:41:76 11 54M -90:96 100 EPS WPA WME
|
|
freebsdap 00:11:95:c3:0d:ac 1 54M -83:96 100 EPS WPA</screen>
|
|
|
|
<note>
|
|
<para>Ihre Netzwerkkarte muss in den Status
|
|
<option>up</option> versetzt werden, bevor Sie den ersten
|
|
Scanvorgang starten können. Für spätere
|
|
Scans ist dies aber nicht mehr erforderlich.</para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>Unter &os; 7.X wird der Gerätetreiber,
|
|
beispielsweise
|
|
<devicename><replaceable>ath0</replaceable></devicename>,
|
|
direkt verwendet, anstatt auf das allgemeine Gerät
|
|
<devicename>wlan<replaceable>0</replaceable></devicename>
|
|
zuzugreifen. Verwenden Sie also &os; 7.X, müssen
|
|
Sie die beiden Befehle im vorigen Beispiel durch den
|
|
folgenden Befehl ersetzen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>ath0</replaceable> up scan</userinput></screen>
|
|
|
|
<para>Dies gilt auch für alle weiteren Ausführungen
|
|
in diesem Kapitel. Unter &os; 7.X müssen analog
|
|
alle Befehle und Konfigurationsdateien/Zeilen entsprechend
|
|
angepasst werden.</para>
|
|
</note>
|
|
|
|
<para>Als Ergebnis erhalten Sie eine Liste mit allen
|
|
gefundenen BSS/IBSS-Netzwerken. Zusätzlich zur
|
|
<literal>SSID</literal> (dem Namen des Netzwerks) wird
|
|
auch die <literal>BSSID</literal> ausgegeben. Dabei
|
|
handelt es sich um MAC-Adresse des Access Points. Das
|
|
Feld <literal>CAPS</literal> gibt den Typ des Netzwerks
|
|
sowie die Fähigkeiten der Stationen innerhalb des
|
|
Netzwerks an:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>E</literal></term>
|
|
|
|
<listitem>
|
|
<para>Extended Service Set (ESS). Zeigt an, dass die
|
|
Station Teil eines Infrastruktur-Netzwerks ist (und
|
|
nicht eines IBSS/Ad-hoc-Netzwerks).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>I</literal></term>
|
|
|
|
<listitem>
|
|
<para>IBSS/Ad-hoc-Netzwerk. Die Station ist Teil eines
|
|
Ad-hoc-Netzwerks (und nicht eines
|
|
ESS-Netzwerks).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>P</literal></term>
|
|
|
|
<listitem>
|
|
<para>Privacy. Alle Datenframes, die innerhalb des
|
|
BSS ausgetauscht werden, sind verschlüsselt.
|
|
Dieses BSS verwendet dazu kryptografische Verfahren
|
|
wie WEP, TKIP oder AES-CCMP.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>S</literal></term>
|
|
|
|
<listitem>
|
|
<para>Short Preamble. Das Netzwerk verwendet eine
|
|
kurze Präambel (definiert in 802.11b High
|
|
Rate/DSSS PHY). Eine kurze Präambel verwendet
|
|
ein 56 Bit langes Sync-Feld (im Gegensatz
|
|
zu einer langen Präambel, die ein
|
|
128 Bit langes Sync-Feld verwendet).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>s</literal></term>
|
|
|
|
<listitem>
|
|
<para>Short slot time. Das 802.11g-Netzwerk verwendet
|
|
eine kurze Slotzeit, da es in diesem Netzwerk keine
|
|
veralteten (802.11b) Geräte gibt.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Um eine Liste der bekannten Netzwerke auszugeben,
|
|
verwenden Sie den folgenden Befehl:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> list scan</userinput></screen>
|
|
|
|
<para>Diese Liste kann entweder automatisch durch das
|
|
drahtlose Gerät oder manuell durch eine
|
|
<option>scan</option>-Aufforderung aktualisiert werden.
|
|
Veraltete Informationen werden dabei automatisch
|
|
entfernt.</para>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Basiseinstellungen</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt, wie Sie ein einfaches
|
|
drahtloses Netzerk ohne Verschlüsselung unter &os;
|
|
einrichten. Nachdem Sie sich mit den Informationen dieses
|
|
Abschnitts vertraut gemacht haben, sollten Sie Ihr
|
|
drahtloses Netzwerk mit <link
|
|
linkend="network-wireless-wpa">WPA</link>
|
|
verschlüsseln.</para>
|
|
|
|
<para>Das Einrichten eines drahtlosen Netzwerks erfolgt
|
|
in drei Schritten: Der Auswahl eines Access Points, der
|
|
Anmeldung Ihrer Station sowie der Konfiguration Ihrer
|
|
IP-Adresse.</para>
|
|
|
|
<sect5>
|
|
<title>Einen Access Point auswählen</title>
|
|
|
|
<para>Im Normalfall wird sich Ihre Station automatisch mit
|
|
einem der zur Verfügung stehenden Access Points
|
|
verbinden. Sie müssen dazu lediglich Ihr
|
|
drahtloses Gerät aktivieren. Alternativ können
|
|
Sie auch einen Eintrag ähnlich dem folgenden in
|
|
<filename>/etc/rc.conf</filename> aufnehmen:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="DHCP"</programlisting>
|
|
|
|
<note>
|
|
<para>Wie bereits erwähnt, benötigen Sie unter
|
|
&os; 7.X anstelle dieser beiden Zeilen nur eine
|
|
Zeile (mit dem entsprechenden Gerätetreiber):</para>
|
|
|
|
<programlisting>ifconfig_ath0="DHCP"</programlisting>
|
|
</note>
|
|
|
|
<para>Wollen Sie sich hingegen mit einem bestimmten
|
|
Access Point verbinden, müssen Sie dessen
|
|
SSID angeben:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="ssid <replaceable>Ihre_SSID</replaceable> DHCP"</programlisting>
|
|
|
|
<para>Gibt es in Ihrem Netzwerk mehrere Access Points
|
|
mit der gleichen SSID (was der Einfachheit wegen
|
|
häufig der Fall ist), können Sie sich dennoch
|
|
mit einem bestimmten Access Point verbinden. Dazu
|
|
müssen Sie lediglich die BSSID des Access Points
|
|
angeben (die Angabe der SSID ist in diesem Fall nicht
|
|
erforderlich):</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="ssid <replaceable>Ihre_SSID</replaceable> bssid <replaceable>xx:xx:xx:xx:xx:xx</replaceable> DHCP"</programlisting>
|
|
|
|
<para>Es gibt noch weitere Möglichkeiten, den Zugriff
|
|
auf bestimmte Access Point zu beschränken,
|
|
beispielsweise durch die Begrenzung der Frequenzen, auf
|
|
denen eine Station nach einem Access Point sucht. Sinnvoll
|
|
ist ein solches Vorgehen beispielsweise, wenn Ihr
|
|
drahtloses Gerät in verschiedenen Frequenzbereichen
|
|
arbeiten kann, da in diesem Fall das Prüfen aller
|
|
Frequenzen sehr zeitintensiv ist. Um nur innerhalb eines
|
|
bestimmten Frequenzbereichs nach einem Access Point zu
|
|
suchen, verwenden Sie die Option <option>mode</option>:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="mode <replaceable>11g</replaceable> ssid <replaceable>Ihre_SSID</replaceable> DHCP"</programlisting>
|
|
|
|
<para>Dadurch sucht Ihr drahtloses Gerät nur im
|
|
2,4 GHz-Band (802.11g), aber nicht innerhalb des
|
|
5 GHz-Bandes nach einem Access Point. Mit der
|
|
Option <option>channel</option> können Sie eine
|
|
bestimmte Frequenz vorgeben, auf der gesucht werden
|
|
soll. Die Option <option>chanlist</option> erlaubt
|
|
die Angabe mehrerer erlaubter Frequenzen. Eine
|
|
umfassende Beschreibung dieser Optionen finden Sie in
|
|
der Manualpage &man.ifconfig.8;.</para>
|
|
</sect5>
|
|
|
|
<sect5>
|
|
<title>Authentifizierung</title>
|
|
|
|
<para>Wenn Sie einen Access Point gefunden haben, muss
|
|
sich Ihrem Station am Access Point anmelden, bevor
|
|
Sie Daten übertragen kann. Dazu gibt es
|
|
verschiedene Möglichkeiten. Am häufigsten
|
|
wird nach wie vor die sogenannte <emphasis>offene
|
|
Authentifizierung</emphasis> verwendet. Dabei wird
|
|
es jeder Station erlaubt, sich mit einem Netzwerk
|
|
zu verbinden und Daten zu übertragen. Aus
|
|
Sicherheitsgründen sollte diese Methode allerdings
|
|
nur zu Testzwecken bei der erstmaligen Einrichtung
|
|
eines drahtlosen Netzwerks verwendet werden. Andere
|
|
Authentifizierungsmechanismen erfordern den Austausch
|
|
kryptografischer Informationen, bevor Sie die
|
|
Übertragung von Daten erlauben. Dazu gehören
|
|
der Austausch fixer (vorher vereinbarter) Schlüssel
|
|
oder Kennwörter sowie der Einsatz komplexerer
|
|
Verfahren mit Backend-Diensten wie RADIUS. Die meisten
|
|
Netzwerke nutzen allerdings nach wie vor die offene
|
|
Authentifizierung, da dies die Voreinstellung ist. Am
|
|
zweithäufigsten kommt das weiter unten beschriebene
|
|
<link
|
|
linkend="network-wireless-wpa-wpa-psk">WPA-PSK</link>
|
|
(das auch als <foreignphrase>WPA Personal</foreignphrase>
|
|
bezeichnet wird) zum Einsatz.</para>
|
|
|
|
<note>
|
|
<para>Verwenden Sie eine
|
|
&apple; &airport; Extreme-Basisstation als Access Point,
|
|
benötigen Sie wahrscheinlich sowohl die
|
|
Shared-Key-Authentifizierung als auch einen
|
|
WEP-Schlüssel. Die entsprechende Konfiguration
|
|
erfolgt entweder in der Datei
|
|
<filename>/etc/rc.conf</filename> oder über das
|
|
Programm &man.wpa.supplicant.8;. Verwenden Sie nur
|
|
eine einzige &airport;-Basisstation, benötigen
|
|
Sie einen Eintrag ähnlich dem folgenden:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="authmode shared wepmode on weptxkey <replaceable>1</replaceable> wepkey <replaceable>01234567</replaceable> DHCP"</programlisting>
|
|
|
|
|
|
<para>Normalerweise sollten Sie
|
|
Shared-Key-Authentifizierung aber nicht verwenden,
|
|
da diese die Sicherheit des WEP-Schlüssel noch
|
|
weiter verringert. Müssen Sie WEP einsetzen
|
|
(beispielsweise weil Sie zu veralteten Geräten
|
|
kompatibel bleiben müssen), sollten Sie WEP
|
|
nur zusammen mit der offenen Authentifizierung
|
|
(<literal>open</literal> authentication) verwenden.
|
|
WEP wird im <xref
|
|
linkend="network-wireless-wep"/> näher
|
|
beschrieben.</para>
|
|
</note>
|
|
</sect5>
|
|
|
|
<sect5>
|
|
<title>Eine IP-Adresse über DHCP beziehen</title>
|
|
|
|
<para>Nachdem Sie einen Access Point gefunden und sich
|
|
authentifiziert haben, benötigen Sie noch eine
|
|
IP-Adresse, die Sie in der Regel über DHCP
|
|
zugewiesen bekommen. Dazu müssen Sie lediglich
|
|
die Option <literal>DHCP</literal> in Ihre
|
|
in der Datei <filename>/etc/rc.conf</filename>
|
|
vorhandene Konfiguration Ihres drahtlosen Geräts
|
|
aufnehmen:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="DHCP"</programlisting>
|
|
|
|
<para>Nun können Sie Ihr drahtloses Gerät
|
|
starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/netif start</userinput></screen>
|
|
|
|
<para>Nachdem Sie das Gerät aktiviert haben,
|
|
können Sie mit <command>ifconfig</command> den
|
|
Status des Geräts <devicename>ath0</devicename>
|
|
abfragen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
ether 00:11:95:d5:43:62
|
|
inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255
|
|
media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g
|
|
status: associated
|
|
ssid dlinkap channel 11 (2462 Mhz 11g) bssid 00:13:46:49:41:76
|
|
country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7
|
|
scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7
|
|
roam:rate 5 protmode CTS wme burst</screen>
|
|
|
|
|
|
<para><literal>status: associated</literal> besagt, dass
|
|
sich Ihr Gerät mit dem drahtlosen Netzwerk verbunden
|
|
hat (konkret mit dem Netzwerk <literal>dlinkap</literal>).
|
|
<literal>bssid 00:13:46:49:41:76</literal> gibt die
|
|
MAC-Adresse Ihres Access Points aus und die Zeile mit
|
|
<literal>authmode OPEN</literal> informiert Sie darüber,
|
|
dass Ihre Kommunikation nicht verschlüsselt wird.</para>
|
|
</sect5>
|
|
|
|
<sect5>
|
|
<title>Statische IP-Adressen</title>
|
|
|
|
<para>Alternativ zu dynamischen IP-Adressen
|
|
können Sie auch eine statische IP-Adresse verwenden.
|
|
Dazu ersetzen Sie in Ihrer Konfiguration
|
|
<literal>DHCP</literal> durch die zu verwendende
|
|
IP-Adresse. Beachten Sie dabei, dass Sie die anderen
|
|
Konfigurationsparameter nicht versehentlich
|
|
verändern:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="inet <replaceable>192.168.1.100</replaceable> netmask <replaceable>255.255.255.0</replaceable> ssid <replaceable>your_ssid_here</replaceable>"</programlisting>
|
|
</sect5>
|
|
</sect4>
|
|
|
|
<sect4 id="network-wireless-wpa">
|
|
<title>WPA</title>
|
|
|
|
<para>Bei WPA (Wi-Fi Protected Access) handelt es sich um ein
|
|
Sicherheitsprotokoll, das in 802.11-Netzwerken verwendet
|
|
wird, um die Nachteile von <link
|
|
linkend="network-wireless-wep">WEP</link> (fehlende
|
|
Authentifizierung und schwache Verschlüsselung)
|
|
zu vermeiden. WPA stellt das aktuelle
|
|
802.1X-Authentifizierungsprotokoll dar und verwendet
|
|
eine von mehreren Chiffren, um die Datensicherheit
|
|
zu gewährleisten. Die einzige Chiffre, die von
|
|
WPA verlangt wird, ist TKIP (<foreignphrase>Temporary
|
|
Key Integrity Protocol</foreignphrase>), eine Chiffre,
|
|
die die von WEP verwendete RC4-Chiffre um Funktionen
|
|
zur Prüfung der Datenintegrität und zur
|
|
Erkennung und Bekämpfung von Einbruchsversuchen
|
|
erweitert.
|
|
TKIP ist durch Softwaremodifikationen auch unter
|
|
veralteter Hardware lauffähig. Im Vergleich zu
|
|
WEP ist WPA zwar sehr viel sicherer, es ist aber dennoch
|
|
nicht völlig immun gegen Angriffe. WPA definiert
|
|
mit AES-CCMP noch eine weitere Chiffre als Alternative
|
|
zu TKIP. AES-CCMP (das häufig als WPA2 oder RSN
|
|
bezeichnet wird) sollte, wenn möglich, eingesetzt
|
|
werden.</para>
|
|
|
|
<para>WPA definiert Authentifizierungs- und
|
|
Verschlüsselungsprotokolle. Die Authentifizierung
|
|
erfolgt in der Regel über eine der folgenden
|
|
Techniken: 802.1X gemeinsam mit einem
|
|
Backend-Authentifizierungsdienst wie RADIUS, oder durch
|
|
einen Minimal-Handshake zwischen der Station und dem
|
|
Access Point mit einem vorher vereinbarten gemeinsamen
|
|
Schlüssel. Die erste Technik wird als
|
|
<foreignphrase>WPA Enterprise</foreignphrase>, die zweite
|
|
hingegen als <foreignphrase>WPA Personal</foreignphrase>
|
|
bezeichnet. Da sich der Aufwand für das Aufsetzen
|
|
eines RADIUS-Backend-Servers für die meisten
|
|
drahtlosen Netzwerke nicht lohnt, wird WPA in der Regel
|
|
als WPA-PSK (WPA, Pre-Shared-Key) konfiguriert.</para>
|
|
|
|
<para>Die Kontrolle der drahtlosen Verbindung sowie die
|
|
vorangehende Authentifizierung (über Schlüssel
|
|
oder durch die Kommunikation mit einem Server) erfolgt
|
|
über das Programm &man.wpa.supplicant.8;, das
|
|
über die Datei
|
|
<filename>/etc/wpa_supplicant.conf</filename>
|
|
eingerichtet wird. Ausführliche Informationen
|
|
zur Konfiguration des Programms finden sich in der
|
|
Manualpage &man.wpa.supplicant.conf.5;.</para>
|
|
|
|
<sect5 id="network-wireless-wpa-wpa-psk">
|
|
<title>WPA-PSK</title>
|
|
|
|
<para>WPA-PSK oder WPA-Personal basiert auf einem
|
|
gemeinsamen (vorher vereinbarten) Schlüssel (PSK),
|
|
der aus einem Passwort generiert und danach als
|
|
Master-Key des drahtlosen Netzwerks verwendet wird.
|
|
Jeder Benutzer des drahtlosen Netzwerks verwendet daher
|
|
<emphasis>den gleichen</emphasis> Schlüssel. WPA-PSK
|
|
sollte nur in kleinen Netzwerken eingesetzt werden, in
|
|
denen die Konfiguration eines Authentifizierungsservers
|
|
nicht möglich oder erwünscht ist.</para>
|
|
|
|
<warning>
|
|
<para>Achten Sie darauf, dass Sie immer starke
|
|
Passwörter verwenden, die ausreichend lang
|
|
sind und, wenn möglich, auch Sonderzeichen
|
|
enthalten, damit diese nicht leicht erraten und/oder
|
|
umgangen werden können.</para>
|
|
</warning>
|
|
|
|
<para>Der erste Schritt zum Einsatz von WPA-PSK ist die
|
|
Konfiguration der SSID und des gemeinsamen Schlüssels
|
|
Ihres Netzwerks in der Datei
|
|
<filename>/etc/wpa_supplicant.conf</filename>:</para>
|
|
|
|
<programlisting>network={
|
|
ssid="freebsdap"
|
|
psk="freebsdmall"
|
|
}</programlisting>
|
|
|
|
<para>Danach geben Sie in <filename>/etc/rc.conf</filename>
|
|
an, dass WPA zur Verschlüsselung eingesetzt werden
|
|
soll und dass die IP-Adresse über DHCP bezogen
|
|
wird:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="WPA DHCP"</programlisting>
|
|
|
|
<para>Nun können Sie Ihr Netzgerät aktivieren:</para>
|
|
|
|
<screen>&prompt.root; <userinput><filename>/etc/rc.d/netif</filename> start</userinput>
|
|
Starting wpa_supplicant.
|
|
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5
|
|
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6
|
|
DHCPOFFER from 192.168.0.1
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
|
|
DHCPACK from 192.168.0.1
|
|
bound to 192.168.0.254 -- renewal in 300 seconds.
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
ether 00:11:95:d5:43:62
|
|
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g
|
|
status: associated
|
|
ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
|
|
country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
|
|
AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
|
|
bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
|
|
wme burst roaming MANUAL</screen>
|
|
|
|
<para>Alternativ können Sie die Konfiguration von
|
|
<link linkend="network-wireless-wpa-wpa-psk">WPA-PSK</link>
|
|
auch manuell durchführen, wobei Sie wiederum die
|
|
Konfigurationsdatei
|
|
<filename>/etc/wpa_supplicant.conf</filename>
|
|
verwenden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>wpa_supplicant -i <replaceable>wlan0</replaceable> -c /etc/wpa_supplicant.conf</userinput>
|
|
Trying to associate with 00:11:95:c3:0d:ac (SSID='freebsdap' freq=2412 MHz)
|
|
Associated with 00:11:95:c3:0d:ac
|
|
WPA: Key negotiation completed with 00:11:95:c3:0d:ac [PTK=CCMP GTK=CCMP]
|
|
CTRL-EVENT-CONNECTED - Connection to 00:11:95:c3:0d:ac completed (auth) [id=0 id_str=]</screen>
|
|
|
|
<para>Im zweiten Schritt starten Sie nun
|
|
<command>dhclient</command>, um eine IP-Adresse vom
|
|
DHCP-Server zu beziehen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>dhclient <replaceable>wlan0</replaceable></userinput>
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
|
|
DHCPACK from 192.168.0.1
|
|
bound to 192.168.0.254 -- renewal in 300 seconds.
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
ether 00:11:95:d5:43:62
|
|
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g
|
|
status: associated
|
|
ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
|
|
country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
|
|
AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
|
|
bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
|
|
wme burst roaming MANUAL</screen>
|
|
|
|
<note>
|
|
<para>Enthält Ihre <filename>/etc/rc.conf</filename>
|
|
bereits die Zeile <literal>ifconfig_wlan0="DHCP"</literal>,
|
|
müssen Sie <command>dhclient</command> nicht mehr
|
|
manuell aufrufen, da <command>dhclient</command> in
|
|
diesem Fall automatisch gestartet wird, nachdem
|
|
<command>wpa_supplicant</command> die Schlüssel
|
|
übergibt.</para>
|
|
</note>
|
|
|
|
<para>Sollte der Einsatz von DHCP nicht möglich sein,
|
|
können Sie auch eine statische IP-Adresse
|
|
angeben, nachdem <command>wpa_supplicant</command> Ihre
|
|
Station authentifiziert hat:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> inet <replaceable>192.168.0.100</replaceable> netmask <replaceable>255.255.255.0</replaceable></userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
ether 00:11:95:d5:43:62
|
|
inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g
|
|
status: associated
|
|
ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
|
|
country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
|
|
AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
|
|
bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
|
|
wme burst roaming MANUAL</screen>
|
|
|
|
<para>Verwenden Sie DHCP nicht, müssen Sie
|
|
zusätzlich noch das Standard-Gateway sowie
|
|
den/die Nameserver manuell festlegen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>route add default <replaceable>your_default_router</replaceable></userinput>
|
|
&prompt.root; <userinput>echo "nameserver <replaceable>your_DNS_server</replaceable>" >> /etc/resolv.conf</userinput></screen>
|
|
</sect5>
|
|
|
|
<sect5 id="network-wireless-wpa-eap-tls">
|
|
<title>WPA und EAP-TLS</title>
|
|
|
|
<para>Die zweite Möglichkeit, WPA einzusetzen, ist
|
|
die Verwendung eines
|
|
802.1X-Backend-Authentifizierungsservers. Diese
|
|
Variante wird als WPA-Enterprise bezeichnet, um sie
|
|
vom weniger sicheren WPA-Personal abzugrenzen, das
|
|
auf dem Austausch gemeinsamer (und vorher vereinbarter
|
|
Schlüssel) basiert. Die bei WPA-Enterprise
|
|
verwendete Authentifizierung basiert auf EAP
|
|
(<foreignphrase>Extensible Authentication
|
|
Protocol</foreignphrase>).</para>
|
|
|
|
<para>EAP selbst bietet keine Verschlüsselung,
|
|
sondern operiert in einem verschlüsselten
|
|
Tunnel. Es gibt verschiedene, auf EAP basierende
|
|
Authentifizierungsmethoden, darunter EAP-TLS,
|
|
EAP-TTLS sowie EAP-PEAP.</para>
|
|
|
|
<para>Bei EAP-TLS (<foreignphrase>EAP with Transport Layers
|
|
Security</foreignphrase>) handelt es sich um sehr gut
|
|
unterstütztes Authentifizierungsprotokoll, da es
|
|
sich dabei um die erste EAP-Methode handelt, die von
|
|
der <ulink url="http://www.wi-fi.org/">Wi-Fi
|
|
Alliance</ulink> zertifiziert wurde. EAP-TLS
|
|
erfordert drei Zertifikate: Das (auf allen Rechnern
|
|
installierte) CA-Zertifikat, das Server-Zertifikat
|
|
Ihres Authentifizierungsservers, sowie ein
|
|
Client-Zertifikat für jeden drahtlosen Client.
|
|
Sowohl der Authentifizierungsservers als auch die
|
|
drahtlosen Clients authentifizieren sich gegenseitig
|
|
durch ihre Zertifikate, wobei sie überprüfen,
|
|
ob diese Zertifikate auch von der
|
|
Zertifizierungs-Authorität (CA) des jeweiligen
|
|
Unternehmens signiert wurden.</para>
|
|
|
|
<para>Die Konfiguration erfolgt (analog zu WPA-PSK)
|
|
über die Datei
|
|
<filename>/etc/wpa_supplicant.conf</filename>:</para>
|
|
|
|
<programlisting>network={
|
|
ssid="freebsdap" <co id="co-tls-ssid"/>
|
|
proto=RSN <co id="co-tls-proto"/>
|
|
key_mgmt=WPA-EAP <co id="co-tls-kmgmt"/>
|
|
eap=TLS <co id="co-tls-eap"/>
|
|
identity="loader" <co id="co-tls-id"/>
|
|
ca_cert="/etc/certs/cacert.pem" <co id="co-tls-cacert"/>
|
|
client_cert="/etc/certs/clientcert.pem" <co id="co-tls-clientcert"/>
|
|
private_key="/etc/certs/clientkey.pem" <co id="co-tls-pkey"/>
|
|
private_key_passwd="freebsdmallclient" <co id="co-tls-pwd"/>
|
|
}</programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="co-tls-ssid">
|
|
<para>Der Name des Netzwerks (die SSID).</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-tls-proto">
|
|
<para>Das RSN/WPA2-Protokoll (&ieee; 802.11i) wird
|
|
verwendet.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-tls-kmgmt">
|
|
<para>Die <literal>key_mgmt</literal>-Zeile bezieht
|
|
sich auf das verwendete Key-Management-Protokoll.
|
|
In diesem Beispiel wird WPA gemeinsam mit der
|
|
EAP-Authentifizierung verwendet
|
|
(<literal>WPA-EAP</literal>).</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-tls-eap">
|
|
<para>Die für die Verbindung verwendete
|
|
EAP-Methode.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-tls-id">
|
|
<para>Das <literal>identity</literal>-Feld enthält
|
|
den von EAP verwendeten Identifizierungsstring.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-tls-cacert">
|
|
<para>Das Feld <literal>ca_cert</literal> gibt den Pfad
|
|
zum CA-Zertifikat an. Dieses Datei wird benötigt,
|
|
um das Server-Zertifikat zu verifizieren.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-tls-clientcert">
|
|
<para>Die <literal>client_cert</literal>-Zeile gibt den
|
|
Pfad zum Client-Zertifikat an. Jeder Client hat ein
|
|
eigenes, innerhalb des Netzwerks eindeutiges,
|
|
Zertifikat.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-tls-pkey">
|
|
<para>Das Feld <literal>private_key</literal> gibt den
|
|
Pfad zum privaten Schlüssel des
|
|
Client-Zertifikat an.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-tls-pwd">
|
|
<para>Das Feld <literal>private_key_passwd</literal>
|
|
enthält die Passphrase für den privaten
|
|
Schlüssel.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Danach fügen Sie die folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="WPA DHCP"</programlisting>
|
|
|
|
<para>Nun können Sie Ihr drahtloses Gerät
|
|
über das <filename>rc.d</filename>-System
|
|
aktivieren:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/netif start</userinput>
|
|
Starting wpa_supplicant.
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15
|
|
DHCPACK from 192.168.0.20
|
|
bound to 192.168.0.254 -- renewal in 300 seconds.
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
ether 00:11:95:d5:43:62
|
|
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g
|
|
status: associated
|
|
ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
|
|
country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
|
|
AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
|
|
bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
|
|
wme burst roaming MANUAL</screen>
|
|
|
|
<para>Alternativ können Sie Ihr drahtloses Gerält
|
|
wiederum manuell über
|
|
<command>wpa_supplicant</command> und
|
|
<command>ifconfig</command> aktivieren.</para>
|
|
</sect5>
|
|
|
|
<sect5 id="network-wireless-wpa-eap-ttls">
|
|
<title>WPA und EAP-TTLS</title>
|
|
|
|
<para>Bei EAP-TLS müssen sowohl der
|
|
Authentifizierungsserver als auch die Clients jeweils
|
|
ein eigenes Zertifikat aufweisen. Setzen Sie hingegen
|
|
EAP-TTLS (<foreignphrase>EAP-Tunneled
|
|
Transport Layer Security</foreignphrase>) ein, ist das
|
|
Client-Zertifikat optional. EAP-TTLS geht dabei
|
|
ähnlich vor wie verschlüsselte Webseiten,
|
|
bei denen der Webserver einen sicheren SSL-Tunnel
|
|
erzeugen kann, ohne dass der Besucher dabei über
|
|
ein client-seitiges Zertifikat verfügen muss.
|
|
EAP-TTLS verwendet einen verschlüsselten
|
|
TLS-Tunnel zum sicheren Transport der
|
|
Authentifizierungsdaten.</para>
|
|
|
|
<para>Die Konfiguration von EAP-TTLS erfolgt in der
|
|
Datei <filename>/etc/wpa_supplicant.conf</filename>:</para>
|
|
|
|
<programlisting>network={
|
|
ssid="freebsdap"
|
|
proto=RSN
|
|
key_mgmt=WPA-EAP
|
|
eap=TTLS <co id="co-ttls-eap"/>
|
|
identity="test" <co id="co-ttls-id"/>
|
|
password="test" <co id="co-ttls-passwd"/>
|
|
ca_cert="/etc/certs/cacert.pem" <co id="co-ttls-cacert"/>
|
|
phase2="auth=MD5" <co id="co-ttls-pha2"/>
|
|
}</programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="co-ttls-eap">
|
|
<para>Die für die Verbindung verwendete
|
|
EAP-Methode.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ttls-id">
|
|
<para>Das <literal>identity</literal>-Feld enthält
|
|
den Identifizierungsstring für die
|
|
EAP-Authentifizierung innerhalb des
|
|
verschlüsselten TlS-Tunnels.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ttls-passwd">
|
|
<para>Das <literal>password</literal>-Feld enthält
|
|
die Passphrase für die
|
|
EAP-Authentifizierung.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ttls-cacert">
|
|
<para>Das Feld <literal>ca_cert</literal> gibt den
|
|
Pfad zum CA-Zertifikat an, das benötigt wird,
|
|
um das Server-Zertifikat zu verifizieren.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ttls-pha2">
|
|
<para>Die innerhalb des verschlüsselten TLS-Tunnels
|
|
verwendete Authentifizierungsmethode. In unserem
|
|
Beispiel handelt es sich dabei um EAP und MD5. Diese
|
|
Phase der <quote>inneren Authentifizierung</quote> wird
|
|
oft als <quote>phase2</quote> bezeichnet.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Folgende Zeilen müssen zusätzlich in die Datei
|
|
<filename>/etc/rc.conf</filename> aufgenommen werden:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
ifconfig_wlan0="WPA DHCP"</programlisting>
|
|
|
|
<para>Nun können Sie Ihr drahtloses Gerät
|
|
aktivieren:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/netif start</userinput>
|
|
Starting wpa_supplicant.
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 21
|
|
DHCPACK from 192.168.0.20
|
|
bound to 192.168.0.254 -- renewal in 300 seconds.
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
ether 00:11:95:d5:43:62
|
|
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g
|
|
status: associated
|
|
ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
|
|
country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
|
|
AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
|
|
bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
|
|
wme burst roaming MANUAL</screen>
|
|
</sect5>
|
|
|
|
<sect5 id="network-wireless-wpa-eap-peap">
|
|
<title>WPA und EAP-PEAP</title>
|
|
|
|
<para>PEAP (<foreignphrase>Protected EAP</foreignphrase>)
|
|
wurde als Alternative zu EAP-TTLS entwickelt. Es gibt
|
|
zwei verschiedene PEAP-Methoden, wobei es sich bei
|
|
PEAPv0/EAP-MSCHAPv2 um die häufiger verwendete
|
|
Methode handelt. In den folgenden Ausführungen
|
|
wird der Begriff PEAP synonym für diese
|
|
EAP-Methode verwendet. PEAP ist nach EAP-TLS der
|
|
am häufigsten verwendete und am besten
|
|
unterstützte EAP-Standard.</para>
|
|
|
|
<para>PEAP arbeitet ähnlich wie EAP-TTLS: Es
|
|
verwendet ein server-seitiges Zertifikat, um
|
|
einen verschlüsselten TLS-Tunnel zu erzeugen,
|
|
über den die sichere Authentifizierung zwischen
|
|
den Clients und dem Authentifizierungsserver erfolgt.
|
|
In Sachen Sicherheit unterscheiden sich EAP-TTLS und
|
|
PEAP allerdings: PEAP überträgt den
|
|
Benutzernamen im Klartext und verschlüsselt nur
|
|
das Passwort, während EAP-TTLS sowohl den
|
|
Benutzernamen als auch das Passwort über den
|
|
TLS-Tunnel überträgt.</para>
|
|
|
|
<para>Um EAP-PEAP einzurichten, müssen Sie die
|
|
Konfigurationsdatei
|
|
<filename>/etc/wpa_supplicant.conf</filename>
|
|
anpassen:</para>
|
|
|
|
<programlisting>network={
|
|
ssid="freebsdap"
|
|
proto=RSN
|
|
key_mgmt=WPA-EAP
|
|
eap=PEAP <co id="co-peap-eap"/>
|
|
identity="test" <co id="co-peap-id"/>
|
|
password="test" <co id="co-peap-passwd"/>
|
|
ca_cert="/etc/certs/cacert.pem" <co id="co-peap-cacert"/>
|
|
phase1="peaplabel=0" <co id="co-peap-pha1"/>
|
|
phase2="auth=MSCHAPV2" <co id="co-peap-pha2"/>
|
|
}</programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="co-peap-eap">
|
|
<para>Die für die Verbindung verwendete
|
|
EAP-Methode.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-peap-id">
|
|
<para>Das <literal>identity</literal>-Feld enthält
|
|
den Identifizierungsstring für die innerhalb
|
|
des verschlüsselten TLS-Tunnels erfolgende
|
|
EAP-Authentifizierung.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-peap-passwd">
|
|
<para>Das Feld <literal>password</literal> enthält
|
|
die Passphrase für die EAP-Authentifizierung.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-peap-cacert">
|
|
<para>Das Feld <literal>ca_cert</literal> gibt den Pfad
|
|
zum CA-Zertifikat an, das zur Verifizierung des
|
|
Server-Zertifikats benötigt wird.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-peap-pha1">
|
|
<para>Dieses Feld enthält die Parameter für
|
|
die erste Phase der Authentifizierung (also den
|
|
TLS-Tunnel). Je nach dem, welchen
|
|
Authentifizierungsserver Sie verwenden, müssen
|
|
Sie hier einen unterschiedlichen Wert angeben.
|
|
In den meisten Fällen wird dieses Feld den
|
|
Wert <quote>client EAP encryption</quote> aufweisen,
|
|
der durch die Angabe von
|
|
<literal>peaplabel=0</literal> gesetzt wird. Weitere
|
|
Informationen zur Konfiguration von PEAP finden Sie
|
|
in der Manualpage &man.wpa.supplicant.conf.5;.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-peap-pha2">
|
|
<para>Das innerhalb des verschlüsselten TLS-Tunnels
|
|
verwendete Authentifizierungsprotokoll. In unserem
|
|
Beispiel handelt es sich dabei um
|
|
<literal>auth=MSCHAPV2</literal>.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Danach fügen Sie die folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>ifconfig_ath0="WPA DHCP"</programlisting>
|
|
|
|
<para>Zuletzt müssen Sie die Netzwerkkarte noch
|
|
aktivieren:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/netif start</userinput>
|
|
Starting wpa_supplicant.
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15
|
|
DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 21
|
|
DHCPACK from 192.168.0.20
|
|
bound to 192.168.0.254 -- renewal in 300 seconds.
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
ether 00:11:95:d5:43:62
|
|
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g
|
|
status: associated
|
|
ssid freebsdap channel 1 (2412 MHz 11g) bssid 00:11:95:c3:0d:ac
|
|
country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF
|
|
AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan
|
|
bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS
|
|
wme burst roaming MANUAL</screen>
|
|
</sect5>
|
|
</sect4>
|
|
|
|
<sect4 id="network-wireless-wep">
|
|
<title>WEP</title>
|
|
|
|
<para>WEP (Wired Equivalent Privacy) ist Teil des
|
|
ursprünglichen 802.11-Standards. Es enthält
|
|
keinen Authentifzierungsmechanismus und verfügt
|
|
lediglich über eine schwache Zugriffskontrolle,
|
|
die sehr leicht umgangen werden kann.</para>
|
|
|
|
<para>WEP kann über <command>ifconfig</command>
|
|
aktiviert werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>ath0</replaceable></userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> inet <replaceable>192.168.1.100</replaceable> netmask <replaceable>255.255.255.0</replaceable> \
|
|
ssid <replaceable>my_net</replaceable> wepmode on weptxkey <replaceable>3</replaceable> wepkey <replaceable>3:0x3456789012</replaceable></userinput></screen>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para> Mit <literal>weptxkey</literal> geben Sie an,
|
|
welcher WEP-Schlüssel für für die
|
|
Datenübertragung verwendet wird (in unserem
|
|
Beispiel ist dies der dritte Schlüssel). Der
|
|
gleiche Schlüssel muss auch am Access Point
|
|
eingestellt sein. Kennen Sie den vom Access Point
|
|
verwendeten Schlüssel nciht, sollten Sie zuerst
|
|
den Wert <literal>1</literal> (d.h. den ersten
|
|
Schlüssel) für diese Variable verwenden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Mit <literal>wepkey</literal> legen Sie den zu
|
|
verwendenden WEP-Schlüssel in der Form
|
|
<replaceable>Nummer:Schlüssel</replaceable> fest.
|
|
Ist der Schlüssel "Nummer" nicht vorhanden, wird
|
|
automatisch Schlüssel <literal>1</literal>
|
|
verwendet. Die Angabe von "Nummer" ist zwingend
|
|
nötig, wenn Sie einen anderen als den ersten
|
|
Schlüssel verwenden wollen.</para>
|
|
|
|
<note>
|
|
<para>In Ihrer Konfiguration müssen Sie
|
|
<literal>0x3456789012</literal> durch den an
|
|
Ihrem Access Point konfigurierten Schlüssel
|
|
ersetzen.</para>
|
|
</note>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Weitere Informationen finden Sie in der Manualpage
|
|
&man.ifconfig.8;.</para>
|
|
|
|
<para>Das Programm <command>wpa_supplicant</command>
|
|
eignet sich ebenfalls dazu, WEP für Ihr drahtloses
|
|
Gerät zu aktivieren. Obige Konfiguration lässt
|
|
sich dabei durch die Aufnahme der folgenden Zeilen in die
|
|
Datei <filename>/etc/wpa_supplicant.conf</filename>
|
|
realisieren:</para>
|
|
|
|
<programlisting>network={
|
|
ssid="my_net"
|
|
key_mgmt=NONE
|
|
wep_key3=3456789012
|
|
wep_tx_keyidx=3
|
|
}</programlisting>
|
|
|
|
<para>Danach müssen Sie das Programm noch aufrufen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>wpa_supplicant -i <replaceable>wlan0</replaceable> -c /etc/wpa_supplicant.conf</userinput>
|
|
Trying to associate with 00:13:46:49:41:76 (SSID='dlinkap' freq=2437 MHz)
|
|
Associated with 00:13:46:49:41:76</screen>
|
|
</sect4>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Ad-hoc-Modus</title>
|
|
|
|
<para>Der IBSS-Modus (auch als Ad-hoc-Modus bezeichnet), ist
|
|
für Punkt-zu-Punkt-Verbindungen vorgesehen. Um
|
|
beispielsweise eine Ad-hoc-Verbindung zwischen den Rechnern
|
|
<hostid>A</hostid> und <hostid>B</hostid> aufzubauen,
|
|
benötigen Sie lediglich zwei IP-Adressen und eine
|
|
SSID.</para>
|
|
|
|
<para>Auf dem Rechner <hostid>A</hostid> geben Sie Folgendes
|
|
ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>ath0</replaceable> wlanmode adhoc</userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> inet <replaceable>192.168.0.1</replaceable> netmask <replaceable>255.255.255.0</replaceable> ssid <replaceable>freebsdap</replaceable></userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
ether 00:11:95:c3:0d:ac
|
|
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc>
|
|
status: running
|
|
ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac
|
|
country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
|
|
protmode CTS wme burst</screen>
|
|
|
|
<para>Der <literal>adhoc</literal>-Parameter gibt an, dass die
|
|
Schnittstelle im IBSS-Modus läuft.</para>
|
|
|
|
<para>Rechner <hostid>B</hostid> sollte nun in der Lage sein,
|
|
Rechner <hostid>A</hostid> zu finden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>ath0</replaceable> wlanmode adhoc</userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> up scan</userinput>
|
|
SSID/MESH ID BSSID CHAN RATE S:N INT CAPS
|
|
freebsdap 02:11:95:c3:0d:ac 2 54M -64:-96 100 IS WME</screen>
|
|
|
|
<para>Der Wert <literal>I</literal> (Spalte CAPS) gibt an,
|
|
dass sich Rechner <hostid>A</hostid> im Ad-hoc-Modus befindet.
|
|
Nun müssen Sie nur noch Rechner <hostid>B</hostid> eine
|
|
unterschiedliche IP-Adresse zuweisen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> inet <replaceable>192.168.0.2</replaceable> netmask <replaceable>255.255.255.0</replaceable> ssid <replaceable>freebsdap</replaceable></userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
ether 00:11:95:d5:43:62
|
|
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc>
|
|
status: running
|
|
ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac
|
|
country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
|
|
protmode CTS wme burst</screen>
|
|
|
|
<para>Damit sind die Rechner <hostid>A</hostid> und
|
|
<hostid>B</hostid> bereit und können untereinander
|
|
Daten austauschen.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-wireless-ap">
|
|
<title>&os; Host Access Points</title>
|
|
|
|
<para>&os; kann als Access Point (AP) agieren. Dies verhindert,
|
|
dass man sich einen Hardware AP kaufen oder ein ad-hoc
|
|
Netzwerk laufen lassen muss. Dies kann sinnvoll sein,
|
|
falls Ihre &os;-Computer als Gateway zu einem anderen
|
|
Netzwerk (z.B. Internet) fungiert.</para>
|
|
|
|
<sect3 id="network-wireless-ap-basic">
|
|
<title>Grundeinstellungen</title>
|
|
|
|
<para>Bevor Sie ihren &os;-Computer als einen AP konfigurieren,
|
|
muss der Kernel mit dem für ihre Wireless-Karte
|
|
entsprechenden Treibern konfiguriert werden. Sie
|
|
müssen ebenfalls die Sicherheitsprotokolle, die Sie
|
|
nutzen wollen, dem Kernel hinzufügen. Für
|
|
weitere Informationen siehe:
|
|
<xref linkend="network-wireless-basic"/>.</para>
|
|
|
|
<note>
|
|
<para>Die Verwendung der NDIS und &windows; Treiber erlauben
|
|
zur Zeit keinen AP-Modus. Nur die nativen
|
|
&os;-Wireless-Treiber unterstüten den AP Modus.</para>
|
|
</note>
|
|
|
|
<para>Nachdem die Unterstützung für ihr drahtloses
|
|
Netzwerk geladen ist, können Sie überprüfen, ob
|
|
Ihr Wireless-Gerät den hostbasierenden Access-Point Modus
|
|
(auch bekannt als hostap Modus) unterstützt:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>ath0</replaceable></userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> list caps</userinput>
|
|
drivercaps=6f85edc1<STA,FF,TURBOP,IBSS,HOSTAP,AHDEMO,TXPMGT,SHSLOT,SHPREAMBLE,MONITOR,MBSS,WPA1,WPA2,BURST,WME,WDS,BGSCAN,TXFRAG>
|
|
cryptocaps=1f<WEP,TKIP,AES,AES_CCM,TKIPMIC></screen>
|
|
|
|
<para>Diese Ausgabe zeigt die Möglichkeiten der Karte. Das
|
|
Wort <literal>HOSTAP</literal> bestätigt, dass diese
|
|
Wireless-Karte als Access Point agieren kann. Die
|
|
verschiedenen unterstützten Algorithmen
|
|
(z.B. WEP, TKIP, AES usw.) werden ebenfalls angezeigt.
|
|
Diese Informationen sind wichtig, wenn Sie wissen wollen,
|
|
welche Sicherheitsprotokolle auf diesem Access Point
|
|
verwendbar sind.</para>
|
|
|
|
<para>Das Wireless-Gerät kann nur während der Erzeugung
|
|
des Pseudo-Geräts in den hostap-Modus gesetzt werden.
|
|
Zuvor erstellte Pseudo-Geräte müssen also vorher
|
|
zerstört werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> destroy</userinput></screen>
|
|
|
|
<para>Danach muss das Gerät erneut erstellt werden, bevor
|
|
die restlichen Netzwerkparameter konfiguriert werden
|
|
können:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>ath0</replaceable> wlanmode hostap</userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> inet <replaceable>192.168.0.1</replaceable> netmask <replaceable>255.255.255.0</replaceable> ssid <replaceable>freebsdap</replaceable> mode 11g channel 1</userinput></screen>
|
|
|
|
<para>Benutzen Sie danach erneut den Befehl
|
|
<command>ifconfig</command>, um den Status der
|
|
<devicename>wlan0</devicename>-Schnittstelle abzufragen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
ether 00:11:95:c3:0d:ac
|
|
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
|
|
status: running
|
|
ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
|
|
country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60
|
|
protmode CTS wme burst dtimperiod 1 -dfs</screen>
|
|
|
|
<para>Die <literal>hostap</literal>-Parameter geben die
|
|
Schnittstelle an, die im hostbasierenden Access Point Modus
|
|
läuft.</para>
|
|
|
|
<para>Die Konfiguration der Schnittstelle kann durch
|
|
Hinzufügen der folgenden Zeilen in die Datei
|
|
<filename>/etc/rc.conf</filename> automatisch während
|
|
des Bootvorganges erfolgen:</para>
|
|
|
|
<programlisting>wlans_ath0="wlan0"
|
|
create_args_wlan0="wlanmode hostap"
|
|
ifconfig_wlan0="inet <replaceable>192.168.0.1</replaceable> netmask <replaceable>255.255.255.0</replaceable> ssid <replaceable>freebsdap</replaceable> mode 11g channel <replaceable>1</replaceable>"</programlisting>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Hostbasierender Access Point ohne Authentifizierung
|
|
oder Verschlüsselung</title>
|
|
|
|
<para>Obwohl es nicht empfohlen wird, einen AP ohne jegliche
|
|
Authentifizierung oder Verschlüsselung laufen zu lassen,
|
|
ist es eine einfache Art zu testen, ob der AP funktioniert.
|
|
Diese Konfiguration ist auch wichtig für die Fehlersuche
|
|
bei Client-Problemen.</para>
|
|
|
|
<para>Nachdem Sie den AP, wie oben beschrieben, konfiguriert
|
|
haben, ist es möglich von einem anderen drahtlosen
|
|
Computer eine Suche nach dem AP zu starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>ath0</replaceable></userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> up scan</userinput>
|
|
SSID/MESH ID BSSID CHAN RATE S:N INT CAPS
|
|
freebsdap 00:11:95:c3:0d:ac 1 54M -66:-96 100 ES WME</screen>
|
|
|
|
<para>Der Client-Rechner fand den Access Point und kann mit ihm
|
|
verbunden werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> inet <replaceable>192.168.0.2</replaceable> netmask <replaceable>255.255.255.0</replaceable> ssid <replaceable>freebsdap</replaceable></userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
ether 00:11:95:d5:43:62
|
|
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g
|
|
status: associated
|
|
ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac
|
|
country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7
|
|
scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7
|
|
roam:rate 5 protmode CTS wme burst</screen>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>WPA-basierender Host-Access Point</title>
|
|
|
|
<para>Dieser Abschnitt beschäftigt sich mit dem Konfigurieren
|
|
eines &os;-Access-Points mit dem WPA-Sicherheitsprotokoll.
|
|
Weitere Einzelheiten zu WPA und der Konfiguration von Clients mit
|
|
WPA finden Sie im
|
|
<xref linkend="network-wireless-wpa"/>.</para>
|
|
|
|
<para>Der <application>hostapd</application>-Dienst wird genutzt,
|
|
um die Client-Authentifizierung und das Schlüsselmanagement
|
|
auf dem Access Point mit aktiviertem WPA zu nutzen.</para>
|
|
|
|
<para>In den folgenden Abschnitten werden allen Konfigurationen
|
|
auf dem &os;-Computer ausgeführt, der als AP agiert.
|
|
Nachdem der AP korrekt arbeitet, sollte
|
|
<application>hostapd</application> automatisch beim Booten
|
|
durch folgende Zeile in der <filename>/etc/rc.conf</filename>
|
|
aktiviert werden:</para>
|
|
|
|
<programlisting>hostapd_enable="YES"</programlisting>
|
|
|
|
<para>Bevor Sie versuchen <application>hostapd</application>
|
|
zu konfigurieren, stellen Sie sicher, dass die
|
|
Grundeinstellungen, wie in
|
|
<xref linkend="network-wireless-ap-basic"/> beschrieben,
|
|
ausgeführt wurden.</para>
|
|
|
|
<sect4>
|
|
<title>WPA-PSK</title>
|
|
|
|
<para>WPA-PSK ist für kleine Netzwerke gedacht, in denen die
|
|
Verwendung eines Authentifizierungs-Backend-Server nicht
|
|
möglich oder erwünscht ist.</para>
|
|
|
|
<para>Die Konfiguration wird in
|
|
<filename>/etc/hostapd.conf</filename>
|
|
durchgeführt:</para>
|
|
|
|
<programlisting>interface=wlan0 <co id="co-ap-wpapsk-iface"/>
|
|
debug=1 <co id="co-ap-wpapsk-dbug"/>
|
|
ctrl_interface=/var/run/hostapd <co id="co-ap-wpapsk-ciface"/>
|
|
ctrl_interface_group=wheel <co id="co-ap-wpapsk-cifacegrp"/>
|
|
ssid=freebsdap <co id="co-ap-wpapsk-ssid"/>
|
|
wpa=1 <co id="co-ap-wpapsk-wpa"/>
|
|
wpa_passphrase=freebsdmall <co id="co-ap-wpapsk-pass"/>
|
|
wpa_key_mgmt=WPA-PSK <co id="co-ap-wpapsk-kmgmt"/>
|
|
wpa_pairwise=CCMP TKIP <co id="co-ap-wpapsk-pwise"/></programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="co-ap-wpapsk-iface">
|
|
<para>Dieses Feld zeigt die Wireless-Schnittstelle an, die
|
|
für den Access Point verwendet wird an.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ap-wpapsk-dbug">
|
|
<para>Dieses Feld legt den debuglevel von
|
|
<application>hostapd</application> während der
|
|
Ausführung fest. Ein Wert von <literal>1</literal>
|
|
ist der kleinste zulässige Wert.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ap-wpapsk-ciface">
|
|
<para>Das <literal>ctrl_interface</literal>-Feld gibt
|
|
den Pfadnamen des Verzeichnisses an, der von
|
|
<application>hostapd</application> dazu genutzt wird,
|
|
um die domain socket Dateien zu speichern, die für
|
|
die Kommunikation mit externen Programmen,
|
|
wie z.B. &man.hostapd.cli.8;, benutzt werden.
|
|
Hier wurden die Standardwerte benutzt.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ap-wpapsk-cifacegrp">
|
|
<para>Die Zeile <literal>ctrl_interface_group</literal>
|
|
legt fest, welche Gruppe (hier ist es die
|
|
<groupname>wheel</groupname>-Gruppe) die Erlaubnis hat,
|
|
die Schnittstellendateien zu kontrollieren.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ap-wpapsk-ssid">
|
|
<para>Dieses Feld setzt den Netzwerknamen.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ap-wpapsk-wpa">
|
|
<para>Das <literal>wpa</literal>-Feld aktiviert WPA und
|
|
gibt an welches WPA-Authentifizierungprotokoll
|
|
benötigt wird. Ein Wert von <literal>1</literal>
|
|
konfiguriert den AP mit WPA-PSK.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ap-wpapsk-pass">
|
|
<para>Das <literal>wpa_passphrase</literal>-Feld
|
|
beinhaltet das ASCII-Passwort für die
|
|
WPA-Authentifikation.</para>
|
|
|
|
<warning>
|
|
|
|
<para>Verwenden Sie immer sichere Passwörter,
|
|
die ausreichend lang sind und aus vielen
|
|
unterschiedlichen Zeichen bestehen, damit sie nicht
|
|
erraten werden oder umgangen werden können.</para>
|
|
</warning>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ap-wpapsk-kmgmt">
|
|
|
|
<para>Die <literal>wpa_key_mgmt</literal> Zeile bestimmt
|
|
das Schlüsselmanagement-Protokoll, das benutzt wird.
|
|
In unserem Fall ist es WPA-PSK.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-ap-wpapsk-pwise">
|
|
<para>Das <literal>wpa_pairwise</literal> Feld zeigt die
|
|
zulässigen Verschlüsselungs-Algorithmen
|
|
des Access Points. Hier werden beide, TKIP (WPA) und
|
|
CCMP (WPA2), akzeptiert. CCMP-Verschlüsselung ist
|
|
eine Alternative zu TKIP und sollte wenn möglich
|
|
eingesetzt werden. TKIP sollte nur da eingesetzt werden,
|
|
wo kein CCMP möglich ist.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Als nächstes wird der
|
|
<application>hostapd</application> gestartet:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/hostapd forcestart</userinput></screen>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2290
|
|
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
|
|
inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4
|
|
ether 00:11:95:c3:0d:ac
|
|
media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
|
|
status: associated
|
|
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
|
|
authmode WPA2/802.11i privacy MIXED deftxkey 2 TKIP 2:128-bit txpowmax 36 protmode CTS dtimperiod 1 bintval 100</screen>
|
|
|
|
<para>Der Access Point läft nun, die Clients
|
|
können mit ihm verbunden werden. Weitere
|
|
Informationen finden Sie im
|
|
<xref linkend="network-wireless-wpa"/>. Es ist möglich
|
|
zu sehen, welche Stationen mit dem AP verbunden sind.
|
|
Dazu geben Sie den Befehl
|
|
<command>ifconfig <replaceable>wlan0</replaceable> list sta</command>
|
|
ein.</para>
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>WEP hostbasierender Access Point</title>
|
|
|
|
<para>Es ist nicht empfehlenswert, einen Access Point mit
|
|
WEP zu konfigurieren, da es keine
|
|
Authentifikationsmechanismen gibt und WEP leicht zu
|
|
knacken ist. Einige ältere WLAN-Karten
|
|
unterstützen nur WEP als Sicherheitsprotokoll. Für
|
|
solche Karten ist es notwendig den AP ohne
|
|
Authentifikation, Verschlüsselung oder mit dem
|
|
WEP-Protokoll zu konfigurieren.</para>
|
|
|
|
<para>Das Wireless-Gerät kann nun in den hostap-Modus
|
|
versetzt werden und mit der korrekten SSID und IP-Adresse
|
|
konfiguriert werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>ath0</replaceable> wlanmode hostap</userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> inet <replaceable>192.168.0.1</replaceable> netmask <replaceable>255.255.255.0</replaceable> \
|
|
ssid <replaceable>freebsdap</replaceable> wepmode on weptxkey <replaceable>3</replaceable> wepkey <replaceable>3:0x3456789012</replaceable> mode 11g</userinput></screen>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Der <literal>weptxkey</literal> gibt an,
|
|
welcher WEP-Schlüssel bei der Übertragung
|
|
benutzt wird. Hier nutzen wir den 3. Schlüssel
|
|
(die Nummerierung der Schlüssel beginnt bei
|
|
<literal>1</literal>). Dieses Parameter muss angegeben
|
|
sein, damit die Daten wirklich verschlüsselt
|
|
werden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Der <literal>wepkey</literal> gibt den
|
|
gewählten WEP-Schlüssel an. Er sollte im
|
|
folgenden Format <replaceable>index:key</replaceable>
|
|
vorliegen. Wenn kein Index vorhanden ist, wird der
|
|
Schlüssel <literal>1</literal> benutzt. Das bedeutet
|
|
wir brauchen einen Index, falls wir einen anderen
|
|
Schlüssel als den ersten nutzen wollen.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Benutzen Sie den Befehl <command>ifconfig</command>
|
|
noch einmal um den Status der
|
|
<devicename>wlan0</devicename>-Schnittstelle zu sehen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable></userinput>
|
|
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
ether 00:11:95:c3:0d:ac
|
|
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
|
|
media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
|
|
status: running
|
|
ssid freebsdap channel 4 (2427 Mhz 11g) bssid 00:11:95:c3:0d:ac
|
|
country US ecm authmode OPEN privacy ON deftxkey 3 wepkey 3:40-bit
|
|
txpower 21.5 scanvalid 60 protmode CTS wme burst dtimperiod 1 -dfs</screen>
|
|
|
|
<para>Es ist möglich, von einem anderen drahtlosen
|
|
Computer eine Suche nach dem AP zu starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>ath0</replaceable></userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> up scan</userinput>
|
|
SSID BSSID CHAN RATE S:N INT CAPS
|
|
freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS</screen>
|
|
|
|
<para>Der Client-Rechner fand den Access Point und kann
|
|
mit den korrekten Parametern (Schlüssel usw.)
|
|
mit ihm verbunden werden. Weitere Informationen gibt es in
|
|
folgendem <xref linkend="network-wireless-wep"/></para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Benutzung von drahtgebundenen und drahtlosen
|
|
Verbindungen</title>
|
|
|
|
<para>Eine Verbindung per Kabel bietet eine bessere Leistung
|
|
und eine höhere Zuverlässigkeit, während die
|
|
Wireless-Verbindung eine höhere Flexibilität
|
|
und Mobilität bietet. Benutzer von Laptops wollen
|
|
normalerweise beides nutzen und zwischen beiden hin und her
|
|
schalten.</para>
|
|
|
|
<para>Unter &os; ist es möglich zwei oder mehr
|
|
Netzwerkschnittstellen in einem <quote>failover</quote>-Mode zu
|
|
kombinieren, so dass automatisch die beste verfügbare Verbindung
|
|
aus der Gruppe ausgewählt wird, sobald der Linkstatus
|
|
wechselt.</para>
|
|
|
|
<para>Wir behandeln Link-Aggregation und Failover in dem Kapitel
|
|
<xref linkend="network-aggregation"/>. Dort gibt es auch ein
|
|
Beispiel (<xref linkend="networking-lagg-wired-and-wireless"/>)
|
|
für die Verwendung von sowohl kabelgebundenen wie
|
|
auch drahtlosen Verbindungen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Problembehandlung</title>
|
|
|
|
<para>Die folgenden Auflistung zeigt, wie Sie einige
|
|
häufig auftretende Probleme bei der Einrichtung
|
|
Ihres drahtlosen Netzwerks beheben können.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Wird Ihr Access Point bei der Suche nicht gefunden,
|
|
sollten Sie überprüfen, ob Sie bei Konfiguration
|
|
Ihres drahtlosen Geräts die Anzahl der Kanäle
|
|
beschränkt haben.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wenn Sie sich nicht mit Ihrem Access Point verbinden
|
|
können, sollten Sie überprüfen, ob die
|
|
Konfiguration Ihrer Station auch der des Access Points
|
|
entspricht. Achten Sie dabei speziell auf die
|
|
Authentifzierungsmethode und die Sicherheitsprotokolle.
|
|
Halten Sie Ihre Konfiguration so einfach wie möglich.
|
|
Verwenden Sie ein Sicherheitsprotokoll wie WPA oder WEP,
|
|
sollten Sie testweise Ihren Access Point auf
|
|
<emphasis>offene Authentifizierung</emphasis> und
|
|
<emphasis>keine Sicherheit</emphasis> einstellen.
|
|
Danach versuchen Sie sich erneut mit Ihren Access Point
|
|
zu verbinden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Nachdem Sie sich mit dem Access Point verbinden
|
|
können, prüfen Sie die Sicherheitseinstellungen,
|
|
beginnend mit einfachen Werkzeugen wie &man.ping.8;.</para>
|
|
|
|
<para>Das Programm <command>wpa_supplicant</command>
|
|
kann Ihnen bei der Fehlersuche helfen. Dazu starten
|
|
Sie es manuell mit der Option <option>-dd</option> und
|
|
durchsuchen anschließend die Protokollinformationen
|
|
nach eventuellen Fehlermeldungen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Zusätzlich gibt es auch zahlreiche
|
|
Low-Level-Debugging-Werkzeuge. Die Ausgabe von
|
|
Debugging-Informationen des 802.11 Protocol Support Layers
|
|
lassen sich mit dem Programm <command>wlandebug</command>
|
|
(das sich unter
|
|
<filename>/usr/src/tools/tools/net80211</filename>
|
|
befindet) aktivieren. Um beispielsweise während
|
|
der Suche nach Access Points und des Aufbaus von
|
|
802.11-Verbindungen
|
|
(<foreignphrase>Handshake</foreignphrase>) auftretende
|
|
Systemmeldungen auf die Konsole auszugeben, verwenden
|
|
Sie den folgenden Befehl:</para>
|
|
|
|
<screen>&prompt.root; <userinput>wlandebug -i <replaceable>ath0</replaceable> +scan+auth+debug+assoc</userinput>
|
|
net.wlan.0.debug: 0 => 0xc80000<assoc,auth,scan></screen>
|
|
|
|
<para>Der 802.11-Layer liefert umfangreiche Statistiken,
|
|
die Sie mit dem Werkzeug <command>wlanstats</command>
|
|
abrufen können. Diese Statistiken sollten alle
|
|
Fehler identifizieren, die im 802.11-Layer auftreten.
|
|
Beachten Sie aber, dass einige Fehler bereits im
|
|
darunterliegenden Gerätetreiber auftreten und
|
|
daher in diesen Statistiken nicht enthalten sind. Wie
|
|
Sie Probleme des Gerätetreibers identifizieren,
|
|
entnehmen Sie bitte der Dokumentation Ihres
|
|
Gerätetreibers.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Können Sie Ihr Problem durch diese
|
|
Maßnahmen nicht lösen, sollten Sie einen
|
|
Problembericht (PR) erstellen und die Ausgabe der weiter
|
|
oben genannten Werkzeuge in den Bericht aufnehmen.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-bluetooth">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Pav</firstname>
|
|
<surname>Lucistnik</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
<affiliation>
|
|
<address><email>pav@FreeBSD.org</email></address>
|
|
</affiliation>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Bluetooth</title>
|
|
|
|
<indexterm><primary>Bluetooth</primary></indexterm>
|
|
|
|
<sect2>
|
|
<title>Übersicht</title>
|
|
|
|
<para>Bluetooth 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.</para>
|
|
|
|
<para>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.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Die Bluetooth-Unterstützung aktivieren</title>
|
|
|
|
<para>Bluetooth-Unterstützung ist in der Regel als
|
|
Kernelmodul verfügbar. Damit ein Gerät funktioniert,
|
|
muss der entsprechende Treiber im Kernel geladen werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>kldload ng_ubt</userinput></screen>
|
|
|
|
<para>Ist das Bluetooth-Gerät beim Systemstart angeschlossen,
|
|
kann das entsprechende Modul auch von
|
|
<filename>/boot/loader.conf</filename> geladen werden:</para>
|
|
|
|
<programlisting>ng_ubt_load="YES"</programlisting>
|
|
|
|
<para>Schließen Sie Ihren USB-Adapter an, sollte eine
|
|
Meldung ähnlich der folgenden auf der Konsole (oder in
|
|
syslog) erscheinen:</para>
|
|
|
|
<screen>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=294</screen>
|
|
|
|
<para>Zum Starten und Beenden des Bluetooth-Stacks verwenden Sie
|
|
das Skript <filename>/etc/rc.d/bluetooth</filename>. 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:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/bluetooth start ubt0</userinput>
|
|
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: 8</screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Das Host Controller Interface (HCI)</title>
|
|
|
|
<indexterm><primary>HCI</primary></indexterm>
|
|
|
|
<para>Das <foreignphrase>Host Controller Interface</foreignphrase>
|
|
(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.</para>
|
|
|
|
<para>Eine einzelne Netgraph-Gerätedatei vom Typ
|
|
<emphasis>hci</emphasis> 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
|
|
<quote>devicehci</quote>.</para>
|
|
|
|
<para>Eine der wichtigsten Aufgaben ist das Auffinden von sich
|
|
in Reichweite befindenden Bluetooth-Geräten. Diese
|
|
Funktion wird als <emphasis>inquiry</emphasis> 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
|
|
<emphasis>discoverable</emphasis> befindet.</para>
|
|
|
|
<screen>&prompt.user; <userinput>hccontrol -n ubt0hci inquiry</userinput>
|
|
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]</screen>
|
|
|
|
<para><literal>BD_ADDR</literal> stellt, ähnlich der
|
|
MAC-Adresse einer Netzwerkkarte, die eindeutige Adresse eines
|
|
Bluetooth-Gerätes dar. Diese Adresse ist für die
|
|
Kommunikation mit dem Gerät nötig. Es ist aber auch
|
|
möglich, BD_ADDR einen Klartextnamen zuzuweisen. Die
|
|
Datei <filename>/etc/bluetooth/hosts</filename> enthält
|
|
Informationen über die bekannten Bluetooth-Rechner. Das
|
|
folgende Beispiel zeigt, wie man den Klartextnamen eines
|
|
entfernten Geräts in Erfahrung bringen kann:</para>
|
|
|
|
<screen>&prompt.user; <userinput>hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4</userinput>
|
|
BD_ADDR: 00:80:37:29:19:a4
|
|
Name: Pav's T39</screen>
|
|
|
|
<para>Wenn Sie ein entferntes Bluetooth-Gerät abfragen, wird
|
|
dieses Ihren Rechner unter dem Namen
|
|
<quote>your.host.name (ubt0)</quote> finden. Dieser Name kann
|
|
aber jederzeit geändert werden.</para>
|
|
|
|
<para>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:</para>
|
|
|
|
<screen>&prompt.user; <userinput>hccontrol -n ubt0hci read_connection_list</userinput>
|
|
Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State
|
|
00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPEN</screen>
|
|
|
|
<para>Ein <emphasis>connection handle</emphasis> ist für die
|
|
Beendigung einer Basisbandverbindung nützlich. Im
|
|
Normalfall werden inaktive Verbindungen aber automatisch vom
|
|
Bluetooth-Stack getrennt.</para>
|
|
|
|
<screen>&prompt.root; <userinput>hccontrol -n ubt0hci disconnect 41</userinput>
|
|
Connection handle: 41
|
|
Reason: Connection terminated by local host [0x16]</screen>
|
|
|
|
<para>Rufen Sie <command>hccontrol help</command> auf, wenn Sie
|
|
eine komplette Liste aller verfügbaren HCI-Befehle
|
|
benötigen. Die meisten dieser Befehle müssen nicht
|
|
als <username>root</username> ausgeführt werden.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Das Logical Link Control and Adaptation Protocol (L2CAP)</title>
|
|
|
|
<indexterm><primary>L2CAP</primary></indexterm>
|
|
|
|
<para>Das <foreignphrase>Logical Link Control and Adaptation
|
|
Protocol</foreignphrase> (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.</para>
|
|
|
|
<para>L2CAP arbeitet <emphasis>kanal</emphasis>basiert. 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.</para>
|
|
|
|
<para>Eine einzelne Netgraph-Gerätedatei vom Typ
|
|
<emphasis>l2cap</emphasis> 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 <quote>devicel2cap</quote>.</para>
|
|
|
|
<para>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 <literal>0 bytes</literal> ist also kein Fehler:</para>
|
|
|
|
<screen>&prompt.root; <userinput>l2ping -a 00:80:37:29:19:a4</userinput>
|
|
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=0</screen>
|
|
|
|
<para>Das 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:</para>
|
|
|
|
<screen>&prompt.user; <userinput>l2control -a 00:02:72:00:d4:1a read_channel_list</userinput>
|
|
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; <userinput>l2control -a 00:02:72:00:d4:1a read_connection_list</userinput>
|
|
L2CAP connections:
|
|
Remote BD_ADDR Handle Flags Pending State
|
|
00:07:e0:00:0b:ca 41 O 0 OPEN</screen>
|
|
|
|
<para>&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.</para>
|
|
|
|
<screen>&prompt.user; <userinput>btsockstat</userinput>
|
|
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 OPEN</screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Das RFCOMM-Protokoll</title>
|
|
|
|
<indexterm><primary>RFCOMM</primary></indexterm>
|
|
|
|
<para>Das 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Unter &os; wurde das RFCOMM-Protokoll im Bluetooth Socket-Layer
|
|
implementiert.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Erstmaliger Verbindungsaufbau zwischen zwei
|
|
Bluetooth-Geräten (<foreignphrase>Pairing</foreignphrase>)
|
|
</title>
|
|
|
|
<indexterm><primary>Pairing</primary></indexterm>
|
|
|
|
<para>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 <emphasis>PIN-Codes</emphasis>. 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 <emphasis>link key</emphasis>,
|
|
der auf den Geräten gespeichert wird. Beim nächsten
|
|
Verbindungsaufbau wird der zuvor erzeugte Link Key verwendet.
|
|
Diesen Vorgang bezeichnet man als
|
|
<foreignphrase>Pairing</foreignphrase>. Geht der Link Key auf
|
|
einem Gerät verloren, muss das Pairing wiederholt
|
|
werden.</para>
|
|
|
|
<para>Der &man.hcsecd.8;-Daemon verarbeitet alle
|
|
Bluetooth-Authentifzierungsanforderungen und wird über die
|
|
Datei <filename>/etc/bluetooth/hcsecd.conf</filename>
|
|
konfiguriert. Der folgende Ausschnitt dieser Datei zeigt die
|
|
Konfiguration für ein Mobiltelefon, das den PIN-Code
|
|
<quote>1234</quote> verwendet:</para>
|
|
|
|
<programlisting>device {
|
|
bdaddr 00:80:37:29:19:a4;
|
|
name "Pav's T39";
|
|
key nokey;
|
|
pin "1234";
|
|
}</programlisting>
|
|
|
|
<para>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 <option>-d</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 <foreignphrase>receive pairing</foreignphrase>
|
|
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
|
|
<filename>hcsecd.conf</filename> 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.</para>
|
|
|
|
<para><application>hcsecd</application> kann durch das Einfügen
|
|
der folgenden Zeile in <filename>/etc/rc.conf</filename>
|
|
beim Systemstart automatisch aktiviert werden:</para>
|
|
|
|
<programlisting>hcsecd_enable="YES"</programlisting>
|
|
|
|
<para>Es folgt nun eine beispielhafte Ausgabe
|
|
des <application>hcsecd</application>-Daemons:</para>
|
|
|
|
<programlisting>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:a4</programlisting>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Das Service Discovery Protocol (SDP)</title>
|
|
|
|
<indexterm><primary>SDP</primary></indexterm>
|
|
|
|
<para>Das <foreignphrase>Service Discovery Protocol</foreignphrase>
|
|
(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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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
|
|
<foreignphrase>Browsing</foreignphrase>.</para>
|
|
|
|
<para>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:</para>
|
|
|
|
<screen>&prompt.user; <userinput>sdpcontrol -a 00:01:03:fc:6e:ec browse</userinput>
|
|
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
|
|
</screen>
|
|
|
|
<para>... 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 <foreignphrase>Service Browsing</foreignphrase> 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:</para>
|
|
|
|
<screen>&prompt.user; <userinput>sdpcontrol -a 00:01:03:fc:6e:ec search OPUSH</userinput></screen>
|
|
|
|
<para>Unter &os; ist es die Aufgabe des &man.sdpd.8;-Servers,
|
|
Bluetooth-Clients verschiedene Dienste anzubieten. Sie
|
|
können diesen Server durch das Einfügen der folgenden
|
|
Zeile in die Datei <filename>/etc/rc.conf</filename>
|
|
aktivieren:</para>
|
|
|
|
<programlisting>sdpd_enable="YES"</programlisting>
|
|
|
|
<para>Nun kann der <application>sdpd</application>-Daemon durch
|
|
folgene Eingabe gestartet werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/sdpd start</userinput></screen>
|
|
|
|
<para>Der 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.</para>
|
|
|
|
<para>Die Liste der vorhandenen Dienste, die am lokalen SDP-Server
|
|
registriert sind, lässt sich durch eine SDP-Abfrage
|
|
über einen lokalen Kontrollkanal abfragen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sdpcontrol -l browse</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Einwahlverbindungen (Dial-Up Networking (DUN)) oder
|
|
Netzwerkverbindungen mit PPP (LAN)-Profilen einrichten</title>
|
|
|
|
<para>Das
|
|
<foreignphrase>Dial-Up Networking (DUN)</foreignphrase>-Profil
|
|
wird vor allem für Modems und Mobiltelefone verwendet.
|
|
Dieses Profil ermöglicht folgende Szenarien:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>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.</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Die Verwendung eines Mobiltelefons oder eines
|
|
Modems durch einen Computers, um auf Datenabfragen zu
|
|
reagieren.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Der Zugriff auf ein Netzwerk über das PPP (LAN)-Profil
|
|
kann in folgenden Situationen verwendet werden:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Den LAN-Zugriff für ein einzelnes
|
|
Bluetooth-Gerät</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Den LAN-Zugriff für mehrere
|
|
Bluetooth-Geräte</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Eine PC-zu-PC-Verbindung (unter Verwendung
|
|
einer PPP-Verbindung über eine emulierte serielle
|
|
Verbindung)</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>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 <filename>/etc/ppp/ppp.conf</filename> erzeugt werden.
|
|
Beispielkonfigurationen zu diesem Thema finden Sie in
|
|
&man.rfcomm.pppd.8;.</para>
|
|
|
|
<para>Im folgenden Beispiel verwenden wir &man.rfcomm.pppd.8;, um
|
|
eine RFCOMM-Verbindung zu einem entfernten Gerät mit der
|
|
<literal>BD_ADDR 00:80:37:29:19:a4</literal> auf dem
|
|
RFCOMM-Kanal <literal>DUN</literal> 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.</para>
|
|
|
|
<screen>&prompt.root; <userinput>rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup</userinput></screen>
|
|
|
|
<para>Der &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
|
|
<filename>/etc/ppp/ppp.conf</filename> 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.</para>
|
|
|
|
<screen>&prompt.root; <userinput>rfcomm_pppd -s -C 7 -l rfcomm-server</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Das Profil OBEX-Push (OPUSH)</title>
|
|
|
|
<indexterm><primary>OBEX</primary></indexterm>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Server und Client von OBEX werden durch das Softwarepaket
|
|
<application>obexapp</application> bereitgestellt, das als Port
|
|
<filename role="package">comms/obexapp</filename> verfügbar
|
|
ist.</para>
|
|
|
|
<para>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:</para>
|
|
|
|
<screen>&prompt.user; <userinput>obexapp -a 00:80:37:29:19:a4 -C IrMC</userinput>
|
|
obex> get telecom/devinfo.txt
|
|
Success, response: OK, Success (0x20)
|
|
obex> put new.vcf
|
|
Success, response: OK, Success (0x20)
|
|
obex> di
|
|
Success, response: OK, Success (0x20)</screen>
|
|
|
|
<para>Um OBEX-Push-Dienste anbieten zu können, muss der
|
|
<application>sdpd</application>-Server gestartet sein. Ein
|
|
Wurzelverzeichnis, in dem alle ankommenden Objekt gespeichert
|
|
werden, muss zusätzlich angelegt werden. In der
|
|
Voreinstellung ist dies <filename>/var/spool/obex</filename>.
|
|
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:</para>
|
|
|
|
<screen>&prompt.root; <userinput>obexapp -s -C 10</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Das Profil Serial-Port (SPP)</title>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<screen>&prompt.root; <userinput>rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6</userinput>
|
|
rfcomm_sppd[94692]: Starting on /dev/ttyp6...</screen>
|
|
|
|
<para>Sobald die Verbindung hergestellt ist, kann pseudo-tty als
|
|
serieller Port verwenden werden.</para>
|
|
|
|
<screen>&prompt.root; <userinput>cu -l ttyp6</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Problembehandlung</title>
|
|
|
|
<sect3>
|
|
<title>Ein entferntes Gerät kann keine Verbindung
|
|
aufbauen</title>
|
|
|
|
<para>Einige ä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:</para>
|
|
|
|
<screen>&prompt.root; <userinput>hccontrol -n ubt0hci write_node_role_switch 0</userinput></screen>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Wo finde ich genaue Informationen darüber, was
|
|
schiefgelaufen ist?</title>
|
|
|
|
<para>Verwenden Sie <application>hcidump</application>,
|
|
das Sie über den Port <filename
|
|
role="package">comms/hcidump</filename> installieren
|
|
können. <application>hcidump</application> 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).</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-bridging">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Andrew</firstname>
|
|
<surname>Thompson</surname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>LAN-Kopplung mit einer Bridge</title>
|
|
|
|
<sect2>
|
|
<title>Einführung</title>
|
|
|
|
<indexterm><primary>Subnetz</primary></indexterm>
|
|
<indexterm><primary>Bridge</primary></indexterm>
|
|
|
|
<para>Manchmal 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
|
|
<emphasis>Bridge</emphasis> bezeichnet. Jedes FreeBSD-System
|
|
mit zwei Netzwerkkarten kann als Bridge fungieren.</para>
|
|
|
|
<para>Die Bridge arbeitet, indem sie die MAC Layeradressen
|
|
(Ethernet Adressen) der Geräte in ihren
|
|
Netzwerksegmenten lernt. Der Verkehr wird nur dann zwischen
|
|
zwei Segmenten weitergeleitet, wenn sich Sender und
|
|
Empfänger in verschiedenen Netzwerksegmenten
|
|
befinden.</para>
|
|
|
|
<para>In vielerlei Hinsicht entspricht eine Bridge daher einem
|
|
Ethernet-Switch mit sehr wenigen Ports.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Situationen, in denen <emphasis>Bridging</emphasis>
|
|
angebracht ist</title>
|
|
|
|
<para>Es gibt zahlreiche Situationen, in denen der Einsatz
|
|
einer Bridge sinnvoll ist:</para>
|
|
|
|
<sect3>
|
|
<title>Verbinden von Netzwerken</title>
|
|
|
|
<para>Die Hauptaufgabe einer Bridge ist die Verbindung von zwei
|
|
oder mehreren Netzwerksegmenten zu einem gemeinsamen Netzwerk.
|
|
Es ist oft sinnvoller, eine hostbasierte Bridge anstelle
|
|
normaler Netzwerkkomponenten (wie Kabelverbindungen),
|
|
Firewalls oder Pseudonetzwerken über die
|
|
Schnittstelle einer virtuellen Maschine einzusetzen.
|
|
Eine Bridge kann außerdem ein drahtloses Gerät mit
|
|
einem Kabelnetzwerk verbinden. Diese Fähigkeit der
|
|
Bridge wird als <foreignphrase>HostAP-Modus</foreignphrase>
|
|
bezeichnet. Die Bridge agiert in diesem Fall als
|
|
Access Point für das drahtlose Gerät.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Filtering/Traffic Shaping Firewall</title>
|
|
|
|
<indexterm><primary>Firewall</primary></indexterm>
|
|
<indexterm><primary>NAT</primary></indexterm>
|
|
|
|
<para>Häufig kommt es vor, dass Firewallfunktionen
|
|
benötigt werden, ohne dass Routing oder
|
|
<foreignphrase>Network Adress Translation</foreignphrase>
|
|
(NAT) verwendet werden soll.</para>
|
|
|
|
<para>Ein Beispiel dafür wäre ein kleines Unternehmen,
|
|
das über DSL oder ISDN an seinen ISP angebunden ist. Es
|
|
verfügt über 13 weltweit erreichbare IP-Adressen,
|
|
sein Netzwerk besteht aus 10 Rechnern. In dieser Situation
|
|
ist der Einsatz von Subnetzen sowie einer routerbasierten
|
|
Firewall schwierig.</para>
|
|
|
|
<indexterm><primary>Router</primary></indexterm>
|
|
<indexterm><primary>DSL</primary></indexterm>
|
|
<indexterm><primary>ISDN</primary></indexterm>
|
|
|
|
<para>Eine brigdebasierte Firewall kann konfiguriert und in den
|
|
ISDN/DSL-Downstreampfad ihres Routers eingebunden werden, ohne
|
|
dass Sie sich um IP-Adressen kümmern müssen.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Netzwerküberwachung</title>
|
|
|
|
<para>Eine Bridge kann zwei Netzwerksegmente miteinander
|
|
verbinden und danach alle Ethernet-Rahmen überprüfen,
|
|
die zwischen den beiden Netzwerksegmenten ausgetauscht werden.
|
|
Dazu verwendet man entweder &man.bpf.4;/&man.tcpdump.1; auf
|
|
dem Netzgerät der Bridge oder schickt Kopien aller
|
|
Rahmen an ein zusätzliches Netzgerät (den sogenannten
|
|
<foreignphrase>Span Port</foreignphrase>).</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Layer 2-VPN</title>
|
|
|
|
<para>Zwei Ethernetnetzwerke können über einen IP-Link
|
|
miteinander verbunden werden, indem Sie die beiden Netzwerke
|
|
über einen EtherIP-Tunnel koppeln oder eine
|
|
&man.tap.4;-basierte Lösung wie OpenVPN einsetzen.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Layer 2-Redundanz</title>
|
|
|
|
<para>Die Systeme eines Netzwerks können redundant
|
|
miteinander verbunden sein. In diesem Fall verwenden Sie das
|
|
<foreignphrase>Spanning Tree Protocol</foreignphrase>, um
|
|
redundante Pfade zu blockieren. Damit ein Ethernetnetzwerk
|
|
korrekt arbeitet, darf immer nur ein aktiver Pfad zwischen
|
|
zwei Geräten des Netzwerks existieren. Aufgabe des
|
|
Spanning Tree Protocols ist es daher, Schleifen zu entdecken
|
|
und redundante Links in den Status
|
|
<emphasis>blockiert</emphasis> zu versetzen. Fällt ein
|
|
aktiver Link aus, so berechnet das Protokoll einen neuen
|
|
Pfad. Dazu wird ein blockierter Pfad in den Status
|
|
<emphasis>aktiv</emphasis> versetzt, damit alle Systeme des
|
|
Netzwerks wieder miteinander kommunizieren können.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Kernelkonfiguration</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt nur die
|
|
&man.if.bridge.4;-Bridge-Implementierung. Ein
|
|
Netgraph-Bridge-Treiber ist ebenfalls verfügbar, wird
|
|
hier aber nicht behandelt. Lesen Sie die Manualpage
|
|
&man.ng.bridge.4;, wenn Sie diesen Treiber einsetzen
|
|
wollen.</para>
|
|
|
|
<para>Bei diesem Treiber handelt es sich um ein
|
|
Kernelmodul, das von &man.ifconfig.8; automatisch geladen
|
|
wird, wenn ein Bridge-Interface erzeugt wird. Alternativ ist
|
|
es aber auch möglich, die Unterstützung für
|
|
den Treiber in Ihren Kernel zu kompilieren. Dazu fügen
|
|
Sie die Zeile <literal>device if_bridge</literal> in Ihre
|
|
Kernelkonfigurationsdatei ein und bauen danach den Kernel
|
|
neu.</para>
|
|
|
|
<para>Paketfilter können mit allen Firewallpaketen verwendet
|
|
werden, die das &man.pfil.9;-Framework benutzen. Die Firewall
|
|
kann dabei entweder als Kernelmodul geladen oder in den Kernel
|
|
kompiliert werden.</para>
|
|
|
|
<para>Eine Bridge kann auch als <foreignphrase>Traffic
|
|
Shaper</foreignphrase> verwendet werden, wenn Sie
|
|
&man.altq.4; oder &man.dummynet.4; einsetzen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Die LAN-Kopplung aktivieren</title>
|
|
|
|
<para>Eine Bridge wird durch das Klonen von Schnittstellen
|
|
erzeugt. Um eine Bridge zu erzeugen, verwenden Sie den Befehl
|
|
&man.ifconfig.8;. Ist der Bridge-Treiber nicht in Ihren Kernel
|
|
kompiliert, wird er automatisch geladen.</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig bridge create</userinput>
|
|
bridge0
|
|
&prompt.root; <userinput>ifconfig bridge0</userinput>
|
|
bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
ether 96:3d:4b:f1:79:7a
|
|
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
|
|
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
|
|
root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0</screen>
|
|
|
|
<para>Im obigen Beispiel wird die Bridge erzeugt und erhält
|
|
automatisch eine zufällig generierte Ethernet-Adresse
|
|
zugewiesen. Die Parameter <literal>maxaddr</literal> sowie
|
|
<literal>timeout</literal> legen fest, wie viele MAC-Adressen
|
|
die Bridge in ihrer Forward-Tabelle halten kann beziehungsweise
|
|
wie viele Sekunden jeder Eintrag erhalten bleiben soll, nachdem
|
|
er zuletzt verwendet wurde. Die restlichen Parameter sind
|
|
für die Konfiguration von Spanning Tree notwendig.</para>
|
|
|
|
<para>Im nächsten Schritt werden die Schnittstellen, die
|
|
die Bridge verbinden soll, zugewiesen. Damit die Bridge
|
|
Datenpakete weiterleiten kann, müssen sowohl die Bridge
|
|
als auch die Schnittstellen (der zu verbindenden
|
|
Netzwerksegmente) aktiviert sein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig bridge0 addm fxp0 addm fxp1 up</userinput>
|
|
&prompt.root; <userinput>ifconfig fxp0 up</userinput>
|
|
&prompt.root; <userinput>ifconfig fxp1 up</userinput></screen>
|
|
|
|
<para>Danach ist die Bridge in der Lage, Ethernet-Rahmen zwischen
|
|
den Schnittstellen <devicename>fxp0</devicename> und
|
|
<devicename>fxp1</devicename> weiterzuleiten. Um diese
|
|
Konfiguration beim Systemstart automatisch zu aktivieren,
|
|
müssen Sie folgende Einträge in die Datei
|
|
<filename>/etc/rc.conf</filename> aufnehmen:</para>
|
|
|
|
<programlisting>cloned_interfaces="bridge0"
|
|
ifconfig_bridge0="addm fxp0 addm fxp1 up"
|
|
ifconfig_fxp0="up"
|
|
ifconfig_fxp1="up"</programlisting>
|
|
|
|
<para>Benötigen Sie für die Bridge eine IP-Adresse,
|
|
müssen Sie diese der Schnittstelle der Bridge zuweisen
|
|
(und nicht einer der Schnittstellen der gekoppelten
|
|
Netzwerksegmente). Dabei können Sie die IP-Adresse
|
|
sowohl statisch als auch dynamisch über DHCP
|
|
zuweisen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig bridge0 inet 192.168.0.1/24</userinput></screen>
|
|
|
|
<para>Sie können der Bridge-Schnittstelle auch eine
|
|
IPv6-Adresse zuweisen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Firewalls</title>
|
|
<indexterm><primary>firewall</primary></indexterm>
|
|
|
|
<para>Nachdem ein Paketfilter aktiviert wurde, können
|
|
Datenpakete, die von den Schnittstellen der gekoppelten
|
|
Netzwerksegmente gesendet und empfangen werden, über
|
|
die Bridge weitergeleitet oder nach bestimmten Regeln
|
|
gefiltert oder auch komplett geblockt werden. Ist die
|
|
Richtung des Paketflusses wichtig, ist es am besten, eine
|
|
Firewall auf den Schnittstellen der einzelnen
|
|
Netzwerksegmente einzurichten und nicht auf der Bridge
|
|
selbst.</para>
|
|
|
|
<para>Eine Bridge verfügt über verschiedene Optionen,
|
|
über die Sie die Weiterleitung von Nicht-IP- und
|
|
ARP-Paketen sowie den Einsatz von Layer 2-Firewalls
|
|
(mit IPFW) steuern können. Lesen Sie die Manualpage
|
|
&man.if.bridge.4;, wenn Sie diese Funktionen
|
|
benötigen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Spanning Tree</title>
|
|
|
|
<para>Der Bridge-Treiber implementiert das <foreignphrase>Rapid
|
|
Spanning Tree Protocol</foreignphrase> (RSTP oder 802.1w), das
|
|
abwärtskompatibel zum veralteten <foreignphrase>Spanning
|
|
Tree Protocol</foreignphrase> (STP) ist. Spanning Tree
|
|
dient dazu, Schleifen in einer Netzwerktopologie zu entdecken
|
|
und zu entfernen. RSTP arbeitet dabei schneller als das
|
|
veraltete STP. RSTP tauscht Informationen mit
|
|
benachbarten Switchen aus, um Pakete korrekt weiterzuleiten
|
|
und eine Schleifenbildung zu verhindern.</para>
|
|
|
|
<para>&os; unterstützt die Betriebsmode RSTP sowie STP,
|
|
von denen RSTP als Standardmodus voreingestellt ist.</para>
|
|
|
|
<para>Spanning Tree kann auf den Schnittstellen der
|
|
durch die Bridge verbundenen Netzwerksegmente über die
|
|
Option <literal>stp</literal> aktiviert werden. Für eine
|
|
Bridge, die die Schnittstellen <devicename>fxp0</devicename> und
|
|
<devicename>fxp1</devicename> verbindet, aktivieren Sie STP wie
|
|
folgt:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig bridge0 stp fxp0 stp fxp1</userinput>
|
|
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
ether d6:cf:d5:a0:94:6d
|
|
id 00:01:02:4b:d4:50 priority 32768 hellotime 2 fwddelay 15
|
|
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
|
|
root id 00:01:02:4b:d4:50 priority 32768 ifcost 0 port 0
|
|
member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
|
|
port 3 priority 128 path cost 200000 proto rstp
|
|
role designated state forwarding
|
|
member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
|
|
port 4 priority 128 path cost 200000 proto rstp
|
|
role designated state forwarding</screen>
|
|
|
|
<para>Diese Bridge hat die Spanning-Tree-ID
|
|
<literal>00:01:02:4b:d4:50</literal> und die Priorität
|
|
<literal>32768</literal>. Da diese ID mit der
|
|
<literal>Root-ID</literal> identisch ist, handelt es sich um die
|
|
Root-Bridge dieses Netzwerks.</para>
|
|
|
|
<para>Auf einer anderen Bridge des Netzwerks ist Spanning Tree
|
|
ebenfalls aktiviert:</para>
|
|
|
|
<screen>bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
ether 96:3d:4b:f1:79:7a
|
|
id 00:13:d4:9a:06:7a priority 32768 hellotime 2 fwddelay 15
|
|
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
|
|
root id 00:01:02:4b:d4:50 priority 32768 ifcost 400000 port 4
|
|
member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
|
|
port 4 priority 128 path cost 200000 proto rstp
|
|
role root state forwarding
|
|
member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
|
|
port 5 priority 128 path cost 200000 proto rstp
|
|
role designated state forwarding</screen>
|
|
|
|
<para>Die Zeile <literal>root id 00:01:02:4b:d4:50 priority 32768
|
|
ifcost 400000 port 4</literal> zeigt an, dass die Root-Bridge wie
|
|
im obigen Beispiel die ID <literal>00:01:02:4b:d4:50</literal>
|
|
hat. Die Pfadkosten hin zur Root-Bridge betragen
|
|
<literal>400000</literal>, wobei der Pfad zur Root-Bridge
|
|
über <literal>Port 4</literal> geht (der wiederum
|
|
der Schnittstelle <devicename>fxp0</devicename>
|
|
entspricht).</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Fortgeschrittene Funktionen</title>
|
|
|
|
<sect3>
|
|
<title>Den Datenfluss rekonstruieren</title>
|
|
|
|
<para>Die Bridge unterstützt den Monitormodus. Dabei
|
|
werden alle Pakete verworfen, nachdem sie von &man.bpf.4;
|
|
verarbeitet wurden. In diesem Modus erfolgt keine weitere
|
|
Bearbeitung und auch keine Weiterleitung von Datenpaketen.
|
|
Es ist daher möglich, die Eingabe von zwei oder mehr
|
|
Netzwerkschnittstellen in einen einzigen gemeinsamen
|
|
&man.bpf.4;-Stream zu vereinen. Ein solcher Datenstrom
|
|
ist beispielsweise nützlich, um den Datenverkehr für
|
|
""network taps"" zu rekonstruieren, die ihre RX/TX-Signale
|
|
über verschiedene Schnittstellen senden.</para>
|
|
|
|
<para>Um die Eingabe von vier Netzwerkschnittstellen in einzigen
|
|
gemeinsamen Datenstrom zu vereinen, geben Sie Folgendes
|
|
ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig bridge0 addm fxp0 addm fxp1 addm fxp2 addm fxp3 monitor up</userinput>
|
|
&prompt.root; <userinput>tcpdump -i bridge0</userinput></screen>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Span Ports</title>
|
|
|
|
<para>Eine Kopie jedes Ethernet-Rahmens, der an der Bridge
|
|
ankommt, wird über einen festgelegten
|
|
<foreignphrase>Span Port</foreignphrase> verschickt.
|
|
Auf einer Bridge können
|
|
beliebig viele Span Ports festgelegt werden. Wird
|
|
eine Schnittstelle als Span Port konfiguriert, kann
|
|
sie nicht mehr als normaler Bridge-Port verwendet werden.
|
|
Eine derartige Konfiguration ist beispielsweise sinnvoll,
|
|
um den Datenverkehr, der in einem Netzwerk über die
|
|
Bridge läuft, auf einen Rechner zu übertragen,
|
|
der mit einem Span Port der Bridge verbunden
|
|
ist.</para>
|
|
|
|
<para>Um eine Kopie aller Ethernet-Rahmen über die
|
|
Schnittstelle <devicename>fxp4</devicename> zu verschicken,
|
|
geben Sie Folgendes ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig bridge0 span fxp4</userinput></screen>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Private Schnittstellen</title>
|
|
|
|
<para>Eine private Schnittstelle leitet keine Daten an einen
|
|
Port weiter, bei dem es sich ebenfalls um eine private
|
|
Schnittstelle handelt. Der Datenverkehr wird dabei komplett
|
|
blockiert, auch Ethernet-Rahmen und ARP-Pakete werden nicht
|
|
weitergeleitet. Wollen Sie hingegen nur spezifische
|
|
Datenpakete blockieren, sollten Sie eine Firewall
|
|
einsetzen.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Schnittstellen als <foreignphrase>sticky</foreignphrase>
|
|
kennzeichnen</title>
|
|
|
|
<para>Wenn die Schnittstelle eines über eine Bridge
|
|
verbundenen Netzwerksegments als
|
|
<foreignphrase>sticky</foreignphrase> gekennzeichnet wird,
|
|
werden alle dynamisch gelernten Adressen als statische Adressen
|
|
behandelt, sobald sie in den Forward-Cache der Bridge
|
|
aufgenommen wurden. Sticky-Einträge werden niemals aus
|
|
dem Cache entfernt oder ersetzt. Selbst dann nicht, wenn die
|
|
Adresse von einer anderen Schnittstelle verwendet wird. Sie
|
|
können dadurch die Vorteile statischer Adresseinträge
|
|
nutzen, ohne die Forward-Tabelle vor dem Einsatz der Bridge
|
|
mit statischen Einträgen füllen zu müssen.
|
|
Clients, die sich in einem bestimmten von der Bridge
|
|
verwalteten Segmente befinden, können dabei nicht in ein
|
|
anderes Segment wechseln.</para>
|
|
|
|
<para>Ein weiteres Beispiel für den Einsatz von
|
|
Sticky-Adressen wäre die Kombination einer Bridge mit
|
|
mehreren VLANs, um einen Router zu konfigurieren, der in
|
|
in der Lage ist, einzelne Kundennetzwerke voneinander zu
|
|
trennen, ohne IP-Adressbereiche zu verschwenden. Für das
|
|
folgende Beispiel nehmen wir an, dass sich der Client
|
|
<hostid role="hostname">CustomerA</hostid> im VLAN
|
|
<literal>vlan100</literal> und der Client
|
|
<hostid role="hostname">CustomerB</hostid> im VLAN
|
|
<literal>vlan101</literal> befinden. Die Bridge hat die
|
|
IP-Adresse <hostid role="ipaddr">192.168.0.1</hostid> und ist
|
|
als Internet-Router konfiguriert.</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig bridge0 addm vlan100 sticky vlan100 addm vlan101 sticky vlan101</userinput>
|
|
&prompt.root; <userinput>ifconfig bridge0 inet 192.168.0.1/24</userinput></screen>
|
|
|
|
<para>Beide Clients sehen <hostid
|
|
role="ipaddr">192.168.0.1</hostid> als Ihr Default-Gateway.
|
|
Da der Brücken-Cache <emphasis>sticky</emphasis> ist,
|
|
sind Sie nicht dazu in der Lage, die MAC-Adresse des
|
|
anderen Kunden zu spoofen und dessen Datenverkehr
|
|
abzufangen.</para>
|
|
|
|
<para>Sie können die Kommunikation zwischen den VLANs
|
|
vollständig unterbinden, wenn Sie private Schnittstellen
|
|
(oder eine Firewall) einsetzen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig bridge0 private vlan100 private vlan101</userinput></screen>
|
|
|
|
<para>Die Kunden sind nun komplett voneinander isoliert und
|
|
der komplette <hostid role="netmask">/24</hostid>-Adressbereich
|
|
kann zugewiesen werden, ohne dass Sie Subnetze einsetzen
|
|
müssen.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Adressen-Limitierung</title>
|
|
|
|
<para>Die maximale mögliche Anzahl an eindeutigen
|
|
MAC-Adressen hinter einer Schnittstelle kann festgelegt werden.
|
|
Sobald das Limit erreicht ist, werden Pakete mit einer
|
|
unbekannten Quell-Adresse solange verworfen, bis ein
|
|
exisitierender Eintrag gelöscht wird oder
|
|
abläuft.</para>
|
|
|
|
<para>Das folgende Beispiel setzt die maximale Anzahl von
|
|
Netzgeräten für
|
|
<hostid role="hostname">CustomerA</hostid> für
|
|
das VLAN <literal>vlan100</literal> auf 10.</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig bridge0 ifmaxaddr vlan100 10</userinput></screen>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>SNMP-Monitoring</title>
|
|
|
|
<para>Die Schnittstelle der Bridge sowie die STP-Parameter
|
|
können durch den bereits im Basissystem enthaltenen
|
|
SNMP-Daemon überwacht werden. Die exportierten
|
|
Bridge-MIBs entsprechen den IETF-Standards, daher können
|
|
Sie einen beliebigen SNMP-Client oder ein beliebiges
|
|
Monitoring-Werkzeug einsetzen, um die benötigten Daten
|
|
zu erhalten.</para>
|
|
|
|
<para>Auf dem Rechner, auf dem die Bridge konfiguriert ist,
|
|
aktivieren Sie die Zeile
|
|
<literal>begemotSnmpdModulePath."bridge" = "/usr/lib/snmp_bridge.so"</literal>
|
|
in der Datei <filename>/etc/snmp.config</filename> und starten
|
|
danach den <application>bsnmpd</application>-Daemon.
|
|
Eventuell benötigen Sie noch weitere
|
|
Konfigurationsparameter wie Community-Namen und
|
|
Zugriffslisten. Die Konfiguration dieser Parameter wird
|
|
in den Manualpages &man.bsnmpd.1; sowie &man.snmp.bridge.3;
|
|
beschrieben.</para>
|
|
|
|
<para>Die folgenden Beispiele verwenden das Softwarepaket
|
|
<application>Net-SNMP</application> (<filename
|
|
role="package">net-mgmt/net-snmp</filename>), um die Bridge
|
|
abzufragen. Alternativ können Sie dafür auch den
|
|
Port <filename role="package">net-mgmt/bsnmptools</filename>
|
|
einsetzen. Auf dem SNMP-Client fügen Sie danach die
|
|
folgenden Zeilen in die Datei
|
|
<filename>$HOME/.snmp/snmp.conf</filename> ein, um die
|
|
MIB-Definitionen der Bridge in
|
|
<application>Net-SNMP</application> zu importieren:</para>
|
|
|
|
<programlisting>mibdirs +/usr/share/snmp/mibs
|
|
mibs +BRIDGE-MIB:RSTP-MIB:BEGEMOT-MIB:BEGEMOT-BRIDGE-MIB</programlisting>
|
|
|
|
<para>Um eine einzelne Bridge über den IETF BRIDGE-MIB
|
|
(RFC4188) zu überwachen, geben Sie Folgendes ein:</para>
|
|
|
|
<screen>&prompt.user; <userinput>snmpwalk -v 2c -c public bridge1.example.com mib-2.dot1dBridge</userinput>
|
|
BRIDGE-MIB::dot1dBaseBridgeAddress.0 = STRING: 66:fb:9b:6e:5c:44
|
|
BRIDGE-MIB::dot1dBaseNumPorts.0 = INTEGER: 1 ports
|
|
BRIDGE-MIB::dot1dStpTimeSinceTopologyChange.0 = Timeticks: (189959) 0:31:39.59 centi-seconds
|
|
BRIDGE-MIB::dot1dStpTopChanges.0 = Counter32: 2
|
|
BRIDGE-MIB::dot1dStpDesignatedRoot.0 = Hex-STRING: 80 00 00 01 02 4B D4 50
|
|
...
|
|
BRIDGE-MIB::dot1dStpPortState.3 = INTEGER: forwarding(5)
|
|
BRIDGE-MIB::dot1dStpPortEnable.3 = INTEGER: enabled(1)
|
|
BRIDGE-MIB::dot1dStpPortPathCost.3 = INTEGER: 200000
|
|
BRIDGE-MIB::dot1dStpPortDesignatedRoot.3 = Hex-STRING: 80 00 00 01 02 4B D4 50
|
|
BRIDGE-MIB::dot1dStpPortDesignatedCost.3 = INTEGER: 0
|
|
BRIDGE-MIB::dot1dStpPortDesignatedBridge.3 = Hex-STRING: 80 00 00 01 02 4B D4 50
|
|
BRIDGE-MIB::dot1dStpPortDesignatedPort.3 = Hex-STRING: 03 80
|
|
BRIDGE-MIB::dot1dStpPortForwardTransitions.3 = Counter32: 1
|
|
RSTP-MIB::dot1dStpVersion.0 = INTEGER: rstp(2)</screen>
|
|
|
|
<para>Der Wert der Variable
|
|
<literal>dot1dStpTopChanges.0</literal> ist hier 2, die
|
|
STP-Topologie der Bridge wurde also bereits zweimal
|
|
geändert. Unter einer Änderung versteht man dabei
|
|
die Anpassung eines oder mehrerer Links und die Kalkulation
|
|
eines neuen Baums. Der Wert der Variable
|
|
<literal>dot1dStpTimeSinceTopologyChange.0</literal> gibt an,
|
|
wann dies zuletzt geschah.</para>
|
|
|
|
<para>Um mehrere Bridge-Schnittstellen zu überwachen,
|
|
können Sie den privaten BEGEMOT-BRIDGE-MIB
|
|
einsetzen:</para>
|
|
|
|
<screen>&prompt.user; <userinput>snmpwalk -v 2c -c public bridge1.example.com</userinput>
|
|
enterprises.fokus.begemot.begemotBridge
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge0" = STRING: bridge0
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge2" = STRING: bridge2
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge0" = STRING: e:ce:3b:5a:9e:13
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge2" = STRING: 12:5e:4d:74:d:fc
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge0" = INTEGER: 1
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge2" = INTEGER: 1
|
|
...
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge0" = Timeticks: (116927) 0:19:29.27 centi-seconds
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge2" = Timeticks: (82773) 0:13:47.73 centi-seconds
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge0" = Counter32: 1
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge2" = Counter32: 1
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge0" = Hex-STRING: 80 00 00 40 95 30 5E 31
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge2" = Hex-STRING: 80 00 00 50 8B B8 C6 A9</screen>
|
|
|
|
<para>Um die über den
|
|
<literal>mib-2.dot1dBridge</literal>-Subtree überwachte
|
|
Bridge-Schnittstelle zu ändern, geben Sie Folgendes
|
|
ein:</para>
|
|
|
|
<screen>&prompt.user; <userinput>snmpset -v 2c -c private bridge1.example.com</userinput>
|
|
BEGEMOT-BRIDGE-MIB::begemotBridgeDefaultBridgeIf.0 s bridge2</screen>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-aggregation">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Andrew</firstname>
|
|
<surname>Thompson</surname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Benedict</firstname>
|
|
<surname>Reuschling</surname>
|
|
<contrib>Übersetzt von </contrib>
|
|
</author>
|
|
<author>
|
|
<firstname>Sharon</firstname>
|
|
<surname>Bahagi</surname>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
<title>Link-Aggregation und Failover</title>
|
|
|
|
<indexterm><primary>lagg</primary></indexterm>
|
|
<indexterm><primary>failover</primary></indexterm>
|
|
<indexterm><primary>fec</primary></indexterm>
|
|
<indexterm><primary>lacp</primary></indexterm>
|
|
<indexterm><primary>loadbalance</primary></indexterm>
|
|
<indexterm><primary>roundrobin</primary></indexterm>
|
|
|
|
<sect2>
|
|
<title>Einleitung</title>
|
|
<para>Die &man.lagg.4;-Schnittstelle erlaubt die Aggregation von
|
|
mehreren Netzwerkadaptern als eine virtuelle Schnittstelle mit dem
|
|
Ziel, Ausfallsicherheit (Failover) und Hochgeschwindigkeitsverbindungen
|
|
bereitzustellen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Anwendungsoptionen</title>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry><term>Ausfallsicherheit (Failover)</term>
|
|
|
|
<listitem>
|
|
<para>Sendet und empfängt Netzwerkverkehr nur auf dem
|
|
Masterport. Sollte der Masterport nicht zur Verfügung stehen,
|
|
wird der nächste aktive Port verwendet. Der zuerst
|
|
hinzugefügte Adapter wird zum Masterport, jeder weitere Adapter
|
|
dient als Gerät zur Ausfallsicherheit.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>&cisco; Fast ðerchannel;</term>
|
|
|
|
<listitem>
|
|
<para>&cisco; Fast ðerchannel; (FEC), ist eine statische
|
|
Konfiguration und handelt weder Aggregation mit der Gegenstelle aus,
|
|
noch werden Frames zur Überwachung der Verbindung ausgetauscht.
|
|
Wenn der Switch LACP unterstützt, sollte diese Option auch
|
|
verwendet werden.</para>
|
|
|
|
<para><acronym>FEC</acronym> balanciert den ausgehenden Verkehr
|
|
über die aktiven Ports, basierend auf gehashten
|
|
Protokollheaderinformationen und akzeptiert eingehenden Verkehr auf
|
|
jedem aktiven Port. Der Hash enthält die Ethernet-Quell- und
|
|
Zieladresse, und, falls verfügbar, den VLAN-Tag, sowie die
|
|
IPv4/IPv6 Quell- und Zieladresse.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>LACP</term>
|
|
|
|
<listitem>
|
|
<para>Das &ieee; 802.3ad Link-Aggregation Control Protokoll
|
|
(LACP) und das Marker Protocol. LACP wird eine Menge von
|
|
aggregierbaren Verbindungen mit der Gegenstelle in einer oder
|
|
mehreren Link Aggregated Groups (LAG) aushandeln. Jede LAG besteht
|
|
aus Ports der gleichen Geschwindigkeit, eingestellt auf
|
|
Voll-Duplex-Betrieb. Der Verkehr wird über die Ports
|
|
in der LAG mit der größten Gesamtgeschwindigkeit
|
|
balanciert, in den meisten Fällen wird es nur eine LAG geben,
|
|
die alle Ports enthält. Im Falle von Änderungen in der
|
|
physischen Anbindung wird die Link-Aggregation schnell zu einer
|
|
neuen Konfiguration konvergieren.</para>
|
|
|
|
<para><acronym>LACP</acronym> balanciert ausgehenden Verkehr
|
|
über die aktiven Ports basierend auf der gehashten
|
|
Protokollheaderinformation und akzeptiert eingehenden Verkehr auf
|
|
jedem aktiven Port. Der Hash beinhaltet die Ethernet-Quell- und
|
|
Zieladresse, und, soweit verfügbar, den VLAN-Tag, sowie die
|
|
IPv4/IPv6 Quell- und Zieladresse.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>Lastverteilung (Loadbalance)</term>
|
|
|
|
<listitem>
|
|
<para>Dabei handelt es sich um einen Alias des
|
|
<emphasis>FEC</emphasis>-Modus.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>Round-Robin</term>
|
|
|
|
<listitem>
|
|
<para>Verteilt ausgehenden Verkehr mittels einer Round-Robin-Zuteilung
|
|
über alle aktiven Ports und akzeptiert eingehenden Verkehr auf
|
|
jedem aktiven Port. Dieser Modus verletzt die Reihenfolge von
|
|
Ethernet-Frames und sollte mit Vorsicht eingesetzt werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Beispiele</title>
|
|
|
|
<example id="networking-lacp-aggregation-cisco">
|
|
<title>LACP Aggregation mit einem Switch von &cisco;</title>
|
|
|
|
<para>Dieses Beispiel verbindet zwei Adapter auf einer &os;-Maschine
|
|
mit dem Switch als eine einzelne, lastverteilte und ausfallsichere
|
|
Verbindung. Weitere Adapter können hinzugefügt werden, um
|
|
den Durchsatz zu erhöhen und die Ausfallsicherheit zu steigern.
|
|
Da die Reihenfolge der Frames bei Ethernet zwingend eingehalten
|
|
werden muss, fließt auch jeglicher Verkehr zwischen zwei
|
|
Stationen über den gleichen physischen Kanal, was die maximale
|
|
Geschwindigkeit der Verbindung auf die eines einzelnen Adapters
|
|
beschränkt. Der Übertragungsalgorithmus versucht, so viele
|
|
Informationen wie möglich zu verwenden, um die verschiedenen
|
|
Verkehrsflüsse zu unterscheiden und balanciert diese über
|
|
die verfügbaren Adapter.</para>
|
|
|
|
<para>Fügen Sie auf dem &cisco;-Switch die Adapter
|
|
<replaceable>FastEthernet0/1</replaceable> und
|
|
<replaceable>FastEthernet0/2</replaceable> zu der
|
|
channel-group <replaceable>1</replaceable> hinzu:</para>
|
|
|
|
<screen><userinput>interface <replaceable>FastEthernet0/1</replaceable>
|
|
channel-group <replaceable>1</replaceable> mode active
|
|
channel-protocol lacp</userinput>
|
|
!
|
|
<userinput>interface <replaceable>FastEthernet0/2</replaceable>
|
|
channel-group <replaceable>1</replaceable> mode active
|
|
channel-protocol lacp</userinput></screen>
|
|
|
|
<para>Auf der Maschine mit &os; erstellen Sie die
|
|
&man.lagg.4;-Schnittstelle unter Verwendung von
|
|
<replaceable>fxp0</replaceable> und
|
|
<replaceable>fxp1</replaceable>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> create </userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> up laggproto lacp laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable></userinput></screen>
|
|
|
|
<para>Überprüfen Sie den Status der Schnittstelle, indem
|
|
Sie folgendes eingeben:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable></userinput></screen>
|
|
|
|
<para>Ports, die als <emphasis>ACTIVE</emphasis> markiert sind, sind
|
|
Teil der aktiven Aggregations-Gruppe, die mit dem Switch
|
|
ausgehandelt wurde und der Verkehr wird über diese
|
|
übertragen und empfangen. Benutzen Sie die ausführliche
|
|
Ausgabe von &man.ifconfig.8;, um sich die LAG-Identifikatoren
|
|
anzeigen zu lassen.</para>
|
|
|
|
<screen>lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
options=8<VLAN_MTU>
|
|
ether 00:05:5d:71:8d:b8
|
|
media: Ethernet autoselect
|
|
status: active
|
|
laggproto lacp
|
|
laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
|
|
laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING></screen>
|
|
|
|
<para>Um den Status der Ports auf dem Switch anzuzeigen, geben Sie
|
|
<userinput>show lacp neighbor</userinput> ein:</para>
|
|
|
|
<screen>switch# show lacp neighbor
|
|
Flags: S - Device is requesting Slow LACPDUs
|
|
F - Device is requesting Fast LACPDUs
|
|
A - Device is in Active mode P - Device is in Passive mode
|
|
|
|
Channel group 1 neighbors
|
|
|
|
Partner's information:
|
|
|
|
LACP port Oper Port Port
|
|
Port Flags Priority Dev ID Age Key Number State
|
|
Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D
|
|
Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3D</screen>
|
|
|
|
<para>Benutzen Sie das Kommando <userinput>show lacp neighbor
|
|
detail</userinput>, um weitere Informationen zu erhalten.</para>
|
|
</example>
|
|
<example id="networking-lagg-failover">
|
|
<title>Ausfallsicherer Modus</title>
|
|
|
|
<para>Der ausfallsichere Modus kann verwendet werden, um zu einer
|
|
zweiten Schnittstelle zu wechseln, sollte die Verbindung mit der
|
|
Master-Schnittstelle ausfallen. Erstellen und konfigurieren Sie die
|
|
<replaceable>lagg0</replaceable>-Schnittstelle mit
|
|
<replaceable>fxp0</replaceable> als Master und
|
|
<replaceable>fxp1</replaceable> als die sekundäre
|
|
Schnittstelle:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> create</userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> up laggproto failover laggport <replaceable>fxp0</replaceable> laggport <replaceable>fxp1</replaceable></userinput></screen>
|
|
|
|
<para>Die Schnittstelle wird so ähnlich wie im folgenden
|
|
aussehen, mit dem großen Unterschied, dass die
|
|
<acronym>MAC</acronym>-Adresse und die Gerätenamen
|
|
unterschiedlich sein werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable></userinput>
|
|
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
options=8<VLAN_MTU>
|
|
ether 00:05:5d:71:8d:b8
|
|
media: Ethernet autoselect
|
|
status: active
|
|
laggproto failover
|
|
laggport: fxp1 flags=0<>
|
|
laggport: fxp0 flags=5<MASTER,ACTIVE></screen>
|
|
|
|
<para>Der Verkehr wird auf <replaceable>fxp0</replaceable>
|
|
übertragen und empfangen. Wenn die Verbindung auf
|
|
<replaceable>fxp0</replaceable> abbricht, so wird
|
|
<replaceable>fxp1</replaceable> die Verbindung übernehmen.
|
|
Sobald die Verbindung auf der Master-Schnittstelle wiederhergestellt
|
|
ist, wird diese auch wieder als aktive Schnittstelle genutzt.</para>
|
|
</example>
|
|
|
|
<example id="networking-lagg-wired-and-wireless">
|
|
<title>Failover Modus zwischen drahtgebundenen und drahtlosen
|
|
Schnittstellen</title>
|
|
|
|
<para>Für Laptop-Benutzer ist es normalerweise
|
|
wünschenswert, wireless als sekundäre Schnittstelle
|
|
einzurichten, die verwendet wird, wenn die Verbindung via Kabel
|
|
nicht verfügbar ist. Mit &man.lagg.4; ist es möglich,
|
|
eine IP-Adresse für die Kabelverbindung zu verwenden.
|
|
Sie ist leistungsfähig und sicher. Gleichzeitig haben Sie
|
|
die Möglichkeit Daten über die drahtlose Verbindung
|
|
zu übertragen.</para>
|
|
|
|
<para>In dieser Konfiguration, müssen wir die zugrunde
|
|
liegenden <acronym>MAC</acronym>-Adresse der WLAN-Schnittstelle
|
|
überschreiben, damit sie zur Adresse von &man.lagg.4; passt,
|
|
welche von der drahtgebundenen Masterschnittstelle vererbt
|
|
wurde.</para>
|
|
|
|
<para>In dieser Konfiguration behandeln wir die drahtgebundene
|
|
Schnittstelle <replaceable>bge0</replaceable> als die Master und
|
|
die drahtlose Schnittstelle <replaceable>wlan0</replaceable> als
|
|
die Failover-Schnittstelle. Die <replaceable>wlan0</replaceable>
|
|
wurde von der <replaceable>iwn0</replaceable> mit der
|
|
<acronym>MAC</acronym>-Adresse der kabelgebundenen eingerichtet.
|
|
Im ersten Schritt erhalten wir die <acronym>MAC</acronym>-Adresse
|
|
der kabelgebundenen Schnittstelle:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>bge0</replaceable></userinput>
|
|
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
|
|
ether 00:21:70:da:ae:37
|
|
inet6 fe80::221:70ff:feda:ae37%bge0 prefixlen 64 scopeid 0x2
|
|
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
|
|
media: Ethernet autoselect (1000baseT <full-duplex>)
|
|
status: active</screen>
|
|
|
|
<para>Sie können <replaceable>bge0</replaceable> in
|
|
ihre tatsächliche ändern und werden eine andere
|
|
<literal>ether</literal>-Zeile mit der
|
|
<acronym>MAC</acronym>-Adresse ihrer kabelgebundenen
|
|
Schnittstelle erhalten. Nun ändern wir die zugrunde liegende
|
|
drahtlose Schnittstelle <replaceable>iwn0</replaceable>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>iwn0</replaceable> ether <replaceable>00:21:70:da:ae:37</replaceable></userinput></screen>
|
|
|
|
<para>Starten Sie den Wireless-Schnittstelle, aber ohne
|
|
IP-Adresse:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>wlan0</replaceable> create wlandev <replaceable>iwn0</replaceable> ssid <replaceable>my_router</replaceable> up</userinput></screen>
|
|
|
|
<para>Erstellen Sie die &man.lagg.4; Schnittstelle mit
|
|
<replaceable>bge0</replaceable> als Master und
|
|
<replaceable>wlan0</replaceable> als Failover falls
|
|
notwendig:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> create</userinput>
|
|
&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable> up laggproto failover laggport <replaceable>bge0</replaceable> laggport <replaceable>wlan0</replaceable></userinput></screen>
|
|
|
|
<para>Die Schnittstelle sieht änhlich aus, die Hauptunterschiede
|
|
werden die <acronym>MAC</acronym>-Adresse und die Gerätenamen
|
|
sein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>lagg0</replaceable></userinput>
|
|
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
|
|
options=8<VLAN_MTU>
|
|
ether 00:21:70:da:ae:37
|
|
media: Ethernet autoselect
|
|
status: active
|
|
laggproto failover
|
|
laggport: wlan0 flags=0<>
|
|
laggport: bge0 flags=5<MASTER,ACTIVE></screen>
|
|
|
|
<para>Um zu vermeiden, dass Sie dies nach jedem Neustart machen müssen, können Sie
|
|
etwas in der Art in ihre <filename>/etc/rc.conf</filename>
|
|
Datei schreiben:</para>
|
|
|
|
<programlisting>ifconfig_bge0="up"
|
|
ifconfig_iwn0="ether 00:21:70:da:ae:37"
|
|
wlans_iwn0="wlan0"
|
|
ifconfig_wlan0="WPA"
|
|
cloned_interfaces="lagg0"
|
|
ifconfig_lagg0="laggproto failover laggport bge0 laggport wlan0 DHCP"
|
|
</programlisting>
|
|
</example>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-diskless">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Jean-François</firstname>
|
|
<surname>Dockès</surname>
|
|
<contrib>Aktualisiert von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Alex</firstname>
|
|
<surname>Dupre</surname>
|
|
<contrib>Reorganisiert und erweitert von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Start und Betrieb von FreeBSD über ein Netzwerk</title>
|
|
|
|
<indexterm>
|
|
<primary>plattenloser Arbeitsplatz</primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>plattenloser Betrieb</primary>
|
|
</indexterm>
|
|
|
|
<para>FreeBSD kann über ein Netzwerk starten und arbeiten, ohne
|
|
eine lokale Festplatte zu verwenden, indem es Dateisysteme eines
|
|
<acronym>NFS</acronym>-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:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Es gibt mindestens zwei Möglichkeiten, den Kernel
|
|
über das Netzwerk zu laden:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><acronym>PXE</acronym>: Das
|
|
<quote>Preboot eXecution Environment System</quote> von
|
|
&intel; ist eine Art intelligentes Boot-ROM, das in
|
|
einigen Netzwerkkarten oder Hauptplatinen verwendet wird.
|
|
Weitere Informationen finden Sie in &man.pxeboot.8;.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Der Port
|
|
<application>Etherboot</application>
|
|
(<filename role="package">net/etherboot</filename>)
|
|
erzeugt ROM-fähigen Code, um einen Kernel über
|
|
das Netzwerk zu laden. Dieser Code kann entweder auf ein
|
|
Boot-PROM einer Netzwerkkarte gebrannt werden, was von vielen
|
|
Netzwerkkarten unterstützt wird. Oder er kann von einer
|
|
lokalen Diskette, Festplatte oder von einem laufenden
|
|
&ms-dos;-System geladen werden.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Das Beispielskript
|
|
<filename>/usr/share/examples/diskless/clone_root</filename>
|
|
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.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die Startdateien, die einen plattenlosen Systemstart
|
|
erkennen und unterstützen, sind nach der Installation
|
|
in <filename>/etc</filename> vorhanden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Dateiauslagerungen können sowohl via
|
|
<acronym>NFS</acronym> als auch auf die lokale Platte
|
|
erfolgen.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>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:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Die plattenlosen Rechner haben ein gemeinsames
|
|
<filename>/</filename>- sowie ein gemeinsames
|
|
<filename>/usr</filename>-Dateisystem, die jeweils
|
|
schreibgeschützt sind.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Für die Bereiche des root-Dateisystems, die
|
|
beschreibbar sein müssen, werden mit &man.md.4;
|
|
virtuelle Dateisysteme erzeugt. Dies bedeutet aber auch, dass
|
|
alle Veränderungen verloren gehen, wenn das System neu
|
|
gestartet wird.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Der Kernel wird, in Abhängigkeit von der jeweiligen
|
|
Situation, entweder von <application>Etherboot</application>
|
|
oder von <acronym>PXE</acronym> transferiert und geladen.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<caution><para>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.</para>
|
|
</caution>
|
|
|
|
<para>Alle Informationen in diesem Abschnitt wurden unter
|
|
&os; 5.2.1-RELEASE getestet.</para>
|
|
|
|
<sect2>
|
|
<title>Hintergrundinformationen</title>
|
|
|
|
<para>Die 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:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Kompilierte Optionen haben zur Laufzeit unterschiedliche
|
|
Auswirkungen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Fehlermeldungen sind oft kryptisch oder fehlen
|
|
vollständig.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Daher ist es nützlich, über die im Hintergrund
|
|
ablaufenden Mechanismen Bescheid zu wissen. Dadurch wird es
|
|
einfacher, eventuell auftretende Fehler zu beheben.</para>
|
|
|
|
<para>Verschiedene Operationen müssen ausgeführt werden,
|
|
um ein System erfolgreich zu starten:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>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
|
|
<acronym>DHCP</acronym>- oder das BOOTP-Protokoll verwendet.
|
|
Bei <acronym>DHCP</acronym> handelt es sich um eine
|
|
abwärtskompatible Erweiterung von BOOTP, die die
|
|
gleichen Portnummern und das gleiche Paketformat verwendet.
|
|
</para>
|
|
|
|
<para>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.
|
|
</para>
|
|
|
|
<para><acronym>DHCP</acronym> hat im Vergleich zu BOOTP
|
|
allerdings mehrere Vorteile (bessere Konfigurationsdateien,
|
|
die Möglichkeit zur Verwendung von
|
|
<acronym>PXE</acronym>, sowie viele andere, die nicht in
|
|
direktem Zusammenhang mit dem plattenlosen Betrieb stehen).
|
|
Dieser Abschnitt beschreibt die Konfiguration mittels
|
|
<acronym>DHCP</acronym>. Wenn möglich, werden aber
|
|
entsprechende Beispiele für &man.bootpd.8;
|
|
angeführt. Die Beispielkonfiguration nutzt das
|
|
Softwarepaket <application>ISC DHCP</application>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Der Rechner muss ein oder mehrere Programme in den
|
|
lokalen Speicher laden. Dazu wird entweder
|
|
<acronym>TFTP</acronym> oder <acronym>NFS</acronym>
|
|
verwendet. Die Auswahl zwischen <acronym>TFTP</acronym> und
|
|
<acronym>NFS</acronym> erfolgt über das Setzen von
|
|
verschiedenen Kompilieroptionen. Ein häufig gemachter
|
|
Fehler ist es, Dateinamen für das falsche Protokoll
|
|
anzugeben: <acronym>TFTP</acronym> transferiert
|
|
normalerweise alle Dateien aus einem einzigen Verzeichnis
|
|
des Servers, und erwartet einen Pfad relativ zu diesem
|
|
Verzeichnis. <acronym>NFS</acronym> verlangt hingegen
|
|
absolute Dateipfade.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die möglichen Bootstrap-Programme und der Kernel
|
|
müssen initialisiert und ausgeführt werden. Dabei
|
|
gibt es zwei Möglichkeiten:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><acronym>PXE</acronym> 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 <filename>GENERIC</filename>-Kernel
|
|
zu verwenden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><application>Etherboot</application> lädt den
|
|
Kernel hingegen direkt. Dafür müssen Sie
|
|
allerdings einen Kernel mit spezifischen Optionen
|
|
erzeugen.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para><acronym>PXE</acronym> und
|
|
<application>Etherboot</application> sind zwar im
|
|
Großen und Ganzen gleichwertig, da der Kernel
|
|
aber viele Aufgaben an &man.loader.8; übergibt, sollte
|
|
bevorzugt <acronym>PXE</acronym> eingesetzt werden.</para>
|
|
|
|
<para>Wenn Ihr <acronym>BIOS</acronym> und Ihre Netzwerkkarten
|
|
<acronym>PXE</acronym> unterstützen, sollten Sie es
|
|
auch verwenden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Zuletzt muss der Rechner auf seine Dateisysteme
|
|
zugreifen können. Dafür wird stets
|
|
<acronym>NFS</acronym> verwendet.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Weitere Informationen finden Sie in &man.diskless.8;.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Installationsanweisungen</title>
|
|
|
|
<sect3>
|
|
<title>Konfiguration unter Verwendung von
|
|
<application>ISC DHCP</application></title>
|
|
|
|
<indexterm>
|
|
<primary>DHCP</primary>
|
|
<secondary>plattenloser Betrieb</secondary>
|
|
</indexterm>
|
|
|
|
<para>Der <application>ISC DHCP</application>-Server kann
|
|
Anfragen sowohl von BOOTP als auch von DHCP beantworten.
|
|
</para>
|
|
|
|
<para><application>isc-dhcp 3.1</application> ist nicht Teil
|
|
des Basissystems. Sie müssen es daher zuerst
|
|
installieren. Verwenden Sie dazu den Port
|
|
<filename role="package">net/isc-dhcp31-server</filename>
|
|
oder das entsprechende Paket.</para>
|
|
|
|
<para>Nachdem <application>ISC DHCP</application> installiert
|
|
ist, muss das Programm konfiguriert werden (normalerweise in
|
|
<filename>/usr/local/etc/dhcpd.conf</filename>). Im
|
|
folgenden Beispiel verwendet Rechner <hostid>margaux</hostid>
|
|
<application>Etherboot</application>, während Rechner
|
|
<hostid>corbieres</hostid> <acronym>PXE</acronym> verwendet:
|
|
</para>
|
|
|
|
<programlisting> 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; <co id="co-dhcp-host-name"/>
|
|
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;<co id="co-dhcp-next-server"/>
|
|
filename "/tftpboot/kernel.diskless";<co id="co-dhcp-filename"/>
|
|
option root-path "192.168.4.4:/data/misc/diskless";<co id="co-dhcp-root-path"/>
|
|
}
|
|
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";
|
|
}
|
|
}
|
|
</programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="co-dhcp-host-name"><para>Diese Option
|
|
weist <application>dhcpd</application> an, den Wert der
|
|
<literal>host</literal>-Deklaration als Rechnernamen des
|
|
plattenlosen Rechners zu senden. Alternativ kann man der
|
|
<literal>host</literal>-Deklaration Folgendes
|
|
hinzufügen: <literal>option host-name
|
|
<replaceable>margaux</replaceable></literal></para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-dhcp-next-server"><para>Die Anweisung
|
|
<literal>next-server</literal> bestimmt den
|
|
<acronym>TFTP</acronym>- oder
|
|
<acronym>NFS</acronym>-Server, von dem der Loader oder
|
|
der Kernel geladen werden (in der Voreinstellung ist das
|
|
der <acronym>DHCP</acronym>-Server selbst).</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-dhcp-filename"><para>Die Anweisung
|
|
<literal>filename</literal> bestimmt die Datei, die
|
|
<application>Etherboot</application> als nächstes
|
|
lädt. Das genaue Format hängt von der
|
|
gewählten Transfermethode ab.
|
|
<application>Etherboot</application> kann sowohl mit
|
|
<acronym>NFS</acronym> als auch mit
|
|
<acronym>TFTP</acronym> kompiliert werden. In der
|
|
Voreinstellung wird der &os;-Port mit
|
|
<acronym>NFS</acronym>-Unterstützung kompiliert.
|
|
<acronym>PXE</acronym> verwendet <acronym>TFTP</acronym>,
|
|
daher wird im Beispiel ein relativer Dateipfad verwendet.
|
|
Dies kann aber, je nach Konfiguration des
|
|
<acronym>TFTP</acronym>-Servers, auch anders sein.
|
|
Beachten Sie, dass <acronym>PXE</acronym>
|
|
<filename>pxeboot</filename> lädt, und nicht den
|
|
Kernel. Es ist auch möglich, das Verzeichnis
|
|
<filename class="directory">/boot</filename> einer
|
|
&os;-CD-ROM von <filename>pxeboot</filename> laden zu
|
|
lassen. &man.pxeboot.8; kann einen
|
|
<filename>GENERIC</filename>-Kernel laden, dadurch ist es
|
|
möglich, <acronym>PXE</acronym> von einer entfernten
|
|
CD-ROM zu starten.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-dhcp-root-path"><para>Die Option
|
|
<literal>root-path</literal> bestimmt den Pfad des
|
|
root-Dateisystems in normaler NFS-Schreibweise. Wird
|
|
<acronym>PXE</acronym> verwendet, ist es möglich,
|
|
die IP-Adresse des Rechners wegzulassen, solange nicht
|
|
die Kerneloption BOOTP aktiviert wird. Der
|
|
<acronym>NFS</acronym>-Server entspricht in diesem Fall
|
|
dem <acronym>TFTP</acronym>-Server.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Konfiguration bei Verwendung von BOOTP</title>
|
|
|
|
<indexterm>
|
|
<primary>BOOTP</primary>
|
|
<secondary>plattenloser Betrieb</secondary>
|
|
</indexterm>
|
|
|
|
<para>Es folgt nun eine der Konfiguration von DHCP
|
|
entsprechende Konfiguration (für einen Client) für
|
|
<application>bootpd</application>. Zu finden ist die
|
|
Konfigurationsdatei unter <filename>/etc/bootptab</filename>.
|
|
</para>
|
|
|
|
<para>Beachten Sie bitte, dass
|
|
<application>Etherboot</application> mit der Option
|
|
<literal>NO_DHCP_SUPPORT</literal> kompiliert werden muss,
|
|
damit BOOTP verwendet werden kann. <acronym>PXE</acronym>
|
|
hingegen <emphasis>benötigt</emphasis>
|
|
<acronym>DHCP</acronym>. Der einzige offensichtliche
|
|
Vorteil von <application>bootpd</application> ist, dass es
|
|
bereits im Basissystem vorhanden ist.</para>
|
|
|
|
<programlisting>.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=.def100</programlisting>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Ein Startprogramm unter Verwendung von
|
|
<application>Etherboot</application> erstellen</title>
|
|
|
|
<indexterm>
|
|
<primary>Etherboot</primary>
|
|
</indexterm>
|
|
|
|
<para>Die <ulink url="http://etherboot.sourceforge.net">
|
|
Internetseite von Etherboot</ulink> enthält
|
|
<ulink url="http://etherboot.sourceforge.net/doc/html/userman/t1.html">
|
|
ausführliche Informationen</ulink>, die zwar vor allem
|
|
für Linux gedacht sind, aber dennoch nützliche
|
|
Informationen enthalten. Im Folgenden wird daher nur grob
|
|
beschrieben, wie Sie <application>Etherboot</application> auf
|
|
einem FreeBSD-System einsetzen können.</para>
|
|
|
|
<para>Als Erstes müssen Sie
|
|
<filename role="package">net/etherboot</filename> als Paket
|
|
oder als Port installieren.</para>
|
|
|
|
<para>Sie können <application>Etherboot</application> so
|
|
konfigurieren, dass <acronym>TFTP</acronym> anstelle von
|
|
<acronym>NFS</acronym> verwendet wird, indem Sie die Datei
|
|
<filename>Config</filename> im Quellverzeichnis von
|
|
<application>Etherboot</application> bearbeiten.</para>
|
|
|
|
<para>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 <application>Etherboot</application>.</para>
|
|
|
|
<para>Um eine Startdiskette zu erzeugen, legen Sie eine Diskette
|
|
in das Laufwerk des Rechners ein, auf dem Sie
|
|
<application>Etherboot</application> installiert haben. Danach
|
|
wechseln Sie in das Verzeichnis <filename>src</filename> des
|
|
<application>Etherboot</application>-Verzeichnisbaums und geben
|
|
Folgendes ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>gmake bin32/<replaceable>devicetype</replaceable>.fd0</userinput></screen>
|
|
|
|
<para><replaceable>devicetype</replaceable> hängt vom Typ
|
|
der Ethernetkarte ab, über die der plattenlose Rechner
|
|
verfügt. Lesen Sie dazu <filename>NIC</filename> im
|
|
gleichen Verzeichnis, um den richtigen Wert für
|
|
<replaceable>devicetype</replaceable> zu bestimmen.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Das System mit <acronym>PXE</acronym> starten</title>
|
|
|
|
<para>In der Voreinstellung lädt der
|
|
&man.pxeboot.8;-Loader den Kernel über
|
|
<acronym>NFS</acronym>. Soll stattdessen
|
|
<acronym>TFTP</acronym> verwendet werden, muss beim
|
|
Kompilieren die Option
|
|
<literal>LOADER_TFTP_SUPPORT</literal> in der Datei
|
|
<filename>/etc/make.conf</filename> eingetragen sein. Sehen
|
|
Sie sich die Datei
|
|
<filename>/usr/share/examples/etc/make.conf</filename>
|
|
für weitere Anweisungen an.</para>
|
|
|
|
<para>Es gibt zwei Optionen für
|
|
<filename>make.conf</filename>, die nützlich sein
|
|
können, wenn Sie eine plattenlose serielle Konsole
|
|
einrichten wollen:
|
|
<literal>BOOT_PXELDR_PROBE_KEYBOARD</literal>, und
|
|
<literal>BOOT_PXELDR_ALWAYS_SERIAL</literal>.</para>
|
|
|
|
<para>Um <acronym>PXE</acronym> beim Systemstart zu verwenden,
|
|
müssen Sie im <acronym>BIOS</acronym> des Rechner die
|
|
Option <literal>Über das Netzwerk starten</literal>
|
|
aktivieren. Alternativ können Sie während der
|
|
PC-Initialisierung auch eine Funktionstaste drücken.
|
|
</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Serverkonfiguration - <acronym>TFTP</acronym> und
|
|
<acronym>NFS</acronym></title>
|
|
|
|
<indexterm>
|
|
<primary>TFTP</primary>
|
|
<secondary>plattenloser Betrieb</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>plattenloser Betrieb</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn Sie <acronym>PXE</acronym> oder
|
|
<application>Etherboot</application> so konfiguriert haben,
|
|
dass diese <acronym>TFTP</acronym> verwenden, müssen
|
|
Sie auf dem Dateiserver <application>tftpd</application>
|
|
aktivieren:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Erzeugen Sie ein Verzeichnis, in dem
|
|
<application>tftpd</application> seine Dateien ablegt,
|
|
beispielsweise <filename>/tftpboot</filename>.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Fügen Sie folgende Zeile in
|
|
<filename>/etc/inetd.conf</filename> ein:</para>
|
|
|
|
<programlisting>tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot</programlisting>
|
|
|
|
<note><para>Anscheinend benötigen zumindest einige
|
|
<acronym>PXE</acronym>-Versionen die
|
|
<acronym>TCP</acronym>-Version von
|
|
<acronym>TFTP</acronym>. Sollte dies bei Ihnen der
|
|
Fall sein, fügen Sie eine zweite Zeile ein, in der
|
|
Sie <literal>dgram udp</literal> durch
|
|
<literal>stream tcp</literal> ersetzen.</para>
|
|
</note>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Weisen Sie <application>inetd</application> an, seine
|
|
Konfiguration erneut einzulesen (Damit der folgende
|
|
Befehl funktioniert, muss die Option
|
|
<option>inetd_enable="YES"</option> in der Datei
|
|
<filename>/etc/rc.conf</filename> vorhanden sein.):</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/inetd restart</userinput></screen>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>Sie können das Verzeichnis
|
|
<filename>/tftpboot</filename> an einem beliebigen Ort auf dem
|
|
Server ablegen. Stellen Sie aber sicher, dass Sie diesen Ort
|
|
sowohl in <filename>inetd.conf</filename> als auch in
|
|
<filename>dhcpd.conf</filename> eingetragen haben.</para>
|
|
|
|
<para>Außerdem müssen Sie NFS aktivieren und die
|
|
entsprechenden Verzeichnisse exportieren.</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Fügen Sie folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>nfs_server_enable="YES"</programlisting>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Exportieren Sie das Verzeichnis, in dem sich das
|
|
Wurzelverzeichnis für den plattenlosen Betrieb
|
|
befindet, indem Sie folgende Zeile in
|
|
<filename>/etc/exports</filename> einfügen (passen
|
|
Sie dabei den <foreignphrase>mountpoint</foreignphrase>
|
|
an und ersetzen Sie
|
|
<replaceable>margaux corbieres</replaceable> durch den
|
|
Namen Ihres plattenlosen Rechners):</para>
|
|
|
|
<programlisting><replaceable>/data/misc</replaceable> -alldirs -ro <replaceable>margaux</replaceable></programlisting>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Weisen sie nun <application>mountd</application> an,
|
|
seine Konfigurationsdatei erneut einzulesen. Wenn Sie
|
|
<acronym>NFS</acronym> erst in der Datei
|
|
<filename>/etc/rc.conf</filename> aktivieren mussten,
|
|
sollten Sie stattdessen den Rechner neu starten. Dadurch
|
|
wird die Konfigurationsdatei ebenfalls neu eingelesen.
|
|
</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/mountd restart</userinput></screen>
|
|
</step>
|
|
</procedure>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Einen plattenlosen Kernel erzeugen</title>
|
|
|
|
<indexterm>
|
|
<primary>plattenloser Betrieb</primary>
|
|
<secondary>Kernelkonfiguration</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn Sie <application>Etherboot</application> verwenden,
|
|
müssen Sie in die Kernelkonfigurationsdatei Ihres
|
|
plattenlosen Clients zusätzlich folgende Optionen
|
|
einfügen:</para>
|
|
|
|
<programlisting>options BOOTP # Use BOOTP to obtain IP address/hostname
|
|
options BOOTP_NFSROOT # NFS mount root file system using BOOTP info</programlisting>
|
|
|
|
<para>Außerdem können Sie die Optionen
|
|
<literal>BOOTP_NFSV3</literal>,
|
|
<literal>BOOT_COMPAT</literal> sowie
|
|
<literal>BOOTP_WIRED_TO</literal> verwenden (sehen Sie sich
|
|
dazu auch die Datei <filename>NOTES</filename> an).</para>
|
|
|
|
<para>Die Namen dieser Optionen sind historisch bedingt.
|
|
Sie ermöglichen eine unterschiedliche Verwendung von
|
|
<acronym>DHCP</acronym> und BOOTP innerhalb des Kernels.
|
|
Es ist auch möglich, eine strikte Verwendung von BOOTP
|
|
oder <acronym>DHCP</acronym> zu erzwingen.</para>
|
|
|
|
<para>Erzeugen Sie den neuen Kernel (lesen Sie dazu auch
|
|
<xref linkend="kernelconfig"/>) und kopieren Sie ihn an den
|
|
in <filename>dhcpd.conf</filename> festgelegten Ort.</para>
|
|
|
|
<note><para>Wenn Sie <acronym>PXE</acronym> 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
|
|
<acronym>DHCP</acronym>-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
|
|
<filename>rc.conf</filename>-Datei festlegen müssten.
|
|
</para>
|
|
</note>
|
|
|
|
<note><para>Damit der Kernel von
|
|
<application>Etherboot</application> geladen werden kann,
|
|
müssen <foreignphrase>device hints</foreignphrase> im
|
|
Kernel einkompiliert sein. Dazu setzen Sie normalerweise
|
|
folgende Option in die Kernelkonfigurationsdatei (sehen Sie
|
|
sich dazu auch die kommentierte Datei
|
|
<filename>NOTES</filename> an):</para>
|
|
|
|
<programlisting>hints "GENERIC.hints"</programlisting>
|
|
</note>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Das root-Dateisystem erzeugen</title>
|
|
|
|
<indexterm>
|
|
<primary>Root-Dateisystem</primary>
|
|
<secondary>plattenloser Betrieb</secondary>
|
|
</indexterm>
|
|
|
|
<para>Sie müssen für den plattenlosen Rechner ein
|
|
root-Dateisystem erzeugen, und zwar an dem in
|
|
<filename>dhcpd.conf</filename> als
|
|
<literal>root-path</literal> festgelegten Ort.</para>
|
|
|
|
<sect4>
|
|
<title><command>make world</command> zum Füllen des
|
|
Dateisystems einsetzen</title>
|
|
|
|
<para>Diese schnelle Methode installiert ein komplettes
|
|
<quote>jungfräuliches</quote> System (und nicht nur ein
|
|
root-Dateisystem) nach <envar>DESTDIR</envar>. Dazu
|
|
müssen Sie lediglich das folgende Skript
|
|
ausführen:</para>
|
|
|
|
<programlisting>#!/bin/sh
|
|
export DESTDIR=/data/misc/diskless
|
|
mkdir -p ${DESTDIR}
|
|
cd /usr/src; make buildworld && make buildkernel
|
|
make installworld && make installkernel
|
|
cd /usr/src/etc; make distribution</programlisting>
|
|
|
|
<para>Danach müssen Sie noch die dadurch in
|
|
<envar>DESTDIR</envar> erzeugten Dateien
|
|
<filename>/etc/rc.conf</filename> sowie
|
|
<filename>/etc/fstab</filename> Ihren Wünschen
|
|
anpassen.</para>
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Den Auslagerungsbereich konfigurieren</title>
|
|
|
|
<para>Falls nötig, kann eine auf dem
|
|
<acronym>NFS</acronym>-Server liegende Datei als
|
|
Auslagerungsdatei eingerichtet werden.</para>
|
|
|
|
<sect4>
|
|
<title>Eine <acronym>NFS</acronym>-Auslagerungsdatei
|
|
einrichten</title>
|
|
|
|
<para>Der Kernel unterstützt beim Systemstart keine
|
|
<acronym>NFS</acronym>-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:</para>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/zero of=<replaceable>/path/to/swapfile</replaceable> bs=1k count=1 oseek=<replaceable>100000</replaceable></userinput></screen>
|
|
|
|
<para>Um die Auslagerungsdatei zu aktivieren, fügen Sie
|
|
folgende Zeile in <filename>rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>swapfile=<replaceable>/path/to/swapfile</replaceable></programlisting>
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Verschiedenes</title>
|
|
|
|
<sect4>
|
|
<title>Schreibgeschütztes Dateisystem
|
|
<filename>/usr</filename></title>
|
|
|
|
<indexterm>
|
|
<primary>plattenloser Betrieb</primary>
|
|
<secondary>/usr schreibgeschützt</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn am plattenlosen Rechner X läuft, müssen
|
|
Sie die Konfigurationsdatei von
|
|
<application>XDM</application> anpassen, da Fehlermeldungen
|
|
in der Voreinstellung auf <filename>/usr</filename>
|
|
geschrieben werden.</para>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Der Server läuft nicht unter FreeBSD</title>
|
|
|
|
<para>Wenn das root-Dateisystem nicht auf einem
|
|
FreeBSD-Rechner liegt, muss das Dateisystem zuerst unter
|
|
FreeBSD erzeugt werden. Anschließend wird es
|
|
beispielsweise mit <command>tar</command> oder
|
|
<command>cpio</command> an den gewünschten Ort
|
|
kopiert.</para>
|
|
|
|
<para>Dabei kann es Probleme mit den Gerätedateien
|
|
in <filename>/dev</filename> geben, die durch eine
|
|
unterschiedliche Darstellung der Major- und Minor-Number
|
|
von Geräten auf beiden Systemen hervorgerufen werden.
|
|
Eine Problemlösung besteht darin, das root-Verzeichnis
|
|
auf einem FreeBSD-Rechner einzuhängen und die
|
|
Gerätedateien dort mit &man.devfs.5; zu erzeugen.</para>
|
|
</sect4>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-isdn">
|
|
<title>ISDN – diensteintegrierendes digitales Netzwerk</title>
|
|
|
|
<indexterm>
|
|
<primary>ISDN</primary>
|
|
</indexterm>
|
|
|
|
<para>Eine gute Quelle für Informationen zu ISDN ist die
|
|
<ulink url="http://www.alumni.caltech.edu/~dank/isdn/">
|
|
ISDN-Seite</ulink> von Dan Kegel.</para>
|
|
|
|
<para>Welche Informationen finden Sie in diesem Abschnitt?</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Wenn Sie in Europa leben, könnte der Abschnitt
|
|
über ISDN-Karten für Sie interessant sein.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>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.</para>
|
|
|
|
<sect2 id="network-isdn-cards">
|
|
<sect2info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Hellmuth</firstname>
|
|
<surname>Michaelis</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect2info>
|
|
|
|
<title>ISDN-Karten</title>
|
|
|
|
<indexterm>
|
|
<primary>ISDN</primary>
|
|
<secondary>Karten</secondary>
|
|
</indexterm>
|
|
|
|
<para>Das ISDN-Subsystem von FreeBSD unterstützt den
|
|
DSS1/Q.931- (oder Euro-ISDN)-Standard nur für passive
|
|
Karten. Zusätzlich werden aber auch einige
|
|
aktive Karten unterstützt, bei denen die Firmware auch
|
|
andere Signalprotokolle unterstützt; dies schließt
|
|
auch die erste ISDN-Karte mit
|
|
Primärmultiplex-Unterstützung mit ein.</para>
|
|
|
|
<para><application>isdn4bsd</application> ermöglicht es
|
|
Ihnen, sich unter Nutzung von
|
|
<emphasis>IP over raw HDLC</emphasis> oder
|
|
<emphasis>synchronem PPP</emphasis> mit anderen ISDN-Routern zu
|
|
verbinden. Dazu verwenden Sie entweder Kernel-&man.ppp.8;
|
|
(via <literal>isppp</literal>, 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.</para>
|
|
|
|
<para>FreeBSD unterstützt eine ständig wachsende Anzahl
|
|
von PC-ISDN-Karten, die weltweit erfolgreich eingesetzt werden.
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Informationen zu <application>isdn4bsd</application> finden
|
|
Sie auf der
|
|
<ulink url="http://www.freebsd-support.de/i4b/">Internetseite</ulink>
|
|
von <application>isdn4bsd</application>. Dort finden Sie auch
|
|
Verweise zu Tipps, Korrekturen, sowie weiteren Informationen,
|
|
wie dem
|
|
<ulink url="http://people.FreeBSD.org/~hm/">isdn4bsd-Handbuch</ulink>.
|
|
</para>
|
|
|
|
<para>Falls Sie an der Unterstützung eines zusätzlichen
|
|
ISDN-Protokolls, einer weiteren ISDN-Karte oder an einer anderen
|
|
Erweiterung von <application>isdn4bsd</application> interessiert
|
|
sind, wenden Sie sich bitte an &a.hm;.</para>
|
|
|
|
<para>Für Fragen zur Installation, Konfiguration und zu
|
|
sonstigen Problemen von <application>isdn4bsd</application> gibt
|
|
es die Mailingliste &a.isdn.name;.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>ISDN-Terminaladapter</title>
|
|
|
|
<indexterm>
|
|
<primary>Terminaladapter</primary>
|
|
</indexterm>
|
|
|
|
<para>Terminaladapter (TA) sind für ISDN, was Modems für
|
|
analoge Telefonleitungen sind.</para>
|
|
|
|
<indexterm>
|
|
<primary>Modem</primary>
|
|
</indexterm>
|
|
|
|
<para>Die meisten Terminaladapter verwenden den
|
|
Standardbefehlssatz für Modems von Hayes (AT-Kommandos) und
|
|
können daher als Modemersatz verwendet werden.</para>
|
|
|
|
<para>Ein Terminaladapter funktioniert prinzipiell wie ein Modem,
|
|
allerdings erfolgt der Verbindungsaufbau um einiges schneller.
|
|
Die Konfiguration von <link linkend="ppp">PPP</link> entspricht
|
|
dabei exakt der eines Modems. Stellen Sie dabei allerdings
|
|
die serielle Geschwindigkeit so hoch wie möglich ein.
|
|
</para>
|
|
|
|
<indexterm>
|
|
<primary>PPP</primary>
|
|
</indexterm>
|
|
|
|
<para>Der 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Wenn Sie an maximaler Stabilität interessiert sind,
|
|
verwenden Sie Kernel-<link linkend="ppp">PPP</link>, und
|
|
nicht das <link linkend="userppp">User-PPP</link>.</para>
|
|
|
|
<para>Folgende Terminaladapter werden von FreeBSD
|
|
unterstützt:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Motorola BitSurfer und Bitsurfer Pro</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Adtran</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Die meisten anderen Terminaladapter werden wahrscheinlich
|
|
ebenfalls funktionieren, da die Hersteller von Terminaladaptern
|
|
darauf achten, dass ihre Produkte den Standardbefehlssatz
|
|
möglichst gut unterstützen.</para>
|
|
|
|
<para>Das wirkliche Problem mit einem externen Terminaladapter ist,
|
|
dass, ähnlich wie bei Modems, eine gute serielle Karte
|
|
eine Grundvoraussetzung ist.</para>
|
|
|
|
<para>Sie sollten sich die
|
|
<ulink url="&url.articles.serial-uart.en;/index.html">
|
|
Anleitung für die Nutzung serieller Geräte unter
|
|
FreeBSD</ulink> ansehen, wenn Sie detaillierte Informationen
|
|
über serielle Geräte und die Unterschiede zwischen
|
|
asynchronen und synchronen seriellen Ports benötigen.
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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
|
|
<ulink url="&url.base;/search/index.html"> Archiven</ulink>
|
|
danach, wenn Sie an der kompletten Diskussion interessiert
|
|
sind.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>ISDN-Bridges und Router</title>
|
|
|
|
<indexterm>
|
|
<primary>ISDN</primary>
|
|
<secondary>Autonome Bridge/Router</secondary>
|
|
</indexterm>
|
|
|
|
<para>ISDN-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.</para>
|
|
|
|
<para>In diesem Abschnitt werden die Begriffe Router und
|
|
Bridge synonym verwendet.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Ein Router ermöglicht einen deutlich höheren
|
|
Datendurchsatz als ein herkömmlicher Terminaladapter,
|
|
da er eine vollsynchrone ISDN-Verbindung nutzt.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Um beispielsweise einen privaten Computer oder eine
|
|
Zweigstelle mit dem Hauptnetzwerk zu verbinden, könnte
|
|
folgende Konfiguration verwendet werden:</para>
|
|
|
|
<example>
|
|
<title>Kleines Netzwerk (Privatnetz)</title>
|
|
|
|
<indexterm>
|
|
<primary>10 base 2</primary>
|
|
</indexterm>
|
|
|
|
<para>Das Netzwerk basiert auf der Bustopologie mit 10base2
|
|
Ethernet (<quote>Thinnet</quote>). Falls nötig, stellen
|
|
Sie die Verbindung zwischen Router und Netzwerkkabel mit einem
|
|
AUI/10BT-Transceiver her.</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="advanced-networking/isdn-bus"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced">
|
|
---Sun Workstation
|
|
|
|
|
---FreeBSD Rechner
|
|
|
|
|
---Windows 95
|
|
|
|
|
Autonomer Router
|
|
|
|
|
ISDN BRI Verbindung
|
|
</literallayout>
|
|
</textobject>
|
|
|
|
<textobject>
|
|
<phrase>10Base2 - Ethernet</phrase>
|
|
</textobject>
|
|
</mediaobject>
|
|
|
|
<para>Wenn 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.</para>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Großes Netzwerk (Firmennetz)</title>
|
|
|
|
<indexterm>
|
|
<primary>10 base T</primary>
|
|
</indexterm>
|
|
|
|
<para>Dieses Netzwerk basiert auf der Sterntopologie und 10baseT
|
|
Ethernet (<quote>Twisted Pair</quote>).</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="advanced-networking/isdn-twisted-pair"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced">
|
|
-------Novell Server
|
|
| H |
|
|
| ---Sun
|
|
| |
|
|
| U ---FreeBSD
|
|
| |
|
|
| ---Windows 95
|
|
| B |
|
|
|___---Autonomer Router
|
|
|
|
|
ISDN BRI Verbindung
|
|
</literallayout>
|
|
</textobject>
|
|
|
|
<textobject>
|
|
<phrase>ISDN Netzwerkdiagramm</phrase>
|
|
</textobject>
|
|
</mediaobject>
|
|
</example>
|
|
|
|
<para>Ein großer Vorteil der meisten Router und Bridges
|
|
ist es, dass man <emphasis>gleichzeitig</emphasis> zwei
|
|
<emphasis>unabhängige</emphasis> 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<indexterm>
|
|
<primary>IPX/SPX</primary>
|
|
</indexterm>
|
|
|
|
<para>Eine Ethernet-Bridge kann Daten nicht nur im IP-Protokoll,
|
|
sondern auch in beliebigen anderen Protokollen versenden.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-natd">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Chern</firstname>
|
|
<surname>Lee</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>NAT - Network Address Translation</title>
|
|
|
|
<sect2 id="network-natoverview">
|
|
<title>Überblick</title>
|
|
|
|
<indexterm>
|
|
<primary><application>natd</application></primary>
|
|
</indexterm>
|
|
|
|
<para>&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.</para>
|
|
|
|
<indexterm><primary>Internet connection sharing</primary></indexterm>
|
|
|
|
<indexterm><primary>NAT</primary></indexterm>
|
|
|
|
<para>Der häufigste Grund für die Verwendung von NAT ist
|
|
die gemeinsame Nutzung einer Internetverbindung.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-natsetup">
|
|
<title>Einrichtung</title>
|
|
|
|
<para>Wegen 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.</para>
|
|
|
|
<para>Häufig soll ein über Kabelmodem oder DSL und eine
|
|
IP-Adresse an das Internet angebundener Rechner mehreren
|
|
Rechnern eines lokalen Netzwerks Internetdienste anbieten.</para>
|
|
|
|
<para>Um dies zu ermöglichen, muss der FreeBSD-Rechner als
|
|
Gateway fungieren. Dazu sind zwei Netzwerkkarten notwendig. Eine
|
|
für die Verbindung zum Internet, die zweite für die
|
|
Verbindung mit dem lokalen Netzwerk. Sämtliche Rechner
|
|
des lokalen Netzwerks sind über einen Hub oder einen Switch
|
|
miteinander verbunden.</para>
|
|
|
|
<note>
|
|
<para>Es gibt verschiedene Möglichkeiten, ein LAN über
|
|
ein &os;-Gateway an das Internet anzubinden. Das folgende
|
|
Beispiel beschreibt ein Gateway, das zumindest zwei
|
|
Netzwerkkarten enthält.</para>
|
|
</note>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="advanced-networking/natd"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced"> _______ __________ ________
|
|
| | | | | |
|
|
| Hub |-----| Client B |-----| Router |----- Internet
|
|
|_______| |__________| |________|
|
|
|
|
|
____|_____
|
|
| |
|
|
| Client A |
|
|
|__________|</literallayout>
|
|
</textobject>
|
|
|
|
<textobject>
|
|
<phrase>Network Layout</phrase>
|
|
</textobject>
|
|
</mediaobject>
|
|
|
|
<para>Eine derartige Netzwerkkonfiguration wird vor allem zur
|
|
gemeinsamen Nutzung einer Internetverbindung verwendet. Ein
|
|
Rechner des lokalen Netzwerks (<acronym>LAN</acronym>) ist mit
|
|
dem Internet verbunden. Alle anderen Rechner des lokalen
|
|
Netzwerks haben nur über diesen
|
|
<quote>Gateway</quote>-Rechner Zugriff auf das Internet.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-natdloaderconfiguration">
|
|
<title>Boot Loader Konfiguration</title>
|
|
|
|
<indexterm>
|
|
<primary>boot loader</primary>
|
|
<secondary>configuration</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die Kerneleigenschaften für Network Address Translation mit
|
|
&man.natd.8; sind im <filename>GENERIC</filename>-Kernel nicht
|
|
aktiviert, können aber bereits zur Bootzeit geladen werden, indem
|
|
ein paar Zeilen in die Datei <filename>/boot/loader.conf</filename>
|
|
hinzugefügt werden:</para>
|
|
|
|
<programlisting>ipfw_load="YES"
|
|
ipdivert_load="YES"</programlisting>
|
|
|
|
<para>Zusätzlich kann die Option
|
|
<literal>net.inet.ip.fw.default_to_accept</literal> auf
|
|
<literal>1</literal> gesetzt werden:</para>
|
|
|
|
<programlisting>net.inet.ip.fw.default_to_accept="1"</programlisting>
|
|
|
|
<note>
|
|
<para>Es ist eine gute Idee, diese Option während den ersten
|
|
Versuchen, eine Firewall und ein NAT-Gateway aufzusetzen, zu
|
|
aktivieren. Damit ist die Standardvorgehensweise von &man.ipfw.8;
|
|
diejenige, <literal>allow ip from any to any</literal>, anstatt der
|
|
weniger freizügigen <literal>deny ip from any to any</literal>.
|
|
Es wird dadurch etwas schwieriger, sich aus Versehen nach einem
|
|
Neustart aus dem System auszusperren.</para>
|
|
</note>
|
|
</sect2>
|
|
|
|
<sect2 id="network-natdkernconfiguration">
|
|
<title>Kernelkonfiguration</title>
|
|
|
|
<indexterm>
|
|
<primary>Kernel</primary>
|
|
<secondary>Konfiguration</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn Module nicht in Frage kommen oder Sie bevorzugen, alle
|
|
notwendigen Eigenschaften in den laufenden Kernel einzubauen,
|
|
müssen die folgenden Optionen in die Kernelkonfigurationsdatei
|
|
eingetragen werden:</para>
|
|
|
|
<programlisting>options IPFIREWALL
|
|
options IPDIVERT</programlisting>
|
|
|
|
<para>Die folgende Optionen können ebenfalls eingetragen
|
|
werden:</para>
|
|
|
|
<programlisting>options IPFIREWALL_DEFAULT_TO_ACCEPT
|
|
options IPFIREWALL_VERBOSE</programlisting>
|
|
</sect2>
|
|
|
|
<sect2 id="network-natdsystemconfiguration">
|
|
<title>System Bootkonfiguration</title>
|
|
|
|
<para>Um Firewall- und NAT-Unterstützung zur Bootzeit zu aktivieren,
|
|
tragen Sie Folgendes in <filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>gateway_enable="YES" <co id="co-natd-gateway-enable"/>
|
|
firewall_enable="YES" <co id="co-natd-firewall-enable"/>
|
|
firewall_type="OPEN" <co id="co-natd-firewall-type"/>
|
|
natd_enable="YES"
|
|
natd_interface="<replaceable>fxp0</replaceable>" <co id="co-natd-natd-interface"/>
|
|
natd_flags="" <co id="co-natd-natd-flags"/></programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="co-natd-gateway-enable">
|
|
<para>Richtet den Rechner als Gateway ein. Die
|
|
Ausführung von
|
|
<command>sysctl net.inet.ip.forwarding=1</command>
|
|
hätte den gleichen Effekt.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-natd-firewall-enable">
|
|
<para>Aktiviert die Firewallregeln in
|
|
<filename>/etc/rc.firewall</filename> beim
|
|
Systemstart.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-natd-firewall-type">
|
|
<para>Ein vordefinierter Satz von Firewallregeln, der alle
|
|
Pakete durchlässt. Sehen Sie sich
|
|
<filename>/etc/rc.firewall</filename> an, wenn Sie diese
|
|
Option verwenden wollen.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-natd-natd-interface">
|
|
<para>Die Netzwerkkarte, die Pakete weiterleitet (und mit dem
|
|
Internet verbunden ist).</para>
|
|
</callout>
|
|
|
|
<callout arearefs="co-natd-natd-flags">
|
|
<para>Zusätzliche Konfigurationsoptionen, die beim
|
|
Systemstart an &man.natd.8; übergeben werden.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Durch die Definition dieser Optionen in
|
|
<filename>/etc/rc.conf</filename> wird die Anweisung
|
|
<command>natd -interface fxp0</command> beim Systemstart
|
|
ausgeführt. Dies kann aber auch manuell erfolgen.</para>
|
|
|
|
<note>
|
|
<para>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
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>natd_flags="-f /etc/natd.conf"</programlisting>
|
|
|
|
<para>Die Datei <filename>/etc/natd.conf</filename> enthält
|
|
verschiedene Konfigurationsoptionen, wobei jede Option in einer
|
|
Zeile steht. Das Beispiel im nächsten Abschnitt würde
|
|
folgende Konfigurationsdatei verwenden:</para>
|
|
|
|
<programlisting>redirect_port tcp 192.168.0.2:6667 6667
|
|
redirect_port tcp 192.168.0.3:80 80</programlisting>
|
|
|
|
<para>Wenn Sie eine Konfigurationsdatei verwenden wollen, sollten
|
|
Sie sich die Handbuchseite zu &man.natd.8; durchlesen,
|
|
insbesondere den Abschnitt über die Nutzung der Option
|
|
<option>-f</option>.</para>
|
|
</note>
|
|
|
|
<para>Jedem Rechner und jeder Schnittstelle des lokalen Netzwerks
|
|
sollte eine IP-Adresse des im <ulink
|
|
url="ftp://ftp.isi.edu/in-notes/rfc1918.txt">RFC 1918</ulink>
|
|
definierten privaten Adressraums zugewiesen werden. Der
|
|
Standardgateway entspricht der internen IP-Adresse des
|
|
<application>natd</application>-Rechners.</para>
|
|
|
|
<para>Im Beispiel werden den LAN-Clients <hostid>A</hostid> und
|
|
<hostid>B</hostid> die IP-Adressen
|
|
<hostid role="ipaddr">192.168.0.2</hostid> und
|
|
<hostid role="ipaddr">192.168.0.3</hostid> zugewiesen,
|
|
während die LAN-Netzwerkkarte des
|
|
<application>natd</application>-Rechners die IP-Adresse
|
|
<hostid role="ipaddr">192.168.0.1</hostid> erhält. Der
|
|
<application>natd</application>-Rechner mit der IP-Adresse
|
|
<hostid role="ipaddr">192.168.0.1</hostid> wird als
|
|
Standardgateway für die Clients <hostid>A</hostid> und
|
|
<hostid>B</hostid> gesetzt. Die externe Netzwerkkarte des
|
|
<application>natd</application>-Rechners muss für die
|
|
korrekte Funktion von &man.natd.8; nicht konfiguriert
|
|
werden.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-natdport-redirection">
|
|
<title>Ports umleiten</title>
|
|
|
|
<para>Wenn 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
|
|
<application>natd</application>-Rechners auf einen LAN-Client.</para>
|
|
|
|
<para>Beispielsweise könnte ein IRC-Server auf Client
|
|
<hostid>A</hostid> und ein Webserver auf Client
|
|
<hostid>B</hostid> laufen. Damit diese Konfiguration
|
|
funktioniert, müssen Verbindungen, die auf den Ports 6667
|
|
(IRC) und 80 (Web) ankommen, auf die entsprechenden Clients
|
|
umgeleitet werden.</para>
|
|
|
|
<para>Dazu wird die Option <option>-redirect_port</option> unter
|
|
Nutzung folgender Syntax an &man.natd.8; übergeben:</para>
|
|
|
|
<programlisting> -redirect_port proto targetIP:targetPORT[-targetPORT]
|
|
[aliasIP:]aliasPORT[-aliasPORT]
|
|
[remoteIP[:remotePORT[-remotePORT]]]</programlisting>
|
|
|
|
<para>Für unser Beispiel heißt das:</para>
|
|
|
|
<programlisting> -redirect_port tcp 192.168.0.2:6667 6667
|
|
-redirect_port tcp 192.168.0.3:80 80</programlisting>
|
|
|
|
<para>Dadurch werden die entsprechenden
|
|
<emphasis>tcp</emphasis>-Ports auf die jeweiligen LAN-Clients
|
|
umgeleitet.</para>
|
|
|
|
<para>Mit <option>-redirect_port</option> können auch ganze
|
|
Portbereiche statt einzelner Ports umgeleitet werden. So werden
|
|
mit <replaceable>tcp 192.168.0.2:2000-3000
|
|
2000-3000</replaceable> alle Verbindungen, die auf den Ports
|
|
2000 bis 3000 ankommen, auf die entsprechenden Ports des Clients
|
|
<hostid>A</hostid> umgeleitet.</para>
|
|
|
|
<para>Diese Optionen können während des Betriebs von
|
|
&man.natd.8; oder über die Option
|
|
<literal>natd_flags=""</literal> in
|
|
<filename>/etc/rc.conf</filename> gesetzt werden.</para>
|
|
|
|
<para>Eine ausführliche Konfigurationsanleitung finden Sie
|
|
in &man.natd.8;.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-natdaddress-redirection">
|
|
<title>Adressen umleiten</title>
|
|
|
|
<indexterm><primary>address redirection</primary></indexterm>
|
|
|
|
<para>Die 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
|
|
<application>natd</application>-Gatewayrechner könnten
|
|
beispielsweise die IP-Adressen
|
|
<hostid role="ipaddr">128.1.1.1</hostid>,
|
|
<hostid role="ipaddr">128.1.1.2</hostid> sowie
|
|
<hostid role="ipaddr">128.1.1.3</hostid> zugewiesen werden.
|
|
<hostid role="ipaddr">128.1.1.1</hostid> wird als die externe
|
|
IP-Adresse des <application>natd</application>-Gatewayrechners
|
|
verwendet, während <hostid role="ipaddr">128.1.1.2</hostid>
|
|
und <hostid role="ipaddr">128.1.1.3</hostid> an die LAN-Clients
|
|
<hostid>A</hostid> und <hostid>B</hostid> weitergegeben werden.
|
|
</para>
|
|
|
|
<para><option>-redirect_address</option> benutzt folgende
|
|
Syntax:</para>
|
|
|
|
<programlisting>-redirect_address localIP publicIP</programlisting>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<tbody>
|
|
<row>
|
|
<entry>localIP</entry>
|
|
|
|
<entry>Die interne IP-Adresse des LAN-Clients</entry>
|
|
</row>
|
|
<row>
|
|
<entry>publicIP</entry>
|
|
|
|
<entry>Die externe IP-Adresse des LAN-Clients</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Für unser Beispiel hieße dies:</para>
|
|
|
|
<programlisting>-redirect_address 192.168.0.2 128.1.1.2
|
|
-redirect_address 192.168.0.3 128.1.1.3</programlisting>
|
|
|
|
<para>Analog zur Option <option>-redirect_port</option>
|
|
können Sie diese Argumente auch in der Option
|
|
<literal>natd_flags=""</literal> in
|
|
<filename>/etc/rc.conf</filename> angeben. Bei der Nutzung
|
|
der Adressumleitung ist die Portumleitung überflüssig,
|
|
weil alle für eine bestimmte IP-Adresse ankommenden Daten
|
|
umgeleitet werden.</para>
|
|
|
|
<para>Die externe IP-Adresse des
|
|
<application>natd</application>-Rechners muss aktiv sein und
|
|
der externen Netzwerkkarte zugewiesen sein. Weitere Informationen
|
|
zu diesem Thema finden Sie in &man.rc.conf.5;.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-plip">
|
|
<title>PLIP – Parallel Line IP</title>
|
|
|
|
<indexterm>
|
|
<primary>PLIP</primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Parallel Line IP</primary>
|
|
<see>PLIP</see>
|
|
</indexterm>
|
|
|
|
<para>PLIP 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 Netzwerkkarten ausgestattet sind,
|
|
oder wenn eine Installation auf einem Laptop erfolgen soll.
|
|
Dieser Abschnitt behandelt folgende Themen:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Die Herstellung eines parallelen (Laplink-) Kabels</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die Verbindung von zwei Computern über PLIP</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<sect2 id="network-create-parallel-cable">
|
|
<title>Ein paralleles Kabel herstellen</title>
|
|
|
|
<para>Ein 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.</para>
|
|
|
|
<table frame="none">
|
|
<title>Die Netzwerk-Verdrahtung eines parallelen Kabels</title>
|
|
|
|
<tgroup cols="5">
|
|
<thead>
|
|
<row>
|
|
<entry>A-Name</entry>
|
|
|
|
<entry>A-Ende</entry>
|
|
|
|
<entry>B-Ende</entry>
|
|
|
|
<entry>Beschreibung</entry>
|
|
|
|
<entry>Post/Bit</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><literallayout>DATA0
|
|
-ERROR</literallayout></entry>
|
|
|
|
<entry><literallayout>2
|
|
15</literallayout></entry>
|
|
|
|
<entry><literallayout>15
|
|
2</literallayout></entry>
|
|
|
|
<entry>Data</entry>
|
|
|
|
<entry><literallayout>0/0x01
|
|
1/0x08</literallayout></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literallayout>DATA1
|
|
+SLCT</literallayout></entry>
|
|
|
|
<entry><literallayout>3
|
|
13</literallayout></entry>
|
|
|
|
<entry><literallayout>13
|
|
3</literallayout></entry>
|
|
|
|
<entry>Data</entry>
|
|
|
|
<entry><literallayout>0/0x02
|
|
1/0x10</literallayout></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literallayout>DATA2
|
|
+PE</literallayout></entry>
|
|
|
|
<entry><literallayout>4
|
|
12</literallayout></entry>
|
|
|
|
<entry><literallayout>12
|
|
4</literallayout></entry>
|
|
|
|
<entry>Data</entry>
|
|
|
|
<entry><literallayout>0/0x04
|
|
1/0x20</literallayout></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literallayout>DATA3
|
|
-ACK</literallayout></entry>
|
|
|
|
<entry><literallayout>5
|
|
10</literallayout></entry>
|
|
|
|
<entry><literallayout>10
|
|
5</literallayout></entry>
|
|
|
|
<entry>Strobe</entry>
|
|
|
|
<entry><literallayout>0/0x08
|
|
1/0x40</literallayout></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literallayout>DATA4
|
|
BUSY</literallayout></entry>
|
|
|
|
<entry><literallayout>6
|
|
11</literallayout></entry>
|
|
|
|
<entry><literallayout>11
|
|
6</literallayout></entry>
|
|
|
|
<entry>Data</entry>
|
|
|
|
<entry><literallayout>0/0x10
|
|
1/0x80</literallayout></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>GND</entry>
|
|
|
|
<entry>18-25</entry>
|
|
|
|
<entry>18-25</entry>
|
|
|
|
<entry>GND</entry>
|
|
|
|
<entry>-</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect2>
|
|
|
|
<sect2 id="network-plip-setup">
|
|
<title>PLIP einrichten</title>
|
|
|
|
<para>Als Erstes benötigen Sie ein Laplink-Kabel. Danach
|
|
müssen Sie sicherstellen, dass beide Computerkernel den
|
|
&man.lpt.4;-Treiber unterstützen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>grep lp /var/run/dmesg.boot</userinput>
|
|
lpt0: <Printer> on ppbus0
|
|
lpt0: Interrupt-driven port</screen>
|
|
|
|
<para>Der Parallelport muss Interrupt-gesteuert sein, daher
|
|
sollte die Datei <filename>/boot/device.hints</filename>
|
|
zwei Zeilen ähnlich den folgenden enthalten:</para>
|
|
|
|
<programlisting>hint.ppc.0.at="isa"
|
|
hint.ppc.0.irq="7"</programlisting>
|
|
|
|
<para>Danach überprüfen Sie, ob die
|
|
Kernelkonfigurationsdatei die Zeile
|
|
<literal>device plip</literal> enthält, oder ob das
|
|
Kernelmodul <filename>plip.ko</filename> geladen wurde. In
|
|
beiden Fällen sollte die parallele Schnittstelle
|
|
von &man.ifconfig.8; angezeigt werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig plip0</userinput>
|
|
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500</screen>
|
|
|
|
<para>Verbinden Sie die parallelen Schnittstellen der beiden
|
|
Computer über das (Laplink-)Kabel.</para>
|
|
|
|
<para>Konfigurieren Sie die Netzwerkparameter auf beiden Rechnern
|
|
als <username>root</username>. Wenn Sie beispielsweise den Rechner
|
|
<hostid>host1</hostid> mit dem Rechner <hostid>host2</hostid>
|
|
verbinden wollen, gehen Sie folgendermaßen vor:</para>
|
|
|
|
<programlisting> host1 <-----> host2
|
|
IP Address 10.0.0.1 10.0.0.2</programlisting>
|
|
|
|
<para>Richten Sie die parallele Schnittstelle von
|
|
<hostid>host1</hostid> ein, indem Sie Folgendes eingeben:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig plip0 10.0.0.1 10.0.0.2</userinput></screen>
|
|
|
|
<para>Danach richten Sie die parallele Schnittstelle von
|
|
<hostid>host2</hostid> ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig plip0 10.0.0.2 10.0.0.1</userinput></screen>
|
|
|
|
<para>Sie sollten nun über eine funktionierende Verbindung
|
|
verfügen. Bei Problemen lesen Sie bitte die Hilfeseiten
|
|
&man.lp.4; sowie &man.lpt.4;.</para>
|
|
|
|
<para>Zusätzlich sollten beide Rechner in
|
|
<filename>/etc/hosts</filename> eingetragen werden:</para>
|
|
|
|
<programlisting>127.0.0.1 localhost.my.domain localhost
|
|
10.0.0.1 host1.my.domain host1
|
|
10.0.0.2 host2.my.domain host2</programlisting>
|
|
|
|
<para>Um die Verbindung zu überprüfen, pingen Sie jeden
|
|
Rechner vom anderen Rechner aus an. Auf <hostid>host1</hostid>
|
|
gehen Sie dazu folgendermaßen vor:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig plip0</userinput>
|
|
plip0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000
|
|
&prompt.root; <userinput>netstat -r</userinput>
|
|
Routing tables
|
|
|
|
Internet:
|
|
Destination Gateway Flags Refs Use Netif Expire
|
|
host2 host1 UH 0 0 plip0
|
|
&prompt.root; <userinput>ping -c 4 host2</userinput>
|
|
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 ms</screen>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-ipv6">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Aaron</firstname>
|
|
<surname>Kaplan</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
<contrib>Überarbeitet und erweitert von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Brad</firstname>
|
|
<surname>Davis</surname>
|
|
<contrib>Erweitert von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>IPv6 – Internet Protocol Version 6</title>
|
|
|
|
<para>Bei IPv6 (auch als IPng oder
|
|
<foreignphrase>IP next generation</foreignphrase>
|
|
bekannt) handelt es sich um die neueste Version des bekannten
|
|
IP-Protokolls (das auch als <acronym>IPv4</acronym> bezeichnet
|
|
wird). FreeBSD enthält, genauso wie die anderen frei
|
|
erhältlichen BSD-Systeme, die IPv6-Referenzimplementation
|
|
von KAME. FreeBSD erfüllt damit bereits
|
|
alle für die Nutzung von IPv6 nötigen Voraussetzungen.
|
|
Dieser Abschnitt konzentriert sich daher auf die Konfiguration
|
|
und den Betrieb von IPv6.</para>
|
|
|
|
<para>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:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Die drohende Knappheit von IPv4-Adressen. Dieses Problem
|
|
konnte durch die Einführung von privaten
|
|
Adressräumen gemäß RFC1918 (mit Adressen wie
|
|
<hostid role="ipaddr">10.0.0.0/8</hostid>,
|
|
<hostid role="ipaddr">172.16.0.0/12</hostid>, oder
|
|
<hostid role="ipaddr">192.168.0.0/16</hostid>) sowie der
|
|
Entwicklung von <foreignphrase>Network Address
|
|
Translation</foreignphrase> (<acronym>NAT</acronym>)
|
|
weitestgehend entschärft werden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die immer größer werdenden Einträge in
|
|
Router-Tabellen. Dieses Problem ist auch heute noch
|
|
aktuell.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>IPv6 ist in der Lage, diese, aber auch viele andere Probleme
|
|
zu lösen:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Router speichern nur noch Netzwerk-Aggregationsadressen in
|
|
Ihren Routingtabellen. Dadurch reduziert sich die
|
|
durchschnittliche Größe einer Routingtabelle auf
|
|
8192 Einträge.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Weitere nützliche Eigenschaften von IPv6 sind:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Die automatische Konfiguration von Adressen, die im
|
|
<ulink url="http://www.ietf.org/rfc/rfc2462.txt">RFC2462</ulink>
|
|
beschrieben wird.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Anycast-Adressen (<quote>eine-von-vielen</quote>)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Verpflichtende Multicast-Adressen</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die Unterstützung von IPsec (IP-Security)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Eine vereinfachte Headerstruktur</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Mobile <acronym>IP</acronym>-Adressen</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die Umwandlung von IPv4- in IPv6-Adressen</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Weitere Informationsquellen:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Beschreibung von IPv6 auf
|
|
<ulink url="http://playground.sun.com/pub/ipng/html/ipng-main.html">playground.sun.com</ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://www.kame.net">KAME.net</ulink></para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<sect2>
|
|
<title>Hintergrundinformationen zu IPv6-Adressen</title>
|
|
|
|
<para>Es gibt verschiedene Arten von IPv6-Adressen: Unicast-,
|
|
Anycast- und Multicast-Adressen.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<note><para>Die von IPv4 bekannte Broadcast-Adresse
|
|
(normalerweise
|
|
<hostid role="ipaddr">xxx.xxx.xxx.255</hostid>) wird bei IPv6
|
|
durch Multicast-Adressen verwirklicht.</para></note>
|
|
|
|
<table frame="none">
|
|
<title>Reservierte IPv6-Adressen</title>
|
|
|
|
<tgroup cols="4">
|
|
<thead>
|
|
<row>
|
|
<entry>IPv6-Adresse</entry>
|
|
<entry>Präfixlänge</entry>
|
|
<entry>Beschreibung</entry>
|
|
<entry>Anmerkungen</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><hostid role="ip6addr">::</hostid></entry>
|
|
<entry>128 Bit</entry>
|
|
<entry>nicht festgelegt</entry>
|
|
<entry>entspricht <hostid role="ipaddr">0.0.0.0</hostid>
|
|
bei IPv4</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid role="ip6addr">::1</hostid></entry>
|
|
<entry>128 Bit</entry>
|
|
<entry>Loopback-Adresse</entry>
|
|
<entry>entspricht <hostid role="ipaddr">127.0.0.1</hostid>
|
|
bei IPv4</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid
|
|
role="ip6addr">::00:xx:xx:xx:xx</hostid></entry>
|
|
<entry>96 Bit</entry>
|
|
<entry>Eingebettete IPv4-Adresse</entry>
|
|
<entry>Die niedrigen 32 Bit entsprechen der IPv4-Adresse.
|
|
Wird auch als <quote>IPv4-kompatible IPv6-Adresse
|
|
bezeichnet</quote>.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid
|
|
role="ip6addr">::ff:xx:xx:xx:xx</hostid></entry>
|
|
<entry>96 Bit</entry>
|
|
<entry>Eine auf IPv6 abgebildete IPv4-Adresse</entry>
|
|
<entry>Die niedrigen 32 Bit entsprechen der IPv4-Adresse.
|
|
Notwendig für Rechner, die IPv6 nicht
|
|
unterstützen.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid role="ip6addr">fe80::</hostid> - <hostid
|
|
role="ip6addr">feb::</hostid></entry>
|
|
<entry>10 Bit</entry>
|
|
<entry><foreignphrase>link-local</foreignphrase></entry>
|
|
<entry>Entspricht der Loopback-Adresse bei IPv4</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid role="ip6addr">fec0::</hostid> - <hostid
|
|
role="ip6addr">fef::</hostid></entry>
|
|
<entry>10 Bit</entry>
|
|
<entry><foreignphrase>site-local</foreignphrase></entry>
|
|
<entry> </entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid role="ip6addr">ff::</hostid></entry>
|
|
<entry>8 Bit</entry>
|
|
<entry>Multicast</entry>
|
|
<entry> </entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid role="ip6addr">001</hostid>
|
|
(im Dualsystem)</entry>
|
|
<entry>3 Bit</entry>
|
|
<entry>Globaler Unicast</entry>
|
|
<entry>Alle globalen Unicastadressen stammen aus diesem
|
|
Pool. Die ersten 3 Bit lauten <quote>001</quote>.
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>IPv6-Adressen verstehen</title>
|
|
|
|
<para>Die kanonische Form von IPv6-Adressen lautet
|
|
<hostid role="ip6addr">x:x:x:x:x:x:x:x</hostid>, jedes
|
|
<quote>x</quote> steht dabei für einen
|
|
16-Bit-Hexadezimalwert. Ein Beispiel für eine IPv6-Adresse
|
|
wäre etwa
|
|
<hostid
|
|
role="ip6addr">FEBC:A574:382B:23C1:AA49:4592:4EFE:9982</hostid>.</para>
|
|
|
|
<para>Eine IPv6-Adresse enthält oft Teilzeichenfolgen aus lauter
|
|
Nullen. Eine solche Zeichenfolge kann zu <quote>::</quote>
|
|
verkürzt werden. Bis zu drei führende Nullen eines
|
|
Hexquads können ebenfalls weggelassen werden.
|
|
<hostid role="ip6addr">fe80::1</hostid> entspricht also der Adresse
|
|
<hostid role="ip6addr">fe80:0000:0000:0000:0000:0000:0000:0001</hostid>.
|
|
</para>
|
|
|
|
<para>Eine weitere Möglichkeit ist die Darstellung der
|
|
letzten 32 Bit in der bekannten (dezimalen) IPv4-Darstellung,
|
|
bei der Punkte (<quote>.</quote>) zur Trennung verwendet werden.
|
|
<hostid role="ip6addr">2002::10.0.0.1</hostid> ist also nur eine
|
|
andere Schreibweise für die (hexadezimale) kanonische Form
|
|
<hostid role="ip6addr">2002:0000:0000:0000:0000:0000:0a00:0001</hostid>,
|
|
die wiederum der Adresse
|
|
<hostid role="ip6addr">2002::a00:1</hostid> entspricht.</para>
|
|
|
|
<para>Sie sollten nun in der Lage sein, die folgende Ausgabe zu
|
|
verstehen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig</userinput>
|
|
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: active</screen>
|
|
|
|
<para>Bei
|
|
<hostid role="ip6addr">fe80::200:21ff:fe03:8e1%rl0</hostid>
|
|
handelt es sich um eine automatisch konfigurierte
|
|
<foreignphrase>link-local</foreignphrase>-Adresse. Sie
|
|
wird im Rahmen der automatischen Konfiguration aus der
|
|
MAC-Adresse erzeugt.</para>
|
|
|
|
<para>Weitere Informationen zum Aufbau von IPv6-Adressen finden
|
|
Sie im <ulink url="http://www.ietf.org/rfc/rfc3513.txt">
|
|
RFC3513</ulink>.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Eine IPv6-Verbindung herstellen</title>
|
|
|
|
<para>Es gibt derzeit vier Möglichkeiten, sich mit anderen
|
|
IPv6-Rechnern oder Netzwerken zu verbinden:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Fragen Sie Ihren Internetprovider, ob er IPv6
|
|
bereits unterstützt.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://www.sixxs.net">SixXS</ulink>
|
|
bietet weltweit IPv6-Tunnelverbindungen an.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die Verwendung eines 6-nach-4-Tunnels
|
|
(<ulink
|
|
url="http://www.ietf.org/rfc/rfc3068.txt">RFC3068</ulink>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die Verwendung des Ports
|
|
<filename>/usr/ports/net/freenet6</filename> bei der Einwahl
|
|
ins Internet.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>DNS in der IPv6-Welt</title>
|
|
|
|
<para>Ursprü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.</para>
|
|
|
|
<para>Weisen Sie die erhaltene IPv6-Adresse Ihrem Rechnernamen zu,
|
|
indem Sie den Eintrag</para>
|
|
|
|
<programlisting>MYHOSTNAME AAAA MYIPv6ADDR</programlisting>
|
|
|
|
<para>in Ihre primäre DNS-Zonendatei einfügen. Falls
|
|
Sie nicht für Ihre <acronym>DNS</acronym>-Zone
|
|
verantwortlich sind, bitten Sie den dafür
|
|
Zuständigen, diese Änderung durchzuführen.
|
|
Die aktuellen Versionen von <application>bind</application>
|
|
(Version 8.3 oder 9) sowie
|
|
<filename role="package">dns/djbdns</filename> (bei Verwendung
|
|
des IPv6-Patches) unterstützen AAAA-Einträge.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><filename>/etc/rc.conf</filename> für die Nutzung von
|
|
IPv6 anpassen</title>
|
|
|
|
<sect3>
|
|
<title>Einen Client unter IPv6 einrichten</title>
|
|
|
|
<para>Dieser 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
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>ipv6_enable="YES"</programlisting>
|
|
|
|
<para>Durch die folgende Zeile weisen Sie Ihrer Schnittstelle
|
|
<devicename>fxp0</devicename> die statische IP-Adresse <hostid
|
|
role="ip6addr">2001:471:1f11:251:290:27ff:fee0:2093</hostid>
|
|
zu:</para>
|
|
|
|
<programlisting>ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093"</programlisting>
|
|
|
|
<para>Um <hostid role="ip6addr">2001:471:1f11:251::1</hostid>
|
|
als Standardrouter festzulegen, fügen Sie folgende Zeile
|
|
in <filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>ipv6_defaultrouter="2001:471:1f11:251::1"</programlisting>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Gateways und Router unter IPv6 einrichten</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt, wie Sie Ihren Rechner mit
|
|
Hilfe der von Ihrem Tunnel-Anbieter erhaltenen
|
|
Anweisungen dauerhaft für die Nutzung von IPv6
|
|
einrichten. Um den Tunnel beim Systemstart
|
|
wiederherzustellen, passen Sie
|
|
<filename>/etc/rc.conf</filename> wie folgt an:</para>
|
|
|
|
<para>Listen Sie die einzurichtenden Tunnelschnittstellen
|
|
(hier <devicename>gif0</devicename>) auf:</para>
|
|
|
|
<programlisting>gif_interfaces="gif0"</programlisting>
|
|
|
|
<para>Um den lokalen Endpunkt
|
|
<replaceable>MY_IPv4_ADDR</replaceable> über diese
|
|
Schnittstelle mit dem entfernten Endpunkt
|
|
<replaceable>REMOTE_IPv4_ADDR</replaceable> zu
|
|
verbinden, verwenden Sie folgende Zeile:</para>
|
|
|
|
<programlisting>gifconfig_gif0="<replaceable>MY_IPv4_ADDR REMOTE_IPv4_ADDR</replaceable>"</programlisting>
|
|
|
|
<para>Um die Ihnen zugewiesene IPv6-Adresse als Endpunkt Ihres
|
|
IPv6-Tunnels zu verwenden, fügen Sie folgende Zeile
|
|
ein:</para>
|
|
|
|
<programlisting>ipv6_ifconfig_gif0="<replaceable>MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR</replaceable>"</programlisting>
|
|
|
|
<para>Nun müssen Sie nur noch die IPv6-Standardroute
|
|
angeben. Diese legt das andere Ende des IPv6-Tunnels
|
|
fest.</para>
|
|
|
|
<programlisting>ipv6_defaultrouter="<replaceable>MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR</replaceable>"</programlisting>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Einen IPv6-Tunnel einrichten</title>
|
|
|
|
<para>Wenn Ihr Server IPv6-Verkehr zwischen Ihrem Netzwerk und
|
|
der Außenwelt routen muss, benötigen Sie
|
|
zusätzlich die folgenden Zeilen in Ihrer
|
|
<filename>/etc/rc.conf</filename>:</para>
|
|
|
|
<programlisting>ipv6_gateway_enable="YES"</programlisting>
|
|
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Bekanntmachung von Routen und automatische
|
|
Rechnerkonfiguration</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt die Einrichtung von
|
|
&man.rtadvd.8;, das Sie bei der Bekanntmachung der
|
|
IPv6-Standardroute unterstützt.</para>
|
|
|
|
<para>Um &man.rtadvd.8; zu aktivieren, fügen Sie folgende
|
|
Zeile in <filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>rtadvd_enable="YES"</programlisting>
|
|
|
|
<para>Es ist wichtig, die Schnittstelle anzugeben, über die
|
|
IPv6-Routen bekanntgemacht werden sollen. Soll &man.rtadvd.8;
|
|
<devicename>fxp0</devicename> verwenden, ist folgender Eintrag
|
|
nötig:</para>
|
|
|
|
<programlisting>rtadvd_interfaces="fxp0"</programlisting>
|
|
|
|
<para>Danach erzeugen Sie die Konfigurationsdatei
|
|
<filename>/etc/rtadvd.conf</filename>. Dazu ein Beispiel:</para>
|
|
|
|
<programlisting>fxp0:\
|
|
:addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether:</programlisting>
|
|
|
|
<para>Ersetzen Sie dabei <devicename>fxp0</devicename> durch die
|
|
zu verwendende Schnittstelle.</para>
|
|
|
|
<para>Anschließend ersetzen Sie
|
|
<hostid role="ip6addr">2001:471:1f11:246::</hostid> durch das
|
|
Präfix der Ihnen zugewiesenen Verbindung.</para>
|
|
|
|
<para>Wenn Sie eine <hostid role="netmask">/64</hostid>-Netzmaske
|
|
verwenden, müssen Sie keine weiteren Anpassungen vornehmen.
|
|
Anderenfalls müssen Sie <literal>prefixlen#</literal>
|
|
auf den korrekten Wert setzen.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-atm">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Harti</firstname>
|
|
<surname>Brandt</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>ATM - Asynchronous Transfer Mode</title>
|
|
|
|
<sect2>
|
|
<title><foreignphrase>Classical IP over ATM</foreignphrase>
|
|
als PVC-Verbindung einrichten</title>
|
|
|
|
<para><foreignphrase>Classical IP over ATM</foreignphrase>
|
|
(<acronym>CLIP</acronym>) ist die einfachste Möglichkeit,
|
|
um IP-Verkehr über ATM (<foreignphrase>Asynchronous
|
|
Transfer Mode</foreignphrase>-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.</para>
|
|
|
|
<sect3>
|
|
<title>Ein vollständig vermaschtes Netzwerk aufbauen</title>
|
|
|
|
<para>Bei einem vollständig vermaschten
|
|
(<foreignphrase>fully meshed</foreignphrase>) 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
|
|
<acronym role="Asynchronous Transfer Mode">ATM</acronym>-Adapterkarte
|
|
mit dem
|
|
<acronym role="Asynchronous Transfer Mode">ATM</acronym>-Netzwerk
|
|
verbunden sind. Als ersten Konfigurationsschritt planen wir
|
|
die Vergabe von IP-Adressen sowie die anzulegenden
|
|
<acronym role="Asynchronous Transfer Mode">ATM</acronym>-Verbindungen:
|
|
</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="1*"/>
|
|
<thead>
|
|
<row>
|
|
<entry>Rechner</entry>
|
|
<entry>IP-Adresse</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><hostid>hostA</hostid></entry>
|
|
<entry><hostid role="ipaddr">192.168.173.1</hostid></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>hostB</hostid></entry>
|
|
<entry><hostid role="ipaddr">192.168.173.2</hostid></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>hostC</hostid></entry>
|
|
<entry><hostid role="ipaddr">192.168.173.3</hostid></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>hostD</hostid></entry>
|
|
<entry><hostid role="ipaddr">192.168.173.4</hostid></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Um ein vollständiges Netz aufzubauen, benötigen
|
|
wir für jedes Rechnerpaar eine eigene ATM-Verbindung:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="1*"/>
|
|
<thead>
|
|
<row>
|
|
<entry>Rechnerpaar</entry>
|
|
<entry>VPI.VCI-Paar</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><hostid>hostA</hostid> - <hostid>hostB</hostid></entry>
|
|
<entry>0.100</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>hostA</hostid> - <hostid>hostC</hostid></entry>
|
|
<entry>0.101</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>hostA</hostid> - <hostid>hostD</hostid></entry>
|
|
<entry>0.102</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>hostB</hostid> - <hostid>hostC</hostid></entry>
|
|
<entry>0.103</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>hostB</hostid> - <hostid>hostD</hostid></entry>
|
|
<entry>0.104</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>hostC</hostid> - <hostid>hostD</hostid></entry>
|
|
<entry>0.105</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Die 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:</para>
|
|
|
|
<screen>hostA&prompt.root; <userinput>ifconfig hatm0 192.168.173.1 up</userinput>
|
|
hostB&prompt.root; <userinput>ifconfig hatm0 192.168.173.2 up</userinput>
|
|
hostC&prompt.root; <userinput>ifconfig hatm0 192.168.173.3 up</userinput>
|
|
hostD&prompt.root; <userinput>ifconfig hatm0 192.168.173.4 up</userinput></screen>
|
|
|
|
<para>Dabei setzen wir voraus, dass
|
|
<devicename>hatm0</devicename> auf allen Rechnern die
|
|
ATM-Schnittstelle darstellt. Danach werden, beginnend mit
|
|
<hostid>hostA</hostid>, 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.):</para>
|
|
|
|
<screen>hostA&prompt.root; <userinput>atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr</userinput>
|
|
hostA&prompt.root; <userinput>atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr</userinput>
|
|
hostA&prompt.root; <userinput>atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr</userinput>
|
|
|
|
hostB&prompt.root; <userinput>atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr</userinput>
|
|
hostB&prompt.root; <userinput>atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr</userinput>
|
|
hostB&prompt.root; <userinput>atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr</userinput>
|
|
|
|
hostC&prompt.root; <userinput>atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr</userinput>
|
|
hostC&prompt.root; <userinput>atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr</userinput>
|
|
hostC&prompt.root; <userinput>atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr</userinput>
|
|
|
|
hostD&prompt.root; <userinput>atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr</userinput>
|
|
hostD&prompt.root; <userinput>atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr</userinput>
|
|
hostD&prompt.root; <userinput>atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubr</userinput></screen>
|
|
|
|
<para>Statt UBR können auch andere
|
|
<foreignphrase>traffic contracts</foreignphrase> verwendet
|
|
werden. Voraussetzung ist allerdings, dass diese von Ihrem
|
|
ATM-Adapter unterstützt werden. Ist dies der Fall,
|
|
folgen auf den Namen des
|
|
<foreignphrase>traffic contracts</foreignphrase> die
|
|
entsprechenden Konfigurationsparameter. Weitere Informationen
|
|
zur Konfiguration von ATM-Adapterkarten erhalten Sie über
|
|
den Befehl</para>
|
|
|
|
<screen>&prompt.root; <userinput>atmconfig help natm add</userinput></screen>
|
|
|
|
<para>oder durch das Lesen von &man.atmconfig.8;.</para>
|
|
|
|
<para>Die Konfiguration von ATM-Adaptern kann auch über die
|
|
Datei <filename>/etc/rc.conf</filename> erfolgen. Für
|
|
<hostid>hostA</hostid> sähe die Konfiguration so
|
|
aus:</para>
|
|
|
|
<programlisting>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"</programlisting>
|
|
|
|
<para>Mit dem folgenden Befehl lässt sich der derzeitige
|
|
Status aller <acronym>CLIP</acronym>-Routen anzeigen:</para>
|
|
|
|
<screen>hostA&prompt.root; <userinput>atmconfig natm show</userinput></screen>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="carp">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>CARP - Common Address Redundancy Protocol</title>
|
|
|
|
<indexterm><primary>CARP</primary></indexterm>
|
|
<indexterm><primary>Common Address Redundancy Protocol (CARP)</primary></indexterm>
|
|
|
|
<para>Das <foreignphrase>Common Address Redundancy
|
|
Protocol</foreignphrase> (<acronym>CARP</acronym>) erlaubt es,
|
|
mehreren Rechnern die gleiche <acronym>IP</acronym>-Adresse
|
|
zuzuweisen. Durch ein solches Vorgehen läßt sich
|
|
beispielsweise die Verfügbarkeit bestimmter Dienste
|
|
verbessern oder die Last zwischen einzelnen Systemen besser
|
|
verteilen. Den auf diese Art und Weise konfigurierten Systemen
|
|
kann zusätzlich eine eigene (im Netzwerk eindeutige)
|
|
<acronym>IP</acronym>-Adresse zugewiesen werden (wie dies auch
|
|
im folgenden Beispiel erfolgt).</para>
|
|
|
|
<para>Um <acronym>CARP</acronym> zu aktivieren, müssen Sie die
|
|
&os;-Kernelkonfigurationsdatei um die folgende Option erweitern
|
|
und danach den &os;-Kernel (wie in <xref
|
|
linkend="kernelconfig"/> beschrieben) neu bauen:</para>
|
|
|
|
<programlisting>device carp</programlisting>
|
|
|
|
<para>Alternativ können Sie aber auch das Kernelmodul
|
|
<filename>if_carp.ko</filename> beim Systemstart
|
|
automatisch laden. Dazu nehmen Sie die folgende Zeile
|
|
in die Datei <filename>/boot/loader.conf</filename>
|
|
auf:</para>
|
|
|
|
<programlisting>if_carp_load="YES"</programlisting>
|
|
|
|
<para>Danach ist <acronym>CARP</acronym> auf Ihrem System
|
|
verfügbar und kann über verschiedene
|
|
<command>sysctl</command>-Optionen (<acronym>OID</acronym>s)
|
|
gesteuert werden.</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>OID</entry>
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><varname>net.inet.carp.allow</varname></entry>
|
|
<entry>Akzeptiert ankommende <acronym>CARP</acronym>-Pakete.
|
|
In der Voreinstellung aktiviert.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><varname>net.inet.carp.preempt</varname></entry>
|
|
<entry>Diese Option deaktiviert alle
|
|
<acronym>CARP</acronym>-Geräte, sobald eines von
|
|
ihnen ausfällt. In der Voreinstellung
|
|
deaktiviert.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><varname>net.inet.carp.log</varname></entry>
|
|
<entry>Hat diese Variable den Wert <literal>0</literal>, wird
|
|
kein Protokoll generiert, während mit dem Wert
|
|
<literal>1</literal> nur inkorrekte
|
|
<acronym>CARP</acronym>-Pakete protokolliert werden. Hat
|
|
die Variable einen Wert größer
|
|
<literal>1</literal>, werden nur die Statuswechsel von
|
|
<acronym>CARP</acronym>-Geräten protokolliert. In der
|
|
Voreinstellung hat diese Variable den Wert
|
|
<literal>1</literal>.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><varname>net.inet.carp.arpbalance</varname></entry>
|
|
<entry>Gleicht die Netzwerklast im lokalen Netzwerk durch
|
|
den Einsatz von <acronym>ARP</acronym> aus. In der
|
|
Voreinstellung deaktiviert.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><varname>net.inet.carp.suppress_preempt</varname></entry>
|
|
<entry>Eine nur lesbare <acronym>OID</acronym>, die
|
|
den <foreignphrase>Preemption Suppression</foreignphrase>-Status
|
|
anzeigt. Preemption kann verhindert werden. Dies auch dann,
|
|
wenn ein Gerät ausfällt. Hat die Variable
|
|
den Wert <literal>0</literal>, bedeutet dies, dass Preemption
|
|
nicht verhindert wird. Tritt ein Problem auf, wird der Wert
|
|
dieser <acronym>OID</acronym> um <literal>1</literal>
|
|
erhöht.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Das <acronym>CARP</acronym>-Gerät selbst erzeugen Sie mit dem
|
|
<command>ifconfig</command>-Befehl:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig carp0 create</userinput></screen>
|
|
|
|
<para>Damit Sie dieses Protokoll in Ihrem Netzwerk einsetzen
|
|
können, muss jede Netzwerkkarte eine eindeutige
|
|
Identifikationsnummer, die sogenannte <acronym>VHID</acronym>
|
|
(<foreignphrase>Virtual Host Identification</foreignphrase>),
|
|
besitzen, da sich ansonsten die Rechner Ihres Netzwerks nicht
|
|
voneinander unterscheiden lassen.</para>
|
|
|
|
<sect2>
|
|
<title>Die Serververfügbarkeit mit CARP
|
|
verbessern</title>
|
|
|
|
<para>Wie bereits weiter oben erwähnt wurde, können Sie
|
|
<acronym>CARP</acronym> dazu verwenden, die Verfübarkeit
|
|
Ihrer Server zu verbessern. Im folgenden Bespiel werden
|
|
insgesamt drei Server (mit jeweils eigener, eindeutiger
|
|
<acronym>IP</acronym>-Adresse), die alle den gleichen Inhalt
|
|
anbieten, in einer <foreignphrase>Round Robin</foreignphrase>
|
|
<acronym>DNS</acronym>-Konfiguration eingerichtet.
|
|
Der Backup-Server verfügt über zwei
|
|
<acronym>CARP</acronym>-Schnittstellen (für die beiden
|
|
<acronym>IP</acronym>-Adressen der Content-Server). Tritt bei
|
|
einem Content-Server ein Problem auf, übernimmt der
|
|
Backup-Server die <acronym>IP</acronym>-Adresse des
|
|
ausgefallenen Servers. Dadurch sollte die Auswahl eines Servers
|
|
vom Anwender nicht bemerkt werden. Der Backup-Server muss
|
|
identisch konfiguriert sein und die gleichen Daten und Dienste
|
|
anbieten wie das System, das er ersetzen soll.</para>
|
|
|
|
<para>Die beiden Content-Server werden (abgesehen von ihren
|
|
jeweiligen Hostnamen und <acronym>VHID</acronym>s) identisch
|
|
konfiguriert und heißen in unserem Beispiel
|
|
<hostid>hosta.example.org</hostid> beziehungsweise
|
|
<hostid>hostb.example.org</hostid>. Damit Sie
|
|
<acronym>CARP</acronym> einsetzen können, müssen
|
|
Sie als Erstes die Datei <filename>rc.conf</filename> auf
|
|
beiden Systemen anpassen. Für das System
|
|
<hostid>hosta.example.org</hostid> nehmen Sie dazu folgende
|
|
Zeilen in <filename>rc.conf</filename> auf:</para>
|
|
|
|
<programlisting>hostname="hosta.example.org"
|
|
ifconfig_fxp0="inet 192.168.1.3 netmask 255.255.255.0"
|
|
cloned_interfaces="carp0"
|
|
ifconfig_carp0="vhid 1 pass testpass 192.168.1.50/24"</programlisting>
|
|
|
|
<para>Für das System <hostid>hostb.example.org</hostid>
|
|
benötigen Sie zusätzlich folgende Zeilen in
|
|
<filename>rc.conf</filename>:</para>
|
|
|
|
<programlisting>hostname="hostb.example.org"
|
|
ifconfig_fxp0="inet 192.168.1.4 netmask 255.255.255.0"
|
|
cloned_interfaces="carp0"
|
|
ifconfig_carp0="vhid 2 pass testpass 192.168.1.51/24"</programlisting>
|
|
|
|
<note>
|
|
<para>Achten Sie unbedingt darauf, dass die durch die Option
|
|
<option>pass</option> an <command>ifconfig</command>
|
|
übergebenen Passwörter auf beiden Systemen
|
|
identisch sind, da
|
|
<devicename>carp</devicename>-Geräte nur mit Systemen
|
|
kommunizieren können, die über ein korrektes Passwort
|
|
verfügen. Beachten Sie weiters, dass sich die
|
|
<acronym>VHID</acronym>s der beiden Systeme unterscheiden
|
|
müssen.</para>
|
|
</note>
|
|
|
|
<para>Nun richten Sie noch das dritte System,
|
|
<hostid>provider.example.org</hostid>, ein, das aktiviert
|
|
wird, wenn eines der beiden zuvor konfigurierten Systeme
|
|
ausfällt. Dieses dritte System benötigt zwei
|
|
<devicename>carp</devicename>-Geräte, um bei Bedarf
|
|
eines der beiden anderen
|
|
Systeme ersetzen zu können. Dazu konfigurieren Sie
|
|
<filename>rc.conf</filename> analog zur folgenden
|
|
Beispielkonfiguration:</para>
|
|
|
|
<programlisting>hostname="provider.example.org"
|
|
ifconfig_fxp0="inet 192.168.1.5 netmask 255.255.255.0"
|
|
cloned_interfaces="carp0 carp1"
|
|
ifconfig_carp0="vhid 1 advskew 100 pass testpass 192.168.1.50/24"
|
|
ifconfig_carp1="vhid 2 advskew 100 pass testpass 192.168.1.51/24"</programlisting>
|
|
|
|
<para>Durch die beiden <devicename>carp</devicename>-Geräte
|
|
ist es <hostid>provider.example.org</hostid> möglich,
|
|
festzustellen, ob eines der beiden anderen Systeme nicht mehr
|
|
reagiert. In diesem Fall übernimmt
|
|
<hostid>provider.example.org</hostid> die
|
|
<acronym>IP</acronym>-Adresse des betroffenen Systems.</para>
|
|
|
|
<note>
|
|
<para>Ist im installierten &os;-Kernel die Option
|
|
"preemption" aktiviert, kann es sein, dass
|
|
<hostid>provider.example.org</hostid> die übernommene
|
|
<acronym>IP</acronym>-Adresse nicht mehr an den
|
|
Content-Server zurückgibt (wenn dieser wieder
|
|
funktioniert). In diesem Fall muss ein Administrator die
|
|
entsprechende Schnittstelle dazu zwingen, dies zu tun.
|
|
Dazu gibt er auf dem Rechner
|
|
<hostid>provider.example.org</hostid> den folgenden
|
|
Befehl ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig carp0 down && ifconfig carp0 up</userinput></screen>
|
|
|
|
<para>Dieser Befehl muss auf das
|
|
<devicename>carp</devicename>-Gerät ausgeführt
|
|
werden, das dem betroffenen System zugeordnet ist.</para>
|
|
</note>
|
|
|
|
<para>Damit ist <acronym>CARP</acronym> vollständig
|
|
konfiguriert und der Testbetrieb kann beginnen. Zuvor
|
|
müssen Sie allerdings noch alle Systeme neu starten
|
|
(beziehungsweise die Netzwerkkonfiguration auf allen
|
|
Systemen neu einlesen), um die Einstelllungen zu
|
|
übernehmen.</para>
|
|
|
|
<para>Für weitere Informtionen lesen Sie bitte die Manualpage
|
|
&man.carp.4;.</para>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|