Skip to content
Brook is a cross-platform(Linux/MacOS/Windows/Android/iOS) proxy/vpn software
Go Shell
Branch: master
Clone or download
Latest commit a8c73a4 Aug 12, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github add countryonly plugin Apr 4, 2019
cli/brook v20190601 May 31, 2019
plugin add countryonly plugin Apr 4, 2019
scripts license file Feb 9, 2019
sysproxy comments Feb 9, 2019
tproxy comments Feb 9, 2019
.travis.yml readme gplv3 Mar 18, 2017
LICENSE prepare to open source Mar 18, 2017
OPENSOURCELICENSES license Feb 8, 2019 fmt readme Aug 11, 2019
cipher.go comments Feb 9, 2019
client.go comments Feb 9, 2019
encrypt.go comments Feb 9, 2019
init.go log Mar 30, 2019
link.go log Mar 30, 2019
relay.go comments Feb 9, 2019
run.go Support custom dns in vpn mode Apr 25, 2019
run_linux.go comments Feb 9, 2019
run_notlinux.go comments Feb 9, 2019
server.go log Mar 30, 2019
socks5.go comments Feb 9, 2019
socks5tohttp.go log Mar 30, 2019
ssclient.go comments Feb 9, 2019
sskey.go comments Feb 9, 2019
sskey_test.go comments Feb 9, 2019
ssserver.go log Mar 30, 2019
tproxy_linux.go comments Feb 9, 2019
tunnel.go comments Feb 9, 2019
util.go comments Feb 9, 2019
vpn.go Support custom dns in vpn mode Apr 25, 2019
vpn_darwin.go comments Feb 9, 2019
vpn_linux.go comments Feb 9, 2019
vpn_windows.go comments Feb 9, 2019


Build Status License: GPL v3 Wiki



  • New macOS/Windows GUI client.

Table of Contents

What is Brook

Brook is a cross-platform proxy/vpn software.
Brook's goal is to keep it simple, stupid and not detectable.


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_linux_mips Server & Client Linux mips CLI
brook_linux_mipsle Server & Client Linux mipsle CLI
brook_linux_mips64 Server & Client Linux mips64 CLI
brook_linux_mips64le Server & Client Linux mips64le CLI
brook_linux_ppc64 Server & Client Linux ppc64 CLI
brook_linux_ppc64le Server & Client Linux ppc64le CLI
brook_darwin_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.dmg Client MacOS amd64 GUI
Brook.exe Client Windows amd64 GUI
App Store Client iOS - GUI
Brook.apk(No Google Play) Client Android - GUI

See wiki for more tutorials



sudo pacman -S brook


brew cask install brook


   Brook - A Cross-Platform Proxy/VPN Software

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


   Cloud <>

     server        Run as server mode
     servers       Run as multiple servers mode
     client        Run as client mode
     tunnel        Run as tunnel mode on client-side
     tproxy        Run as tproxy mode on client-side, transparent proxy, only works on Linux
     vpn           Run as VPN mode on client-side
     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
     link          Print brook link
     qr            Print brook server QR code
     socks5tohttp  Convert socks5 to http proxy
     systemproxy   Set system proxy with pac url, or remove, only works on MacOS/Windows
     help, h       Shows a list of commands or help for one command

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


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

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

Client (CLI)

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

Client (GUI)

See wiki


# Run as tunnel to
$ brook tunnel -l -t -s server_address:port -p password

Tproxy (usually used on Linux router box)

See wiki


# Run as VPN to proxy all TCP/UDP. [ROOT privileges required].
$ sudo brook vpn -l -s server_address:port -p password

See wiki for more tutorials


# Run as relay to
$ brook relay -l :5 -r


# Run as a raw socks5 server
$ brook socks5 -l :1080 -i

Socks5 to HTTP

# Convert socks5:// to http(s):// proxy
$ brook socks5tohttp -l -s


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

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

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

Fixed method is aes-256-cfb

See wiki for more tutorials


Please read first


Licensed under The GPLv3 License

You can’t perform that action at this time.