shadowsocks-go 是一个轻量级的隧道代理,用来穿透防火墙。它是 shadowsocks 的一个分支,两者协议兼容(都升级到最新版本)。
注意 shadowsocks-go 必须有独立的服务器才可使用。
安装
google code 上可以下载编译好的可执行文件。如果你安装了 Go,也可以从源码安装:
# 服务器
go get github.com/shadowsocks/shadowsocks-go/cmd/shadowsocks-server
# 客户端
go get github.com/shadowsocks/shadowsocks-go/cmd/shadowsocks-local
使用方法
客户端和服务器端默认在当前目录下寻找config.json
配置文件。可以使用 -c
选项指定其他配置文件。配置文件使用 json,跟 shadowsocks-nodejs 的配置兼容。您可下载配置样例
config.json
, 然后修改以下选项:server 服务器 ip 或者 host name
server_port 服务器监听的端口
local_port 客户端本地 socks5 代理端口
method 加密方法,默认 null,可以指定为 rc4
password 用于加密传输的密码
timeout 服务器端选项,以秒为单位
服务器上执行 shadowsocks-server &
即可。Linux 服务器也可以使用提供的启动脚本,注意修改脚本开头的路径。Linux/OS X 客户机端执行
shadowsocks-local &
,修改浏览器代理为 SOCKS5 代理。Windows/OS X 客户端可以直接双击执行。SOCKS5 127.0.0.1:local_port
命令行选项
命令行选项比配置文件中的选项有更高优先级。使用-h
选项来查看所有支持的选项。shadowsocks-local -s server_name -p server_port -l local_port -k password -m rc4 -c config.json
shadowsocks-server -p server_port -k password -t timeout -m rc4 -c config.json
-d
选项可以开启 debug 信息。客户端指定多个服务器
server_password 指定多个服务器和密码,服务器形式为 host:port
配置文件例子 client-multi-server.json
。 如果有 server_password
选项,客户端会忽略 server_port
, server
和 password
选项。多个服务器按顺序选取,如果某个服务器无法建立连接,会自动尝试下一个服务器。客户端不会检查密码错误导致的连接问题,这样可以让用户发现配置错误。
服务器端多用户支持
服务器支持使用不同密码的多个用户,每个用户使用一个独立的端口。在服务器上使用下列选项来支持多用户:port_password 指定要监听的端口和对应的密码
配置文件例子 server-multi-port.json
。如果有 port_password
,服务器会忽略 server_port
和 password
选项。在线更新密码
编辑用来启动服务器的配置文件,然后向服务器进程发SIGHUP
信号即可。OpenVZ 用户特别注意
请使用支持 vswap 的 OpenVZ 虚拟机,否则系统会错误的过多统计 shadowsocks-go 使用的内存。在支持 vswap OpenVZ 虚拟机上 shadowsocks-go 启动后占用约 3MB 内存。如果无法使用 vswap 而且内存占用存在问题,请考虑使用 shadowsocks-libuv。
from http://shadowsocks.github.com/shadowsocks-go/
shadowsocks-go
Current version: 0.6.2shadowsocks-go is a lightweight tunnel proxy which can help you get through firewalls. It is a port of shadowsocks.
The protocol is compatible with the origin shadowsocks (if both have been upgraded to the latest version).
Note
server_password
option syntax changed in 0.6.2, the client now connects to servers in the order specified in the config.Install
Compiled client binaries are provided on google code. (Compiled with cgo disabled.)You can also install from source (assume you have go installed):
# on server
go get github.com/shadowsocks/shadowsocks-go/cmd/shadowsocks-server
# on client
go get github.com/shadowsocks/shadowsocks-go/cmd/shadowsocks-local
It's recommend to disable cgo when compiling shadowsocks-go. This
will prevent the go runtime from creating too many threads for dns
lookup.Usage
Both the server and client program will look forconfig.json
in the current directory. You can use -c
option to specify another configuration file.Configuration file is in json format and has the same syntax with shadowsocks-nodejs. You can download the sample
config.json
, change the following values:server your server ip or hostname
server_port server port
local_port local socks5 proxy port
method encryption method, null by default, or use "rc4"
password a password used to encrypt transfer
timeout server option, in seconds
Run shadowsocks-server
on your server. To run it in the background, run shadowsocks-server > log &
.On client, run
shadowsocks-local
. Change proxy settings of your browser toSOCKS5 127.0.0.1:local_port
Command line options
Command line options can override settings from configuration files. Use-h
option to see all available options.shadowsocks-local -s server_name -p server_port -l local_port -k password -m rc4 -c config.json
shadowsocks-server -p server_port -k password -t timeout -m rc4 -c config.json
Use -d
option to enable debug message.Use multiple servers on client
server_password specify multiple server and password, server should be in the form of host:port
Here's a sample configuration client-multi-server.json
. Given server_password
, client program will ignore server_port
, server
and password
options.Servers are chosen in the order specified in the config. If a server can't be connected (connection failure), the client will try the next one. (Client will retry failed server with some probability to discover server recovery.)
Multiple users with different passwords on server
The server can support users with different passwords. Each user will be served by a unique port. Use the following options on the server for such setup:port_password specify multiple ports and passwords to support multiple users
Here's a sample configuration server-multi-port.json
. Given port_password
, server program will ignore server_port
and password
options.Update port password for a running server
Edit the config file used to start the server, then sendSIGHUP
to the server process.Note to OpenVZ users
Use OpenVZ VM that supports vswap. Otherwise, the OS will incorrectly account much more memory than actually used. shadowsocks-go on OpenVZ VM with vswap takes about 3MB memory after startup. (Refer to this issue for more details.)If vswap is not an option and memory usage is a problem for you, try shadowsocks-libuv.
from https://github.com/shadowsocks/shadowsocks-go
----------------------------------------------------------------------------------------------
Shadowsocks is a high-performance cross-platform secured socks5 proxy. It will help you surf the internet privately and securely.
Super fast
Bleeding edge techniques with Asynchronous I/O and Event-drievn programming.Light weight
Low resource comsumption, suitable for low end boxes and embedded devices.Clear protocol
No more than 1000 lines of codes for the core module, flexible to use different ecryption methods.Cross platform
Avaliable on multiple platforms, including PC, MAC, Mobile (Android and iOS) and Routers (OpenWRT).Open source
Open source implementions in python, node.js, golang, C#, and pure C.Mature communitiy
Dozens of contributors working on this project, who are happy to provide support to our users.下载地址:
Windows
GUI client
Download: x86Maintained by @clowwindy
Notes:
- Only supports the classic encryption method.
- Requires .NET framework 2.0 or plus.
Command line client
Download: 32bit / 64bitManual: English / 中文
Maintained by @cyfdecyf
Cross Platform
Python
Source: GitHubMaintained by @clowwindy
Node.js
Source: GitHubMaintained by @clowwindy
Golang
Source: GitHubBinaries: Google Code
Maintained by @cyfdecyf
Android
Source: GitHub
Download: Nightly Build
App Store: Google Play
Source: GitHub
Maintained by @madeye
Notes:
- Global proxy function only works on rooted devices.
- For unrooted devices, users should enable the HTTP proxy mode and set up the system's proxy manually.
iOS
Source: GitHub
Download: deb
Source: GitHub
Maintained by @linusyang
Notes:
- Only for Jailbreak devices.
- To install it through Cydia, add http://yangapp.googlecode.com/svn to the source list.
OpenWRT
Source: GitHub
Download: ipk
Maintained by @haohaolee
Notes:
- Only for Atheros AR71xx/AR7240/AR913x/AR934x devices.
- You can request for more device support by posting issues on GitHub.
For Developers
libev | A lightweight client using libev and written in pure c, which is used in Android, iOS and OpenWRT clients. Maintained by @madeye |
Source: Github | |
libuv | A lightweight server using libuv, designed for deploying services in low end boxes. Maintained by @dndx |
Source: Github | |
Ruby | A developing ruby implementation. Maintained by @clowwindy |
Source: Github | |
Dotcloud | A developing node.js implementation using websocket for PaaS. Maintained by @clowwindy |
Source: Github |
from http://www.shadowsocks.org/downloads