A tunneling proxy based on SOCKS5 and Websocket, in Rust
- Can run as a local SOCKS5 proxy, directally connect to Internet
- Can run as a remote proxy, use Rocks protocol and directally connect to Internet
- Can run as a local SOCKS5 proxy, and use Rocks protocol to connect to the remote proxy
- HTTPS+WebSocket protocol based
- No custom encryption algorithms
- Allow to configure a "login" page for random HTTPS clients, where the login always fail
- Use standard JWT authentication
Feature | Status |
---|---|
Run as local SOCKS5 client (direct) | Ready to use |
Run as remote Rocks server | Planning |
Run as local SOCKS client (rocks) | Not started |
For windows, download rustup-init.exe.
For Linux or MacOS, run the following command in a console:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
For more information, check rustup.rs
In a console, enter the working folder and run the following command to build:
cargo build
Then you can run rocks with
cargo run
If you want to see more logging/debugging information, in Linux/MacOS run
RUST_LOG=debug cargo run
(set the value to info
outputs less information)
In windows you need to
$env:RUST_LOG="info"
cargo run
(Note: all subsequence cargo run
will automatically output the log)
To make testing easier, a simple Dockerfile was created to test the code in a container.
To build the docker image run
docker build -t rocks:latest .
To run a docker container run
docker run -p 8443:8443 rocks:latest
Please let me know your thoughts or advises. You can post them in the issues. Thank you very much!