黑夜无边,白昼寂寥,日光星辰都无法按捺心潮涌动,只有它脉络清晰即使短暂仓促,我愿再创无数此景,共享黎明盛世。

「教程」WebSocket协议隧道VNet-Tunnel详细使用图文教程

Freedom Hurray! xiaohei2333 1272℃ 0评论
本文最后更新于 2020年3月7日 18:14 可能会因为没有更新而失效。如已失效或需要修正,请留言!
文章目录

背景:2020年春节前,在一个叫武汉的城市,一个很年轻、很幼稚的灵长类动物食用了一只带有新型冠状病毒的蝙蝠,由此诞生了8位“造谣”者,中国人民从此开始了囚禁生活。由于信息封锁技术的升级,以前我推荐的【教程】解决V2ray断流之http伪装详细使用教程也不再适用所以,有一位心怀民族大义感(?????)有胆识、有才能的开发者站了出来,创造了VNet-Tunnel。

什么是隧道?

顾名思义,就是一种网络传输协议,而WebSocket(WS)隧道就是将某个端口的所有流量转换成WebSocket流量,通过传递Websocket流量,可使两台服务器见的网络高速连接,可以优化链路、提高传输速率

写在前面

此隧道相当坑爹,无论怎么关闭、重新启动隧道,你将会丢失隧道的一切设置。(没有配置文件,只是在内存中加载)
本文虽然很长且似乎非常复杂,毕竟我要照顾小白、小小白……
其实如果认真看一遍,实际操作10分钟内可以完成

效果展示(图一直连不经过隧道,图二使用隧道中转):

我想这个差距还是非常明显的吧?AWS直连的速度我认为可以直接劝退了。。。(移动50M宽带测速结果)

准备

搭建VNet-Tunnel隧道,你需要有:
两台拥有可用公网端口的服务器(NAT、VPS都可以)
VNet-Tunnel主程序

ps:如果搭建隧道用于科学上网,建议一台服务器在国外(落地鸡、数据发送端)、一台服务器在国内(起飞鸡、数据转发端)。当然,你用IPLC来落地、起飞也可以?
如果你需要国内NAT服务器,欢迎点击购买点击购买(写文辛苦,文章拿走,aff留下吧……当请小黑吃鸡腿了)
注:修罗云任何产品与本站无关,但在此推荐使用。

修罗云我****(口吐芬芳)

Let’s Do It!

如果你有一定技术水平,你可以直接选择下载官方教程

一下教程以使用隧道科学上网为例,国外使用server(文中称为:落地鸡、数据发送端)国内使用client(文中称为起飞鸡、数据转发端)

如果你是小白,小小白,或是看不懂教程的大白,这篇文章将手把手教你如何搭建这神奇的隧道。

使用root身份连接你的服务器,执行以下命令(国外数据发送端、国内数据转发端都执行)

Debian/Ubuntu:apt-get update && apt-get install wget unzip -y

CentOS:yum update -y && yum install wget unzip -y

安装完毕后,下载VNet-Tunnel主程序(国外数据发送端、国内数据转发端都执行)

mkdir /root/vnet && cd /root/vnet && wget https://hjh666.xyz/software/share/VNet-Tunnel.zip && unzip VNet-Tunnel.zip && rm VNet-Tunnel.zip && chmod +x *

这样,VNet-Tunnel就已经下载解压且被赋权了。

如果你用的是CentOS,也可以选择使用来自云艺博客的脚本安装(不支持CentOS外的任何系统)

CentOS:yum -y install wget;wget -N --no-check-certificate "https://www.yunyiya.com/download/linux/vnet.sh";chmod +x vnet.sh;./vnet.sh

脚本原文章、详细介绍链接:https://www.yunyiya.com/index.php/archives/143/

先别急着启动,我们来陪着一些杂项。

NAT服务器请自行去IDC面板映射端口:
如果国外数据发送端是NAT服务器请将内网的8081端口映射至外网任意可用端口
如果国内数据转发端是NAT服务器请将内网的8080端口映射至外网任意可用端口
NAT服务器端口映射后,请自行将下文的8080、8081端口理解为你映射后的端口!
ps:如果IDC服务速度太慢,可以尝试用Caddy反向代理哟~

VPS或NAT服务器:
请自行解决其他程序占用8080、8081端口的问题

查看端口是否被占用(点击展开)


