<!--
   Dieser SGML Source kann mit dem Programmpaket sgml-tools 1.0.x in
   die Formate TXT, HTML, DVI, Postscript und PDF umgewandelt werden.
   Bei allen Konvertern muß die Option "-c latin -l de" 
   verwendet werden.

   Deutsches Linux HOWTO Projekt
      http://www.tu-harburg.de/dlhp/
-->

<!doctype linuxdoc system >


<!--	SMGL sorce v1.0 / Bridge mini-HOWTO deutsch
	based on Bridging mini-HOWTO v1.03 by Chris Cole
	München, 22.10.1996
-->

<article>

<!-- Title info -->

<title>Bridging mini-HOWTO
<author>Ralph Wetzel (<tt>Ralph.Wetzel@munich.netsurf.de</tt>)
<date>v1.0-2, 22. Oktober 1996
<abstract>
Dieses mini-HOWTO erklärt in einfachen Worten und ziemlich schnell, wie man
einen Linux-Rechner als Bridge einrichtet. Es basiert (im Moment noch
zu 100%) auf dem "Bridging mini-HOWTO v1.03" von <tt><htmlurl
url="mailto:chris@polymer.uakron.edu" name="Chris Cole"></tt>.
</abstract>

<toc>

<sect> Installation

<p><enum>
<item>Man besorge sich die <em>Bridge Config</em>-Tools:
<tscreen>
<htmlurl url="ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz" 
name="shadow.cabi.net:/pub/Linux/BRCFG.tgz">
</tscreen>

<item>Man besorge sich und <bf>lese</bf> das <em>Multiple ethernet
mini-HOWTO</em>:
<tscreen>
<htmlurl url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/mini/Multiple-Ethernet"
name="metalab.unc.edu:/pub/Linux/docs/HOWTO/mini/Multiple-Ethernet">
</tscreen>

<item>Man bringe seinem Rechner bei, mehrere Ethernet-Karten zu verwalten,
indem man die folgende Zeile in <tt>/etc/lilo.conf</tt> einfügt, und
anschließend <tt>lilo</tt> startet:
<tscreen><verb>append = "ether=0,0,eth1"</verb></tscreen>
Ist der zukünftige Bridge-Rechner mit drei Ethernet-Karten bestückt, so sollte man
diese Zeile verwenden:
<tscreen><verb>append = "ether=0,0,eth1 ether=0,0,eth2"</verb></tscreen>
Je mehr <tt>ether</tt>-Anweisungen man einfügt, desto mehr Karten kann 
Linux finden. Standardmäßig testet ein Linux Kernel nur die Anwesenheit einer einzigen
Ethernet-Karte, und beendet die Suche, nachdem er sie gefunden hat. Die
<tt>ether</tt>-Anweisungen fordern den Kernel auf, die Suche zusätzlich auf weitere Karten
auszudehnen.
<p>
Als Alternative zur Veränderung der <tt>/etc/lilo.conf</tt> können die
Anweisungen als Boot-Parameter übergeben werden:
<tscreen><verb>linux ether=0,0,eth1</verb></tscreen>
Oder, bei drei installierten Karten:
<tscreen><verb>linux ether=0,0,eth1 ether=0,0,eth2</verb></tscreen>

<item> <label id="Installation 4.">Man erstelle einen Kernel mit
<em>bridging</em>-Fähigkeiten. Dazu sind, während der Kernel-Konfiguration, auf
<tt>'y'</tt> zu setzen:
<p>
<itemize>
<item> die einzige Option in <tt>Code maturity level options</tt>.
<item><tt>Bridging (EXPERIMENTAL)</tt> in <tt>Networking options</tt>.
</itemize>

<item> Eine Bridge sollte keine IP Adresse haben. Sie <em>kann</em>, aber eine
reine Bridge benötigt keine. Um die IP Adressen der Bridge zu entfernen, gehe man
zu <tt>/etc/sysconfig/network-scripts/</tt> (für ein <bf>RedHat</bf> System) und
kopiere <tt>ifcfg-lo0</tt> nach <tt>ifcfg-eth0</tt> &amp
<tt>ifcfg-eth1</tt>. In diesen Files ändere man die Zeile
<tt>'DEVICE=lo'</tt> in <tt>'DEVICE=eth0'</tt> bzw. <tt>'DEVICE=eth1'</tt>.
Soll die Bridge mehr als zwei Ethernet-Karten beinhalten, sind die entsprechenden Files
auch für die restlichen Karten einzurichten.
<p>
Für andere Distributionen, wie z.B. <bf>S.u.S.E.</bf>, muß man hier etwas
anders vorgehen. Darauf werde ich in zukünftigen Versionen dieses HOWTO's
näher eingehen. :))

<item> Man <em>reboote</em> den Rechner, so daß nun
<p>
<itemize>
<item> der Kernel <em>bridging</em>-Fähigkeiten besitzt
<item> die Ethernet-Karten eingerichtet und
<item> möglichst an <bf>keine</bf> IP Adresse gebunden sind.
</itemize>
 
<item> Ist das System wieder zurück, sind die Ethernet-Karten in den
<em>promiscous-mode</em>
zu setzen, so daß sie jedes <em>packet</em> annehmen, welches sie erreicht. Dabei ist
darauf zu achten, daß
<bf>jede</bf> Karte, die an einen Netzwerk-Bereich angeschlossen ist, der über die Bridge
angebunden werden soll, in diesen Modus zu schalten ist:
<tscreen><verb>
ifconfig promisc eth0 ; ifconfig promisc eth1
</verb></tscreen>

