如何搭建Shadowsocks服务
服务端安装 Shadowsocks
跟着官方教程运行以下命令:
apt update
# if you don't have git installed
apt-get install git
apt-get install python-pip
pip install git+https://github.com/shadowsocks/shadowsocks.git@master
到此 shadowsocks 安装成功。
配置
复制官网教程的基本配置,后台运行 shadowsock,服务端就 OK 了。
客户端
iOS 客户端官网推荐的Outline(美国 App Store 免费下载)。我简单搜索了一下,中国区商店一类 shadowsocks 客户端貌似都下架了。
配置信息二维码生成说明:
根据官方的配置说明,可以看到 SS 协议采用的协议格式为:
ss://method[-auth]:password@hostname:port
并且采用 BASE64 的加密方式对 SS 协议的内容进行加密操作method[-auth]:password@hostname:port
,然后再与ss://
进行拼接即可。
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING
可以在 Chrome Console 中使用 JavaScript 的btoa()
方法进行 base64 编码,如下:
例如,将ss://bf-cfb-auth:test@192.168.100.1:8888
,这个内容转换成标准的 SS 协议内容就成了:
ss://YmYtY2ZiLWF1dGg6dGVzdEAxOTIuMTY4LjEwMC4xOjg4ODg=
然后直接将这段字符串生成二维码即可。
Update 2019-07-18
Bandwagon 推出了一款专用于 Shadowsocks 的服务,Just My Socks,价格比 VPS 稍贵。该服务提供域名连接,会定期更换 IP,再也不用因为 IP 被封所烦恼了。
Update 2019-02-28
用了 5 天 VPS 的 IP 就被封了,网上搜了一通发现 2017 年就有人反应 shadowsocks被封 IP 的问题,看来作者被请喝茶之后,Shadowsocks 基本就被 ZF 掌握了。
换了一个 IP,如果短时间再被封,就放弃 shadowsocks 了。网上又推荐v2ray,以后再看吧。
购买 VPS
跟着教程选择 VPS,结果发现搬瓦工 10G $19.99/yr 的套餐下架了,最便宜的 20G $49.99/yr(342.62 元);Vultr 最便宜的$3.5/mon,算下来$42/yr(287.86 元/年),稍微便宜一点。
准备买 Vultr,比较了一下服务器,湖北电信 ping 洛杉矶的服务器延迟最低,另一篇文章也印证这一点。
在 Vultr 界面选择洛杉矶,结果下面没有$3.5/mon 套餐,最便宜的套餐是$5/mon ($60/yr)。很郁闷,是不是过个年也准备涨价了?给 Support 发了封邮件,秒回:
…currently sold out in that location … the new capacity will be online within the next 2 to 4 weeks.
于是换了几个服务器试了一下,只有 Atlanta 下面有$3.5 套餐。觉得有点坑爹,又在网上搜了一下搬瓦工和 Vultr 的对比,感觉旗鼓相当,决定就选搬瓦工,先入为主吧。
于是买了半年$25.99(176 元)的 Los Angales 服务器。继续跟着教程进行下一步。
中间的曲折
打开搬瓦工服务器管理界面,竟然找不到第一个教程里的”Shadowsocks Server 选项”。没办法,找到官网,跟着说明进行安装。
#CentOS:
yum install python-setuptools && easy_install pip
pip install git+https://github.com/shadowsocks/shadowsocks.git@master
第一个命令成功,结果运行第二个命令 pip 报了 Syntax error。即使单独运行 pip 也会报同样的错误,输出如下:
[root@host ~]# pip
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
load_entry_point('pip==19.0.2', 'console_scripts', 'pip')()
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 299, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 2229, in load_entry_point
return ep.load()
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 1948, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python2.6/site-packages/pip-19.0.2-py2.6.egg/pip/_internal/__init__.py", line 19, in <module>
from pip._vendor.urllib3.exceptions import DependencyWarning
File "/usr/lib/python2.6/site-packages/pip-19.0.2-py2.6.egg/pip/_vendor/urllib3/__init__.py", line 8, in <module>
from .connectionpool import (
File "/usr/lib/python2.6/site-packages/pip-19.0.2-py2.6.egg/pip/_vendor/urllib3/connectionpool.py", line 92
_blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK}
^
SyntaxError: invalid syntax
不知道什么原因,网上也没搜到好的回答,决定重装一下 CentOS(目前是 centos 6 x86),网上搜了个教程,重装了系统到 centos 6 x86_64。突然想到,之前的报错是不是安装包之前没有运行yum update
?哎…程序员的工具体验真是差。
系统重装后,赶紧先运行一下yum update
。重新尝试,结果还是不行,同样的错误。
崩溃…
最后还是换了 Ubuntu,然后一下子就安装成功了。还是 Ubuntu 对新手友好。安装完了,才看到 shadowsocks中文教程上有一句:
除非有明确理由,不建议用对新手不友好的 CentOS。
…
参考:
- https://moshuqi.github.io/2017/07/20/自己搭建VPN服务器
- http://www.zliu633.com/2018/07/13/%E4%B8%AA%E4%BA%BAvpn%E7%9A%84%E6%90%AD%E5%BB%BA%E6%96%B9%E6%B3%95-mac-os/
- https://blog.csdn.net/lecepin/article/details/52063843
- https://segmentfault.com/a/1190000010528542
- https://github.com/shadowsocks/shadowsocks/blob/master/README.md
- https://shadowsocks.org/en/download/clients.html
- https://zhuanlan.zhihu.com/p/38166614
- https://www.cnvultr.com/368.html