Rebound 0.3.2

A single proxy solution for TCP, UDP, and now a fully-functional SOCKS5 server. Using a simple config.toml, you can define multiple services, each specifying a listening address/port and a destination or, in the case of SOCKS5, allow the client to pick any remote host/port. Built with Rust and powered by Tokio, Rebound efficiently handles many connections simultaneously.

Technical Highlights

Usage

Build Rebound with cargo build --release. Then run:

./target/release/rebound

By default, Rebound looks for config.toml in the current directory. If hot_reload is enabled, any changes to config.toml take effect automatically.

SSH Capture Feature

For TCP services, Rebound supports an optional capture mode. When enabled, Rebound logs all data to the file specified by ssh_log. This is especially useful for forwarding SSH while recording activity.

Sample config.toml

[rebound]
hot_reload = true

[metrics]
enabled = true
port = 9090
endpoint = "/metrics"

[webui]
enabled = true
listen_address = "0.0.0.0"
listen_port = 8081
username = "admin"
password = "ui-secret"

[[services]]
transport = "tcp"
listen_address = "0.0.0.0"
listen_port = 22
destination_address = "192.168.1.100"
destination_port = 22
capture = true
ssh_log = "ssh_capture.log"

[[services]]
transport = "socks5"
listen_address = "0.0.0.0"
listen_port = 1080
auth_enabled = true
auth_user = "socksuser"
auth_pass = "sockspass"
    

Examples

Support & Contributions

Rebound is open-source. File issues for any bugs or feature requests. Contributions are welcome!