文章目录
- 1.几个基本概念
-
- [1.1 局域网](#1.1 局域网)
- [1.2 内网](#1.2 内网)
- [1.3 内网穿透](#1.3 内网穿透)
- [1.4 Natapp](#1.4 Natapp)
- 2.搭建内网穿透环境
- 3.本地服务测试
1.几个基本概念
1.1 局域网
LAN(Local Area Network,局域网)是一个可连接住宅,学校,实验室,大学校园或办公大楼等有限区域内计算机的计算机网络。
1.2 内网
内网是指内部局域网,也就是说内网一般是用于局域网内部的计算机之间的互相通信,不与外部网络连接进行通信的意思。
一些不对外开发的功能,仅允许内网访问,可提高安全性和访问速度。比如一些数据库,仅允许服务器通过内网的方式进行连接。
它可以是两台电脑组成,也可以是成百上千台电脑组成,内网的传输速度更快。延迟性比较低,支持的传输介质也比较丰富。
1.3 内网穿透
内网穿透,即 NAT(Network Address Translation,网络地址转换)穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。
1.4 Natapp
Natapp 是一款商业化的内网穿透工具,它提供了简单易用的界面和功能,可以帮助用户将内部网络中的服务暴露给公网访问。
Natapp 提供了跨平台的客户端和服务器端,用户可以通过在客户端配置映射规则,将内部服务映射到公网上的一个临时域名上,从而实现对内部服务的远程访问。
2.搭建内网穿透环境
在项目开发阶段我们可以把项目部署在公网能访问的云服务器上,也可以使用内网穿透工具来访问我们自己电脑上运行的测试接口。这里我们使用 natapp 作为内网穿透工具。
-
⾸先在本站注册账号:https://natapp.cn/register;
-
登录后,点击左边"购买隧道",免费/付费均可;
-
根据需要选择隧道协议,这⾥以
web
演示,购买隧道; -
本机建立 web 服务,使用 IDEA 启动 springboot 项目,保证服务监听的端口号是购买的免费隧道所设置的端口号;
-
根据本机操作系统下载对应的客户端;
-
下载之后,解压至任意目录,得到 natapp.exe(Linux 下无需解压,直接 wget)。
-
复制 authtoken 值,这个 authtoken 便是您的隧道登录凭证。
-
在 Linux/Mac 下 需要先使用
sudo chmod a+x natapp
命令给执行权限。如果是在 Windows 下,无需处理。 -
运行 natapp;
-
windows:在 cmd 命令台窗口进入 natapp.exe 的目录运行。
bashnatapp -authtoken=f2c62f86f2a3b0a6
-
linux:同样给予可执行权限之后,运行。
shell./natapp -authtoken=f2c62f86f2a3b0a6
-
-
运⾏成功,都可以得到如下界⾯:
那么在这里,其它人就可以通过 http://adw7qv.natappfree.cc 访问本机服务。
值得注意的是,这个分配到的域名是随机变化的,即每次运行 natapp.exe 分配到的域名是不同的。
3.本地服务测试
这里我启动一个简单的 SpringBoot 项目,具有以下几个简单配置:
-
maven 依赖
xml<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
-
application.yml
yamlserver: port: 8090
-
访问路径
java@Controller public class TestController { @GetMapping("/fox") public void fox(HttpServletResponse response) throws IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); out.print("欢迎来到<a href=\"https://www.zhulang.love\" target=\"_blank\">狐狸半面添的客栈</a>,持续的实战开发技术分享与编程指南。"); out.flush(); out.close(); } @GetMapping("/") public void root(HttpServletResponse response) throws IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); out.print("欢迎关注<a href=\"https://blog.csdn.net/qq_62982856\" target=\"_blank\">我的CSDN</a>,持续的实战开发技术分享与编程指南。"); out.flush(); out.close(); } }
启动该服务,在本地可以通过 http://localhost:8090 与 http://localhost:8090/fox 成功访问后,再在外网环境下进行测试。最简单的办法就是让别人通过你获取的随机域名进行访问访问。那我这里就是通过以下两个路径进行访问我的两个接口: