Tutorials - Ethernet Bridging

Sprachenübersicht/Betriebssysteme/Linux/Internet & Netzwerk

Ethernet Bridging

Diese Seite wurde 5596 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: Ethernet Bridging

In diesem Tutorial geht es darum eine Layer 2 Bridge aufzusetzen, die mehrere NICs (Network Interface Card, meist Netzwerkkarten) miteinander transparent verbindet. Dazu erstellen wir zuerst ein Bridge Interface, und fügen anschließend unsere NICs hinzu.

Kernel Top



Um unser Vorhaben umsetzen zu können müssen wir zuerst ein paar Kernel Module installieren:

Wir gehen zuerst zu Code maturity level options, und aktivieren dort [*] Prompt for development and/or incomplete code/drivers.

In Loadable module support aktivieren wir folgendes:

  • [*] Enable loadable module support


  • [*]Set version information on all module symbols


  • [*]Kernel module loader



Jetzt haben wir zwei Möglichkeiten:

  • 2.6er Kernel
    Als nächstes wechseln wir zu Networking->Networking options. Dort sollte es <*> 802.1d Ethernet Bridging geben, wir aktivieren es. Als nächstes aktivieren wir [*] Network packet filtering framework (Netfilter) --->. Hier lassen wir [ ] Network packet filtering debugging deaktiviert, und aktivieren [*] Bridged IP/ARP packets filtering.

    Ausserdem müssen wir in Core Netfilter Configuration ---> noch <*> Netfilter Xtables support (required for ip_tables) aktiveren. Damit können wir unter IP: Netfilter Configuration ---> das Modul <*> IP tables support (required for filtering/masq/NAT) aktivieren.


  • 2.4er Kernel
    Hier gehen wir nach Networking options und aktivieren [*] Network packet filtering (replaces ipchains). Das Modul [ ] Network packet filtering debugging lassen wir deaktiviert. Ausserdem fügen wir unter IP: Netfilter Configuration ---> <*> 802.1d Ethernet Bridging und [*]netfilter (firewalling) support hinzu.



Jetzt müssen wir den Kernel nur noch kompilieren und neustarten...

Die Bridge aufsetzen Top



Als erstes müssen wir eine virtuelles Bridge device erstellen. Das machen wir mit dem folgenden Befehl:

simon@Cottonmouth:~$ brctl addbr br0

Wenn eine loop im routing unwahrscheinlich ist (davon gehe ich aus) können wir das Spanning Tree Protocol abschalten, das machen wir mit:

simon@Cottonmouth:~$ brctl stp br0 off

Als nächstes fügen wir die Devices hinzu:

simon@Cottonmouth:~$ brctl addif br0 eth0
simon@Cottonmouth:~$ brctl addif br0 eth1


Diese Device werden anschließend gebridged. Die Bridging table lernt neue MAC adressen und bridged damit.

Jetzt müssen wir die zwei Interfaces noch aktivieren:

simon@Cottonmouth:~$ ifconfig eth0 down
simon@Cottonmouth:~$ ifconfig eth1 down
simon@Cottonmouth:~$ ifconfig eth0 0.0.0.0 up
simon@Cottonmouth:~$ ifconfig eth1 0.0.0.0 up


Wenn wir wollen, können wir dem bridge device noch eine IP Adresse geben, um die zwei device benutzen zu können:

simon@Cottonmouth:~$ ifconfig br0 <IP> up

Sie können als IP z.B. 10.0.0.1 nehmen.

Falls wir das gemacht haben müssen wir noch routing aktivieren:

simon@Cottonmouth:~$ echo "1" > /proc/sys/net/ipv4/ip_forward

Und natürlich die IP gegebenenfalls als default gateway auswählen:

route add default gw <IP>

So, das wars, die Interfaces sind erstellt.

Jetzt müssen wir nur noch alle Interfaces der Bridge auf fordwarding stellen:

#$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -I FORWARD -j ACCEPT
$IPTABLES -A FORWARD -j DROP


Das Script Top



Hier ist das fertige Script, das nur noch angepasst werden muss:

Zuerst nehmen wir den nachfolgenden Code und kopieren es nach /etc/init.d/bridge. Mit chmod 700 /etc/init.d/bridge machen wir das Script ausführbar.

Wenn wir wollen können wir die Bridge automatisch beim Start erstellen lassen: ln -s /etc/init.d/bridge S10bridge

Code:


##!/bin/sh
#
# iptables bridge script
#
#
# http://www.online-tutorials.net

# OUR 2 Devices you can add some more
DEV1=eth2
DEV2=eth0

BRG_DEV=br0

BRG_IP="10.0.0.139"

IPTABLES=/sbin/iptables

case $1 in
    start)
        echo "Activate routing"
    
        #Bridge erstellen

        brctl addbr $BRG_DEV
        brctl stp $BRG_DEV off

        brctl addif $BRG_DEV $DEV1
        brctl addif $BRG_DEV $DEV2

        #interfaces neu setzen

        ifconfig $DEV1 down > /dev/null
        ifconfig $DEV2 down > /dev/null

        ifconfig $DEV1 0.0.0.0 up
        ifconfig $DEV2 0.0.0.0 up

        #bridge eine ip vergeben

        #ifconfig $BRG_DEV $BRG_IP up
        #echo "1" > /proc/sys/net/ipv4/ip_forward
        #route add default gw $BRG_IP

                #oder nicht... (mit # auskommentieren falls eine IP zugewissen wurde)
        ifconfig $BRG_DEV up
        
        #forwarden

        #$IPTABLES -P FORWARD DROP
        $IPTABLES -F FORWARD
        $IPTABLES -I FORWARD -j ACCEPT
        $IPTABLES -A FORWARD -j DROP

        echo "Bridging activated..."

       ;;

        stop)
                $IPTABLES -t filter -F INPUT
                $IPTABLES -t filter -F OUTPUT
                $IPTABLES -t filter -F FORWARD
                $IPTABLES -t nat -F POSTROUTING

        ifconfig $BRG_DEV down
        brctl delbr $BRG_DEV
        ;;

        restart)
                $0 stop && $0 start
        ;;

        *)
                echo "Usage: $0 {start|stop|restart}"
        ;;

esac

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

Sprachenübersicht/Betriebssysteme/Linux/Internet & Netzwerk/Ethernet Bridging