------------------------------------------------------------------------------
OPT_BRIDGE - Zum Erweitern von fli4l um Bridging                         2.0.1

von Olivier Oswald <opt_bridge-AT-swissinfo.org>
basierend auf OPT_BRIDGE-1.6.2 von Michael Hanselmann <opt_bridge-AT-bluemail.ch>
------------------------------------------------------------------------------

Beschreibung:
-------------
Mit OPT_BRIDGE kann man verschiedene Netzwerk-Devices (eth0, eth1, ...) unter 
fli4l so verbinden, dass alle Pakete durchgeleitet werden, sprich: wenn auf 
eth1 ein Paket ankommt, wird dieses autom. an eth0 weitergereicht und dort
rausgesendet (und umgekehrt). Natrlich ist es auch mglich, 3 (oder mehr) 
Netzwerk-Devices zu "bridgen".

Es ist auch mglich, zwei verschiedene Netwerktypen zu verbinden (z.B. 10MBit 
BNC und 100MBit RJ45, oder 100MBit RJ45 und TokenRing). Jede Seite behlt 
dabei ihre Geschwindigkeit, wenn ein Datentransfer ber das Netzwerk hinaus 
stattfindet, wird die bertragung mit der niedrigeren Geschwindigkeit 
durchgefhrt. 


Voraussetzungen:
----------------
- Fli4l in der Version 2.0.1


Installation:
-------------
Hinweis: OPT_BRIDGE bentigt einen neuen Kernel, der dem Paket beigelegt ist.
Dieser Kernel basiert auf dem fli4l-2.0.1-kernel und sollte nur mit dieser 
oder neueren fli4l-versionen verwendet werden (sofern der fli4l-kernel nicht
gendert wurde).

Folgende Schritte sind zur Installtion ntig  

- Kopieren/Entpacken des Archives in das aktuelle fli4l-Verzeichnis
- im img-Verzeichnis von fli4l den Kernel ersetzen:
  - die Datei "kernel" in "kernel-old" umbenennen
  - entweder die Datei "kernel-bridge" oder "kernel-bridge+ipchains" in 
    "kernel" umbenennen (siehe Hinweise)


Konfiguration:
--------------
Dazu die Datei "bridge.txt" im opt-Verzeichnis konfigurieren. Zwischen den 
eingetragenen Netzwerk-Devices wird dann "gebridget".

Fr weitergehende Konfigurationen die Datei opt\etc\rc.d\rc.bridge anpassen.


Hinweise:
---------
Es kann nur *eine* Bridge erstellt werden.

Wozu die zwei Versionen des Kernels?
- "kernel-bridge" ermglicht das Bridgen zwischen zwei oder mehreren Devices
- "kernel-bridge+ipchains" erlaubt zustzlich das Filteren des Netzverkehrs 
   auf der Bridge mit Hilfe von ipchains (siehe Firewall-Hinweise)

Wo gibt's weiterfhrende Informationen zum Linux Bridging?
- http://www.linuxdoc.org/HOWTO/mini/Bridge.html
- http://www.linuxdoc.org/HOWTO/mini/Bridge+Firewall.html

Woher stammen die verwendeten Dateien?
- brcfg: http://diverter.sourceforge.net/tools/bridgex-0.30.tar.gz
- patch: http://ac2i.tzo.com/bridge_filter

Wer betreut opt_bridge? 
- OPT_BRIDGE-2.0.1: Olivier Oswald <opt_bridge-AT-swissinfo.org>
- OPT_BRIDGE-1.6.2: Michael Hanselmann <opt_bridge-AT-bluemail.ch>

Danke sage ich.... 
- Michael Hanselmann fr OPT_BRIDGE-1.6.2 und den EMail-Support
- Den Entwicklern von und rund um fli4l fr den super Router


Firewall-Hinweise:
------------------
Der Netzverkehr auf einer Bridge wird normalerweise auf direktem Weg
zwischen den Netzwerk-Devices durchgeschaltet. Soll dieser Netzverkehr
zustzlich gefiltert werden, muss der "kernel-bridge+ipchains" verwendet 
werden.

Dabei wird im System eine neue ipchains-Kette namens "bridgein" erstellt,
die dann fast wie die Standard-Ketten (input, output, forward) benutzt 
werden kann ("fast", da als Sprungziele nur ACCEPT und DENY verwendet
werden knnen, MASQ macht keinen Sinn und REJECT funktioniert nicht).

