/merino

:sheep: A SOCKS5 Proxy server written in Rust

Primary LanguageRustMIT LicenseMIT

                     _
 _ __ ___   ___ _ __(_)_ __   ___
| '_ ` _ \ / _ \ '__| | '_ \ / _ \
| | | | | |  __/ |  | | | | | (_) |
|_| |_| |_|\___|_|  |_|_| |_|\___/

A SOCKS5 Proxy server written in Rust

Crates.io stego License Build Status dependency status

🎁 Features

  • Written in 100% Safe Rust
  • Multi-threaded connection handler
  • Lightweight (Less than 0.6% CPU usage while surfing the web/streaming YouTube)
  • Standalone binary (no system dependencies)
  • 1+ Gb/second connection speeds (On Gigabit LAN network over ethernet. Results may vary!)
  • Tunable logging (by flags or RUST_LOG environmental variable)
  • SOCKS5 Compatible Authentication methods:
    • NoAuth
    • Username & Password
    • GSSAPI Coming Soon!

📦 Installation & 🏃 Usage

Installation

cargo install merino

OR

git clone https://github.com/ajmwagar/merino
cd merino
cargo install --path .

OR

docker image pull ghcr.io/ajmwagar/merino:latest

Usage

# Start a SOCKS5 Proxy server listening on port 1080 without authentication
merino --no-auth

# Use username/password authentication and read users from users.csv
merino --users users.csv

# Display a help menu
merino --help

OR

docker container run --pull=always --name=merino -p=8001:8001 ghcr.io/ajmwagar/merino:latest --no-auth --port=8001

🚥 Roadmap

  • IPV6 Support
  • SOCKS5 Authentication Methods
    • NOAUTH
    • USERPASS
    • GSSAPI Coming Soon!
  • Custom plugin/middleware support
  • SOCKS5 Commands
    • CONNECT
    • BIND
    • ASSOCIATE
  • Benchmarks & Unit tests
  • Actix based backend
  • SOCKS4/SOCKS4a Support