Skip to content

lcxw/lunar-tunnel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lunar-tunnel

a tcp tunnel writen in java using netty

需求描述

  1. 本项目时使用netty实现的一个代理程序,包含一个公共模块包(tunnel-core),一个客户端java程序(tunnel-client),一个服务端java程序(tunnel-server)。
  2. 客户端和服务端都可以作为代理服务器,客户端可以作为代理服务器,服务端也可以作为代理服务器。
  3. 客户端和服务端可以作为代理服务器,客户端可以作为代理服务器,服务端也可以作为代理服务器。

功能清单

服务端正向代理,通过socks5协议实现socks5客户端与链接到服务器,并通过服务器的代理服务进行请求

  • 支持tcp代理
  • 支持udp代理
  • 支持http代理
  • 支持https代理
  • 支持socks4代理
  • 支持socks5代理
  • 支持tls代理

服务器反向代理,通过自定义协议实现内网穿透

功能描述

  1. 通过LengthFieldBasedFrameDecoder实现自定义的基于长度的协议传送数据
  2. 实现自定义的代理协议,包含代理类型,代理地址,代理端口,代理数据
  3. 服务器启动一个管理端口,用于支持客户端的链接,注册,注销等操作
  4. 客户端根据配置的服务器地址和端口,连接到服务器,注册自己为代理服务器,注意这里客户端可以支持将自己的服务类型(tcp/udp/stcp),地址,端口等信息提交到服务器
  5. 服务器根据配置、(数据库、以及管理端添加的信息,注意目前暂时未实现注册信息持久化到数据库),对比客户端信息是否在配置中,当客户端配置存在时候,允许客户端链接服务器,并且保存客户端channel信息,否则拒绝客户端链接并输出异常日志
  6. 当服务器配置的代理端收到链接请求后,根据链接的服务器端口号信息,匹配该端口对应的客户端链接channel信息,并将该请求转发到客户端channel中
  7. 客户端接收到服务器转发的请求后,根据请求的代理类型,地址,端口等信息,创建一个新的代理链接,将请求转发到目标地址中
  8. 客户端接收到目标地址的响应后,将响应转发到服务器中
  9. 服务器接收到客户端的响应后,将响应转发到客户端的链接中
  10. 客户端接收到服务器的响应后,将响应转发到服务器的链接中
  11. 服务器接收到客户端的响应后,将响应转发到客户端的链接中

About

a tcp tunnel writen in java using netty

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published