Ein Netzwerk-Device welches zu einer Bridge gehrt kann also nur mit
Hilfe von "bridgein" gefiltert werden, alle anderen Devices werden wie
bisher mit "input", "output" und "forward" gehandhabt. Die Firewall-
Regeln von fli4l haben daher auf der Bridge keine Wirkung und die
entsprechenden ipchains-Regeln mssen "von Hand" gescripted werden, am 
einfachsten in rc.bridge.

Das Firewalling/Filtern mit Hilfe von ipchains kann hier nicht weiter
beschrieben werden. Doch auch dazu gibt es ein ausfhrliches HOWTO:
http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html


Entwickler-Hinweise:
--------------------
Hier noch, wie ich den neuen Kernel fr fli4l-2.0.1 erstellt habe. Ich bin dabei
weitgehend fm's Dokumentation (src\README, Abschnitt 6) zum Modifizieren des Kernels 
gefolgt, die ich hier mit den von mir eingefgten Zwischenschritten (5b und 6b,
siehe ***) einfach mal anhnge.

ps: brcfg muss aus "bridgex-0.30.tar.gz" compiliert werden.


6. Verwendung eines modifizierten Kernels
=========================================

Mchte man die Konfiguration des 2.2.19er Kernel fr fli4l modifizieren,
mu man sich erst einmal alle notwendigen Kernel-Sources besorgen.

Am besten folgendermaen vorgehen:

    1. Kernel-Sources und Patches herunterladen und unter /usr/src/ ablegen:

	http://www.kernel.org/pub/linux/kernel/v2.2/linux-2.2.19.tar.gz

    2. Kernel-Sources auspacken:

		cd /usr/src                     # dort gehrt der Kernel hin
		rm linux                        # evtl. alten symlink lschen
		tar xvfz linux-2.2.19.tar.gz    # 2.2.19 auspacken
		ln -s linux-2.2.19 linux        # neuer symlink

    3. Die Datei kernel/dot-config aus diesem Verzeichnis als Vorlage nach
       /usr/src/linux-2.2.19/.config kopieren:

		cp .../fli4l-xxx/src/kernel/dot-config linux-2.2.19/.config

    4. Die Datei kernel/main.c aus diesem Verzeichnis nach
       /usr/src/linux-2.2.19/init/ kopieren:

		cp .../fli4l-xxx/src/kernel/main.c linux-2.2.19/init/main.c

       In diesem Source-Modul musste ich den Boot-Vorgang ber die
       Date /etc/rc wieder einbauen. Dieser wurde nmlich im Original 2.2er
       Kernel entfernt. Als Vorlage habe ich Teile des main.c aus
       dem 2.0.38er Kernel verwendet.

    5. VPN-Patch installieren:

		cp .../fli4l-xxx/src/kernel/ip_masq_vpn-2.2.15.patch /usr/src
		cd /usr/src/linux-2.2.19
		patch -p1 <../ip_masq_vpn-2.2.15.patch 


*** 5b (OPTIONAL, siehe Hinweise) Damit eine Bridge in IPCHAINS-regeln verwendet 
       werden kann, ist zustzlich dieser patch zu Installieren:

		cp .../linux-2.2.19-brfw2.diff /usr/src
		cd /usr/src/linux-2.2.19
		patch -p1 <../linux-2.2.19-brfw2.diff 


    6. Im Verzeichnis /usr/src/linux-2.2.19 den Kernel konfigurieren und
       abspeichern, z.B mit

		cd linux-2.2.19
		make menuconfig


*** 6b Vor dem Abspeichern der Kernel-Konfiguration unter "Networking" die
       "BRIDGING"-Option auf 'y' setzen.

       Dies kann auch vorgngig gemacht werden, indem in ".config" die Zeile
		# CONFIG_BRIDGE is not set
       in
		CONFIG_BRIDGE=y
       gendert wird.



    7. Kernel bersetzen, z.B. mit

		make dep
		make clean
		make zImage

       Siehe dazu auch /usr/src/linux-2.2.19/README

    8. arch/i386/boot/zImage nach ..../fli4l-xxx/img/kernel kopieren

...
