shadowsocks-go 代理简介

2013/05/18


shadowsocks-go

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, serverpassword 选项。
多个服务器按顺序选取,如果某个服务器无法建立连接,会自动尝试下一个服务器。客户端不会检查密码错误导致的连接问题,这样可以让用户发现配置错误。

服务器端多用户支持

服务器支持使用不同密码的多个用户,每个用户使用一个独立的端口。在服务器上使用下列选项来支持多用户:
port_password   指定要监听的端口和对应的密码
配置文件例子 server-multi-port.json。如果有 port_password,服务器会忽略 server_portpassword 选项。

在线更新密码

编辑用来启动服务器的配置文件,然后向服务器进程发 SIGHUP 信号即可。

OpenVZ 用户特别注意

请使用支持 vswap 的 OpenVZ 虚拟机,否则系统会错误的过多统计 shadowsocks-go 使用的内存。在支持 vswap OpenVZ 虚拟机上 shadowsocks-go 启动后占用约 3MB 内存。
如果无法使用 vswap 而且内存占用存在问题,请考虑使用 shadowsocks-libev

Related Posts