Skip to content

itsharex/etp

 
 

Repository files navigation

Logo
A lightweight NAT traversal reverse proxy application implemented with Netty.

✨ Introduction

etp (Easy Tunnel Proxy) is a lightweight, high-performance reverse proxy application for NAT traversal. It supports TCP, HTTP and upper-layer TCP protocols, as well as efficient and secure TLS 1.3 encryption. Both pure Toml static configuration and dynamic configuration via management interface are supported. etp enables rapid exposure of internal network services to the public internet, making them accessible for public users and development/testing purposes, while reducing the cost of purchasing public cloud servers.

🌟 Features

  • 📡 Supports TCP and HTTP protocols
  • 🔐 Utilizes efficient and secure TLS 1.3 encryption
  • 🍃 Seamlessly integrates with the Spring Boot & Cloud ecosystem
  • 🖥️ Intuitive management UI for configuration
  • 🛜 High-performance, low-latency data transfer
  • 🚀 Millisecond-level startup
  • 🔗 Automatic reconnection
  • 🔐 Authentication
  • 🐒 Supports multiple clients
  • 🧿 Automatic port allocation for mapping
  • 📄 Supports pure Toml configuration and web UI configuration
  • 📺 Cross-platform, compatible with arm64 and amd64 architectures
  • 💨 Lightweight with low resource consumption

🎨 Dashboard Screenshots

In addition to supporting pure Toml static configuration, etp also provides a graphical management interface for easy operation. This greatly reduces management and usage costs while offering more comprehensive features.

Login
Login Page
Dashboard
Monitoring Dashboard
Client List
Client List
Add Mapping
Add Mapping
Mapping List
Mapping List
Traffic Statistics
Traffic Statistics

🚀 Quick Start

Download the appropriate release package for your operating system. The server is typically deployed on a machine with a public IP address.

🖥️ Server Setup

This demonstrates how to expose an internal MySQL service to the public network on port 3307 through simple configuration.

Edit the configuration file etps.toml and add the following content:

bindPort = 9527
[[clients]]
name = "Mac" # [Required] Custom client name
secretKey = "your client authentication key" # [Required] Custom key

[[clients.proxies]]
name = "mysql" # Service name
type = "tcp" # [Required] Network transport protocol
localPort = 3306 # [Required] Internal service port
remotePort = 3307 # [Optional] Public service port; if not specified, a port will be randomly assigned by the system

Start the etp server on a Linux server. For external access, make sure to deploy it on a machine with a public IP address.

nohup ./etps -c etps.toml > /dev/null 2>&1 &

💻 Client etpc Configuration

Edit the configuration file etpc.toml:

serverAddr = "x.x.x.x" # IP address of the server where etps is deployed
serverPort = 9527 # bindPort port of the server
secretKey = "your client authentication key" # Must match the server configuration

Start the client on an internal computer (Unix example):

./etpc -c etpc.toml # Or run in the background: nohup ./etpc -c etpc.toml > /dev/null 2>&1 &

🔔 Note: If the configuration file and executable are in the same folder, you do not need to use -c to specify the configuration.

After a successful startup, connect to MySQL using port 3307.

Feedback

To report issues: issues

📈 Project Trends

Star History

About

🛜ETP是一个内网穿透代理中间件

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 73.0%
  • HTML 13.7%
  • Shell 5.3%
  • TypeScript 2.9%
  • CSS 2.9%
  • JavaScript 2.2%