Shadowsocks服务端&客户端的部署

2014-12-27 · 15 min read

太长时间没有写博客了,最近折腾一些七七八八的东西,自己本身也不太擅长总结,很多技术也还没有到“可以为师”的地步,写出来质量也不会太高,所以就不献丑了。昨天刚好因为公司机器上的 goagent 不能用了,就打算自己部署一个 Shadowsocks 来用,服务器是 128M 的 centos,足足折腾了一晚上,中间出了各种问题,这里稍微记录下,给遇到同样问题的朋友做个参考。另外说明下,我在公司的虚拟机上按照官方文档,很顺利的部署成功,所以下面的问题不是每个人都会遇到的,建议先按照官方文档部署 shadowsocks。

一、安装失败,先升级 Python#

按照文档来部署,步骤只有三部:

yum install python-setuptools
easy_install pip
pip install shadowsocks

但是我失败在了第二步,错误如下:

[root@keenwon ~]# easy_install pip
Searching for pip
Best match: pip 1.5.6
Processing pip-1.5.6-py2.4.egg
pip 1.5.6 is already the active version in easy-install.pth
Installing pip script to /usr/bin
Installing pip2 script to /usr/bin
Installing pip2.4 script to /usr/bin

Using /usr/lib/python2.4/site-packages/pip-1.5.6-py2.4.egg
Processing dependencies for pip

执行第三步也是报错(前端是个苦差事,抽空好好学学 Linux):

[root@keenwon ~]# pip install shadowsocks
Traceback (most recent call last):
  File "/usr/bin/pip", line 7, in ?
    sys.exit(
  File "/usr/lib/python2.4/site-packages/pkg_resources.py", line 236, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.4/site-packages/pkg_resources.py", line 2097, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.4/site-packages/pkg_resources.py", line 1830, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python2.4/site-packages/pip-1.5.6-py2.4.egg/pip/__init__.py", line 9, in ?
    from pip.log import logger
  File "/usr/lib/python2.4/site-packages/pip-1.5.6-py2.4.egg/pip/log.py", line 19
    real_consumer = (consumer if not isinstance(consumer, colorama.AnsiToWin32)
                               ^
SyntaxError: invalid syntax

在网上寻寻觅觅找到个解决办法:升级 Python,现在的版本是 2.4,计划升级到 2.7。升级方法就不说了,不是搞 python 的,而且网上一搜很多,唯一要注意的修改下 yum 的配置,yum 要使用老版本的 python 才行。

升级后,继续执行esay_install pip ,再次悲剧的报错:

Traceback (most recent call last):
    File "/usr/bin/easy_install", line 5, in <module>
    from pkg_resources import load_entry_point
    ImportError: No module named pkg_resources

继续寻寻觅觅,发现需要“Install the distribute package”,方法如下:

wget https://svn.apache.org/repos/asf/oodt/tools/oodtsite.publisher/trunk/distribute_setup.py
python distribute_setup.py

然后继续执行esay_install pippip install shadowsocks ,安装成功(不容易啊)。

二、服务端配置和客户端使用#

安装成功后,要新增一个配置文件,具体的可以看官方文档。例外它可以配置多个端口,多个密码给不通的人用,大概配置如下:

{
    "server":"<你服务器ip>",
    "port_password": {
        "<端口号>": "<密码>",
        "<端口号>": "<密码>",
        "<端口号>": "<密码>"
    },
    "local_port":1080,
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false,
    "workers": 1
}

然后安装相应的客户端,在 windows 上,我是使用的是shadowsocks-csharp。直接下载就可以使用:

另外关于 chrome 的插件 Proxy SwitchySharp,因为 shadowsocks-csharp 会修改 IE 的代理,所以浏览器默认就是使用 IE 的代理的,所以就没有必要使用 Proxy SwitchySharp 了,如果还要继续使用,可以设置到 127.0.0.1:1080 端口(我图上是 1081)。

三,结论#

1、shadowsocks 性能还是很好的,而且资源占用的比较少,我 128M 的小 VPS 还能支撑的起来,后期打算迁移到DigitalOcean,关于 vps 的看这篇文章

2、shadowsocks 目前没有流量统计等功能,而且貌似作者也不打算加。

-完-