mirror of https://github.com/cbeuw/Cloak
Update README.md
This commit is contained in:
parent
735dc64bd1
commit
6977138314
14
README.md
14
README.md
|
|
@ -1,9 +1,11 @@
|
||||||
# Cloak
|
# Cloak
|
||||||
A shadowsocks plugin that obfuscates the traffic as normal HTTPS traffic and disguises the proxy server as a normal webserver.
|
A Shadowsocks plugin that obfuscates the traffic as normal HTTPS traffic and disguises the proxy server as a normal webserver.
|
||||||
|
|
||||||
**This is an active WIP. Everything is subject to change.**
|
**This is an active WIP. The program has shown to be stable but everything is subject to change.**
|
||||||
|
|
||||||
This project is based on [GoQuiet](https://github.com/cbeuw/GoQuiet). The most significant difference is that, in GoQuiet, a new TCP connection is establieshed and a TLS handshake is done between the client and the proxy server each time a connection is made to ssclient, whereas in Cloak all the traffic is multiplexed through a fixed amount of consistant TCP connections between the client and the proxy server. The major benefits are:
|
This project is based on my previous project [GoQuiet](https://github.com/cbeuw/GoQuiet). The aim is to make indiscriminate blocking of HTTPS servers (or even IP ranges) with high traffic the only effective way of stopping people from using Shadowsocks.
|
||||||
|
|
||||||
|
Numerous improvements have been made from GoQuiet. The most significant one is that, in GoQuiet, a new TCP connection is establieshed and a TLS handshake is done between the client and the proxy server each time a connection is made to Shadowsocks' client, whereas in Cloak all the traffic is multiplexed through a fixed amount of persistent TCP connections between the client and the proxy server. The major benefits are:
|
||||||
|
|
||||||
- Significantly quicker establishment of new connections as TLS handshake is only done on the startup of the client
|
- Significantly quicker establishment of new connections as TLS handshake is only done on the startup of the client
|
||||||
|
|
||||||
|
|
@ -18,7 +20,7 @@ Simply `make client` and `make server`. Output binary will be in the build folde
|
||||||
### For the administrator of the server
|
### For the administrator of the server
|
||||||
0. [Install and configure shadowsocks-libev on your server](https://github.com/shadowsocks/shadowsocks-libev#installation)
|
0. [Install and configure shadowsocks-libev on your server](https://github.com/shadowsocks/shadowsocks-libev#installation)
|
||||||
1. Clone this repo onto your server
|
1. Clone this repo onto your server
|
||||||
2. Build and run ck-server -k. The base64 string before the comma is the public key, the one after the comma is the private key
|
2. Build and run ck-server -k. The base64 string before the comma is the **public** key to be given to users, the one after the comma is the **private** key to be kept secret
|
||||||
3. Run `ck-server -u`. This will be used as the AdminUID
|
3. Run `ck-server -u`. This will be used as the AdminUID
|
||||||
4. Put the private key and the AdminUID you obtained previously into config/ckserver.json
|
4. Put the private key and the AdminUID you obtained previously into config/ckserver.json
|
||||||
5. Edit the configuration file of shadowsocks-libev (default location is /etc/shadowsocks-libev/config.json). Let `server_port` be `443`, `plugin` be the full path to the ck-server binary and `plugin_opts` be the full path to ckserver.json. If the fields `plugin` and `plugin_opts` were not present originally, add these fields to the config file.
|
5. Edit the configuration file of shadowsocks-libev (default location is /etc/shadowsocks-libev/config.json). Let `server_port` be `443`, `plugin` be the full path to the ck-server binary and `plugin_opts` be the full path to ckserver.json. If the fields `plugin` and `plugin_opts` were not present originally, add these fields to the config file.
|
||||||
|
|
@ -29,13 +31,13 @@ Simply `make client` and `make server`. Output binary will be in the build folde
|
||||||
2. On your client, run `ck-client -a -c <path-to-ckclient.json>` to enter admin mode
|
2. On your client, run `ck-client -a -c <path-to-ckclient.json>` to enter admin mode
|
||||||
3. Input as prompted, that is your ip:port of the server and your AdminUID. Enter 4 to create a new user.
|
3. Input as prompted, that is your ip:port of the server and your AdminUID. Enter 4 to create a new user.
|
||||||
4. Enter the UID in your ckclient.json as the prompted UID, enter SessionsCap (maximum amount of concurrent sessions a user can have), UpRate and DownRate (in bytes/s), UpCredit and DownCredit (in bytes) and ExpiryTime (as a unix epoch)
|
4. Enter the UID in your ckclient.json as the prompted UID, enter SessionsCap (maximum amount of concurrent sessions a user can have), UpRate and DownRate (in bytes/s), UpCredit and DownCredit (in bytes) and ExpiryTime (as a unix epoch)
|
||||||
5. Give your PUBLIC key and the newly generated UID to the new user
|
5. Give your **public** key and the newly generated UID to the new user
|
||||||
|
|
||||||
Note: the user database is persistent as it's in-disk. You don't need to add the users again each time you start ck-server.
|
Note: the user database is persistent as it's in-disk. You don't need to add the users again each time you start ck-server.
|
||||||
|
|
||||||
### Instructions for clients
|
### Instructions for clients
|
||||||
0. Install and configure a version of shadowsocks client that supports plugins (such as shadowsocks-libev and shadowsocks-windows)
|
0. Install and configure a version of shadowsocks client that supports plugins (such as shadowsocks-libev and shadowsocks-windows)
|
||||||
1. Clone this repo and build ck-client
|
1. Clone this repo and build ck-client
|
||||||
2. Obtain the PUBLIC key and your UID (or the AdminUID, if you are the server admin) from the administrator of your server
|
2. Obtain the public key and your UID (or the AdminUID, if you are the server admin) from the administrator of your server
|
||||||
3. Put the public key and the UID you obtained into config/ckclient.json
|
3. Put the public key and the UID you obtained into config/ckclient.json
|
||||||
4. Configure your shadowsocks client with your server information. The field `plugin` should be the path to ck-server binary and `plugin_opts` should be the path to ckclient.json
|
4. Configure your shadowsocks client with your server information. The field `plugin` should be the path to ck-server binary and `plugin_opts` should be the path to ckclient.json
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue