mikrocontroller.net

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


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Router eben. Anders geht's nicht.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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_Elek...

Oliver

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.