tproxy
                                
                                
                                
                                    tproxy copied to clipboard
                            
                            
                            
                        A cli tool to proxy and analyze TCP connections.
tproxy
English | 简体中文
Why I wrote this tool
When I develop backend services and write go-zero, I often need to monitor the network traffic. For example:
- monitoring gRPC connections, when to connect and when to reconnect
 - monitoring MySQL connection pools, how many connections and figure out the lifetime policy
 - monitoring any TCP connections on the fly
 
Installation
$ go install github.com/kevwan/tproxy@latest
Or use docker images:
$ 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>
For 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>
On Windows, you can use scoop:
$ scoop install tproxy
Usages
$ 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
Examples
Monitor gRPC connections
$ tproxy -p 8088 -r localhost:8081 -t grpc -d 100ms
- listen on localhost and port 8088
 - redirect the traffic to 
localhost:8081 - protocol type to be gRPC
 - delay 100ms for each packets
 
Monitor MySQL connections
$ tproxy -p 3307 -r localhost:3306
Check the connection reliability (Retrans rate and RTT)
$ tproxy -p 3307 -r remotehost:3306 -s -q
Give a Star! ⭐
If you like or are using this project, please give it a star. Thanks!
