Forum: PC-Programmierung Raw Socket send zu mehreren Routern


von brt (Gast)


Lesenswert?

Hallo zusammen,

ich möchte aus einem Linux-Daemon UDP-Pakete über mehrere LTE-Router an 
eine öffentliche IP-Adresse versenden. Es soll eine Art 'bonding' der 
LTE-Provider erreicht werden, allerdings nur für die von meinem Programm 
gesendeten UDP-Pakete. Die LTE-Router (keine Surfsticks) sollen über 
Ethernet mit dem Linux-Rechner verbunden werden.

Um nicht in das grundsätzliche Routing des Linux-Rechners einzugreifen 
(das soll nämlich mit einem Standard-Gateway für den 'normalen' Traffic 
bestehen bleiben) habe ich geplant, die UDP-Pakete über einen RAW-Socket 
zu versenden. So habe ich die Kontrolle über die MAC-Adressen des 
Datenpaketes.

Ist es richtig daß ich so über die Ziel-MAC-Adresse dann bestimmen kann 
welcher LTE-Router im lokalen Netzwerk das Paket zur Weiterleitung ins 
Internet bekommt? Die IP-Adresse wäre die immer gleiche Adresse des 
Rechners im Internet, der alle diese Pakete bekommen soll.

Also ein 'manuelles' Routing, welches den Weg über das Standard-Gateway 
umgeht.

Kann von Euch jemand abschätzen, ob das klappen könnte?

Herzlichen Dank + Grüße, brt

von Rolf M. (rmagnus)


Lesenswert?

brt schrieb:
> Hallo zusammen,
>
> ich möchte aus einem Linux-Daemon UDP-Pakete über mehrere LTE-Router an
> eine öffentliche IP-Adresse versenden. Es soll eine Art 'bonding' der
> LTE-Provider erreicht werden, allerdings nur für die von meinem Programm
> gesendeten UDP-Pakete. Die LTE-Router (keine Surfsticks) sollen über
> Ethernet mit dem Linux-Rechner verbunden werden.
>
> Um nicht in das grundsätzliche Routing des Linux-Rechners einzugreifen
> (das soll nämlich mit einem Standard-Gateway für den 'normalen' Traffic
> bestehen bleiben)

Kannst du nicht einen eigenen Eintrag in der Routing-Tabelle für diese 
eine spezielle IP machen?

> habe ich geplant, die UDP-Pakete über einen RAW-Socket
> zu versenden. So habe ich die Kontrolle über die MAC-Adressen des
> Datenpaketes.

Nein. Was du dafür brauchst, sind Packet-Sockets. Raw-Sockets geben dir 
Zugriff auf den IP-Header, aber nicht den MAC-Header.
Du musst aber dann einen eigenen IP-Stack implementieren.

von TestX (Gast)


Lesenswert?

Stichwort wäre "policy based routing"

von yesitsme (Gast)


Lesenswert?

Wie sieht deine Netzwerkkonfiguration aus?

(Ein einfaches zusammenstecken verschiedner Router dürfte in einem Chaos 
enden... )

von Linux T. (Gast)


Lesenswert?

brt schrieb:
> Hallo zusammen,
>
> ich möchte aus einem Linux-Daemon UDP-Pakete über mehrere LTE-Router an
> eine öffentliche IP-Adresse versenden. Es soll eine Art 'bonding' der
> LTE-Provider erreicht werden, allerdings nur für die von meinem Programm
> gesendeten UDP-Pakete. Die LTE-Router (keine Surfsticks) sollen über
> Ethernet mit dem Linux-Rechner verbunden werden.
>
> Also ein 'manuelles' Routing, welches den Weg über das Standard-Gateway
> umgeht.


Mit "ip route" und "ip rule" geht das unter Linux. Ist nicht weiter 
schwer und gehört seit Ewigkeiten zu den Bordmitteln.

von Gerd E. (robberknight)


Lesenswert?

Rolf M. schrieb:
> Kannst du nicht einen eigenen Eintrag in der Routing-Tabelle für diese
> eine spezielle IP machen?

So wie ich das verstanden habe, möchte er seine Ziel-IP im Internet über 
mehrere Wege gleichzeitig ansprechen um die Leitungskapazität mehrerer 
LTE-Verbindungen zu bündeln. Dann kommt er mit einem Eintrag für die 
Ziel-IP natürlich nicht weiter, denn der ginge ja nur für eine Route.

Was man aber einfach machen könnte, wäre dem Quellrechner mehrere IPs in 
seinem LAN zu verpassen, für jeden Routing-Weg eine. Jetzt verwendest Du 
eine Policy-Route um alles was von Quell-IP 1 kommt über diesen Router 
zu schicken, alles was von Quell-IP 2 kommt über einen anderen etc. Das 
Standardgateway bleibt davon unberührt.

Jetzt kannst Du die UDP-Pakete ganz normal erzeugen wie jetzt auch 
schon, Du musst einfach nur eine bestimmte Quell-IP setzen.

von brt (Gast)


Lesenswert?

Hallo zusammen,

herzlichen Dank für die Antworten! Das ist großartig!
"policy based routing" ist definitv was ich brauche.

Danke Männer!

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.