使用DigitalOcean和shadowsocks来科学上网

没有google的日子实在是太痛苦了。只能用百度,工作学习效率大打折扣。陆陆续续用过不少科学上网的手段,但速度、稳定性和安全度都无法保障。于是出于爱折腾的精神,决定自己用vps架代理。通过海外vps构建科学上网,大大提升工作学习效率。

最初买完VPS想着搭建VPN(因为以前大学时用学校的VPN网速超快),但由于自己对服务器系统毫无基础,在尝试了多个教程后决定放弃。之后参照 Jerry的教程,不到10分钟就能连上google了。以下内容基于教程的个人操作步骤。

服务器选择:DigitalOcean

现在云服务器公司有不少,网上推荐的主要有Linode, DigitalOcean, Bandwagon, AWS等。结合购买成本、网友推荐等因素,我选择了DigitalOcean。

首先注册账号(通过我的邀请链接可以收到\$10的奖励),并充值。

然后就可以创建自己的云主机了。如果没有其他特殊需要,选择\$5/mon的足矣。节点方面,之前别人推荐的都是San Francisco,速度更稳定。但最近(2016年底)我的vps一直登不上,换了两次IP都只能连上一天。(猜测是美国的节点被墙了?)。于是换到了Singapore,目前使用2个月一切正常,网速似乎不如旧金山,但关键是能用。另外操作系统的话,我选择的是ubuntu 14.04 x64的。

创建SSH key

接下来可以添加SSH key,这一步不是必须的,但是我觉得使用SSH key比使用Digital Ocean为你创建的随机密码好一点。如果不想做这一步,或者你之前已经创建过SSH key的话,可以跳过这一部分。

什么是SSH key

SSH key是一个简单而又安全地连接到你的远端设备的方式,通过它你不需要在网络上传输你的密码。SSH key有public和private两部分,其中private部分存储在你的设备本地,而public部分则需要上传到远程设备上。当你通过ssh连接到远程设备上时,只有私钥和公钥匹配上才能登陆。

如何创建SSH key

第一步,首先查看你本地设备上是否有SSH keys。你可以运行以下指令:

1
2
cd ~/.ssh
ls *.pub

如果没有任何输出,说明你需要创建一个新的SSH key:

1
ssh-keygen -t rsa -C "[email protected]"

后面的email请替换成你自己的email。接着你就会看到类似下面的信息:

1
2
3
4
5
6
7
8
9
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
Now your SSH key will be generated.
Your identification has been saved in /Users/your_username/.ssh/id_rsa.
Your public key has been saved in /Users/your_username/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db [email protected]

比如我的公钥就生成于:/Users/Jerry/.ssh/id_rsa.pub,接下来就可以把公钥内容传到Digital Ocean上了。

Shadowsocks

在shadowsocks的github主页上有很详细地说明。

在服务器端安装shadowsocks

首先需要远程登录到Digital Ocean的主机上,因为之前已经建好了SSH Key,所以直接用root用户登录即可:

1
ssh root@VPS IP address

在 Debian / Ubuntu 下 安装shadowsocks

1
2
apt-get install python-pip
pip install shadowsocks

在实际安装下发现很多依赖缺失,需要先执行一下:apt-get update。

启动shadowsocks服务

安装好shadowsocks以后,启动shadowsocks服务可以通过以下指令:

1
2
3
4
5
ssserver -p 8836 -k `password` -m rc4-md5

#或者可以通过以下指令在后台启动shadowsocks的服务:
ssserver -p 8836 -k `password` -m rc4-md5 -d start
ssserver -p 8836 -k `password` -m rc4-md5 -d stop

但上面的方法很不方便,推荐使用配置文件的方法。首先创建一个文件:/etc/shadowsocks.json,内容如下:

1
2
3
4
5
6
7
8
9
10
{
"server":"::",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"你设置的密码",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

接下来你就可以使用下面这个指令启动服务

1
2
3
4
5
ssserver -c /etc/shadowsocks.json

#或者在后台运行
ssserver -c /etc/shadowsocks.json -d start
ssserver -c /etc/shadowsocks.json -d stop

使用shadowsocks客户端

shadowsocks的客户端支持各大主流平台,而且客户端的配置一般都很简单,只需要配置一下服务器的ip地址和之前设置好的连接密码即可。