我想设置 PPP,以便使用伪终端从站 (/dev/pts/N) 而不是物理串行链路,在应用程序中处理其数据流(来自 /dev/ptmx)并将该流重定向到适当的位置。阅读所有文档后,我明白这是可行的,但是,我没有发现有人真正尝试过的痕迹。那么,对 PTS 感到放心的人可以确认我没有遗漏什么吗?
我可以自己尝试一下,但这需要大量的软件开发来回答这个问题。我特别想知道数据流问题(我会使用 XOn/Xoff)或延迟问题......
很长的故事 ...
我使用的是嵌入式 Linux(称为 device#1)。该设备有一个应用程序,通过串行链路上的自制协议与第二个设备(称为设备#2)进行通信。目前,Device#1 使用 PPP 和连接到第二个串行链路的调制解调器进行通信。
重点是 device#2 也有一个调制解调器。因此,我想从 device#1 中删除调制解调器,以降低我们的解决方案的成本,并将 PPP 的数据流重定向到其他设备/调制解调器。
我的想法是使用伪终端对,修改应用程序以便从 PTM 读取流,将其封装在自制协议中并将其发送到 device#2。可以修改 Device#2 以正确处理此流程,但这不是重点。
- Device#2 没有操作系统(我无法在两个设备之间合理使用 socat)。
- tty0tty 可能是一个解决方案,但我希望尽可能避免安装软件包,
- 出于安全原因,必须在 device#1 (Linux) 中设置 SSL/TCP。这是强制性的。
答案1
我以前曾pppd
通过 SSH 连接运行流量,这应该与您尝试的类似。我在使用传统的 SSH 隧道时遇到问题后这样做了,其中转发的 TCP 连接的创建/拆除使事情陷入了很多困境。 ssh+pppd 组合效果更好,因此希望这意味着您不会遇到太多延迟问题。不过,我无法谈论 Xon/Xoff 的情况。
我在文件中包含了一行/etc/ppp/peers/<linkname>
,看起来像这样:
pty "/usr/bin/ssh -t -P -l username servername"
您显然希望用ssh
您自己的工具替换该命令来转换串行链接。
也有人用socat
和做了同样的事情nc
,所以我希望这是可行的。