在了解原理之前我们先来了解一下什么是内网穿透。之前提到的内网,其是就是在公司或者是家庭内部,建立的一种局域网络或者是办公网络,从而实现多台电脑之间可以进行资源的共享,包括设备、资料、数据等。而外网则是由一个网关与其它的网络系统连接,相对于内网而言,这种网络系统称之为外部网络,也就是我们经常说到的互联网。简单来说,就是让外边的人能访问到你的电脑,比如你电脑上有个网站,外边的人直接是访问不到的,这时候就需要用内网穿透软件。
1、使用场景
适合在公司,小区宽带,出租屋,校园网,网吧,教育网,等网络结构复杂,限制严格的环境中使用。不需安装访问端就可以成功访问内网的所有网络服务,就和本地访问一样.可成功映射的服务包括:网站,ftp,3389远程桌面,sql数据库,我的世界等各种服务端,视频监控,OA,财务软件,CRM系统,ERP系统,金蝶,用友,速达,美萍,管家婆,新中大,等各种进销存软件,管理软件。让本地局域网的跑的应用可以被外网访问。
2、常用内网穿透工具
能实现内网穿透的工具也挺多,下面列出了几个
- Ngrok:一个通过任何NAT或防火墙为您的本地主机服务器提供即时访问、安全的URL的命令。类似花生壳,分为服务端和客户端,也可以自己搭建服务端(也是我们今天采用的工具)。
- Ssh、autossh
- Natapp:基于ngrok的国内收费内网穿透工具,类似花生壳,有免费版本,比花生壳好。免费版本:提供http,https,tcp全隧道穿透,随机域名/TCP端口,不定时强制更换域名/端口,自定义本地端口。
- Frp :frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
- Lanproxy :lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面……)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。
- Spike :Spike是一个可以用来将你的内网服务暴露在公网的快速的反向代理,基于ReactPHP,采用IO多路复用模型。采用Php实现。
- 花生壳:比较稳定,商业化比较成功的内网穿透。个人开发很不推荐,收费贵,企业可以考虑使用。
3、Ngrok免费实现内网穿透
3.1. 注册、并登陆账号
-
官方地址:http://www.ngrok.cc/
3.2. 开通隧道
-
我们注册好账号后登陆后可以看到如下首页界面
-
在右侧菜单栏选择隧道管理—》开通隧道。
这里呢我们选择免费的,找到如下图所示服务器并点击购买,如果要绑定域名的话就需要根据需要购买对应服务器。
3.3. 填写隧道相关信息
当我们点击上一步选择购买的服务器之后,会跳转到如下隧道信息填写界面。填写好相关信息
3.4. 下载客户端工具
上一步我们填写隧道信息并开通之后,会跳转到隧道管理页面。此页面会有一个客户端下载链接地址。如下图所示
3.5. 解压下载的客户端工具,并运行批处理启动
- 找到下载的客户端工具并解压,双击运行批处理文件【Sunny-Ngrok启动工具.bat】启动
- 双击之后会到一个启动界面,如下
- 我们找到刚才开通的隧道id,并将id填入
3.6. 查看启动状态
- 接上一步回车之后如果出现如下界面则证明启动成功
3.7. 建立web应用,并启动本地服务
怎么建立web应用这里就不细说了,可以参考idea环境下建立web应用
本地访问:http://localhost:8080/web/hello
外网访问:http://xiezr.free.idcfengye.com/web/hello
大功告成!!!