请稍侯

DigitalOcean使用小记--使用shadowsocks进行科学上网

15 March 2015

  对比了Linode和DigitalOcean(简称DO),选择DO了,两者的套餐如图所示。
1
  Linode最便宜的10刀,比较老牌,稳定性还不错,尤其是东京机房对于国内来说速度听说还不错,不过我自己没试过,比来比去还是选择了最便宜的:DO的5刀豪华套餐,试用了下,网上许多人推荐使用旧金山的机房,ping下来速度在400ms左右,觉得使用secureCRT登陆上去操作延迟较高,又试了下大多数人不推荐的新加坡的机房,平均174ms左右,速度还不错。下面介绍下DO的使用流程。顺便给个邀请链接(请猛戳),通过这个链接注册使用,你好我也好--

1 注册账号

  首先,你需要注册一个DO的账号,注册过程就不需要多说了,邮箱啥的填写好就可以了。注册完之后还没能开始使用,你需要绑定你的信用卡或者向你的账户中充值5刀才可以创建你的VPS,可以使用Paypal绑定银联的卡进行支付,支付完成之后便可以开始创建VPS了。

2 创建Droplet

2.1 基本步骤

  点击Create Droplet按钮,输入Droplet的名字(Hostname),选择Image,有Ubuntu、FreeBSD、CentOS等发行版本可以选择,我用的是CentOS7 64位,感觉作为RedHat一系,CentOS的稳定性可能会较高一些,Size选择最低的一档试试看,好用可以再进行扩容,机房选择的是Singapore机房,你可以选择其中一个创建完之后测下速度,不行的话再删掉重新创建一个Droplet,自己挑一个你访问速度较快的服务器。Available Settings根据自己的需求选择,学生的话IPV6可以选上。
  下面是Add SSH Keys,这个步骤是可选的,这里详细介绍下SSH密钥对(SSH Key),SSH密钥对可以让你方便的通过SSH登录到服务器,而无需输入密码,你不需要发送你的密码到网络中,SSH密钥对被认为是更加安全的方式。SSH密钥对总是成双成对出现的,一把公钥,一把私钥。公钥可以自由的放在您所需要连接的SSH服务器上,而私钥必须稳妥的保管好。所谓"公钥登录",原理很简单,就是你将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。这样子即可保证了整个登录过程的安全,也不会受到中间人攻击。

2.2 生成密钥对

  首次查看你的机器上有没有密钥对。查看你的/home目录下是否有隐藏的.ssh文件夹,其中是否有以pub为后缀的文件,有的话直接打开复制其中的内容即可,没有的话使用ssh-keygen命令生成密钥对。
  PS: Windows用户查看C:\Users\<你的用户名>\.ssh文件夹下查看是否有以pub为后缀的文件,如果没有,安装git for Windows,安装完使用git bash输入下面相同的命令生成密钥对。

ssh-keygen -t rsa -C "你的邮箱地址"

  完成之后就会生成密钥对(id_rsa和id_rsa.pub),复制公钥id_rsa.pub其中的内容填至表单中即可。最后点击创建等待几分钟即可完成VPS的创建,创建完成之后过几分钟你的邮箱会收到邮件,告诉你你的VPS的ip以及密码等。

3 安装shadowsocks

  shadowsocks是一个可穿透防火墙的快速代理,我们可以在VPS上部署shadowsocks使得我们的设备通过VPS实现科学上网。

3.1 安装

  根据你的VPS使用的镜像选择不同的安装方法。
  Debian / Ubuntu:

apt-get install python-pip
pip install shadowsocks

  CentOS:

yum install python-setuptools && easy_install pip
pip install shadowsocks

  如果你的VPS上安装的是windows,稍微麻烦一siusiu,可以参考这篇wiki

3.2 启动

  安装完成之后便可以启动shadowsocks。-p表示端口号,-k表示密码,-m表示加密方式。

ssserver -p 8999 -k 123456 -m rc4-md5

  如果要后台运行:

sudo ssserver -p 8999 -k 123456 -m rc4-md5 -d start

  如果要停止:

sudo ssserver -d stop

  如果要检查日志:

sudo less /var/log/shadowsocks.log

  用 -h 查看所有参数,如果你觉得输入命令比较麻烦的话,也可以使用配置文件进行配置。使用nano命令新建一个json文件。

nano /etc/shadowsocks.json

  输入相应的内容,特别注意修改字段为你自己的设置,不要把下面的配置文件不修改直接拷贝

{
    "server":"128.199.166.172",
    "server_port":8999,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"<你的密码>",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

  紧接着以该配置文件为参数运行命令:

ssserver -c /etc/shadowsocks.json

  后台运行的命令如下所示:

ssserver -c /etc/shadowsocks.json -d start
ssserver -c /etc/shadowsocks.json -d stop

3.3 使用shadowsocks客户端

  shadowsocks的客户端支持大多数的主流平台,一般需要配置一下服务器的ip地址和之前设置好的连接密码即可,参考下面的链接:
- Windows / OS X
- Android / iOS
- OpenWRT
  以Windows平台为例,从SourceForge上下载你的平台对应的版本号,Windows上根据你机器安装的.net版本选择对应的安装包,我的机器上因为安装了.net framework 4.0,因此下载了Shadowsocks-win-dotnet4.0-2.3.1.zip,解压之后运行Shadowsocks.exe,运行界面如下所示。
2
  填写好IP、端口号以及密码,这些都要与上述配置文件中一致,代理端口默认。保存之后,右击任务栏图标选择好设置的服务器并启动系统代理,注意一定要像下图中一样选中,即前面出现打勾选项。至此我们已经完成了客户端的设置,接下来进行浏览器的设置,设置完之后便可以科学上网了。
3
  OS X下的使用比较简单,直接下载对应的dmg文件进行安装,安装完填写好IP及端口等设置,同样选择好设置的服务器并选择打开shadowsocks,同样的注意点,一定要选中,即前面出现打勾选项。此时应该就可以科学上网了。

3.4 浏览器设置

  浏览器以chrome为例,如果用过GoAgent的话就会发现设置比较类似,下载并安装Proxy SwitchySharp插件,打开Proxy SwitchySharp的设置,新建一个情景模式,命名为 Shadowsocks,设置好端口,注意socks模式选择socks5,如图所示。
4
  接着点击切换规则,如下图所示,启用切换规则,然后在 URL 模式里输入*google*通配Google的所有域名,模式匹配选择通配符,情景模式为Shadowsocks,然后把在线规则列表打钩,输入:

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

  勾选AutoProxy兼容列表,点立即更新并保存。
5
  接着点击chrome地址栏右侧的Proxy SwitchySharp插件图标,如下图所示,选择自动切换模式,这样使得我们上国内网站时不走代理,不影响国内网站的浏览。
6   

4 完成  

  这样我们就通过shadowsocks使用自己的VPS进行科学上网了!最后提醒下当发现不能科学上网时,确定客户端已经设置完毕切且没有问题时,可以先将浏览器设置为全局代理模式,看是否可以工作,如果可以,那边是浏览器插件设置的问题,否则检查客户端中填写的信息与VPS上的配置信息是否一致。


  shadowsocks无法使用时,右击托盘shadowsocks图标,选择“显示日志”,如果出现下面的错误:

failed to recv data in handshakeReceive2Callback

  这个问题可能是由于你电脑上安装的迅雷的原因,右击“我的电脑”——管理——服务和应用程序——服务,在服务中找到xlserviceplatform把它禁用就可以了。