中微子代理(内网穿透)
Go to file
2022-10-12 20:28:24 +08:00
assets 更新README.MD 2022-09-11 14:40:57 +08:00
docs aop部分代码精简 2022-07-01 10:44:38 +08:00
neutrino-core 优化HttpRequestHandler处理逻辑 2022-10-12 18:18:54 +08:00
neutrino-proxy-admin 1、增加报警状态 2022-09-28 23:10:06 +08:00
neutrino-proxy-client 更新client打包配置,优化http路由逻辑 2022-10-12 17:19:59 +08:00
neutrino-proxy-core 客户端设置license逻辑优化 2022-09-04 22:35:34 +08:00
neutrino-proxy-server 解决license数据删除后,端口映射管理异常的问题 2022-10-12 20:28:24 +08:00
.gitignore 更新gitignore,忽略运行时自动生成的代码 2022-09-08 15:47:45 +08:00
LICENSE 第一个基本可用版本 2022-06-16 17:42:19 +08:00
pom.xml . 2022-07-29 00:33:08 +08:00
README.md 更新README.MD 2022-09-11 14:58:04 +08:00
todolist.MD 更新todolist 2022-09-22 23:59:35 +08:00

1、简介

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

2、名称由来

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

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

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

3、运行示例

用户管理 端口池管理 License管理 端口映射管理 客户端启动示例

4、项目结构

  • neutrino-proxy
    • neutrino-core 与代理无关的基础封装
    • neutrino-proxy-core 与代理相关的公共常量、编解码器
    • neutrino-proxy-client 代理客户端项目
    • neutrino-proxy-server 代理服务端项目
    • neutrino-proxy-admin 代理监控项目基于vue-element-admin开发

5、运行

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: 2097152
    length-field-offset: 0
    length-field-length: 4
    initial-bytes-to-strip: 0
    length-adjustment: 0
    read-idle-time: 60
    write-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: 2097152
    length-field-offset: 0
    length-field-length: 4
    initial-bytes-to-strip: 0
    length-adjustment: 0
    read-idle-time: 60
    write-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、运行示例

6、未来迭代方向

  • 优化代码、增强稳定性
  • 服务端增加管理页面,提供报表、授权、限流等功能
  • 从项目中分离、孵化出另一个开源项目(neutrino-framework)

7、技术文档

8、联系我们

9、特别鸣谢

JenBrains logo