Hallo,
Ich möchte eine Ethernet-Bridge bauen, um 2 IP-Netze miteinander zu
verbinden. Die Bridge soll aus 2 Ethernet-Karten und einem
Microcontroller bestehen, der das Ganze steuern soll. Leider kann ich
die Karten nicht in den Promiscuous-Mode schalten. Ich empfange also nur
Broadcasts und an mich gerichtete Pakete. Welche Möglichkeiten habe ich
dann? Ich denke mir, es könnte gehen, wenn alle ARP-Broadcasts
abgefangen werden und ich die MAC-Adressen gegen Meine austausche, so
daß der IP-Verkehr gezwungenermassen über mein Device läuft. Wäre das
eine Möglichkeit oder ist es Blödsinnig?
Oder muß mein Device so tun wie ein Internet-Gateway?
Danke im Voraus für alle Tips.
-> Peter
Das was du beschreibst nennt sich Proxy-ARP. Das Problem liegt darin,
dass du wissen musst, welche IP-Adresse auf welcher Seite liegt. Du
musst also für alle ARP-Anfragen explizit auf der anderen Seite selber
einen ARP durchführen, um das festzustellen.
Normalerweise macht man sowas aber mit Routing, so dass auf beiden
Seites verschiedene IP-Netze liegen.
> Das was du beschreibst nennt sich Proxy-ARP. Das Problem liegt darin,> dass du wissen musst, welche IP-Adresse auf welcher Seite liegt.
Würde es nicht reichen, wenn ich bei empfangenen ARP-Requests z.B auf
ETH0 einfach die MAC-Adresse von ETH1 einsetze und sie auf die andere
Seite schicke? Erhalte ich eine Antwort, dann setze ich die MAC-Adresse
von ETH0 ein und schicke sie über ETH0 weiter. Bei folgenden IP-Paketen
müsste ich auch nur die MAC-Adressen tauschen. Das einzige Problem, was
ich sehe, ist, daß beide Schnittstellen niemals im gleichen IP-Netz sein
dürfen, weil ich sonst irrtümlich doppelte ARP-Antworten generieren
würde.
> Normalerweise macht man sowas aber mit Routing, so dass auf beiden> Seites verschiedene IP-Netze liegen.
Müssen dazu die Clients nicht spezielle Routing-Protokolle unterstützen,
oder? Was mache ich mit "dummen" Clients, die solche Protokolle nicht
können?
Peter wrote:
> Würde es nicht reichen, wenn ich bei empfangenen ARP-Requests z.B auf> ETH0 einfach die MAC-Adresse von ETH1 einsetze und sie auf die andere> Seite schicke?
Ja, genau das meite ich ja.
> Müssen dazu die Clients nicht spezielle Routing-Protokolle unterstützen,> oder?
Der Client muss nur den Default-Gateway kennen, was m.W. bei jedem
Client eingestellt werden kann. Und der Default-Gateway muss wissen, wer
der richtige Router für das betreffende Netz ist. Schlimmstenfalls führt
das dazu, dass der Default-Gateway nicht nur den Frame an den Router
weiterreicht, sondern zwecks Information des Clients an diesen
zusätzlich einen ICMP Redirect schickt, den der, wenn er damit nichts
anfangen kann, ebenso standhaft ignoriert.
PS: Lohnt sich das eigentlich? Das kann jeder Ethernet-Switch für 5€
besser.
PPS: Ich seh grad in deinem ersten Posting ein Detail: Das ganze geht so
nur wenn es eben nicht 2 getrennte IP-Netze sind, sondern aus Sicht
der Teilnehmer ein einziges IP-Netz ist. Denn sonst wird erst garkein
ARP verwendet, sondern direkt der Gateways angesprochen.
> PS: Lohnt sich das eigentlich? Das kann jeder Ethernet-Switch für 5€> besser.
Ja, aber mein Gerät mit den zwei Netzwerkkarten gibt es schon. Ich
wollte einen ARP-Proxy als zusätzliches Feature einbauen.
> PPS: Ich seh grad in deinem ersten Posting ein Detail: Das ganze geht so> nur wenn es eben nicht 2 getrennte IP-Netze sind, sondern aus Sicht> der Teilnehmer ein einziges IP-Netz ist. Denn sonst wird erst garkein> ARP verwendet, sondern direkt der Gateways angesprochen.
Wusste ichs doch, daß die Sache eine Haken hat :-(
Dann fällt diese Methode wohl aus. Die einzige Möglichkeit ist wohl, daß
ich selber als Gateway fungiere, oder gibts da noch was, das den Clients
keine spezielle Intelligenz abverlangt?
Also das was beschriben wird ist als Hardware schon gelöst:
Atmel AVR32 NGW STK. AP7000 Controller mit zwei Ethernet MAC's.
Es gibt dafür auch ein Embedded Linux, so dass man nur noch die
Einstellungen für das Routing / Forwarding einstellen muss.
(Gibt's z.B. bei elektronikladen.de)
@Oliver: Ich glaube nicht, dass dies bei verschiedenen IP-Netzen auf
beiden Seiten funktionieren wird, ohne mindestens dem Default-Gateway
eine Sekundäradresse zu verpassen.
>Das ganze geht so nur wenn es eben nicht 2 getrennte IP-Netze sind,>sondern aus Sicht der Teilnehmer ein einziges IP-Netz ist. Denn sonst>wird erst garkein ARP verwendet, sondern direkt der Gateways>angesprochen.
Also, für die Ursprungsfunktionalität reichts.
Oliver