SDB:Shadowsocks

跳转至: 导航, 搜索
Shadowsocks 是 v2ex 的 @clowwindy 发明的一种科学上网代理。原来只有 python 版本,被 v2ex 的无聊程序员当作了试验田,于是 nodejs,libev,libuv,go,erlang,csharp,ruby 等各种语言的 fork,以及 android,iOS,Windows,Mac OS X,Linux 甚至 openwrt 的客户端如雨后春笋般萌芽,甚至 chromeapp,docloud 这些移植都已经出现。具体见 Ports and Clients。关于它的讨论主要集中在 v2ex 的 shadowsocks 节点
注意: 由于是试验田,不是每种 port 都是可用的,目前稳定的只有 python 原版,作者本人的 nodejs 移植版,libev 版。强烈推荐 libev 版,比较省资源。
注意: 该软件需要一个 VPS 服务器,单架设客户端没用。

服务器端

目前已有两个 port 可以从 OBS 安装。

libev 版(推荐)

libev 版是 C 语言写的,占用内存比其他版本要少。

1-click Install

Oneclick.png

zypper

openSUSE 13.2

sudo zypper addrepo http://download.opensuse.org/repositories/home:MargueriteSu/openSUSE_13.2/home:MargueriteSu.repo
sudo zypper refresh
sudo zypper install shadowsocks-libev

openSUSE 13.1

sudo zypper addrepo http://download.opensuse.org/repositories/home:MargueriteSu/openSUSE_13.1/home:MargueriteSu.repo
sudo zypper refresh
sudo zypper install shadowsocks-libev

修改配置文件:

sudo vi /etc/shadowsocks/shadowsocks-libev-config.json
{
	  "server": "106.187.50.131",
	  "server_port": 8356,
	  "local_port": 1080,
	  "password": "nGexi1702",
	  "timeout": 600,
	  "method": "aes-256-cfb"
}

"106.187.50.131" 替换成服务器的实际 IP 地址。详细配置请参见 https://github.com/shadowsocks/shadowsocks/wiki/Configuration-via-Config-File

启动服务:

sudo systemctl start shadowsocks-libev-server@shadowsocks-libev-config

后面的 @shadowsocks-libev-config 是配置文件的名字。你可以创建多个不同的文件,启动不同配置的 shadowsocks。同时运行多个 shadowsocks 服务也是可以的,但它们必须使用不同的配置文件,不同的 server_port 。

设置服务开机启动:

sudo systemctl enable shadowsocks-libev-server@shadowsocks-libev-config

通过防火墙:

如果你的服务器上安装并启用了 SuSEfirewall2 ,就需要更改规则以允许 Shadowsocks 通过。否则客户端和服务器将无法连接。记住上面配置文件中设置的 server_port:

sudo vi /etc/sysconfig/SuSEfirewall2.conf
FW_SERVICES_EXT_TCP="8356"

nodejs-shadowsocks

Oneclick.png

客户端

所有的服务器端均可用作客户端。下面是两个图形界面的客户端。

shadowsocks-qt5(强烈推荐)

Oneclick.png

node-webkit 客户端

http://sourceforge.net/projects/shadowsocksgui/files/dist/

配置

所有的 shadowsocks 移植均采用 config.json 配置文件,通常是位于 /etc/shadowsocks 文件夹下,以分支名 + config.json 命名,比如 libev 版的配置文件名为 shadowsocks-libev-config.json。

内容如下:

{
        "server":"您的服务器域名或 IP 地址",
        "server_port":服务器端口,
        "local_port":本地端口,
        "password":"密码",
        "timeout":"600",
        "method":"aes-256-cfb"
}

这里的本地端口是您稍后要在浏览器中设置代理时使用的端口。另外需要留意的是您在 VPS 和您的计算机上的 config.json 配置文件应该是完全相同的,也即:即使您在计算机上使用的是服务器端版本即无图形界面的 shadowsocks,它的作用也还是作为一个客户端,server 依然要填写远程服务器的地址而不是你的本地地址 127.0.0.1。

加密方法

首先不是所有的移植实现的加密方法都是一样多的,原作者亲自开发的 python 版和 libev 版支持的加密方式比较全面,而三方开发的、已经弃坑的(nodejs)可能只支持普遍或早期的加密方式。这点需要注意。

目前有的加密方式:


启动服务