Skip to content

一个非常简洁的内网穿透实现 #10

Description

@ICKelin

首先打广告,内网穿透Notr,网站部分功能仍在开发,如果您也有兴趣参与Notr的开发,请给我留言。

在完成大部分gtun 的开发之后,已经能够解决将家里网络与公司网络组建成虚拟局域网,面临一个问题,我需要在两端同时gtun客户端方能连接公司的网络,于是就想到了内网穿透,基于gtun可以非常方便的进行内网穿透。在gtun当中也有部分内网穿透的功能,但是还不够,或者说我不认为将内网穿透加入gtun让gtun变得庞大无比是一件正确之举,于是我在gtun基础之上构建一个内网穿透的项目。gtun作为底层基础设施。

当时思考了下,应该具备以下功能:

  • 首先,地位应该是一个产品而不是一个开源项目,所以给用户使用的时候一定要考虑小白的情况,所以不需要众多的配置,只需要让用户知道,我本地起了什么端口,我只要告诉你我起了什么端口,你帮我让我能够通过公网访问就OK,所以Notr的客户端非常简洁,没有任何配置,只需要指定本地端口即可

  • 其次,应该支持多种协议,HTTP,HTTPS,TCP,UDP

  • 最后,用户最终拿到的应该是域名而不是IP地址,如果是IP地址可能会经常变动,但是域名不会

于是开始了Notr的思考与实现。最初版本Notr针对HTTP和HTTPS是需要指定端口号的,朋友反馈基本上两个问题用得不舒服

  • 端口号随机的,而且每次都不一样。产生这个的原因,是自身程序是不关注应用层协议的,只关注TCP层,而且我会都会监听一个端口来服务这一代理协议

  • 其次,HTTPS安全连接的问题

于是用HTTP和HTTPS用Nginx反向代理代替,每次新生成一个Nginx配置文件,proxy_pass指定为用户的虚拟ip地址与端口即可。

这种方式实现将会特别简洁,而且会http可以使用默认的80端口,https可以使用默认的443端口,用户不需要记住端口号,仅仅需要记住域名。

Notr的运行截图如图所示:

cbc9cd87-93fc-4a0c-862d-a46d45eac89a

对小白用户非常得友好。没有任何配置。目前支持多个windows,linux以及mac三个平台,不过windows需要安装tap-windows驱动,更多信息可在notr上了解,可执行文件可在下载中心进行下载

详细处理流程:

image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions