socat:通过TTY隧道IP

是否有可能获得一个双向IP隧道ttyS0类似串行(调制解调器)设备socat实用程序? 我试图使用TUN选项,但仍然无法得到结果。

任何build议都欢迎:)

更新:

PC1:

socat /dev/ttyUSB0,raw,echo=0,b57600,clocal TUN:192.168.1.1/24,up 

PC2:

 socat /dev/ttyUSB0,raw,echo=0,b57600,clocal TUN:192.168.1.2/24,up 

之后,我看到tun0接口的两端都是正确的地址,但是我不能ping通其他的接口。 而不是,当我发送数据与ping -c 1 192.168.1.1远程socat进程退出,并且它的tun0设备销毁。 有什么build议么?..

UPDATE2:

当我们尝试通过仅使用socat的TCP / IP隧道串行时,会出现成帧问题。 社区开发者Gerhard Rieger对我说:

我担心你是对的。 通过数据报套接字工作,以及 – 运气 – 也通过pipe道。 但在串行线路上,数据包边界可能会消失,在tun接口上发送数据时,这是致命的。

我现在不能提供一个基于社会的解决scheme,对不起。 但是,我将尝试在一个更高版本的发行版中集成一些帧。

Solutions Collecting From Web of "socat:通过TTY隧道IP"

哈哈,我工作,但需要有一些魔力:)

所以,配置第一个对等体:

 PC1: 1) slattach -L -s 57600 -p slip /dev/ttyUSB0 & 2) ifconfig sl0 up 3) socat TUN:192.168.1.1/24,up INTERFACE:sl0 & 

…和第二个同伴之类的东西:

 PC2: 1) slattach -L -s 57600 -p slip /dev/ttyUSB0 & 2) ifconfig sl0 up 3) socat TUN:192.168.1.2/24,up INTERFACE:sl0 & 

而现在,您可以成功地从另一台PC ping通一台PC:

 PC1: 1) ping -c 5 192.168.1.2 PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_req=1 ttl=64 time=348 ms 64 bytes from 192.168.1.2: icmp_req=2 ttl=64 time=551 ms 64 bytes from 192.168.1.2: icmp_req=3 ttl=64 time=557 ms 64 bytes from 192.168.1.2: icmp_req=4 ttl=64 time=549 ms 64 bytes from 192.168.1.2: icmp_req=5 ttl=64 time=348 ms --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4003ms rtt min/avg/max/mdev = 348.116/471.143/557.128/100.177 ms 

由于slattach使用,这有点棘手,但实际上任何其他的解决方案都必须使用类似slip的东西来组织串行线路上的帧。 例如,PPP使用类似HDLC的帧。

基于我所尝试的,你不需要建立隧道。 你可以做到以下几点:

 PC1: 1, sudo slattach -s 19200 -p slip -dL /dev/ttyUSB0 2, sudo ifconfig sl0 10.0.0.1/24 up 3, sudo route add default gw 10.0.0.254 sl0 PC2: 1, sudo slattach -s 19200 -p slip -dL /dev/ttyUSB0 2, sudo ifconfig sl0 10.0.0.2/24 up 3, sudo route add default gw 10.0.0.254 sl0 

安装完成后,我可以从PC1 ping PC2,反之亦然。

还有另一个先决条件:您的Linux内核必须加载滑动模块。