内网穿透服务、局域网映射到公网,不用写代码轻松实现,安装即使用,基于netty io 实现服务转发与映射,项目封装为 jar 包,可供二次开发和项目集成,比向日葵、nat123、ngrok更有可控性

内网穿透服务、局域网映射到公网,不用写代码轻松实现,安装即使用,基于netty io 实现服务转发与映射,项目封装为 jar 包,可供二次开发和项目集成,比向日葵、nat123、ngrok更有可控性。

前期准备

1、一个tomcat服务器,可去官网下载,这里准备了一个包含所有平台的版本,
下载地址:https://download.csdn.net/download/u014374009/11968902,点击下载

2、内网穿透war包,核心文件,
下载地址:https://download.csdn.net/download/u014374009/11968863 ,点击下载

3、一台服务器,带有公网IP;

4、内网的电脑若干,至少一台;

使用步骤

服务器

1、在服务器上安装搭建好tomcat环境(首先需要安装JDK),之后把natx.war包文件复制到tomcat的webapp目录下,启动tomcat。

2、验证,在浏览器输入网址:http://localhost:8080/natx/
出现下面的界面,表示启动成功!
在这里插入图片描述

3、开启内网穿透服务,在浏览器输入网址:http://localhost:8080/natx/server/startNat?port=9090&password=123456
其中,port 表示你要开启服务的端口号,password 表示客户端使用服务时候需要提供的密码验证,这两个参数都可以根据自己需要进行修改。
出现下面的界面,表示服务端启动成功!

在这里插入图片描述
4、关闭内网穿透服务,在浏览器输入网址:http://localhost:8080/natx/server/endNat ,即可关闭内网穿透服务。

客户端

1、在内网(即局域网)的电脑上安装搭建好tomcat环境(首先需要安装JDK),之后把natx.war包文件复制到tomcat的webapp目录下,启动tomcat。

2、验证,在浏览器输入网址:http://localhost:8080/natx/
出现下面的界面,表示启动成功!
在这里插入图片描述
3、连接内网穿透服务,实现局域网电脑可以在任何地方访问,在浏览器输入网址:http://localhost:8080/natx/client/startNat?serverAddr=10.136.78.25&serverPort=9090&password=123456&proxyAddr=127.0.0.1&proxyPort=3306&remotePort=9999

参数说明:
serverAddr=10.136.78.25,这个是上面公网服务器的IP地址,通过查看服务器IP地址获得;
serverPort=9090,这个是上面服务器开启服务设定的端口号;
password=123456,这个是连接服务器需要提供的密码;
proxyAddr=127.0.0.1,这个是内网电脑地址,也可以写成 localhost ;
proxyPort=3306,这个是内网电脑需要代理的端口号;
remotePort=9999,这个是公网服务器和内网电脑的映射端口;

这些参数都可以根据自己需要进行修改。
出现下面的界面,表示服务端启动成功!
在这里插入图片描述请求成功后,通过输入公网IP地址+端口号,即可实现对内网电脑的访问;
比如,上面的配置,可以通过下面的地址访问:
http://10.136.78.25:9999
即可实现对内网电脑3306端口的访问,从而实现本地电脑资源在公网上呈现。

4、关闭内网穿透服务,在浏览器输入网址:http://localhost:8080/natx/client/endNat?remotePort=9999 ,即可关闭内网穿透服务。

消息模板

可以发现每次请求都返回的是 json 数据,在这里提供一下消息模板的代码,方便有需要的进行二次开发,或者集成到相关的项目中。通过 json 可以直接把返回的信息转换为下面的消息实体。

package com.ycj.natx.response;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * @author: Frank
 * @email [email protected]
 * @date: 2019/11/4
 * @time: 9:01
 * @fuction: 消息模板,主要对用户的请求进行响应返回。
 */
public class Response {
    public int code;
    public String msg;
    public Object data;
    public int count;

    public Response(){
        this.code = 0;
        this.msg = "";
        this.data = new Object();
    }
    public Response message( String m ){
        this.msg = m;
        return this;
    }

    public Response count( int m ){
        this.count = m;
        return this;
    }

    public Response data( Object data ){
        this.data = data;
        return this;
    }
    public String fail(){
        this.code = 1;
        return Response.toJSON(this);
    }
    public String fail(String msg){
        this.message(msg);
        this.code = 1;
        return Response.toJSON(this);
    }
    public String success(){
        this.code = 0;
        return Response.toJSON(this);
    }

    public static String toJSON(Response as){
        return JSON.toJSONString(as, SerializerFeature.WriteMapNullValue);
    }
}

发布了52 篇原创文章 · 获赞 37 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u014374009/article/details/102995953