xdcs100 / neutrino-proxy

中微子代理(内网穿透)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

star fork license MIT

1、简介

2、名称由来

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

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

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

3、运行示例

首页 用户管理 端口池管理 License管理 端口映射管理

4、项目结构

  • neutrino-proxy
    • 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、修改服务端配置(app.yml)

application:
  name: neutrino-proxy-server

neutrino:
  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
    tunnel:
      boss-thread-count: 2
      work-thread-count: 10
      # 服务端端口,用于保持与客户端的连接,非SSL
      port: ${OPEN_PORT:9000}
      # 服务端端口,用于保持与客户端的连接,SSL,需要jks证书文件,若不需要ssl支持,可不配置
      ssl-port: ${SSL_PORT:9002}
      # 证书配置,用于隧道通信SSL加密
      key-store-password: ${STORE_PASS:123456}
      key-manager-password: ${MGR_PASS:123456}
      jks-path: ${JKS_PATH:classpath:/test.jks}
    server:
      boss-thread-count: 5
      work-thread-count: 20
      # HTTP代理端口,默认80,也可以用其他端口,走nginx转发
      http-proxy-port: ${HTTP_PROXY_PORT:80}
      # HTTPS代理端口,默认443,也可以用其他端口,走nginx转发
      https-proxy-port: ${HTTPS_PROXY_PORT:443}
      # 如果不配置,则不支持域名映射
      domain-name: ${DOMAIN_NAME:}
      # 证书配置,用于支持HTTPS
      key-store-password: ${HTTPS_STORE_PASS:}
      jks-path: ${HTTPS_JKS_PATH:}
    data:
      # 数据库配置(支持mysql)
        type: sqlite
        url: jdbc:sqlite:data.db
        driver-class: org.sqlite.JDBC
        username:
        password:

5.3、启动服务端

java -jar neutrino-proxy-server.jar

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

5.5、代理示意图

代理流程

5.6、启动客户端

5.6.1、启动参数直接指定配置

java -jar neutrino-proxy-client.jar serverIp=localhost serverPort=9000 licenseKey=b0a907332b474b25897c4dcb31fc7eb6

5.6.2、启动参数指定外部配置文件

java -jar neutrino-proxy-client.jar config=app.properties

配置文件格式如下:

neutrino.proxy.client.server-ip=localhost
neutrino.proxy.client.server-port=9002
neutrino.proxy.client.ssl-enable=true
neutrino.proxy.client.key-store-password=123456
neutrino.proxy.client.jks-path=classpath:/test.jks
neutrino.proxy.client.license-key=b0a907332b474b25897c4dcb31fc7eb6

5.7、Docker快速启动

    # 一键部署前端和后端,客户端按上方部署即可
    docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 -d --name neutrino registry.cn-hangzhou.aliyuncs.com/asgc/aoshiguchen-docker-images:1.64
    # 如没docker环境,可以一键部署docker环境(centos 7.8)系统
    curl http://www.wangke666.cn/static/createDocker.sh | bash    

6、演示环境

可使用分配好的游客license试用。服务器带宽较低,仅供学习使用!

7、未来迭代方向

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

8、技术文档

9、联系我们

10、贡献者列表

❤️ 感谢

JenBrains logo

📚 Dromara 成员项目

一个轻量级的分布式日志标记追踪神器,10分钟即可接入,自动对日志打标签完成微服务的链路追踪 轻量,快速,稳定,可编排的组件式流程引擎 小而全的Java工具类库,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 一个轻量级 java 权限认证框架,让鉴权变得简单、优雅! 高性能一站式分布式事务解决方案。 强一致性分布式事务解决方案。

可靠消息分布式事务解决方案。 一站式问题定位平台,以agent的方式无侵入接入应用,完整集成arthas功能模块,致力于应用级监控,帮助开发人员快速定位问题 业界领先的身份管理和认证产品 Forest能够帮助您使用更简单的方式编写Java的HTTP客户端 一款简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 面向 REST API 的高性能认证鉴权框架

傻瓜级ElasticSearch搜索引擎ORM框架 Northstar盈富量化交易平台 易用友好的云监控系统 Idea 版 Postman,为简化调试API而生 开源分布式云原生架构一站式解决方案 企业生产级百亿日PV高可用可拓展的RPC框架。

配置极简功能强大的异步任务动态编排框架 基于配置中心的轻量级动态可监控线程池 一个用搭积木的方式构建pdf的框架(基于pdfbox) 一个专门用于图片合成的工具,没有很复杂的功能,简单实用,却不失强大 Dante-Cloud 是一款企业级微服务架构和服务能力开发平台。 让每一位开源爱好者,体会到开源的快乐。

About

中微子代理(内网穿透)

License:MIT License


Languages

Language:Java 51.2%Language:Vue 30.8%Language:JavaScript 12.4%Language:SCSS 2.1%Language:CSS 1.8%Language:Shell 0.6%Language:Stylus 0.3%Language:HTML 0.3%Language:Batchfile 0.3%Language:Dockerfile 0.2%