Bridging mini-HOWTO

Ralph Wetzel (Ralph.Wetzel@munich.netsurf.de) v1.0-2, 22. Oktober 1996

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 Chris Cole.

Inhaltsverzeichnis

1 Installation 1

2 FAQ - Normale Probleme 2

3 Ausblicke 3

1 Installation

1. Man besorge sich die Bridge Config-Tools:

     shadow.cabi.net:/pub/Linux/BRCFG.tgz

2. Man besorge sich und lese das Multiple ethernet mini-HOWTO:

     metalab.unc.edu:/pub/Linux/docs/HOWTO/mini/Multiple-Ethernet

3. Man bringe seinem Rechner bei, mehrere Ethernet-Karten zu verwalten, indem man die folgende Zeile

in /etc/lilo.conf einfügt, und anschließend lilo startet:

     append = "ether=0,0,eth1"

Ist der zukünftige Bridge-Rechner mit drei Ethernet-Karten bestückt, so sollte man diese Zeile verwenden:

     append = "ether=0,0,eth1 ether=0,0,eth2"

Je mehr ether-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 ether-Anweisungen fordern den Kernel auf, die Suche zusätzlich auf weitere Karten auszudehnen. Als Alternative zur Veränderung der /etc/lilo.conf können die Anweisungen als Boot-Parameter übergeben werden:

     linux ether=0,0,eth1

Oder, bei drei installierten Karten:

     linux ether=0,0,eth1 ether=0,0,eth2

4. Man erstelle einen Kernel mit bridging-Fähigkeiten. Dazu sind, während der Kernel-Konfiguration, auf

'y' zu setzen:

  • die einzige Option in Code maturity level options.
  • Bridging (EXPERIMENTAL) in Networking options.

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

6. Man reboote den Rechner, so daß nun

• der Kernel bridging-Fähigkeiten besitzt

• die Ethernet-Karten eingerichtet und

• möglichst an keine IP Adresse gebunden sind.

7. Ist das System wieder zurück, sind die Ethernet-Karten in den promiscous-mode zu setzen, so daß sie jedes packet annehmen, welches sie erreicht. Dabei ist darauf zu achten, daß jede Karte, die an einen Netzwerk-Bereich angeschlossen ist, der über die Bridge angebunden werden soll, in diesen Modus zu schalten ist:

     ifconfig promisc eth0 ; ifconfig promisc eth1

8. Man schalte die Bridge mittels des Programms brcfg EIN:

     brcfg -ena

9. Der Netzverkehr auf den einzelnen Karten sollte sich unterscheiden. Man überprüfe dies mittels:

     tcpdump -i eth0     (in einem Fenster)
     tcpdump -i eth1     (in einem anderen Fenster)

10. Startet man einen sniffer oder tcpdump auf einem anderen Rechner, kann man überprüfen, ob die Bridge die einzelnen Teile des Netzwerks richtig verwaltet.

2 FAQ - Normale Probleme

• Was bedeutet die Fehlermeldung "ioctl(SIOCGIFBR) failed:  Package not installed"?
Der verwendete Kernel besitzt keine bridging-Fähigkeit.  Man besorge sich den
Source-Code für einen Kernel v2.x.x, und compiliere ihn entsprechend 4.
• Mein Rechner auf der einen Seite der Bridge kann den auf der anderen nicht anpingen!
 1. Ist die Bridge eingeschaltet ('brcfg -ena' erledigt das)?  brcfg sollte dann mit
    'bridging is ENABLED' antworten.
 2. Sind alle Karten im promiscous-mode?  Falls unklar, bemühe man den Befehl
    ifconfig.  Für jede Karte sollte das PROMISC-Flag gesetzt sein.
 3. 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.
• Ich kann von der Bridge aus mit telnet/ftp keinen anderen Rechner erreichen!  Ganz
einfach:  Die Netzwerkkarten der Bridge besitzen keine IP Adressen, da sie gemäß
Standard ein transparenter Teil des Netzwerkes sind.

• Was muß ich machen um den routing-Pfad festzulegen?  Gar nichts!  Der bridging code
im Kernel verwaltet alles Notwendige.  Um die Ethernet-Adressen zu sehen, die die
Bridge erkannt hat, kann man den Debug-Modus des brcfg-Programms verwenden:
     brcfg -deb
• Die Bridge scheint zu funktionieren, aber warum zeigt traceroute sie nicht als
Teil des Netzwerkes?  Auf Grund der ursprünglichen Definition einer Brigde sollte
traceroute die Bridge nicht zeigen.  Noch einmal:  Die Bridge ist ein transparenter
Baustein des Netzwerkes.
• Muß IP_FORWARD in den Kernel compiliert werden?  Nein!  Der bridging code des
Kernels kümmert sich um den Transport der packets.  IP_FORWARD wird nur für einen
Gateway benötigt, dessen Netzwerkkarten an IP Adressen gebunden sind.
• Warum sind die physikalischen Ethernet-Adressen für Port 1 und Port 2, laut
brcfg-Programm, identisch?  Sollten sie sich nicht unterscheiden?  Nein!  Der
bridging code weist jedem Port der Bridge dieselbe physikalische Ethernet-Adresse
zu.

3 Ausblicke

Dies ist die erste und zugegebener Maßen ziemlich dünne Version des deutschen Bridging mini-HOWTO. Um das Ganze mit mehr Leben zu füllen, sind als Erweiterungen geplant:

1. Darstellung der Unterschiede der Installation der Bridge bei verschiedenen Distributionen. Von mir festgelegte Reihenfolge der Dringlichkeit dabei:

S.u.S.E. - DLD - RedHat - andere

2. Begriffsbestimmungen.

3. Erklärung von Fehler-/ Debug-Meldungen.

4. hmmm.... mal sehen.

Über

• Anregungen,

• Kritik,

• Mail von jedem, der schon vor einem Problem mit dieser Bridge stand, und es gelöst hat,

• Mail von jedem, der vor einem Problem mit dieser Bridge steht und es noch nicht gelöst hat

würde ich mich sehr freuen.