VPS搭建ShadowSocks服务实现科学上网[ipv6 enabled]

https://zodiac911.github.io/blog/vps-shadowsocks.html

本文主要介绍如何使用VPS搭建ShadowSocks服务并安装网络加速算法。

科学上网对我来说是刚需,也尝试过很多梯子。免费的服务,从改DNS、改hosts、GoAgent到XX-Net都折腾过;收费的服务也买过一些,比如某灯、某绿。无论免费还是收费,最大的缺点都是不够稳定,每年开会的时候总会网络波动。由于是灰色产业,出现问题的时候,你甚至没有任何沟通渠道,情况很被动。

偶然接触到ShadowSocks,作为一种网络服务协议,其私密性和抗封锁性都很好。得益于VPS的大带宽,可以将自己的服务分享出去,几个人共同使用也不会卡。迅雷之类的软件也可以挂代理下载,速度很快。并且VPS提供ipv6入口,教育网用户可以通过ipv6连接,有很多学校校园网ipv6通道是不计费的,那么就可以实现不交网费免费上网。另外,$5每月的费用真的还算便宜,有人分摊就更便宜。

最开始也只是客户端使用别人的服务,后来发现可以自己租VPS搭ShadowSocks服务端,整个流程变得可控。于是花半天时间,从注册帐号开始,搭了一个ShadowSocks服务。

爬上梯子,享受自由的呼吸。

将过程记录下来一是给需要的人一些参考,其次再搭建类似的服务时可以少踩坑。

准备工作

具体来说,VPS是指Virtual Private Server 虚拟专用服务器,也就是服务器供应商在其服务器上划分给你的虚拟主机,其具有一定的CPU计算能力,一定的内存和磁盘容量,一定的网络带宽。对于用户而言,就是一个远程Linux主机(一般而言是Linux系统,当然也有采用Windows Server系统的VPS配置类型)

Shadowsocks是指:一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种传输包。ShadowSocks分为服务器端和客户端,在使用之前,需要先将服务器端部署到服务器上面,然后通过客户端连接并创建本地代理。本工具也被广泛用于突破GFW,以浏览被封锁、遮蔽或干扰的内容。

GitHub Education 项目

国外很多科技公司和互联网公司都有教育优惠项目,但大多局限于自家的产品。GitHub这个全球最大的开源软件平台,全世界最著名的开源思想拥抱者与支持者,由于自身服务项目不多,所以其教育优惠里面包含一些其他科技公司的优惠券。其中包括著名的VPS平台Digital Ocean

首先申请 GitHub Education项目,里面的Student Pack有许多服务的优惠券,包括Digital Ocean的 $50 优惠券(如果选择最低的每月$5套餐相当于免费用10个月)


申请完成后在Student Pack Offers页面索取Digital Ocean优惠码[只能新用户使用],稍后在Digital Ocaean 帐号中填写

注册Digital Ocean 帐号

在Digital Ocean注册, 注册完成后必须绑定一张信用卡或PayPal帐号。

填写从GitHub获得的优惠码,发现账户中多了$50的credit.

新建项目和Droplet

Digital Ocean会提醒你新建项目,名字随便选。新建项目之后在项目里可以新建Droplet,这里的Droplet就相当于是远程的Linux虚拟机。

选择虚拟机的系统


我选择的是 Ubuntu 18.04 x64

选择配置


选择最低配置$5每月的即可

Add backups 和 Add block storage 都需要额外付费,不要选

选择服务器位置


我选择的是San Francisco

额外设置


这里记得勾选 ipv6 和 user data

ipv6 在教育网内使用非常方便,搭建Blog(wordpress)等站点需要用到user data,填写方式参考这里

#cloud-config
packages:
  - httpd
  - mariadb-server
  - mariadb
  - php
  - php-mysql
write_files:
  - path: /var/www/html/info.php
    content: |
      <?php
      phpinfo();
      ?>
runcmd:
  - systemctl start httpd.service
  - systemctl enable httpd.service
  - systemctl start mariadb
  - systemctl enable mariadb.service

