使用tinyfecVPN实现网络加速

  本人只是某大专学生。对网络和计算机的理解甚浅。如有讲错的地方欢迎指出。  

  这篇文章意义在于提供一种优化网络的思路,提供tinyfecVPN这一软件的使用方法。本人和软件的作者没有任何关系。本人坚决反对使用该软件搭建非法信道进行国际互联。所有读者阅读此篇文章后所做所为本人概不负责。下面开始正文。

  这里以Minecraft Bedrock Edition服务器为例。假设现在服务器上已经运行这一个Minecraft Bedrock Edition服务器,端口为19132。

  tinyfecVPN是一款基于UDPSpeeder的VPN工具。其作者开发这一软件的初衷是提供一种加速网络,优化网络环境的方法。

tinyfecVPN使用了和UDPSpeeder相同的lib,功能和UDPspeeder类似,只不过tinyfecVPN工作方式是VPN,UDPspeeder工作方式是UDP tunnel.

   由于tinyfecVPN的服务端和客户端,作者都只提供了linux版本。所以服务端和客户端都只能搭建在linux环境下(事实上只是没有人移植到其他平台。等待其他大神出马)。所以要在其他平台使用tinyfecVPN需要使用路由器,或者使用虚拟机来运行客户端,让数据先走到虚拟机\路由器再从路由器将数据路由到VPN通道,到达远程服务器。所以是这样的:

              路由器/虚拟机 ----> tinyfecVPN client ----> VPN tunnel ----> tinyfecVPN server ----> 目标服务器 ----> Minecraft Bedrock Edition Server

  再鉴于tinyfecVPN实际是基于udp进行加速。众所周知过大的udp流量会被运营商封杀。所以,需要使用工具把udp的流量伪装成tcp的流量,欺骗运营商。tinyfecVPN的作者非常厉害,他同时开发了一个这样的工具用以伪装流量为udp流量,udp2raw--tunnel。所以tinyfecVPN的客户端就需要经过udp2raw建立VPN通道。所以现在的网络变成了这样:

              路由器/虚拟机 ----> tinyfecVPN client ----> udp2raw client ----> VPN tunnel ----> udp2raw server ----> tinyfecVPN server ----> 目标服务器 ----> Minecraft Bedrock Edition Server

  tinyfecVPN是运行在虚拟机/路由器上。所以流量需要经过虚拟机/路由器转发给tinyfecVPN client才能经过VPN tunnel。所以需要在虚拟机/路由器上开放端口,通过端口将流量转发给tinyfecVPN。tinyfecVPN的作者很强大,也开发了一个软件用以满足这一需求,tinyPortMapper。所以现在的网络变成了这样:

                  本地 ----> tinyPortMapper ----> tinyfecVPN client ----> udp2raw client ----> VPN tunnel ----> udp2raw server ----> tinyfecVPN server ----> 目标服务器 ----> Minecraft Bedrock Edition Server

  因为我这里没有可以运行openwrt的家用路由器。我这里使用虚拟机的方案实现。

  tinyfecVPN官方readme

  首先进入官方readme下载作者提供的超小型虚拟机镜像。使用VMware打开镜像,并运行虚拟机。这里需要在VMware中设置虚拟机的网络连接为桥接模式。

  虚拟机中已经继承了ssh。所以虚拟机开机后可以通过putty直接连接虚拟机。linux的tty界面个人用不惯(作者提供的镜像没有GUI),所以使用putty连接虚拟机。root的密码为123456。首先先安装tinyfecVPN,分别在服务器和虚拟机中下载release编译好的文件,并解压。

  假定远程服务器的ip地址为44.55.66.77。tinyfecVPN server的端口为4096。在虚拟机中执行:

./tinyvpn_x86 -c -r44.55.66.77:4096 -f20:10 -k "passwd" --sub-net 10.22.22.0

   虚拟机中执行ifconfig会出现一个新的网卡。可以看到这个网卡的地址是10.22.22.2。这个地址就是VPN通道中,虚拟机的地址。命令中的-k 后面制定的是加密的密钥。加密方式为异或加密。

  在远程服务器中执行命令:

./tinyvpn -s -l0.0.0.0:4096 -f20:10 -k "passwd" --sub-net 10.22.22.0

   这样的话。本地和远程就成功建立了VPN连接(需要确认防火墙打开开放了端口)。在远程服务器中运行ifconfig命令,可以看到新的网卡,网卡的地址是10.22.22.1。这是服务器在VPN通道中的ip地址。在虚拟机和服务器之间建立通信,若使用的是VPN通道的地址建立连接。那么通信的数据就是经过VPN的了。

   此时在虚拟机中可以直接ping远程服务器的VPN地址(10.22.22.1)。这时候虚拟机发送ICMP包给远程服务器就是经过VPN通道了。

  现在我们就要使用udp2raw工具伪装udp流量为tcp流量。所以先在服务器和虚拟机中停止tinyfecVPN。

  udp2raw官方readme

  进入官方readme页面,分别下载udp2raw到虚拟机和服务器,并解压。

  在虚拟机中执行命令:

./udp2raw_amd64 -c -l0.0.0.0:3333  -r44.55.66.77:4097 -k "passwd" --raw-mode faketcp   --cipher-mode xor  -a

  同理,命令中的-k "passwd"为加密密钥。此时在虚拟机中访问127.0.0.1:3333,udp2raw就会将udp流量伪装成tcp流量,并发送给远程服务44.55.66.77:4097

./tinyvpn_x86 -c -r127.0.0.1:3333 -f20:10 -k "passwd" --sub-net 10.22.22.0

  

  在远程服务器中执行命令:

./udp2raw_amd64 -s -l0.0.0.0:4097  -r127.0.0.1:4096   -k "passwd" --raw-mode faketcp   --cipher-mode xor  -a

  此时服务器的udp2raw接收到流量后,会把流量发给本地的4096端口的服务。

Too Be Continue。。。。。。

猜你喜欢

转载自www.cnblogs.com/DouglasLuo/p/11605086.html