Skip to content

43h/tproxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tproxy

一个轻量级透明代理工具,在一些限制设备(如:VPN设备禁用代理)上实现 TCP 流量转发。

功能简介

  • 透明代理: Linux客户端通过TPROXY拦截流量
  • 流量转发: 将拦截的流量转发到服务端
  • 目标还原: 服务端根据原始目标地址建立真实连接

架构流程

流量代理流程图

                              tproxy 透明代理架构
                              
┌─────────────────┐                                    ┌─────────────────┐
│                 │                                    │                 │
│  客户端应用程序  │                                    │   目标服务器     │
│  (Any TCP App)  │                                    │  (Real Server)  │
│                 │                                    │                 │
└────────┬────────┘                                    └────────▲────────┘
         │                                                      │
         │ ① TCP 连接                                           │ ⑤ 建立真实连接
         │                                                      │
         ▼                                                      │
┌─────────────────────────────────────────────────┐            │
│         Linux 主机 (192.168.3.2)                │            │
│  ┌──────────────────────────────────────────┐   │            │
│  │  TPROXY 透明代理                          │   │            │
│  │  (iptables TPROXY rules)                 │   │            │
│  └───────────────┬──────────────────────────┘   │            │
│                  │ ② 拦截并重定向                │            │
│                  ▼                              │            │
│  ┌──────────────────────────────────────────┐   │            │
│  │  tproxy-client (监听 :8080)              │   │            │
│  │                                          │   │            │
│  │  • 接收 TPROXY 连接                       │   │            │
│  │  • 获取原始目标地址 (SO_ORIGINAL_DST)     │    │            │
│  │  • 维护本地连接                           │    │            │
│  │  • 双向数据转发                           │    │            │
│  └───────────────┬──────────────────────────┘    │            │
│                  │                               │            │
└──────────────────┼───────────────────────────────┘            │
                   │ ③ 复用 TCP 连接                             │
                   │ (二进制协议)                                │
                   │                                            │
                   │ • Connect 消息 (UUID + 目标地址)            │
                   │ • Data 消息 (UUID + 数据)                  │
                   │ • Disconnect 消息 (UUID)                   │
                   │                                            │
                   ▼                                            │
┌─────────────────────────────────────────────────┐            │
│         Windows 主机 (192.168.3.3)               │            │
│  ┌──────────────────────────────────────────┐   │            │
│  │  tproxy-server (监听 :8080)              │   │            │
│  │                                          │   │            │
│  │  • 接收客户端连接                         │   │            │
│  │  • 解析消息协议                           │   │            │
│  │  • 管理连接映射 (UUID -> Conn)            │   │ ④ 解析目标地址  │
│  │  • 建立到真实服务器的连接                  │───┼────────────┘
│  │  • 双向数据转发                           │   │
│  └──────────────────────────────────────────┘   │
│                                                 │
└─────────────────────────────────────────────────┘


数据流向:
  ① 客户端应用 → TPROXY
  ② TPROXY → tproxy-client (本地 :8080)
  ③ tproxy-client → tproxy-server (复用连接)
  ④ tproxy-server 解析原始目标地址
  ⑤ tproxy-server → 真实目标服务器
  
返回数据: ⑤→④→③→②→①

许可证

LICENSE 文件。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published