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.
transport, listen_address, listen_port, plus optional load balancing, auth, logging, etc.
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.
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.
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"
0.0.0.0:1234 → forward to 192.168.1.200:4321.0.0.0.0:9999 → forward to 192.168.1.200:9000.[[services]] entries to run multiple proxies at once.capture=true and ssh_log to record all data for that service.Rebound is open-source. File issues for any bugs or feature requests. Contributions are welcome!