推荐一款内网穿透神器
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、项目简介
中微子代理neutrino-proxy是一个基于netty的、开源的java内网穿透项目。遵循MIT许可因此您可以对它进行复制、修改、传播并用于任何个人或商业行为。
中微子是轻子的一种是组成自然界的最基本的粒子之一。它十分微小、不带电可自由穿过地球以接近光速运动与其他物质的相互作用十分微弱号称宇宙间的“隐身人”。
中微子是宇宙中穿透能力最强的物质,只有粒子之间的间隙小于10的负19次方米时,才能够阻挡住中微子。
因此以中微子命名寓意着中微子代理拥有中微子"安全"、"快速"、"穿透力强"的特点。
管理后台地址:http://103.163.47.16:9527
游客账号: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-serverproxy: 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-clientproxy: 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项目类似客户端、服务端项目均由一个入口类完成整个项目的启动分别为ProxyClient、ProxyServer。
内置配置采用yml风格主要涉及Http端口、静态资源路径、协议参数、代理服务端端口、jks证书、数据源、license等。整个项目基于neutrino-core风格类似于SpringBoot。笔者不喜欢因过分炫技而引入过多花式操作因为项目的定位是个人开发者且满足使用的同时兼顾学习其原理的需求。基本使用方式与SpringBoot类似尽可能降低首次学习成本。
neutrino-core项目test目录下包含众多核心封装的测试代码通过调试这些代码能尽可能减少大家学习的障碍。
七、运行示例
License管理:
端口映射管理:
端口池管理:
用户管理: