本文主要介绍如何使用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 帐号中填写
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 流量的吧]
推荐配合 Chrome 浏览器和 SwitchyOmega 插件一起食用,味道会更加香甜
简单命令¶
df -hl #查看磁盘使用量
move [source_filename] [destination_filename # 移动文件/也可用于重命名