我有两台 Linux 机器,我想使用 socat 在它们之间创建隧道,这是我的解决方法:
机器1:
socat -d -d UDP-LISTEN:4711,reuseaddr TUN:10.50.50.1/24,iff-up,iff-broadcast,iff-pointopoint
机器2:
socat UDP:[M1 public IP]:4711 TUN:10.50.50.2/24,iff-up,iff-broadcast,iff-pointopoint
两台机器上的设备tun
都被创建,它们的 IP 地址也被分配,从另一台机器 ping 通一台机器后,数据包被传输,一切正常。
PING 10.50.50.1 (10.50.50.1) 56(84) bytes of data.
64 bytes from 10.50.50.1: icmp_seq=1 ttl=64 time=105 ms
64 bytes from 10.50.50.1: icmp_seq=2 ttl=64 time=100 ms
64 bytes from 10.50.50.1: icmp_seq=3 ttl=64 time=99.1 ms
64 bytes from 10.50.50.1: icmp_seq=4 ttl=64 time=97.7 ms
iperf3
当我将一些流量放在该隧道设备上(使用或手动路由一些重要流量通过它)时,就会出现问题,一段时间后,所有数据包都会被丢弃。我应该怎么做才能使用这个隧道来传输大数据?这个问题是 socat 隧道固有的还是取决于网络基础设施和 ISP(M2 机器位于伊朗)?
答案1
使用选项启动两个 socat 进程:-d -d -d -d -lu 并在传输开始失败时检查消息