Skip to content

Latest commit

 

History

History
130 lines (83 loc) · 2.86 KB

File metadata and controls

130 lines (83 loc) · 2.86 KB

EasyConnect 设计

功能设计

核心功能

已确认的功能将会在此标记

  • 去中心化

  • 端口转发 (TCP/UDP)

  • 负载均衡/故障转移

  • 前向保密

  • 支持 TCP/UDP 互联

  • 支持 IPv4/IPv6

扩展功能

部分扩展功能将会在此标记

  • ❏ 提供 HTTP/HTTPS 路由

  • ❏ 提供外部监控

  • ❏ NAT to NAT

不会实现的功能

近期不考虑实现的功能将会在此标记

  • 多个集群互联

  • 提供Socks5/Http代理

未来计划

  • 项目转换成 Kotlin Multiplatform

系统设计

加密套件相关

  • TLS 1.3

  • X.509v3 证书

模块设计

核心模块 net-api

项目的公共API抽象

核心模块 net-core

项目的核心组件,包含有:

  • 点对点传输

  • 数据包管理

    • 数据包加/解密

    • 数据包过滤

加密模块 net-crypto

项目使用所有加密、摘要算法均在此模块实现

TCP通信模块 net-proto-tcp

基于TCP实现节点网络通信,使用 TLS 1.3 + mTLS + ESNI 实现

协议URL:
tcp+tls://<IP>:<PORT>
tcp+tls://1.1.1.1:443
tcp+tls://example.com:443
tcp+tls://[240c::6644]:443

如果不是IPv4 或 IPv6 地址将自动使用 DNS 解析

UDP通信模块 net-proto-udp

基于UDP实现节点网络通信,使用 QUIC/HTTP3 + TLS 1.3 + mTLS + ESNI 实现

协议URL:
udp+tls://<IP>:<PORT>
udp+tls://1.1.1.1:853
udp+tls://example.com:853
udp+tls://[240c::6644]:853

如果不是IPv4 或 IPv6 地址将自动使用 DNS 解析

WS通信模块 net-proto-websocket

基于 HTTP 1.1 + WebSocket 实现节点网络通信,在可信网络使用无加密实现,非可信网络使用 TLS 1.3 实现

协议URL:
wss+none://<IP>:<PORT>
wss+tls://<IP>:<PORT>
ws+tls://<IP>:<PORT>
ws+tls://1.1.1.1:853
wss+tls://example.com:853
wss+tls://[240c::6644]:853

如果不是IPv4 或 IPv6 地址将自动使用 DNS 解析,如果 WebSocket 是建立在 HTTPS/TLS 之上时将验证连接 TLS 证书合法性(通用 CA + 自签名CA)

数据包转发插件 net-plugin-forward

项目外围实现,跨节点转发数据包

服务通信插件 net-plugin-service-context

项目外围实现,基于通道实现服务管理、服务发现、服务级负载均衡、故障转移

HTTP路由插件 net-plugin-http-route

项目外围实现,绑定 Service 处理 HTTP/HTTPS请求,可将某一路径或域名请求转发至某一服务

NAT-TO-NAT插件 net-plugin-nat

项目外围实现,负责 Nat to Nat 的穿透,不保证一定成功

证书管理插件 net-plugin-cert-manager

项目外围实现,负责维护证书和自动化证书续签或撤销证书(续签证书需要配置根证书私钥)

Web控制面板插件 net-plugin-web-panel

项目外围实现,暴露 HTTP API 和 Web 控制台