添加 SSH

添加 SSH key 之后可以很方便的使用SSH登录远程服务器,也可以使用 Putty 登录,使用方法应该大同小异

SSH Key生成方法

如果使用的是Linux系统

首先检查是否存在密钥

cd ~/.ssh
ls *.pub

生成新的密钥

ssh-keygen -t rsa -C "wangtaode090107@hotmail.com"

提示输入密钥保存地址,之后会提示设置短语,这个可以不设置

生成之后会得到类似下面的提示

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@example.com

之后打开 ~/.ssh/id_rsa.pub复制里面的内容添加进Digital Ocean的设置页面,这样它会自动添加在该Droplet的root用户中,你就可以直接SSH进入服务器了!

ssh root@[IP]

IP为VPS地址

安装Shadowsocks

我使用的是秋水逸冰大神的一键安装脚本,脚本会将shadowsock设置为开机自启动,很方便

wget –no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
chmod +x shadowsocks.sh
./shadowsocks.sh 2>&1 | tee shadowsocks.log

期间会询问密码,加密方式,端口等,等待安装完毕,最终得到类似下面这样的提示

ongratulations, shadowsocks install completed!
Your Server IP:your_server_ip
Your Server Port:4396
Your Password:your_password
Your Local IP:127.0.0.1
Your Local Port:1080
Your Encryption Method:aes-256-cfb

Welcome to visit:http://teddysun.com/342.html
Enjoy it!

因为我们需要使用ipv6所以需要对shadowsocks的配置作一点简单的修改

vim 打开配置文件

vi /etc/shadowsocks.json

按i进入编辑模式修改为如下

{
  "server":"::",
  "server_port":4396,
  "local_address":"127.0.0.1",
  "local_port":1080,
  "password":"yourpassword",
  "timeout":300,
  "method":"aes-256-cfb",
  "fast_open": false
}

重点是server那里的 ::这样可以同时监听ipv4和ipv6

ctrl+c退出编辑模式 输入 “:x” (英文冒号+x)保存并退出

重启 shadowsocks

/etc/init.d/shadowsocks restart

使用方法

/etc/init.d/shadowsocks start # 开启
/etc/init.d/shadowsocks stop # 关闭
/etc/init.d/shadowsocks restart # 重启
/etc/init.d/shadowsocks status # 状态

至此,服务端的shadowsocks就搭建好了,赶紧下载客户端登录,畅享自由网络

**注意 IPv6地址需要加[]如[2604:a880:12:200::13e:8000]

常见问题及解决方法见:https://teddysun.com/342.html

安装BBR

实际上带宽还有一定的提升空间

BBR是谷歌开源的一款网络防阻塞算法,目的是更好的利用网络资源,实测带宽提升效果非常显著,从2000kbps提升到20000kbps

仍然使用秋水逸冰大神的一键安装脚本

wget –no-check-certificate https://raw.githubusercontent.com/teddysun/across/master/bbr.sh
chmod +x bbr.sh
./bbr.sh

安装完成后可能会提示重启(如果安装了最新内核),重启后输入一些命令检查是否安装成功

查看内核版本,如果返回内核版本则安装成功

uname -r
4.15.0-36-generic

查看网络控制算法简介

来源:
正文
sysctl net.ipv4.tcp_available_congestion_control

我的返回值

net.ipv4.tcp_available_congestion_control = reno cubic bbr

其他验证方法及常见问题:https://teddysun.com/489.html

本地使用

至此,服务端的安装就基本完成了,在本地机器上下载安装 ShadowSocks 客户端填写必要的信息就可以使用了。

如果身处 ipv6 网络环境下,在客户端内填写 ipv6 地址进行连接,基本就可以不用付网费了[大部分学校应该是不计 ipv6 流量的吧]

Shadowsocks for Windows 客户端

推荐配合 Chrome 浏览器和 SwitchyOmega 插件一起食用,味道会更加香甜

没有评论: