[Open Source] MIT License, an open-source Java intranet tunneling project based on Netty
![[Open Source] MIT License, an open-source Java intranet tunneling project based on Netty](https://yy123.ink/api/img/1782590693525-0rsas9.jpg)
1. Project Overview

Introduction
- Neutrino Proxy (neutrino-proxy) is an open-source Java intranet penetration project based on Netty.
- Technology Stack: Solon, MybatisPlus, Netty
- Licensed under MIT, you are free to copy, modify, distribute, and use it for any personal or commercial purpose.
2. Open Source License
Licensed under MIT
3. Screenshots
Running Example

4. Feature Overview
A powerful intranet penetration tool based on Netty.
Origin of the Name
A neutrino is a type of lepton and one of the most fundamental particles that make up the natural world. It is extremely small, electrically neutral, and can pass freely through the Earth at nearly the speed of light. Its interactions with other matter are extremely weak, earning it the nickname 'the invisible particle of the universe.'
Neutrinos are the most penetrating particles in the universe. Only when the gaps between particles are smaller than 10 to the power of -19 meters can neutrinos be blocked.
Therefore, the name Neutrino symbolizes the proxy's characteristics of 'security,' 'speed,' and 'strong penetration,' inspired by the properties of neutrinos.
5. Tech Stack
Project Structure
- neutrino-proxy
- neutrino-proxy-core: Common constants and codecs related to the proxy
- neutrino-proxy-client: Proxy client project
- neutrino-proxy-server: Proxy server project
- neutrino-proxy-admin: Proxy monitoring project (developed based on vue-element-admin)
5. Running
5.1. Use the keytool utility to generate an SSL certificate. Skip this step if SSL encryption is not required.
keytool -genkey -alias test1 -keyalg RSA -keysize 1024 -validity 3650 -keypass 123456 -storepass 123456 -keystore "./test.jks"
5.2. Modify the server configuration (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
# Server port used to maintain the connection with the client, non-SSL
port: ${OPEN_PORT:9000}
# Server port used to maintain the connection with the client, SSL. A JKS certificate file is required. Omit this setting if SSL support is not needed.
ssl-port: ${SSL_PORT:9002}
# Certificate configuration for SSL encryption of tunnel communications
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 proxy port, default is 80. Other ports can also be used with Nginx forwarding.
http-proxy-port: ${HTTP_PROXY_PORT:80}
# HTTPS proxy port, default is 443. Other ports can also be used with Nginx forwarding.
https-proxy-port: ${HTTPS_PROXY_PORT:443}
# Domain mapping is not supported if this setting is omitted.
domain-name: ${DOMAIN_NAME:}
# Certificate configuration for HTTPS support
key-store-password: ${HTTPS_STORE_PASS:}
jks-path: ${HTTPS_JKS_PATH:}
data:
# Database configuration (MySQL supported)
type: sqlite
url: jdbc:sqlite:data.db
driver-class: org.sqlite.JDBC
username:
password:
5.3. Start the Server
java -jar neutrino-proxy-server.jar
5.4. Modify the Client Configuration
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 certificate password
key-store-password: 123456
# SSL certificate location
jks-path: classpath:/test.jks
# Server IP; if deployed on a server, configure the server's IP address
server-ip: localhost
# Server port; if SSL is enabled, configure this to the server's "ssl-port"
server-port: 9000
# Whether to enable SSL; if enabled, SSL-related parameters must be configured
ssl-enable: false
5.5. Proxy Architecture Diagram

5.6. Start the Client
5.6.1. Specify Configuration Directly Through Startup Parameters
java -jar neutrino-proxy-client.jar serverIp=localhost serverPort=9000 licenseKey=b0a907332b474b25897c4dcb31fc7eb6
5.6.2. Specify an External Configuration File Through Startup Parameters
java -jar neutrino-proxy-client.jar config=app.properties
The configuration file format is as follows:
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. Quick Start with Docker
# Deploy the frontend and backend with one command. Deploy the client as described above.
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
# If Docker is not installed, use the following command to install Docker on CentOS 7.8 with one click.
curl [http://www.wangke666.cn/static/createDocker.sh](http://www.wangke666.cn/static/createDocker.sh) | bash
Future Development Plans
- Optimize the code and improve stability
- Add an administration panel to the server, providing features such as reports, authorization, and rate limiting
- Extract and incubate another open-source project (neutrino-framework) from this project
Thanks
- Solon
- Hutool
- JetBrains