/brook

Brook is a cross-platform(Linux/MacOS/Windows/Android/iOS) proxy software

Primary LanguageGoGNU General Public License v3.0GPL-3.0

Brook

Build Status Go Report Card License: GPL v3 Wiki

Brook


New features (v20171111)

  • New Brook Protocol, TCP/UDP full supported
  • Brook Stream Protocol, TCP/UDP full supported
  • Shadowsocks Protocol, TCP/UDP full supported

Breaking change (v20171111)

  • Rename orignal brook protocol to Brook Stream, $ brook streamserver, $ brook streamclient. Music removed
  • Many command arguments changed
  • If you use shadowsocks protocol on Brook Android, your shadowsocks server must full support UDP
  • Thanks to shdowsocks AEAD

Table of Contents

What is Brook

Brook is a cross-platform(Linux/MacOS/Windows/Android/iOS) proxy/vpn software.
Brook's goal is to reduce the configuration steps. Keep it simple, stupid.

Download

Download Server/Client OS Arch Remark
brook Server & Client Linux amd64 CLI
brook_linux_386 Server & Client Linux 386 CLI
brook_linux_arm64 Server & Client Linux arm64 CLI
brook_linux_arm5 Server & Client Linux arm5 CLI
brook_linux_arm6 Server & Client Linux arm6 CLI
brook_linux_arm7 Server & Client Linux arm7 CLI
brook_macos_amd64 Server & Client MacOS amd64 CLI
brook_windows_amd64.exe Server & Client Windows amd64 CLI
brook_windows_386.exe Server & Client Windows 386 CLI
Brook.app.zip Client MacOS amd64 GUI
Brook.app.white.zip Client(white icon) MacOS amd64 GUI
Brook.exe Client Windows amd64 GUI
Brook.white.exe Client(white icon) Windows amd64 GUI
Brook.386.exe Client Windows 386 GUI
Brook.386.white.exe Client(white icon) Windows 386 GUI
App Store Client iOS - GUI
Google Play / Brook.apk Client Android - GUI

See wiki for more tutorials

Server

NAME:
   Brook - A Cross-Platform Proxy Software

USAGE:
   brook [global options] command [command options] [arguments...]

VERSION:
   20171113

AUTHOR:
   Cloud <cloud@txthinking.com>

COMMANDS:
     server         Run as server mode
     servers        Run as multiple servers mode
     client         Run as client mode
     streamserver   Run as server mode
     streamservers  Run as multiple servers mode
     streamclient   Run as client mode
     ssserver       Run as shadowsocks server mode, fixed method is aes-256-cfb
     ssservers      Run as shadowsocks multiple servers mode, fixed method is aes-256-cfb
     ssclient       Run as shadowsocks client mode, fixed method is aes-256-cfb
     socks5         Run as raw socks5 server
     relay          Run as relay mode
     relays         Run as multiple relays mode
     qr             Print brook server QR code
     socks5tohttp   Convert socks5 to http proxy
     help, h        Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug, -d               Enable debug
   --listen value, -l value  Listen address for debug (default: ":6060")
   --help, -h                show help
   --version, -v             print the version

Brook Server

# Run as a brook server
$ brook server -l :9999 -p password
# Run as a brook stream server
$ brook streamserver -l :9999 -p password
# Run as multiple brook servers
$ brook servers \
        -l ":9999 password" \
        -l ":8888 password"

Shadowsocks Server

# Run as a shadowsocks server
$ brook ssserver -l :9999 -p password
# Run as multiple shadowsocks servers
$ brook ssservers \
        -l ":9999 password" \
        -l ":8888 password"

Fixed method is aes-256-cfb

If you run a public/shared server, do not forget this parameter --tcpDeadline

Client (CLI)

Brook Client

# Run as brook client, start a socks5 proxy
$ brook client -l 127.0.0.1:1080 -i 127.0.0.1 -s server_address:port -p password
# Run as brook client, start a http(s) proxy
$ brook client -l 127.0.0.1:1080 -i 127.0.0.1 -s server_address:port -p password --http
# Run as brook stream client, start a socks5 proxy
$ brook streamclient -l 127.0.0.1:1080 -i 127.0.0.1 -s server_address:port -p password
# Run as brook stream client, start a http(s) proxy
$ brook streamclient -l 127.0.0.1:1080 -i 127.0.0.1 -s server_address:port -p password --http

Shadowsocks Client

# Run as shadowsocks client, start a socks5 proxy
$ brook ssclient -l 127.0.0.1:1080 -i 127.0.0.1 -s server_address:port -p password
# Run as shadowsocks client, start a http(s) proxy
$ brook ssclient -l 127.0.0.1:1080 -i 127.0.0.1 -s server_address:port -p password --http

See wiki for more tutorials

Contributing

  • Please create PR on develop branch

License

Licensed under The GPLv3 License