txthinking/brook
Brook is a cross-platform(Linux/MacOS/Windows/Android/iOS) proxy/vpn software
repo name | txthinking/brook |
repo link | https://github.com/txthinking/brook |
homepage | |
language | Go |
size (curr.) | 30757 kB |
stars (curr.) | 11140 |
created | 2017-03-18 |
license | GNU General Public License v3.0 |
Brook
v20200101
- 🔊 Please uninstall or delete the old GUI client first❗️
- Add Brook WebSocket mode, with or without TLS. If with TLS, Brook will automatically request/issue certificate for your domain.
- GUI Client supports QR scanning
- GUI Client supports custom rules
- macOS Client renamed to Brook.pkg (Because many users don’t know that needed to copy or drag from dmg)
- Windows Client renamed to Brook.msi
- develop branch is deleted, PR to master and keep master stable
- Keep it simple, stupid
Table of Contents
- What is Brook
- Download
- Packages
- Server
- Client
- WSServer
- WSClient
- GUI Client
- Tunnel
- Tproxy
- VPN
- Relay
- Socks5
- Socks5 to HTTP
- Shadowsocks
- Contributing
- License
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_mips_softfloat | Server & Client | Linux | mips_softfloat | CLI |
brook_linux_mipsle_softfloat | Server & Client | Linux | mipsle_softfloat | CLI |
brook_linux_mips64 | Server & Client | Linux | mips64 | CLI |
brook_linux_mips64le | Server & Client | Linux | mips64le | CLI |
brook_linux_mips64_softfloat | Server & Client | Linux | mips64_softfloat | CLI |
brook_linux_mips64le_softfloat | Server & Client | Linux | mips64le_softfloat | 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.pkg | Client | macOS | amd64 | GUI |
Brook.msi | 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:
20200201
COMMANDS:
server Run as server mode
servers Run as multiple servers mode
client Run as client mode
wsserver Run as websocket server mode
wsclient Run as websocket client mode
tunnel Run as tunnel mode on client-site
tproxy Run as tproxy mode on client-site, transparent proxy, only works on Linux
vpn Run as VPN mode on client-site
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
GLOBAL OPTIONS:
--debug, -d Enable debug (default: false)
--listen value, -l value Listen address for debug (default: ":6060")
--help, -h show help (default: false)
--version, -v print the version (default: false)
COPYRIGHT:
https://github.com/txthinking/brook
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
# 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
WSServer
# Run as a brook wsserver
$ brook wsserver -l :9999 -p password
# Run as a brook wsserver with domain
# Make sure your domain name has been successfully resolved, 80 and 443 are open, brook will automatically issue certificate for you
$ brook wsserver --domain txthinking.com -p password
If you run a public/shared server, do not forget this parameter –tcpDeadline
WSClient
# Run as brook wsclient, connect brook wsserver
$ brook wsclient -l 127.0.0.1:1080 -i 127.0.0.1 -s ws://1.2.3.4:5 -p password
# Run as brook wsclient, connect brook wsserver with tls
$ brook wsclient -l 127.0.0.1:1080 -i 127.0.0.1 -s wss://txthinking.com:443 -p password
GUI Client
See download
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
# Must exit by Ctrl+C
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