Ubuntu下Shadowsocks服务器搭建与各平台客户端的使用。

0x00 Wiki for Shadowsocks

关于服务端的搭建与客户端的选择,你都可以在 Github 上的 Shadowsocks Wiki 找到相关的内容。这里基本有你想要的一切。

0x01 Setup Shadowsocks on Server

apt-get install python-gevent python-pip

接下来用 pip 安装 Shadowsocks

pip install shadowsocks

安装完成后有两种方式启动 Shadowsocks 的服务,一种是在命令行中指定参数运行,另一种是将配置信息写在文件中,运行时读取配置文件。

以后一种为例,在/etc/下建立文件 shadowsocks.json,并写入以下内容

{
    "server":"0.0.0.0",
    "port_password":{
        "1111":"password1",
        "2222":"password2"
    },
    "timeout":300,
    "method":"aes-256-cfb"
}

这里 port_password 下面可以包含多个端口和密码的组合,方便开启多个端口进行分享。配置好端口和密码之后然后在命令行运行ssserver -c /etc/shadowsocks/config.json -d start即可,关于参数的具体含义可以使用 ssserver – h 查看。-d的作用是在后台运行。如果想要调试或者查看信息可以直接运行

ssserver -c /etc/shadowsocks/config.json

之后可以在终端中看到链接情况。

0x02 Enjoy

Windows

在 Wiki 的 Ports and Clients 中,可以看到在不同的平台下的客户端支持情况。以Windows 为例,下载并运行运行 Shadowsocks.exe 后,在我的电脑上报错提示端口冲突,可能是默认的1080端口被占用导致的,只需在服务器的设置中指派一个空闲代理端口(如1099)即可。

在软件的右键菜单中,有给局域网共享代理的选项,开启此选项后可以给同局域网的其他主机共享连接,从而无须重复运行多个客户端。比如当你使用 VMWare 运行虚拟机时,不需要考虑虚拟机操作系统,可以直接使用主机提供的代理,仅需在配置时正确填写即可。

配置好后,可以安装 Chrome 的扩展 SwitchySharp,进行简单配置如下:

情景模式中选择手动配置,socks v5 代理地址填127.0.0.1 或 运行客户端的主机 ip (如192.168.5.1),端口填写刚才设置的代理端口,如未修改默认为1080。

切换规则中勾选在线规则列表和 AutoProxy 兼容列表,规则列表 URL 可以使用这个地址

http://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt

同时在最右侧的情景模式选择刚刚填写好的配置。

按照如上设置,梯子应该可以使用了。在 Chrome 工具栏里点 SwitchySharp 图标并选择自动切换模式,访问 Google 测试一下,应该可以无障碍浏览了。

OS X

Mac下面的客户端可以有多个选择,最直接的可以使用 ShadowsocksX 项目提供的客户端,迫于官方的压力,原作者 @clowwindy 已宣布停止维护,最后版本的客户端可以在 Github 上面下载到。只需要简单的配置服务器、端口、加密方式和密码就可以直接使用了。

OS X 的客户端提供了 PAC 代理和全局代理两种方式,常见的墙外网站已经包含在了 PAC 当中,如果需要自定添加地址到代理列表里,可以编辑用户自定规则。格式的话参考 gfwllist 文件即可,具体的语法规则参考 https://adblockplus.org/filters 上面的说明。我简单举几个例子供大家参考,以便快速添加自定规则。

plugins.jetbrains.com
106.185.1.1
https://www.gerritcodereview.com
*.stackoverflow.com

当然,匹配规则支持正则表达式,不过由于性能原因,应该尽可能少地在 PAC 中使用正则表达式。语法规则应该是使用 Perl 的格式,即 /pattern/ 类型的正则表达式,下面是一个例子,用来匹配 https://edge*.digicert.com (*代表任意数字)的结果

/https:\/\/edge[0-9]+\.digicert\.com/

目前依旧在积极开发的还有 shadowsocks-libev 这个项目,配置文件的方法和服务端类似,给一个例子做参考吧。

{
    "local_address":"0.0.0.0",
    "server":"1.2.3.4",
    "server_port":443,
    "local_port":10010,
    "password":"yourpassword",
    "timeout":300,
    "method":"aes-256-cfb"
}

iOS

iOS 平台可以直接在 App Store 中搜索 ShadowSocks 下载,不过 Shadowsocks 在手机上的应用价值不如 VPN 提供全局代理方便,所以感兴趣的自己下一个玩就好了。

iOS 9 开始,Apple 提供了新的公共 API,预计 iOS 上会涌现出不少类似的应用,不妨关注一下。

欢迎留言讨论