如何使用Linux通过串口桥接两个LAN段?


6

我有一个应用程序,其中两个子网通过两个串行到以太网桥和一个零调制解调器串行电缆(仅限RS-232,TX和RX)透明地桥接。除速度和延迟外,此设置与以太网电缆完全相同。

我的应用图

这些桥对我来说相当昂贵,我想知道如何使用廉价的SBC运行Linux(例如Raspberry Pi)。我一直在寻找没有成功的日子。

我在论坛上看到netcat,ppp和ser2net不能完成这项工作,而brctl只适用于以太网接口。我虽然使用socat或bridge-utils,但我找不到类似于我的应用程序的任何引用。我看到了大量的应用程序,其中串行设备通过TCP连接桥接,而不是我的情况下的逆。

你能帮我解决一下这个问题吗?

我的网络知识是基本的,我为任何错误道歉。


1
您可能不需要桥接连接以执行您想要的操作。假设网络位于不同的子网中,并且假设其网络上没有路由器,则可以创建路由规则以将该子网的流量发送到相应网络上的“串行A”和“串行B”计算机。(我假设你有一些奇怪的原因,你必须通过串口实现这一点,尽管几乎任何其他网络方式都会在速度方面做得更好。)
Jim MacKenzie

是的,因为你从“ 两个子网” 开始,你更有可能想要路由而不是桥接。一个网桥将导致一个子网...此外,通过串行路由IP比串行桥接以太网更常见(简单的pppd)。
grawity

嗨@Jim MacKenzie。是! 有奇怪的原因所以我必须使用串口。我没有在我的问题上说清楚。对我来说最好的方案是每个分支可以“看到”另一个分支作为同一子网的一部分,而不是两个独立的分支,这就是我询问桥接的原因。但是,如果路由方法有效,那就太棒了。我不知道我能用pppd做到这一点,我认为它只适用于两台计算机之间。我会在几天后拿回我的硬件,这样我就可以试试了。
星期日

嗨@grawity,上面的评论也适合你。
星期日

@rcm:单个子网的具体原因是什么?你在这里“看到”究竟是什么意思?
grawity

Answers:


0

Quickshot with socat,未经测试:

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

然后将它添加到桥(例如br0):

ip link set tap0 master br0

如果rawer仍然不够原始,可能需要一些修改。IIRC只需要IP地址就可以socat开心。

或者,使用一些协议,通过串行链接(如SLIP或PPP)进行联网,并且可以正确地逃避有趣的角色并在压缩中进行流控制,然后在其上运行第2层隧道。效率较低,设置较难。


嗨@dirkt,我会在几天后拿回我的硬件,这样我就可以试试了。谢谢。
'18

@rcm嘛?怎么回事?
Jim L.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.