VPS 搭建简单加速器

头像
ler

一、准备工具软件

  • udp2raw。将UDP伪装成TCP或者ICMP,不同于UDP over TCP,其本质上还是UDP,另外不会处理TCP数据包。

  • tinyfecVPN。工作在网络层的双边网络加速工具,可以加速全流量(TCP/UDP/ICMP),输出流量类型为UDP。

  • tinyPortMapper。将远程的UDP与TCP端口同时映射到本地。

  • SSTAP。控制本机路由,转发数据包。

  • 可以转发UDP的不可描述的代理软件。就是那种软件,简单的Socks代理也可以。

上述前三个软件开发者都为同一人,最新版本可以前往开发者Github主页下载。软件更多功能及参数介绍可以去主页相应软件项目下的wiki查看

下文介绍的命令参数请根据自己实际情况进行替换

二、整体结构

  • 首先,本地电脑跟远程服务器建立起udp2raw隧道连接

  • 然后,在udp2raw隧道中建立本地与服务器的tinyfecVPN连接,tinyfecVPN的UDP流量通过udp2raw进行流量伪装

  • 在本地与远程服务器建立好连接之后,使用tinyPortMapper将远程服务器上代理软件的端口映射到本地(包括TCP跟UDP)

  • 最后,在电脑上使用SSTAP连接映射到本地的代理端口

三、服务端搭建

以下命令都是基于amd64位架构,路径跟文件名根据实际替换

3.1 tinyfecVPN

tinyfecVPN服务监听在服务器8855端口:

./tinyvpn_amd64 -s -l 127.0.0.1:8855 --sub-net 10.222.2.0 --tun-dev tun100 --report 10 -k "yourpassword" -f2:2 --timeout 0
  • -s以服务端模式运行

  • -l服务端监听端口

  • --sub-net指定子网

  • --tun-dev指定tun设备名称

  • --report打开发送/接收报告并设置报告周期,单位:秒

  • -k指定一个字符串,开启简单的异或加密

  • -fx:y每x个数据包发送y个冗余包,决定消耗流量的倍数,比如-f20:10是消耗1.5倍流量,-f2:2则是每2个数据包发送额外2个冗余包,合计发送出4个数据包,最多允许丢包2个。

  • --timeout其值决定允许的最大延迟,UPDSpeeder会尝试积攒t毫秒的数据包一起做FEC,这个过程会引入额外的延迟

如果你的线路丢包率很低,那么可以将-f2:2--timeout 0参数替换为--disable-fec即关闭冗余发包,这样也不会出现额外的延迟,但失去了抗丢包能力,不推荐

如果相同时节省一点流量,可以将-f2:2--timeout 0参数替换为-f2:2--timeout 1--timeout 1可以更好的控制流量,稳定2倍流量,相对于--timeout 0延迟增加约为2ms。如果线路非常好,那可以将-f2:2替换成-f2:1,即每3个数据包允许丢包1个,消耗1.5倍流量

3.2 udp2raw

将udp2raw设定成伪装icmp模式

./udp2raw_amd64 -s -l 0.0.0.0:1000 -r 127.0.0.1:8855 --raw-mode icmp --cipher-mode none -a -k "yourpassword"
  • -s以服务端模式运行

  • -l服务监听位置(ip:port)。在和 udp2raw 客户端连接时有用,虽然icmp没有端口的概念,但是这个参数依然不可省略。

  • -r远程服务位置(ip:port)。接收客户端的流量解密后转发的位置,这里接收的就是tinyfecVPN发来的流量

  • --raw-mode伪装的流量类型。可选值为facetcpicmpudp

  • --cipher-mode加密模式。如果代理软件已经进行过传输加密,那么这里就不需要加密,减少性能损耗,这里选择none

  • -a自动添加/删除iptables规则

  • -k口令

四、客户端搭建

udp2raw现在已经有了Windows客户端,可以去Github主页相应项目下下载。本文使用的是虚拟机方式,网络为桥接模式。以下操作均在虚拟机中进行。

4.1 udp2raw

./udp2raw_amd64 -c -r YOUR_SERVER_IP:1000 -l 127.0.0.1:8855 --raw-mode icmp --cipher-mode none -a -k "yourpassword"
  • YOUR_SERVER_IP远程服务器的IP地址

  • -c以客户端模式运行

  • -rudp2raw远程服务端(ip:port)。连接到udp2raw服务端

  • -l客户端本地监听地址(ip:port),相当于将远程服务器的端口地址映射到了这里

  • -k口令,需要与服务端相同

其他参数含义与上文服务端相同。

4.2 tinyfecVPN

./tinyvpn_amd64 -c -r 127.0.0.1:8855 --sub-net 10.222.2.0 --tun-dev tun100 --keep-reconnect  --report 10 -k "yourpassword" -f2:2 --timeout 0
  • -c以客户端模式运行
  • -r上述udp2raw客户端本地监听地址(ip:port)。
  • --sub-net指定子网,跟服务端一致
  • --tun-dev指定tun设备名称
  • --report打开发送/接收报告并设置报告周期,单位:秒
  • -k口令,需要跟服务端相同
  • -fx:y同服务端
  • --timeout同服务端

至此,就建立好了服务端到客户端的连接。

4.3 tinyPortMapper

假定远程服务器端12345端口有不可描述的代理服务:

./tinymapper_amd64 -l0.0.0.0:1080 -r10.222.2.1:12345 -t -u
  • -l本地监听地址端口。远程服务器端口将映射到此端口。本地电脑代理直接连接此地址

  • -r映射的远程地址端口。这里的地址为tinyfecVPN子网中的IP地址。

  • -t转发TCP

  • -u转发UDP

至此,搭建完成。本地电脑使用代理软件连接tinyPortMapper映射的地址端口就可以使用,实际地址就是虚拟机在本地局域网中的IP加上述命令中的端口号,即虚拟机局域网IP:1080


评论

lernb.com ©2022 |  lernb | Tencent