最近一直想自己搭一个 Shadowsocks 服务,并且利用服务器学习一些技术知识,但是国内的服务器实在是贵得很啊,像我这种苦逼大学生根本玩不起,无奈之下只好各种 Google 百度,最后找到了一些国外的 VPS 资源

  • BandwagonHost(搬瓦工 VPS):据观察搬瓦工这个 VPS 还是算计比较便宜的,年付 $20 ,平均下来每个月只有 $1.6,而且套餐很良心很良心,512MB 的内存,10GB 的 SSD,1TB 的流量是不是比国内很多主机都划算的很。
    DO1
  • Vultr: 同样也是 SSD VPS, 这个套餐看起来也还是很不错的,只不过每月两刀的套餐总是能被抢空。

DO2

  • Digital Ocean:也是我目前正在使用的,大家可以点击此链接注册,通过这个优惠链接注册的小伙伴们会直接获得 $10 的额度在你的账户余额里。而且他的这个套餐也是很诱人的,同样的 SSD VPS,20G 硬盘,每月 1TB 流量,1G 的带宽,只不过这个费用看起来太贵了,一个月需要 $5。
    DO3
    但是事情有这么简单吗?

当然没有,鼎鼎大名的 gayhub 上有个提供给学生的 pack,里面有各种东西,有需要者可以根据需要去使用,其中就有 Digital Ocean 的价值 $50 的 credit。好了,既然有了这等美差,下面该怎么搞呢?

既然是给学生用的,那么 github 肯定要判断你学生的身份,这个时候你需要一个 edu 邮箱,基本上国内很多大学都会给学生使用 edu 邮箱的,用你的 edu 邮箱去注册 github;或者有的已经注册过 github 的怎么办呢,登录帐号后进入 setting 选项,在右侧的 Email 中添加一个 Email 地址,然后验证就好了。进入学生包申请页面,点击 GET your pack,然后就正常填写信息即可,之后我们就能获得需要的优惠码了。
DO4
下面我注册 Digital Ocean,正常的注册步骤,邮箱注册可以使用任意邮箱;邮箱验证结束之后进入到第二部验证,这一步需要有信用卡或者 PayPal 之类的 (如果你我皆是大穷逼的话,可以和我一样选择使用 PayPal注册一个 PayPal 再去绑定一张卡即可), 选择 PayPal 验证,然后支付 $5 即可完成验证,第三步是创建一个 Droplet,即创建一个 VPS,至于配置:

  • 系统根据你的需要去选择

  • size 选最小的 $5/mo 即可,你要是有钱我也不说什么了

  • 数据中心的话,推荐洛杉矶 1 号机房吧,至于他们说的什么新加坡,我亲测慢成狗。

之前注册的时候花了 $5,送了 $10,加上优惠码的 $50,一共就有 $65 了,实际花费 $5,使用十三个月,是不是物超所值。

VPS 创建完之后,Digital Ocean 会把 IP、账号和密码都发到你的注册邮箱,然后你就可以 ssh 登录到服务器啦!


下面就开始搭建我们的 Shadowsocks 服务:

安装 Shadowsocks

首先我们要安装 Shadowsocks,由于 Shadowsocks 是用 python 写的,我们先安装 pip

#由于我用的是Ubuntu的系统,其他系统的用户请自行Google
apt-get install python-pip
pip install shadowsocks

优化 Shadowsocks 性能

按照 SS 官方 Wiki,我们进行优化:

创建 local.conf 配置文件

vim /etc/sysctl.d/local.conf

进入编辑模式之后输入以下内容:

# max open files
fs.file-max = 51200
# max read buffer
net.core.rmem_max = 67108864
# max write buffer
net.core.wmem_max = 67108864
# default read buffer
net.core.rmem_default = 65536
# default write buffer
net.core.wmem_default = 65536
# max processor input queue
net.core.netdev_max_backlog = 4096
# max backlog
net.core.somaxconn = 4096

# resist SYN flood attacks
net.ipv4.tcp_syncookies = 1
# reuse timewait sockets when safe
net.ipv4.tcp_tw_reuse = 1
# turn off fast timewait sockets recycling
net.ipv4.tcp_tw_recycle = 0
# short FIN timeout
net.ipv4.tcp_fin_timeout = 30
# short keepalive time
net.ipv4.tcp_keepalive_time = 1200
# outbound port range
net.ipv4.ip_local_port_range = 10000 65000
# max SYN backlog
net.ipv4.tcp_max_syn_backlog = 4096
# max timewait sockets held by system simultaneously
net.ipv4.tcp_max_tw_buckets = 5000
# turn on TCP Fast Open on both client and server side
net.ipv4.tcp_fastopen = 3
# TCP receive buffer
net.ipv4.tcp_rmem = 4096 87380 67108864
# TCP write buffer
net.ipv4.tcp_wmem = 4096 65536 67108864
# turn on path MTU discovery
net.ipv4.tcp_mtu_probing = 1

# for high-latency network
net.ipv4.tcp_congestion_control = hybla

# for low-latency network, use cubic instead
# net.ipv4.tcp_congestion_control = cubic

保存退出后,执行以下命令使之生效:

sysctl --system

配置 Shadowsocks 配置文件

/etc/ 下创建配置文件:vim /etc/shadowsocks.json
然后进行编辑:

{
    "server":"my_server_ip",
    "server_port":8388,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"mypassword",
    "timeout":300,
    "method":"aes-256-cfb"        #这里的加密方式也可以选择其他的类型,自行把握
    "fast_open":false
}

最后启用 Shadowsocks 服务端功能

nohup ssserver -c /etc/shadowsocks.json -d start &

nohup 是把运行日志输出到当前用户主目录下的 nohup.out 文件中

到这里 VPS 上的 Shadowsocks 服务基本上就搭建完毕了,接下来的事情我想大家应该都会做了吧,爬上梯子开始翻墙吧。