<item> Man schalte die Bridge mittels des Programms <tt>brcfg</tt>
<bf>EIN</bf>:
<tscreen><verb>brcfg -ena</verb></tscreen>

<item> Der Netzverkehr auf den einzelnen Karten sollte sich unterscheiden. Man überprüfe dies
mittels:
<tscreen><verb>
tcpdump -i eth0     (in einem Fenster)
tcpdump -i eth1     (in einem anderen Fenster)
</verb></tscreen>

<item> Startet man einen <em>sniffer</em> oder <tt>tcpdump</tt> auf einem
anderen Rechner, kann man überprüfen, ob die Bridge die einzelnen Teile des
Netzwerks richtig verwaltet.

</enum>

<sect> FAQ - Normale Probleme
<p>
<itemize>

<item> Was bedeutet die Fehlermeldung "<tt>ioctl(SIOCGIFBR) failed: Package
not installed</tt>"?
<p>
Der verwendete Kernel besitzt <bf>keine</bf> <em>bridging</em>-Fähigkeit.
Man besorge sich den Source-Code für einen Kernel v2.x.x, und compiliere ihn
entsprechend <ref id="Installation 4." name="Nr. 4)">.

<item> Mein Rechner auf der einen Seite der Bridge kann den auf der anderen
nicht an<em>ping</em>en!
<p>
<enum>
<item>Ist die Bridge eingeschaltet (<tt>'brcfg -ena'</tt> erledigt das)?
<tt>brcfg</tt> sollte dann mit '<tt>bridging is ENABLED</tt>' antworten.
<item>Sind alle Karten im <em>promiscous-mode</em>? Falls unklar, bemühe man
den Befehl <tt>ifconfig</tt>. Für jede Karte sollte das
<tt>PROMISC</tt>-Flag gesetzt sein.

<item> Verwendet man Ethernet-Karten, die an verschiedene Netzwerktypen
angeschlossen werden können, stelle man sicher, daß der richtige Anschluß
aktiviert ist. Im Erstfall hilft sicher das mit der Karte mitgelieferte
Setup-/Konfigurations- Programm.
</enum>
<item> Ich kann von der Bridge aus mit <tt>telnet</tt>/<tt>ftp</tt> keinen
anderen Rechner erreichen!
<p>
Ganz einfach: Die Netzwerkkarten der Bridge besitzen keine IP Adressen, da
sie gemäß Standard ein transparenter Teil des Netzwerkes sind.
<item> Was muß ich machen um den <em>routing</em>-Pfad festzulegen?
<p>
Gar nichts! Der <em>bridging code</em> im Kernel verwaltet alles Notwendige.
Um die Ethernet-Adressen zu sehen, die die Bridge erkannt hat, kann man den
Debug-Modus des <tt>brcfg</tt>-Programms verwenden:
<tscreen><verb>brcfg -deb </verb></tscreen>

<item> Die Bridge scheint zu funktionieren, aber warum zeigt
<tt>traceroute</tt> sie nicht als Teil des Netzwerkes?
<p>
Auf Grund der ursprünglichen Definition einer Brigde sollte <tt>traceroute</tt>
die Bridge <bf>nicht</bf> zeigen. Noch einmal: Die Bridge ist ein
transparenter Baustein des Netzwerkes.

<item> Muß <tt>IP_FORWARD</tt> in den Kernel compiliert werden?
<p>
Nein! Der <em>bridging code</em> des Kernels kümmert sich um den Transport
der <em>packets</em>. <tt>IP_FORWARD</tt> wird nur für einen Gateway
benötigt, dessen Netzwerkkarten an IP Adressen gebunden sind.

<item> Warum sind die physikalischen Ethernet-Adressen für Port 1 und Port
2, laut <tt>brcfg</tt>-Programm, identisch? Sollten sie sich nicht
unterscheiden?
<p>Nein! Der <em>bridging code</em> weist jedem Port der Bridge dieselbe
physikalische Ethernet-Adresse zu.
</itemize>

<sect> Ausblicke
<p>
Dies ist die erste und zugegebener Maßen ziemlich dünne Version des
deutschen <em>Bridging mini-HOWTO</em>. Um das Ganze mit mehr Leben zu
füllen, sind als Erweiterungen geplant:
<enum>
<item> Darstellung der Unterschiede der Installation der Bridge bei verschiedenen
Distributionen. Von mir festgelegte Reihenfolge der Dringlichkeit dabei:
<quote>S.u.S.E. - DLD - RedHat - andere</quote>
<item> Begriffsbestimmungen.
<item> Erklärung von Fehler-/ Debug-Meldungen.
<item> hmmm.... mal sehen.
</enum>
Über
<itemize>
<item>Anregungen,
<item>Kritik,
<item>Mail von jedem, der schon vor einem Problem mit
dieser Bridge stand, und es gelöst hat,
<item>Mail von jedem, der vor einem Problem mit dieser Bridge steht und es
noch nicht gelöst hat
</itemize>
würde <htmlurl url="mailto:Ralph.Wetzel@munich.netsurf.de" name="ich"> mich sehr freuen.
 
</article>

<!-- Das wars.... gar nicht so schlecht für's erste Mal.... hoffe ich!! -->
<!-- Das Copyright für diesen Source-Code liegt bei Ralph Wetzel / Ralph.Wetzel@munich.netsurf.de und unterliegt dem GNU license agreement. Er darf frei publiziert werden, in jeder erdenklichen Form, solange alle Rechte des Autors gewahrt bleiben. -->
