tinyFecVРN,集成了 UDPspeeder 功能的 VРN,可以加速全流量(TCP/UDP/ICMP),开源项目
之前发的 UDPspeeder 加速全流量比较麻烦(需要配合 OpenVРN),现在我把 UDPspeeder 的功能做成 VРN 了,一个程序就可以加速全流量,使用起来更简单。
repo: https://github.com/wangyu-/tinyFecVPN
中文主页: https://github.com/wangyu-/tinyFecVPN/blob/master/doc/README.zh-cn.md
编译好的 binary 下载: https://github.com/wangyu-/tinyFecVPN/releases
只要两行命令:
# 在 server 端运行:
./tinyvpn -s -l0.0.0.0:5533 -f20:10 -k "passwd" --sub-net 10.22.22.0
# 在 client 端运行:
./tinyvpn -c r44.55.66.77:5533 -f20:10 -k "passwd" --sub-net 10.22.22.0
然后在 client 端ping 10.22.22.1
,直接就可以 ping 通了。用 10.22.22.1 就可以直接访问到 server 上的所有服务了,所有经过 tinyFecVРN 的来回的流量都会被加速。
(借用了 UDPspeeder 的图)
目前在 release 版的代码里故意引入了一点限制,只可以当加速器用,不能直接用来“翻出去”。
附上原理简介和性能测试
主要原理是通过冗余数据来对抗网络的丢包,发送冗余数据的方式支持FEC(Forward Error Correction)和多倍发包,其中FEC算法是Reed-Solomon。
原理图:
细节请看UDPspeeder的repo,或者UDPspeeder在V2EX上的原帖,这里不再重复。
server 在 vulr 日本,CPU2.4GHz,内存 512mb。client 在搬瓦工美国,CPU 2.0GHZ,内存 96mb。在网路间额外模拟了10%的丢包(双向),用于加重FEC算法的负担。
在server端:
./tinyvpn_amd64 -s -l 0.0.0.0:5533 --mode 0 --sub-net 10.22.22.0
iperf3 -s
在client端:
./tinyvpn_amd64 -c -r 45.76.100.53:5533 --mode 0 --sub-net 10.22.22.0
iperf3 -c 10.22.22.1 -P10
程序支持动态改变FEC的冗余度而不断线,具体可以看--fifo选项。
tinyFecVРN跟kcptun/finalspeed/BBR 等现有方案比,主要区别是可以加速 UDP 和 ICMP,现有方案几乎都只能加速 TCP。一般加速游戏必须用到UDP。
跟UDPspeeder比,主要是使用起来更简单。
101
kennylam777 2017-11-16 11:22:43 +08:00
@hgjian 示範那裡把 error message 寫得很清楚了, 只要找出那 message 的 string 段就找到, 真的沒難度啊........你不會用 gcc 嗎 囧? 你都找出來了, 試一下又不會死的
|
102
hgjian 2017-11-16 11:50:34 +08:00
@kennylam777 好吧,谢谢指点,我试试看
|
103
zhouyut001 2017-11-20 08:20:39 +08:00 via Android
收藏一波,单用 Openvpn+UDPspeeder 还把我国内 VPS 网速拖慢了。用这个试试。
|
104
zhouyut001 2017-11-20 08:21:29 +08:00 via Android
@zhouyut001 53 端口没问题吧
|
105
jjllws 2017-12-10 18:49:20 +08:00
有没有可能 windows 用 OPENVPN 连接 VPS A,VPS A 上装 TinyFecVPN 和设置 iptables 转发到装了 TinyFecVPN 和 OPENVPN 服务端的 VPS B,VPS B 访问外网
|
106
vitas 2018-01-04 18:57:02 +08:00
@hgjian 如果我没猜错的话 应该是这个文件 tun_dev.cpp 注释下面这段
if( ( ntohl(sub_net_uint32)&0xFFFFFF00 ) != ( ntohl (dest_ip) &0xFFFFFF00) ) { string sub=my_ntoa(dest_ip); string dst=my_ntoa( htonl( ntohl (sub_net_uint32) &0xFFFFFF00) ); mylog(log_warn,"[restriction]packet's dest ip [%s] not in subnet [%s],dropped\n", sub.c_str(), dst.c_str()); continue; } |
110
lly8666 2018-02-28 23:16:58 +08:00
求问在 LEDE 多 WAN 的路由器里面,怎么指定虚拟的 tun 设备的出口呢?
|
111
wangyucn OP |
112
lly8666 2018-03-01 16:13:17 +08:00
@wangyucn 不是。。我的意思是,这个怎么配置 iptables 来指定这个 tinyfecvpn 的出口走某个实体 wan 出口呢。
|
113
wangyucn OP @lly8666 你看一下 tinyfecVPN 的 wiki,有个文章说的就是怎么重定向流量,用在 lede 上可能得结合这个文章自己研究一下。
|
115
wwwqq8254289 2018-06-22 22:09:50 +08:00
试试 tinyfecVPN 之前折腾的这些弄的延迟爆炸真坑
|
116
wwwqq8254289 2018-06-23 07:21:48 +08:00
更新了没,其它几个都更新了 @wangyucn
|