内网穿透是如何实现访问客户端连接的?
内网穿透是指在客户端 A 要访问客户端 B 时,通过一台服务器进行连接桥梁的搭建连接方式有两种:相互转发和告知对方地址,前者类似中介角色,后者则更直接1. 小蚂蚁- 官网链接:[http://www.xiaomy.net/](http://www.xiaomy.net/)。
- 操作步骤:- 进入官网首页,点击下载,目前仅支持 window 版本,界面操作简单- 下载成功后,解压打开,首页如下图所示- 点击注册并创建属于自己的账号,用于管理域名和端口号- 注册成功后,会通过创建的账号邮箱发送链接,点击链接即可激活账号。
此时可输入账号密码登录,这里以自己的账号为例进行演示,红色区域为已添加的隧道,新注册用户此处为空白- 在此处可以添加自己的隧道,并指定要穿透的端口和域名目前已支持 TCP 和 HTTP 的穿透,且永久免费,可满足日常开发使用。
(如对速度有特殊要求,可选择指定的收费版本,费用仅为象征性收费,用于维护和升级服务器具体收费标准,可查看市场上的工具进行比较)- 添加成功后,右侧列表会显示设定要穿透的 IP 地址,如示例中的 4此时输入指定的域名,即可使用。
若未穿透成功,请检查创建的穿透隧道是否处于启动状态2. natapp本文将介绍如何使用 natapp 实现内网穿透,官方新手教程文档地址:[https://natapp.cn/article/natapp_newbie](https://natapp.cn/article/natapp_newbie)
首先,打开 natapp 官网并注册登录账户,购买或使用免费的隧道以我购买的 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=直接屏幕输出,默认为 none
loglevel=ERROR #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUGhttp_proxy= #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空
然后双击运行 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 test() {Map 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/test
http://zero.mynatapp.cc/local/test测试成功:使用 natapp 开启内网穿透之旅