内网穿透指的是客户端a要访问客户端b,通过一台服务器进行桥接,桥接有两种方式,一种是相互转发,另一个是告诉对方的地址,自己就当一个介绍人的角色。
1.小蚂蚁
官网链接: http://www.xiaomy.net/
操作步骤
进入官网首页, 点击下载, 现在仅支持window版本, 采用界面的形式, 操作更加简单image下载成功后, 可解压打开, 首页如下所示image下面点击注册 及创建一个属于自己的账号, 便于管理自己的域名和端口号image注册成功后, 会被创建的账号邮箱, 发送链接, 点击链接即可激活账号, 这时候可以输入账号密码进行登录这里使用的是自己的账号做演示, 红色区域是自己 已经添加的隧道, 大家这里刚注册是空白的,image这里大家可以添加自己的隧道指定要穿透的端口和域名, 现已支持TCP和HTTP的穿透, 并且永久免费, 重点永久免费, 且可供日常开发使用, (如果对速度有特殊要求的人, 可选择指定的收费的版本, 这里的收费也是象征性的收费, 只为做维护升级服务器使用. 收费标准,大家可查看市场上的工具做比较)如下所示:image添加成功后, 右边列表就会有自己设定要穿透的ip地址, 如4一样.这时候输入指定的域名, 即可使用, 如果未穿透成功, 请检查创建的穿透隧道是否是启动状态如下所示image2.natapp
本文演示一下如何使用natapp来实现内网穿透,官方的新手教程文档地址:
https://natapp.cn/article/natapp_newbie
首先打开netapp官网注册并登录账户,购买或使用免费的隧道。我这里是购买的9元一月的隧道:
使用natapp开启内网穿透之旅
配置隧道的信息:
使用natapp开启内网穿透之旅
配置完成后,进行支付购买:
使用natapp开启内网穿透之旅
购买完成:
使用natapp开启内网穿透之旅
然后下载客户端:
使用natapp开启内网穿透之旅
下载完成后进行解压
方法一:
点击复制authtoken ,双击运行natapp.exe,执行 natapp -authtoken yourauthtoken 出现下图即为成功
QQ拼音截图未命名.png
方法二:
在解压后的目录下,新建一个config.ini文件,该文件为natapp客户端的配置:
使用natapp开启内网穿透之旅
配置文件内容说明如下,自行根据需求及说明进行配置:
#将本文件放置于natapp同级目录 程序将读取 [default] 段#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置#命令行参数 -config= 可以指定任意config.ini文件[default]authtoken= #对应一条隧道的authtokenclienttoken= #对应客户端的clienttoken,将会忽略authtoken,若无请留空,log=none #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为noneloglevel=ERROR #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUGhttp_proxy= #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空注:我这里只配置了authtoken,authtoken在“我的隧道”页面进行查看,使用哪条隧道就配置哪条隧道的authtoken
然后双击运行natapp.exe,如下显示Online则代表是运行成功的:
使用natapp开启内网穿透之旅
创建一个SpringBoot工程进行测试
创建一个简单的SpringBoot Web工程,然后创建一个测试的controller类:
使用natapp开启内网穿透之旅
TestController 类代码如下:
package org.zero01.natapp.natapptest.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;import java.util.Map;/** * @program: natapp-test * @description: 测试natapp的内网穿透 * @author: 01 * @create: 2018-05-15 11:01 **/@RestController@RequestMapping("/local")public class TestController { @GetMapping("/test") public Map<String, String> test() { Map<String, String> responseMap = new HashMap<>(); responseMap.put("code", "0"); responseMap.put("API", "/local/test"); responseMap.put("address", "127.0.0.1"); responseMap.put("msg", "这是natapp内网穿透测试"); return responseMap; }}运行SpringBoot的启动类,启动完成后,使用浏览器访问如下地址:
http://zero.s1.natapp.cc/local/test
访问结果如下,这里由于安装了格式化json的插件,所以显示的是格式化好的json数据:
使用natapp开启内网穿透之旅
可以成功从这个外网域名地址访问成功后,我们的内网穿透就完成了,现在就可以从外网访问到我们本地的接口地址了,这种内网穿透的方式很简单也很实用,是我们实现回调接口联调的一大神器。
关于微信开发时的配置
由于微信屏蔽了natapp的三级域名,所以如果需要进行微信支付或者微信小程序的联调时需要注册一个二级域名,但是二级域名也有被屏蔽的风险并且仅支持将域名绑定在付费隧道上,因此需要自行考虑风险,不过一般不干啥坏事被屏蔽的几率还是很小的。如果没有微信开发的需求的话,可以忽略本节内容。
进入到“二级域名”页面,注册一个二级域名:
使用natapp开启内网穿透之旅
查询一个自己喜欢的域名前缀进行注册,如果用于联调微信小程序的话,则需要注册带有SSL证书的,因为微信小程序仅支持https协议。我因为需要联调微信支付以及微信小程序,所以我这里注册了15元/年的那个,但是在注册前需要先按照要求进行实名认证:
使用natapp开启内网穿透之旅
注册完成后,到隧道的配置页面中,配置这个域名:
使用natapp开启内网穿透之旅
修改完成:
使用natapp开启内网穿透之旅
关闭本地运行的natapp客户端,原本的config.ini配置无需改动,重新打开natapp客户端,如下:
使用natapp开启内网穿透之旅
重新启动我们刚刚用于测试的SpringBoot工程,使用浏览器访问如下地址,看看是否能访问到我们本地的接口:
https://zero.mynatapp.cc/local/testhttp://zero.mynatapp.cc/local/test
测试成功:
使用natapp开启内网穿透之旅