Forum: Mikrocontroller und Digitale Elektronik Ethernet/IP-Bridge: Wie könnte mans machen?


von Peter (Gast)


Lesenswert?

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

von Andreas K. (a-k)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

> 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?

von Andreas K. (a-k)


Lesenswert?

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.

von Andreas K. (a-k)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

> 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?

von Andreas K. (a-k)


Lesenswert?

Als Router eben. Anders geht's nicht.

von Matthias (Gast)


Lesenswert?

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)

von Oliver (Gast)


Lesenswert?

Ich hätte da auch noch eine Lösung:

Features:
- automatisches Erkennen aller Adressen
- unterstützt alle Protokolle
- selbstkonfigurierend
- extrem kompakt
- warungsfrei

http://www.mercateo.com/p/c_c1001-1139987/EFB_Elektronik_37529_1.html

Oliver

von Andreas K. (a-k)


Lesenswert?

@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.

von Oliver (Gast)


Lesenswert?

>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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.