一个用于代理和分析TCP连接的Cli工具——tproxy

作者:Sec-Labs | 发布时间:

我为什么写这个工具

当我开发后端服务并编写 go-zero 时,我经常需要监控网络流量。 例如:

  1. 监控 gRPC 连接,何时连接以及何时重新连接
  2. 监控 MySQL 连接池,有多少连接并找出生命周期策略
  3. 实时监控任何 TCP 连接

项目地址

https://github.com/kevwan/tproxy

安装

$ go install github.com/kevwan/tproxy@latest

 

或者使用 docker 镜像:

$ docker run --rm -it -p <listen-port>:<listen-port> -p <remote-port>:<remote-port> kevinwan/tproxy:v1 tproxy -l 0.0.0.0 -p <listen-port> -r host.docker.internal:<remote-port>

 

对于 arm64:

$ docker run --rm -it -p <listen-port>:<listen-port> -p <remote-port>:<remote-port> kevinwan/tproxy:v1-arm64 tproxy -l 0.0.0.0 -p <listen-port> -r host.docker.internal:<remote-port>

 

在 Windows 上,您可以使用 scoop

$ scoop install tproxy

用途

$ tproxy --help
Usage of tproxy:
  -d duration
    	the delay to relay packets
  -l string
    	Local address to listen on (default "localhost")
  -p int
    	Local port to listen on, default to pick a random port
  -q	Quiet mode, only prints connection open/close and stats, default false
  -r string
    	Remote address (host:port) to connect
  -s	Enable statistics
  -t string
    	The type of protocol, currently support grpc

 

例子

监控 gRPC 连接

$ tproxy -p 8088 -r localhost:8081 -t grpc -d 100ms
  • 监听本地主机和端口 8088
  • 将流量重定向到 localhost:8081
  • 协议类型为 gRPC
  • 每个数据包延迟 100ms

5d33cc327b211434

监控 MySQL 连接

$ tproxy -p 3307 -r localhost:3306

e7059863f6211454

 

标签:工具分享