使用场景:
在做微信开发或是调银行或支付宝等支付系统的时候,本地想联调但是对方需要可以访问的域名或是外网IP才可以。但是,在本地如果不在路由器上做映射或是公司没有固定的外网IP。这种情况怎么办呢?可以使用ngrok实现内网穿透。
什么是ngrok?
为什么要使用ngrok?
Ngrok的安装
一:必要条件及前期准备
1.1:服务器
这个服务器用来作为ngrok服务器的。必须是公网IP,必须可以正常访问的(可以在阿里云、腾讯云等国内购买,也可以购买国外vps,不建议国外。因为国外的访问速度不行。Ps:如果想购买阿里云,凯哥有优hui的连接)
1.2:域名
这个域名是用来访问的。
1.3:域名泛解析
什么是域名泛解析呢?就是使用*号代替。如下图:
需要说明:
比如泛域名使用的是*.ngrok,同时还需要解析一个ngrok的域名。
1.4:下载准备好的安装脚本
二:进行安装
2.1:先将按照脚本通过SSH上传到服务器上。
2.2 进行安装
2.2.1 执行ngrok.sh脚本
切换到脚本目录。如:cd /home
执行./ngrok
根据提示进行安装。
输入一个域名
输入第一步中准备的域名。
2.2.2 根据提示,选择对应的数字进行操作
说明:
1:凯哥已经安装过了,所以先要进行删除卸载。
2:最好别选择1 全新安装。因为你不知道执行到哪一步了。选择分布执行。
3:先选择2 依赖安装
依次安装git、go、ngrok。这里就不演示了
安装完ngrok后会出现:
然后心开一个SSH窗口。生成客户端
根据自己系统生成对应的客户端。
凯哥使用的是windos 64位的。所以就选择4.
生产完成后,客户端在 /usr/local/ngrok/bin下
如下图:
将客户的下载到本地后。客户端测试。
三:客户端测试
3.1:配置客户端
在客户端目录创建ngrok.cfg
配置信息如下:
3.2 启动
客户端服务启动方式
方式一:ngrok -config ngrok.cfg start weixin #启动名称为weixin的服务
方式二:ngrok -config ngrok.cfg -subdomain test 127.0.0.1:6888#命令指定方式
3.3:当看到
说明启动成功。
现在可以在浏览器中访问试试看。如下图:
可以看到,通过域名访问。但是实际上访问的就是本地访问。
另外分享内网穿透服务搭建-JAVA版
前言碎语
内网穿透服务在开发中有很多的应用场景,比如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软件博主体验下来非常不错,所以给大家推荐了