请自行解决防火墙封锁端口问题

部分防火墙的关闭、解封方式(点击展开)


请自行进行路由转发等(如果你曾经通过一键脚本安装过科学上网软件、换过内核等,可以跳过这一步)

杂项配置(点击展开)

确保以上杂七杂八的事情做完后,我们继续

启用VNet-Tunnel服务端(国外数据发送端)

以root身份连接到国外数据发送服务器(落地鸡),依次执行(仅在国外数据发送端执行)

cd /root/vnet && nohup ./server

nohup执行后终端会“卡住”直接关掉终端(断开连接)即可

打开浏览器,在地址栏中输入(在本地设备操作)

http://服务器IP:8081/resources/add_server.html
例如IP为8.8.8.8的服务器,在浏览器地址栏中输入:
http://8.8.8.8:8081/resources/add_server.html

如果一切顺利,你将会看到如下的画面

干杯~????咳咳。。。点击“添加”按钮

添加后,此端口的流量将被转换为WebSocket流量,通过输出端口发送。
ps:此隧道支持多个本地端口流量转换为WebSocket流量,但是必须对应唯一的输出端口,同样,客户端也只能对应唯一的输入端口和转发端口。不建议使用10000以下端口输出,容易被识别。

如果起飞鸡和落地鸡的443端口都暴露于公网,且没有被占用,可以开启TLS,否则请保持关闭

启用VNet-Tunnel客户端(国内数据转发端)

以root身份连接到数据转发服务器(起飞鸡),依次执行(仅在国内数据转发端执行)

cd /root/vnet && nohup ./client

nohup执行后终端会“卡住”直接关掉终端(断开连接)即可

打开浏览器,在地址栏中输入(在本地设备操作)

http://服务器IP:8080/resources/add_client.html
例如IP为8.8.8.8的服务器,在浏览器地址栏中输入:
http://8.8.8.8:8080/resources/add_client.html

如果一切顺利,你将会看到如下的画面

那真的是太棒了,你成功的完成了客户端(国内数据转发端)的搭建

点击“添加”按钮

添加后,客户端(国内数据转发端)将会从服务端(国外数据发送端)的的WebSocket流量输出端口接收流量,并解密为正常流量,转发到本地的一个自定义端口~

如果起飞鸡和落地鸡的443端口都暴露于公网,且没有被占用,可以开启TLS,否则请保持关闭

操作流量走向实例(数字代表端口号):
实例1:国外服务器①38281——>43718–>隧道—>国内服务器②38819——>21137
实例2:国外服务器①80——>7371–>隧道—>国内服务器②38291——>80

通过隧道,这些端口流量输出都是可以实现的;回程流量反向而已,自己脑补。。

现在,全体起立!!!

打开你的科学上网软件,编辑原线路(直连)的配置:
服务器(IP)由国外鸡IP(或域名)改为国内鸡IP(或域名)
原端口改为隧道转发后的端口(图二的“本地端口”)
其他配置不需要更改

起飞吧,小鸡鸡?

安全性配置

你可能已经感觉到了,如果你的竞争对手,或是你的仇人,想要登录进你的面板,大搞一波破坏,只想要知道你的端口号就行了。
我们怎么能这样让他们得逞呢?
以root身份连接到数据发送服务器(落地鸡),依次执行(仅在国外数据转发端执行)

iptables -A INPUT -p tcp --dport 8081 -j DROP

以root身份连接到数据转发服务器(起飞鸡),依次执行(仅在国内数据转发端执行)

iptables -A INPUT -p tcp --dport 8080 -j DROP

这样,我们就利用iptables禁止坏蛋连接我们的面板了~
那我们自己要连接面板配置怎么办?别怕,我们来一键解封端口
无论是什么机器,解封被iptables封死的端口都是这一条命令

iptables -F

OK,你已经解封了端口,打开面板,愉快地玩耍吧~

好的,这就是教程正文的全部内容了,如果对你有帮助,请一键三连(走错片场了)吧~

后续

如果有什么疑问,欢迎大家在留言区留言、来Telegram里找我玩哟~
https://t.me/xiaohei2333

鸣谢

VNet官方:https://github.com/rc452860

硬核技术支持(定制系统、dd安装系统等欢迎找他~):https://t.me/grteabs

转载请注明:不懂编程 » 「教程」WebSocket协议隧道VNet-Tunnel详细使用图文教程

