前言碎语
内网穿透服务在开发中有很多的应用场景,比如1.和第三方接口本地联调对接,2.本地微信开发时联调回调等等。当然,使用场景不止这些,然后有需求就会有 市场就会有产品,付费产品比较著名的有“花生壳”,然后免费的有ngrok,早期博主也分享过国内的一些免费的ngrok,详见《ngrok(微信开发福利)内网穿透神器》。然而,这些免费的ngrok慢慢都停服了或者转向会员收费制了。免费的服务不稳定加上流量经过别人服务器不安全等因素,或多或少影响了我们使用。今天,博主分享一个用java开发的开源的软件lanproxy ,来搭建自己的内网穿透服务,彻底告别网上各种搜索免费的ngrok服务了。
lanproxy是什么?
lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,,在github上面已经开源,目前已经收到2000多star。目前支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面...)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。
github坐标 : https://github.com/ffay/lanproxy
lanproxy原理?
lanproxy是基于java通讯框架netty开发的,由服务端和客户端组成,服务端启动后,客户端会去连接服务端,然后和服务端建立tcp连接通道。服务端负责接收外部流量,然后根据配置的端口映射规则转发给客户端监听的端口服务(本地内网),从而达到内网穿透的目的。
lanproxy下载地址?
服务端:proxy-server.zip
java客户端:proxy-client.zip,更多客户端类型,可访问:https://seafile.io2c.com/d/3b1b44fee5f74992bb17
启动server端
准备一台安装jdk的服务器(支持linux、Windows),需要有外网地址。下载server下来后,解压proxy-server.zip,进入到bin目录,执行startup.sh脚本就启动了,默认的访问端口是8090.用户名和密码是admin/admin。可以通过conf/config.properties修改。
访问http://ip:8090,就可以看到如下页面了
服务端启动后,需要添加客户端信息,客户端主要生成一个client.key,用来做连接的认证信息的。然后如下图,选择 一个客户端添加端口映射。
客户端链接
客户端下载下来后,先解压,目录结构和服务端一样,先去conf/config.properties中把server.host修改为你的服务端ip,服务端端口默认4900不用变。然后把第一步客户端生成的客户端密码配置给client.key。然后启动bin/startup.bat就可以了。如果连接服务器成功,管理控制台就会显示在线。然后就可以使用serverip:xxx来访问你的内网服务了
文末结语
企业开发中,提供一个这样的内网穿透服务真的很有必要。除了自建不需要付费给第三方服务外最重要的还是安全问题。这个lanproxy软件博主体验下来非常不错,所以给大家推荐了。用的好了别忘了给作者一个star鼓励下哦