Brook is a cross-platform(Linux/MacOS/Windows/Android/iOS) proxy/vpn software
Clone or download
Latest commit b6c9fbf Sep 4, 2018
Permalink
Failed to load latest commit information.
.github In English Jul 9, 2018
cli/brook ** Windows encoding Sep 4, 2018
gui 20180909 readme Aug 30, 2018
plugin comments May 22, 2018
scripts clean iptables script May 5, 2018
snap Update snapcraft.yaml Apr 6, 2018
sysproxy ** Windows encoding Sep 4, 2018
tproxy tproxy support Feb 24, 2018
.travis.yml readme gplv3 Mar 18, 2017
LICENSE prepare to open source Mar 18, 2017
OPENSOURCELICENSES update osl Aug 28, 2018
README.md readme Aug 31, 2018
cipher.go prepare to open source Mar 18, 2017
client.go split token Feb 17, 2018
encrypt.go split token Feb 17, 2018
init.go steam Oct 30, 2017
qr.go new protocol Nov 1, 2017
relay.go remote error comments Nov 1, 2017
run.go ** Windows encoding Sep 4, 2018
run_linux.go tproxy support Feb 24, 2018
run_notlinux.go notlinux nothing todo Feb 25, 2018
server.go split token Feb 17, 2018
socks5.go plugin middleman Feb 17, 2018
socks5tohttp.go plugin middleman Feb 17, 2018
ssclient.go plugin middleman Feb 17, 2018
sskey.go prepare to open source Mar 18, 2017
sskey_test.go prepare to open source Mar 18, 2017
ssserver.go remote error comments Nov 1, 2017
stream_client.go plugin middleman Feb 17, 2018
stream_server.go remote error comments Nov 1, 2017
tproxy_linux.go add missed close func of conn of tproxy Jun 10, 2018
tunnel.go split token Feb 17, 2018
util.go steam Oct 30, 2017
vpn.go ** Windows encoding Sep 4, 2018
vpn_darwin.go add vpn mode Jun 19, 2018
vpn_linux.go add vpn mode Jun 19, 2018
vpn_windows.go ** Windows encoding Sep 4, 2018

README.md

Brook

Build Status Go Report Card License: GPL v3 Wiki

Brook


v20180909

  • VPN on Linux/MacOS/Windows, maybe you can use it for games wiki

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

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.Setup.exe Client Windows amd64 GUI
App Store Client iOS - GUI
Brook.apk(No Google Play) Client Android - GUI

See wiki for more tutorials

Packages

ArchLinux

sudo pacman -S brook

MacOS(GUI)

brew cask install brook

Brook

NAME:
   Brook - A Cross-Platform Proxy/VPN Software

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

VERSION:
   20180909

AUTHOR:
   Cloud <cloud@txthinking.com>

COMMANDS:
     server         Run as server mode
     servers        Run as multiple servers mode
     client         Run as client mode
     tunnel         Run as tunnel mode
     tproxy         Run as tproxy mode, transparent proxy, only works on Linux
     vpn            Run as VPN 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
     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

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

Server

# 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://127.0.0.1:1080
$ 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 http(s)://127.0.0.1:8080
$ brook client -l 127.0.0.1:8080 -i 127.0.0.1 -s server_address:port -p password --http

Client (GUI)

See wiki

Tunnel

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

Tproxy (usually used on Linux router box)

See wiki

VPN

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

See wiki for more tutorials

Relay

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

Socks5

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

Socks5 to HTTP

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

Shadowsocks

# 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://127.0.0.1:1080
$ 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 http(s)://127.0.0.1:8080
$ brook ssclient -l 127.0.0.1:8080 -i 127.0.0.1 -s server_address:port -p password --http

Fixed method is aes-256-cfb

See wiki for more tutorials

Contributing

Please read CONTRIBUTING.md first

License

Licensed under The GPLv3 License