一、场景
常规情况下本地电脑上的服务只能在局域网内访问,外网是访问不到的,但是在开发过程中有时候需要在外网访问本地电脑上的服务进行调试,这时候就需要做内网穿透。可通过NATAPP来实现,该工具能够将内网ip映射到外网上,从而实现外网访问内网,操作很简单,注册即可使用其提供的免费服务。
二、注册
官网地址 https://natapp.cn/
在官网首页点击注册,填写注册信息即可
注意注册后要进行实名验证,验证后才能获取authtoken
三、获取免费authtoken
在 购买隧道
中申请免费隧道,本地端口根据自己的实际需要配置,我这里配成8080
,让外网地址映射到本地的8080
端口
在我的隧道
中找到申请的免费隧道,复制authtoken
值 26af3ecb7c03342d
,运行客户端时要用到
四、下载客户端
下载地址在首页就可以找到,根据自己的需要选择下载,这里我下载的是Windows 64位的包
下载之后,解压至任意目录,得到natapp.exe
五、运行
在natapp.exe
所在目录下打开cmd
命令行,执行如下命令运行,authtoken
要换成自己申请的
natapp -authtoken=26af3ecb7c03342d
启动成功后如下图所示,http://wux8zt.natappfree.cc 即为外网地址,该地址映射到本地电脑的 127.0.0.1:8080,外网可通过该外网地址访问本地电脑上的服务
六、测试
本地电脑有个测试接口,调用成功后会返回一个字符串Hello, Q
,从外网调用这个接口测试内网穿透是否成功,接口本地地址为 http://127.0.0.1:8080/my/name
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/my")
public class MyController {
/**
* http://127.0.0.1:8080/my/name
*
* @return
*/
@RequestMapping("/name")
public String getName() {
return "Hello, Q";
}
}
如果在外网访问本地电脑上的这个接口的话,要用NATAPP给的外网地址替换掉 http://127.0.0.1:8080,也就是在外网访问 http://wux8zt.natappfree.cc/my/name
可随意找一台外网机器测试,比如我在阿里云服务器上访问这个接口,能正常返回结果,说明外网访问本地电脑服务成功。
curl http://wux8zt.natappfree.cc/my/name