Giter VIP home page Giter VIP logo

brook's Introduction

Brook

Build Status Wiki Slides Youtube Telegram Group Telegram Channel License: GPL v3

Brook


v20200502

  • CLI: Add $ brook dns
  • CLI: Add $ brook pac
  • CLI: Rename $ brook vpn to $ brook tun, still experimental
  • GUI: Support multiple servers

Some useful tutorial resources


Table of Contents

What is Brook

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

Install via nami

install CLI using nami on Linux/BSD/macOS

nami install github.com/txthinking/brook

or install CLI on Archlinux

pacman -S brook

or download CLI from releases

install GUI on macOS

brew cask install brook

or download GUI: macOS, Windows, Android, iOS

CLI contains server and client, GUI only contains client. iOS client only supports non-China AppStore.

Brook

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

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

VERSION:
   20200502

AUTHOR:
   Cloud <[email protected]>

COMMANDS:
   server        Run as brook server, both TCP and UDP
   servers       Run as multiple brook servers
   client        Run as brook client, both TCP and UDP, to start a socks5 proxy or a http proxy, [src <-> $ brook client <-> $ brook server <-> dst], [works with $ brook server]
   tunnel        Run as tunnel, both TCP and UDP, this means access [listen address] is equal to [to address], [src <-> listen address <-> $ brook server <-> to address], [works with $ brook server]
   dns           Run as DNS server, both TCP and UDP, [src <-> $ brook dns <-> $ brook server <-> default dns server] or [src <-> $ brook dns <-> list dns server], [works with $ brook server]
   tproxy        Run as transparent proxy, both TCP and UDP, only works on Linux, [src <-> $ brook tproxy <-> $ brook server <-> dst], [works with $ brook server]
   tun           Run as tun, both TCP and UDP, [src <-> $ brook tun <-> $ brook server <-> dst], [works with $ brook server]
   wsserver      Run as brook wsserver, both TCP and UDP, it will start a standard http(s) server and websocket server
   wsclient      Run as brook wsclient, both TCP and UDP, to start a socks5 proxy or a http proxy, [src <-> $ brook wsclient <-> $ brook wsserver <-> dst], [works with $ brook wsserver]
   link          Print brook link
   qr            Print brook server QR code
   relay         Run as standalone relay, both TCP and UDP, this means access [listen address] is equal to access [to address], [src <-> listen address <-> to address]
   relays        Run as multiple standalone relays
   socks5        Run as standalone standard socks5 server, both TCP and UDP
   socks5tohttp  Convert socks5 to http proxy, [src <-> listen address(http proxy) <-> socks5 address <-> dst]
   pac           Run as PAC server or save PAC to file
   systemproxy   Set system proxy with pac url, or remove, only works on macOS/Windows
   ssserver      Run as shadowsocks server, both TCP and UDP, fixed method is aes-256-cfb
   ssservers     Run as shadowsocks multiple servers, fixed method is aes-256-cfb
   ssclient      Run as shadowsocks client, both TCP and UDP, to start a socks5 proxy or a http proxy, fixed method is aes-256-cfb, [src <-> $ brook ssclient <-> $ brook ssserver <-> dst], [works with $ brook ssserver]
   howto         Print some useful tutorial resources
   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 listen_address:port -p password

More parameters: $ brook server -h

Client

# Run as brook client, connect to brook server, start a socks5 proxy server
$ brook client -s server_address:port -p password -l listen_address:port -i socks5_server_ip

More parameters: $ brook client -h

Tunnel

# Run as tunnel, connect to brook server
$ brook tunnel -s server_address:port -p password -l listen_address:port -t tunnel_to_address:port

More parameters: $ brook tunnel -h

DNS Server

# Run as DNS server, connect to brook server
$ brook dns -s server_address:port -p password -l listen_address:port

More parameters: $ brook dns -h

Transparent Proxy

See wiki

Tun

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

# Must exit by Ctrl+C

More parameters: $ brook tun -h

See wiki for more tutorials

WebSocket Server

# Run as a brook wsserver
$ brook wsserver -l listen_address:port -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 yourdomain.com -p password

More parameters: $ brook wsserver -h

WebSocket Client

# Run as brook wsclient, connect to brook wsserver, start a socks5 proxy server
$ brook wsclient -s ws://wsserver_address:port -p password -l listen_address:port -i socks5_server_ip
# Run as brook wsclient, connect to brook wsserver with domain, start a http proxy
$ brook wsclient -s wss://wsserver_domain:port -p password -l listen_address:port --http

More parameters: $ brook wsclient -h

Link

$ brook link -s server_address:port -p password
$ brook link -s ws://wsserver_address:port -p password
$ brook link -s wss://wsserver_domain:port -p password

More parameters: $ brook link -h

QR

$ brook qr -s server_address:port -p password
$ brook qr -s ws://wsserver_address:port -p password
$ brook qr -s wss://wsserver_domain:port -p password

More parameters: $ brook qr -h

Relay

# Run as relay
$ brook relay -l listen_address:port -r relay_to_address:port

More parameters: $ brook relay -h

Socks5 Server

# Run as standard socks5 server
$ brook socks5 -l listen_address:port -i server_ip

More parameters: $ brook socks5 -h

Socks5 to http

# Convert socks5 proxy to http proxy
$ brook socks5tohttp -l listen_address:port -s socks5_server_address:port

More parameters: $ brook socks5tohttp -h

PAC

# Create PAC server
$ brook pac -l listen_address_port

# Save PAC to local file
$ brook pac -f /path/to/file.pac

More parameters: $ brook pac -h

System Proxy

# Set system PAC proxy
$ brook systemproxy -u pac_url

# Clear system PAC proxy
$ brook systemproxy -r

More parameters: $ brook systemproxy -h

Shadowsocks

# Run as shadowsocks server
$ brook ssserver -l listen_address:port -p password

More parameters: $ brook ssserver -h

# Run as shadowsocks client, connect to shadowsocks server, start a socks5 proxy server
$ brook ssclient -s ssserver_address:port -p password -l listen_address:port -i socks5_server_ip

More parameters: $ brook ssclient -h

Fixed method is aes-256-cfb

How to

Some useful tutorial resources

Contributing

Please read CONTRIBUTING.md first

License

Licensed under The GPLv3 License

brook's People

Contributors

cxjava avatar hustlibraco avatar jimmy0017 avatar kataras avatar popey avatar txthinking avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.