Wie überbrücken Sie zwei LAN-Segmente über die serielle Schnittstelle mit Linux?

594
rcm

Ich habe eine Anwendung, bei der zwei Subnetze transparent über zwei serielle Ethernet-Bridges und ein serielles Nullmodem-Kabel (nur RS-232, TX und RX) überbrückt werden . Dieses Setup verhält sich genau wie ein Ethernet-Kabel, mit Ausnahme der Geschwindigkeit und Latenz.

My application diagram

Diese Bridges sind ziemlich teuer für mich und ich habe mich gefragt, wie man das mit einem billigen SBC macht, der Linux (zB Raspberry Pi) verwendet. Ich habe seit Tagen ohne Erfolg gesucht.

Ich habe in Foren gelesen, dass netcat, ppp und ser2net die Aufgabe nicht erfüllen und brctl nur für Ethernet-Schnittstellen funktioniert. Ich überlegte, ob ich Socat oder Bridge-Utils verwenden würde, aber ich konnte keinen Hinweis auf eine ähnliche Anwendung finden wie ich. Ich habe unzählige Anwendungen gesehen, bei denen ein serielles Gerät über eine TCP-Verbindung gebrückt wird, nicht das Inverse, das bei mir der Fall ist.

Könnten Sie mir bitte helfen, dieses Problem zu lösen?

Mein Netzwerkwissen ist grundlegend und ich entschuldige mich für etwaige Fehler.

6
Möglicherweise müssen Sie die Verbindungen nicht überbrücken, um das zu tun, was Sie möchten. Wenn sich die Netzwerke in unterschiedlichen Subnetzen befinden und der Router in seinem Netzwerk nicht vorhanden ist, können Sie Routingregeln erstellen, um den Datenverkehr für dieses Subnetz an Ihre "Serial A" - und "Serial B" -Maschinen in den jeweiligen Netzwerken zu senden. (Ich nehme an, aus irgendeinem seltsamen Grund müssen Sie dies über serielle Schnittstellen tun *, obwohl fast alle anderen Netzwerkmittel die Geschwindigkeit verbessern werden.) Jim MacKenzie vor 6 Jahren 1
Ja, da Sie mit "** zwei ** Subnetzen" beginnen, ist es wahrscheinlicher, dass Sie Routing und kein Bridging wünschen. Eine Bridge würde zu einem Subnetz führen ... Außerdem ist das Routing von IP über seriell viel einfacher (einfaches pppd) als das Ethernet über serielles Bridging. grawity vor 6 Jahren 0
Hallo @ Jim MacKenzie. Ja! Es gibt verschiedene Gründe, weshalb ich _ serielle Schnittstellen verwenden muss. Ich habe meine Frage nicht klargestellt. Das beste Szenario für mich ist das Szenario, in dem jeder Zweig den anderen Teil als Teil desselben Subnetzes "sehen" kann, nicht zwei separate. Deshalb habe ich nach Bridging gefragt. Wenn der Routing-Ansatz jedoch funktioniert, ist dies großartig. Ich wusste nicht, dass ich es mit pppd machen könnte, ich dachte, es würde nur zwischen zwei Computern funktionieren. Ich bekomme meine Hardware in ein paar Tagen zurück, damit ich sie ausprobieren kann. rcm vor 6 Jahren 0
Hallo @Grawity, der obige Kommentar ist auch für dich. rcm vor 6 Jahren 0
@rcm: Gibt es einen bestimmten Grund für ein einzelnes Subnetz? Was genau meinst du mit "Sehen" hier? grawity vor 6 Jahren 0
Da die ursprüngliche Anwendung auf diese Weise funktioniert, wirkt sich das Ändern der vorhandenen seriellen zu Ethernet-Bridges für neue mit geringerer Auswirkung aus. Alle IPs auf beiden Seiten sind fest und liegen im Bereich 10.10.1.1/28 bis 10.10.1.14/28. Ich werde Ihren PPP-Vorschlag auch ausprobieren, ich muss noch herausfinden, wie die Pakete weitergeleitet werden. rcm vor 6 Jahren 0

1 Antwort auf die Frage

0
dirkt

Quickshot mit socat, nicht getestet:

socat TUN:10.10.1.4/24,tun-type=tap,tun-name=tap0,iff-up /dev/ttyS0,rawer 

Dann fügen Sie es der Brücke hinzu (sagen Sie, br0):

ip link set tap0 master br0 

Möglicherweise müssen einige Änderungen vorgenommen werden, wenn dies rawernoch nicht ausreichend ist. IIRC benötigt nur die IP-Adresse, um socatglücklich zu sein.

Alternativ können Sie ein Protokoll verwenden, das für die Vernetzung über eine serielle Verbindung wie SLIP oder PPP erstellt wurde, und lustigen Zeichen ordnungsgemäß entgeht und die Flusssteuerung in einer Prise steuert. Anschließend wird ein Layer-2-Tunnel darüber ausgeführt. Weniger effizient und schwieriger einzurichten.

Hi @dirkt, ich bekomme meine Hardware in ein paar Tagen zurück, damit ich es ausprobieren kann. Vielen Dank. rcm vor 6 Jahren 0