VNMesh: 支持将内网设备整体映射到公网

0 阅读4分钟

之前使用的一些内网穿透服务,能映射到公网的TCP端口很有限,对于像是我这种需要很多TCP服务的情况,难免就不够用了。

从原理上来说,TCP协议栈能提供的服务端口有限(最多65535个),所以传统内网穿透服务商对单个用户提供的TCP映射服务会有严格的数量限制,那么有没有办法解决这个问题呢,能不能把六万多个端口全部分配给单个用户呢?为了解决这个问题,深入研究了内网穿透的原理,反复折腾后,终于找到了将内网设备所有TCP端口映射到了公网的一条路径。

对于访问者来说,访问内网设备,就像是访问公网一样,比如访问转发服务器的22端口,转发服务器直接就会将其映射到内网设备的22端口,无需端口转换。这和传统的内网穿透服务完全不一样(传统的穿透服务通常不会将21/22/23等知名端口分配给用户,一般是动态分配非知名端口给用户)。

研究出来可行的方案后,经过很长时间的开发,终于将其变成了现实,同时也支持了传统的TCP映射服务能力,供一些不需要整机映射的情况使用。 我将服务放到了公网上,给自己和朋友使用,效果还可以,也收到了一些改进建议。现在开放给大家试试,希望能收集到更多改进建议。

服务网址:[www.vnmesh.com]

需要注册一个用户名。(本来有提供无需注册的使用方式,但国内的实名政策大家都懂......取消了)

下载客户端之后,解压并运行vnmesh,可以使用root权限,也可以不使用。如果需要自启动,那么可以使用root权限开启服务,它会自动注册系统服务,这通过管理界面的"系统设置"可以配置。

运行之后,就可以使用浏览器访问 http://localhost:8888 来做配置了。为了使得配置更容易,做了全WEB化开发,一般情况下不需要修改配置文件,并且支持服务不重启更改配置。这点和需要重启服务来更新配置的工具不太一样。在打开管理界面后,先到"基础配置-基础配置"中配置用户名和密码,即可开启服务。

管理页面上有各种功能的配置导航,传统的功能和新增的设备映射功能都在里面,比如"公网服务“下面的”域名映射"和“端口映射”就是传统的内网穿透工具的常用服务,而"公网服务-设备映射"就是本次研究的成果了。设备映射分为三种工作方式:

  1. 静态设备映射: 可以指定访问者的IP。访问者用这个IP访问公网节点时,就会直接映射到内网设备。

  2. 动态设备映射:很多时候,访问者的IP不是固定的,我们也无法提前预知访问者要从哪个IP访问,这时候就提供了动态设备映射的机制,访问者只需要在访问前开启映射服务,就可以访问内网设备了。

  3. 完全设备映射:如果想让所有人都能像访问公网一样访问内网设备的TCP服务,那么就可以使用完全设备映射,这种情况需要用户自备转发服务器,不能共享转发服务了。本功能还在完善中,敬请期待。

除了设备映射功能,还计划支持P2P直连,但不会采用传统的VPN的方式,不去修改路由,也不创建隧道口(因为修改路由和创建隧道口必须root权限,并且安全合规要求很高,能免则免)。

最后,请各位朋友不吝于提出您宝贵的意见,我将万分感激。