natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问

文章目录

  • 1.几个基本概念
    • 1.1 局域网
    • 1.2 内网
    • 1.3 内网穿透
    • 1.4 Natapp
  • 2.搭建内网穿透环境
  • 3.本地服务测试

1.几个基本概念

1.1 局域网

LAN(Local Area Network,局域网)是一个可连接住宅,学校,实验室,大学校园或办公大楼等有限区域内计算机的计算机网络。

1.2 内网

内网是指内部局域网,也就是说内网一般是用于局域网内部的计算机之间的互相通信,不与外部网络连接进行通信的意思。

一些不对外开发的功能,仅允许内网访问,可提高安全性和访问速度。比如一些数据库,仅允许服务器通过内网的方式进行连接。

它可以是两台电脑组成,也可以是成百上千台电脑组成,内网的传输速度更快。延迟性比较低,支持的传输介质也比较丰富。

1.3 内网穿透

内网穿透,即 NAT(Network Address Translation,网络地址转换)穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。

natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第1张图片

1.4 Natapp

Natapp 是一款商业化的内网穿透工具,它提供了简单易用的界面和功能,可以帮助用户将内部网络中的服务暴露给公网访问。

Natapp 提供了跨平台的客户端和服务器端,用户可以通过在客户端配置映射规则,将内部服务映射到公网上的一个临时域名上,从而实现对内部服务的远程访问。

natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第2张图片

2.搭建内网穿透环境

在项目开发阶段我们可以把项目部署在公网能访问的云服务器上,也可以使用内网穿透工具来访问我们自己电脑上运行的测试接口。这里我们使用 natapp 作为内网穿透工具。

  • ⾸先在本站注册账号:https://natapp.cn/register;

  • 登录后,点击左边“购买隧道”,免费/付费均可;

    natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第3张图片

  • 根据需要选择隧道协议,这⾥以 web 演示,购买隧道;

    natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第4张图片

  • 本机建立 web 服务,使用 IDEA 启动 springboot 项目,保证服务监听的端口号是购买的免费隧道所设置的端口号;

  • 根据本机操作系统下载对应的客户端;

    natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第5张图片

  • 下载之后,解压至任意目录,得到 natapp.exe(Linux 下无需解压,直接 wget)。

  • 复制 authtoken 值,这个 authtoken 便是您的隧道登录凭证。

    natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第6张图片

  • 在 Linux/Mac 下 需要先使用 sudo chmod a+x natapp 命令给执行权限。如果是在 Windows 下,无需处理。

  • 运行 natapp;

    • windows:在 cmd 命令台窗口进入 natapp.exe 的目录运行。

      natapp -authtoken=f2c62f86f2a3b0a6
      

      natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第7张图片

    • linux:同样给予可执行权限之后,运行。

      ./natapp -authtoken=f2c62f86f2a3b0a6
      
  • 运⾏成功,都可以得到如下界⾯:

    natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第8张图片

那么在这里,其它人就可以通过 http://adw7qv.natappfree.cc 访问本机服务。

值得注意的是,这个分配到的域名是随机变化的,即每次运行 natapp.exe 分配到的域名是不同的。

3.本地服务测试

这里我启动一个简单的 SpringBoot 项目,具有以下几个简单配置:

  • maven 依赖

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>3.1.4version>
        <relativePath/> 
    parent>
    
    <properties>
        <java.version>17java.version>
    properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    dependencies>
    
  • application.yml

    server:
      port: 8090
    
  • 访问路径

    @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("欢迎来到狐狸半面添的客栈,持续的实战开发技术分享与编程指南。");
            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("欢迎关注我的CSDN,持续的实战开发技术分享与编程指南。");
            out.flush();
            out.close();
        }
    }
    

启动该服务,在本地可以通过 http://localhost:8090 与 http://localhost:8090/fox 成功访问后,再在外网环境下进行测试。最简单的办法就是让别人通过你获取的随机域名进行访问访问。那我这里就是通过以下两个路径进行访问我的两个接口:

  • http://adw7qv.natappfree.cc/fox

    natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第9张图片

  • http://adw7qv.natappfree.cc

    natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问_第10张图片

你可能感兴趣的:(#,java开发实战知识,tcp/ip,服务器,http,内网穿透,公网)