喜欢 (87)
头像
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(16)个小伙伴在吐槽
  1. 头像
    gia线路是不是没必要用这玩意了?
    hotpig2020-02-22 00:42 回复
    • xiaohei2333
      有必要哟~毕竟有一种很奇葩的GIA,它叫搬瓦工(⌒▽⌒)
      xiaohei23332020-02-22 11:41 回复
  2. 头像
    问下博主,这个Vnet是不是专门给ss/ssr用的?如果本来就是用v2ray的websocket+tls,再用这个Vnet一转是不是多此一举?
    セプテット2020-02-23 12:19 回复
    • xiaohei2333
      VNet适合任何协议,不仅是ss(r)、V2ray等,http(s)都可以通过VNet传输。并不能这样说,因为隧道需要一台国内机器中转,中转鸡的国际网络绝对比你家好,虽然协议一样,但是隧道效果会更好。
      xiaohei23332020-02-23 13:57 回复
      • 头像
        不好意思博主,可能是我上一条评论写的不够准确。我现在的确有在用国内中转鸡,但使用的是iptables直接转的海外v2ray websocket+tls。所以我实际想问的是,真的有必要用Vnet来中转吗?用iptables转ws+tls应该也一样的吧?用Vnet转比用iptables转有什么额外的好处或效果吗
        セプテット2020-02-23 17:51 回复
        • xiaohei2333
          VNet和iptables中转WS+TLS效果一样。但是有些情况有必要使用VNet,因为不是所有人都喜欢使用V2ray,喜欢ss(r)的小伙伴就会用到VNet。其次,VNet的明显优点就是可以图形化界面操作,比起iptables控制脚本也是方便很多。再来,V2ray的WS+TLS可能只局限于翻墙使用,VNet可以实现双向中转任何流量,比如我的博客就是建站机器使用VNet中转后端流量流量实现的哟~而如果使用iptables中转博客流量,效果就会差非常多了d(^_^o)
          xiaohei23332020-02-23 23:42 回复
  3. 头像
    有个点还是看不懂。 ss(r)到底是与服务端通信,还是客户端通信? 线路通信是这样子的吗: ss(r) -> 客户端 -> 服务端 -> 服务端转发至本地端口(ss-(r)),这样的话,ss(r)是与客户端通信的,如何再和服务端通信?
    duoci2020-02-25 09:38 回复
    • xiaohei2333
      可能是我表达的问题,通信是这样的 国外服务器ssr服务端—>国外服务器VNet服务端—国内服务器VNet客户端—>转发 如果还有不懂的,欢迎来TG找我哟~
      xiaohei23332020-02-27 10:05 回复
  4. 头像
    如果只用来翻墙的话这个隧道和ss-v2rayplugin或者v2ray的ws比有很大优势吗?看起来好像就是一个基于websocket的vpn吧?应该没有特别的抗封锁能力
    个人练习生2020-03-04 17:51 回复
    • xiaohei2333
      和那些真的没有什么优势,协议都是一样的。但是就是一句话,中转鸡的网络肯定比你家网络好。抗封锁能力因人而异,如果你的中转鸡没有被盯上,理论上不可能封的。
      xiaohei23332020-03-07 18:04 回复
  5. 头像
    请问是否可以将8080、8081更改其他端口,因为有些nat是不支持特定端口转发,只是开放某些端口来使用,无法转发端口!多谢博主
    小明2020-03-08 21:36 回复
    • xiaohei2333
      可以选择使用iptables或firewalld转发8080、8081端口哟~
      xiaohei23332020-04-19 15:41 回复
  6. 头像
    一台中转鸡能给多台落地鸡中转吗,不然感觉一对一的话,好浪费啊
    asq2020-03-20 21:29 回复
    • xiaohei2333
      中转鸡理论上可以中转无数落地鸡,看你有多少个端口可用~
      xiaohei23332020-04-19 15:43 回复
  7. 头像
    我现在遇到了一个问题,就是NAT机会被断流,我用的是WS+tls,NAT中转落地机的443端口为其他端口,理论上不应该会被断流啊;
    小菲2020-03-22 20:18 回复
    • xiaohei2333
      建议使用V2ray的ws协议,不要使用tls,使用1w以上端口,即可解决
      xiaohei23332020-04-19 15:44 回复