推荐一款内网穿透神器

一、项目简介

  • 中微子代理(neutrino-proxy)是一个基于netty的、开源的java内网穿透项目。遵循MIT许可,因此您可以对它进行复制、修改、传播并用于任何个人或商业行为。

  • 中微子,是轻子的一种,是组成自然界的最基本的粒子之一。它十分微小、不带电,可自由穿过地球,以接近光速运动,与其他物质的相互作用十分微弱,号称宇宙间的“隐身人”。

  • 中微子是宇宙中穿透能力最强的物质,只有粒子之间的间隙小于10的负19次方米时,才能够阻挡住中微子。

  • 因此以中微子命名,寓意着中微子代理拥有中微子"安全"、"快速"、"穿透力强"的特点。

  • 游客账号:visitor/123456

二、项目结构以及文件说明

三、亮点

  • 性能:基于netty,天然拥有netty的高性能优势

  • 学习:除netty之外,只依赖了最基本的日志、数据库驱动/连接池、json等jar包,代理层代码量非常精简。极其适合java初学者用来学习和掌握Web框架底层原理、内网穿透实现机制。

  • 调试:只需要安装jdk8,甚至连数据库都无需考虑,即可直接在本地运行服务端+客户端,调试代理流程。尽可能减少前期步骤,确保大家能更快上手。

  • 测试:针对框架层封装(如:AOP、Web容器、ORM、调度管理等),提供了丰富的测试代码。

四、项目基础组件

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

  • Node:v13.12.0

  • Java:1.8.0_351

  • Mysql:8.0.31 (非必需,使用sqlite则无需考虑数据库)

  • Nginx:1.21.4 (非必需,可直接使用服务端项目提供的静态资源服务)

五、运行

5.1 使用keytool工具生成ssl证书, 若不需要ssl加密可跳过

keytool -genkey -alias test1 -keyalg RSA -keysize 1024 -validity 3650 -keypass 123456 -storepass 123456 -keystore  "./test.jks"

5.2 修改服务端配置(application.yml)

application:  name: neutrino-proxy-server​proxy:  protocol:    max-frame-length: 2097152length-field-offset: 0length-field-length: 4    initial-bytes-to-strip: 0length-adjustment: 0read-idle-time: 60write-idle-time: 40    all-idle-time-seconds: 0  server:# 服务端端口,用于保持与客户端的连接,非SSL    port: 9000# 服务端端口,用于保持与客户端的连接,SSL,需要jks证书文件,若不需要ssl支持,可不配置    ssl-port: 9002# 证书密码    key-store-password: 123456    key-manager-password: 123456# 证书存放路径,若不想打进jar包,可不带classpath:前缀    jks-path: classpath:/test.jks   data:    # 数据库配置(不用动,项目自动会自动初始化)    sqlite:      url: jdbc:sqlite:data.db      driver-class: org.sqlite.JDBC

5.3 启动服务端

fun.asgc.neutrino.proxy.server.ProxyServer

5.4 修改客户端配置

application:  name: neutrino-proxy-client​proxy:  protocol:    max-frame-length: 2097152length-field-offset: 0length-field-length: 4    initial-bytes-to-strip: 0length-adjustment: 0read-idle-time: 60write-idle-time: 30    all-idle-time-seconds: 0  client:# ssl证书密码    key-store-password: 123456# ssl证书存放位置    jks-path: classpath:/test.jks    # 服务端ip,若部署到服务器,则配置服务器的ip    server-ip: localhost    # 服务端端口,若使用ssl,则需要配置为服务端的"ssl-port"    server-port: 9000    # 是否启用ssl,启用则必须配置ssl相关参数    ssl-enable: false    # 获取license提示间隔(秒)    obtain-license-interval: 5

5.5 启动客户端

fun.asgc.neutrino.proxy.client.ProxyClient 默认情况下,客户端会加载当前目录下的.neutrino-proxy.license里的license,可通过命令行参数指定,如:java -jar neutrino-proxy-client.jar license=xxx 若启动参数未指定license,且是首次启动(当前目录下未缓存license),则需要根据命令行提示输入正确的license, 输入完成后完成连接,可在服务端管理页面控制端口转发,参见2、运行示例

六、项目调试

篇幅所限,此处不便赘述管理后台相关的开发,有vue基础的童鞋基本都可以自行开发。服务端的初始化数据足够调试工作,开发过程无需单独在管理页面操作。

与SpringBoot项目类似,客户端、服务端项目均由一个入口类完成整个项目的启动,分别为ProxyClientProxyServer

内置配置采用yml风格,主要涉及Http端口、静态资源路径、协议参数、代理服务端端口、jks证书、数据源、license等。整个项目基于neutrino-core,风格类似于SpringBoot。笔者不喜欢因过分炫技而引入过多花式操作,因为项目的定位是个人开发者,且满足使用的同时兼顾学习其原理的需求。基本使用方式与SpringBoot类似,尽可能降低首次学习成本。

neutrino-core项目test目录下包含众多核心封装的测试代码,通过调试这些代码,能尽可能减少大家学习的障碍。

七、运行示例

License管理:

端口映射管理:

端口池管理:

用户管理:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员秋天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值