设为首页 加入收藏

TOP

【新晋开源项目】内网穿透神器[中微子代理] 加入 Dromara 开源社区(一)
2023-07-26 08:16:02 】 浏览:74
Tags:项目 加入 Dromara

1、关于作者

  • dromara开源组织成员,dromara/neutrino-proxy项目作者
  • 名称:傲世孤尘、雨韵诗泽
  • 名言:
    • 扎根土壤,心向太阳。积蓄能量,绽放微光。
    • 拘浊酒邀明月,借赤日暖苍穹。喻万物为星斗,化沧海成诗篇。
    • 还生命以坦然,遗沧海以一笑。
  • 微信号:yuyunshize
  • Gitee: gitee.com/asgc

2、项目简介

  • 中微子代理(neutrino-proxy) 是一款基于netty的内网穿透神器。该项目采用最为宽松的MIT协议,因此您可以对它进行复制、修改、传播并用于任何个人或商业行为。
  • 演示环境:
  • 该开源版本针对开发者个人,不提供任何付费服务。上面提供的地址、账号仅用于演示,已提供现成的license供大家测试。
  • 市面上基于内网穿透的常见产品有:花生壳、TeamView、cpolar等。
  • 该项目的目标是打开内网穿透功能黑盒,让更多感兴趣的朋友能更简单、低成本的掌握内网穿透技术。
  • 学习、使用过程中,有任何问题都可以通过微信(通过上面的微信号,或扫描结尾的二维码)与笔者联系。同时,若该项目对您有所帮助,也请大家不吝转发推荐。

3、目录&文件说明

├── data.db 'sqlite数据库文件。若未配置mysql,默认使用sqlite,项目首次启动会自动初始化sqlite数据库。 ├── docs '项目相关的一些文档 ├── ├── Aop.MD '框架层Aop机制、使用说明 ├── └── Channel.MD '内网穿透实现原理、代理实现流程说明 ├── lib '项目开启了将自动生成的类保存到本地后,运行过程中动态生成的类自动保存到此处,方便学习、调试 ├── neutrino-core '一套手写的基于netty的框架,相当于简易版的SpringBoot + Mybatis + xxljob,计划后期分离为单独开源项目维护 ├── neutrino-proxy-admin '基于vue-element-admin开发的一个管理系统,用于可视化操作端口映射、代理数据实时监控 ├── neutrino-proxy-client '基于netty的代理客户端,用于和服务端交互、转发内网数据 ├── neutrino-proxy-core '代理相关的公共代码(协议、常量) ├── neutrino-proxy-server '基于netty的代理服务端,用于和客户段交互,将客户端转发的内网数据转发至外网端口 └── todolist.MD '近期的开发计划 复制代码

4、项目亮点

  • 性能:基于netty,天然拥有netty的高性能优势
  • 学习:除netty之外,只依赖了最基本的日志、数据库驱动/连接池、json等jar包,代理层代码量非常精简。极其适合java初学者用来学习和掌握Web框架底层原理、内网穿透实现机制。
  • 调试:只需要安装jdk8,甚至连数据库都无需考虑,即可直接在本地运行服务端+客户端,调试代理流程。尽可能减少前期步骤,确保大家能更快上手。
  • 测试:针对框架层封装(如:AOP、Web容器、ORM、调度管理等),提供了丰富的测试代码。

5、运行环境

以下版本均为笔者开发时实际的使用版本

  • Node:v13.12.0
  • Java:1.8.0_351
  • Mysql:8.0.31 (非必需,使用sqlite则无需考虑数据库)
  • Nginx:1.21.4 (非必需,可直接使用服务端项目提供的静态资源服务)

6、使用方法

6.1、打包

可直接前往Gitee仓库发行版页面下载所需版本已打好的包。 若需手动打包,则可参照下面的执行命令:

# 服务端打包 mvn clean install -U -pl neutrino-proxy-server -am -Dmaven.test.skip=true # 客户端打包 clean install -U -pl neutrino-proxy-client -am -Dmaven.test.skip=true # 管理后台前端项目打包(本地环境,local改为dev则为dev环境,同时需要修改config目录下面的环境配置) npm run build:local 复制代码

6.2、部署

6.2.1、服务端部署

使用常规的jar包部署方式即可,如:java -jar xxxx

6.2.2、管理后台部署

Nginx方式部署(推荐):

server {
        listen 9527;
        server_name localhost;

	#开启gzip gzip on; #低于1kb的资源不压缩 gzip_min_length 1k; #压缩级别1-9,越大压缩率越高,同时消耗cpu资源也越多,建议设置在5左右。 gzip_comp_level 5; #需要压缩哪些响应类型的资源,多个空格隔开。不建议压缩图片. gzip_types text/plain application/java script application/x-java script text/java script text/xml text/css; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持) gzip_disable "MSIE [1-6]\."; #是否添加“Vary: Accept-Encoding”响应头 gzip_vary on; location / { root /work/projects/neutrino-proxy-server/neutrino-proxy-admin/dist; try_files $uri $uri/ /index.html; add_header Last-Modified $date_gmt; } } 复制代码

在没有Nginx时,为了快速体验代理效果,可直接使用服务端项目提供的静态资源服务。 直接将neutrino-proxy-admin打包后的文件解压放在neutrino-proxy-server.jar同级别目录下即可。 例如:服务端配置的web端口为8080,则访问http://服务端IP:8080, 则会直接解析渲染neutrino-proxy-server.jar同级别目录下neutrino-proxy-admin/dist/index.html

需要注意的是,使用服务端自带的静态资源服务时,由于框架目前未支持缓存、gzip压缩,所以访问速度没有使用nginx快,正式使用推荐用nginx。

6.3、配置

6.3.1、配置端口池

端口池的作用是将代理服务需要对外暴露的端口进行集中管理,方便安全组设置时统一操作。

本项目为了简化首次配置,默认初始化数据会将9101~9120的所有端口加入端口池。 可以在服务端项目sql配置(port_pool.data.sql文件)中自行修改初始化数据,也可以运行后在端口池管理页面手动维护。

首次使用如果为了快速体验,建议直接使用默认端口池,则无需任何配置。

6.3.2、配置用户

用户是登录管理后台的身份主体,同时也是持有license的身份主体,用于支持代理连接的合法性认证。

本项目为了简化首次配置,默认初始化admin、visitor两个用户,默认密码为123456。 可以在服务端项目sql配置(user.data.sq

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇你只会用 xxl-job?一款更强大、.. 下一篇如何通过Java代码向Word文档添加..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目