Bandwagon VPS build Shadowsocks

Clloz · · 813次浏览 ·

前言

我之前科学上网都是通过直接购买VPN服务提供商的产品来做了,虽然也知道可以买境外的VPS来搭建SS,但是一方面是觉得麻烦,一方面是觉得没必要,SS的成本比较低,但是我一直觉得没有免费的午餐,VPN供应商也不是傻子,能卖出价格肯定是有道理的。当然还有个主要的原因是我用的VPN这么久没出现过任何问题,体验也非常好(除了在十八大的时候偶尔会连不上),全平台支持,现在在对应的路由器上也能安装了,价格是贵了点,不过我觉得还是物有所值的,想了解的朋友可以点击ExpressVPN。话题扯远了,今天我尝试了一下SS,速度还可以,服务端安装好之后就可以在客户端访问了,安装过程也很简单,下面就来和大家分享一下。

购买境外VPS搭建SS Server端

关于SS的原理就不过多赘述了,如果感兴趣的同学可以看这里,想让你能够通过SS客户端绕过GFW访问墙外的世界,那么你首先要做的就是购买一台境外的VPS,然后部署好SS的服务端。关于购买VPS的问题,我购买的是BandwagonHost的VPS,一年19.9刀,每个月500G的流量,基本够用了,用优惠码的话可以打9.35折,优惠码google就可以,购买的细节就不多说了,Bandwagon是支持alipay和paypal的,对国内的用户还是蛮友好的。购买成功后点击service,见图:

vps

然后点击KiwiVM Control Panel进入VPS的控制台,在Main Controls页面看到VPS的基本状态,默认安装的系统是centos6_x86_bbr,如果你想更换系统,就先stop你的VPS然后进入install new OS选择自己喜欢的系统安装,速度很快,注意重新安装好系统后会更改VPS的端口。下面就是远程链接VPS了,默认的root用户的密码是随机生成的,在root password modification中可以重新生成,有了密码后我们就可以登录,windows下用Xshell,mac或者linux直接ssh登录依旧可以了,输入IP,端口,用户名密码。连接上VPS以后如果你觉得随机生成的密码难记,那么你可以在命令行中输入passwd来设置自己的密码。

panel

下面开始安装SS,由于本文使用的python版本的SS,所以要先安装python的包管理工具pip:

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py

安装SS:

pip install --upgrade pip
pip install shadowsocks

安装完成后,我们需要创建SS的配置文件/etc/shadowsocks.json

{
  "server": "0.0.0.0",
  "server_port": 8388,
  "password": "uzon57jd0v869t7w",
  "method": "aes-256-cfb"
}

参数说明:
– method:加密方式,可取值非常多,包括不限于(aes-128-cfb, aes-192-cfb, aes-256-cfb, aes-128-gcm, aes-192-gcm, aes-256-gcm,bf-cfb, cast5-cfb, des-cfb, rc4-md5, chacha20, salsa20, rc4, table)至于那种加密方式好我也不太清楚,比较推荐的是aes-256-gcm 、chacha20-ietf-poly1305、aes-128-gcm、aes-192-gcm,不过要注意的是gcm和chacha20的加密方式很多SS实现不支持,根据实际情况自己选择。
– server_port: 服务器监听端口,自己设置。
– password:Client连接Server的密码。

配置SS的自启动
新建启动脚本文件/etc/systemd/system/shadowsocks.service

[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/ssserver -c /etc/shadowsocks.json
[Install]
WantedBy=multi-user.target

启动SS服务并设置开机启动:

systemctl enable shadowsocks.service #设置开机启动
systemctl start shadowsocks.service  #启动服务
systemctl status shadowsocks.service #检查服务状态

若看到绿色的Active: active (running)则表示服务启动成功。

若觉得麻烦,还可以使用一键安装脚本(已测试过,没问题)

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

安装SS客户端

SS客户端全平台都有,这里跟大家说一下,windows,mac,iphone的经过我测试可用的客户端。
windows10: shadowsocks-windows
mac: shadowsocksX-NG
iphone:shadowrocket(在app store下载即可,付费12¥)
最后说一下centos,目前Shadowsocks在github上提供的最新的正式版本是2.9.1,但是这个版本有个问题就是不支持gcm的加密方式,有一个非正式的3.0.0版本,我试了一下,虽然支持了gcm但是在安装完成后进行curl测试的时候一直返回错误,所以我就放弃了。也有建议使用shadowsocks-libev的,我没有尝试,后面有时间会试一下,有兴趣的同学自己试试。

更新Linux安装SS客户端

上面提到由于目前Github上正式上线的2.9.1版本不支持gcm的加密方式,我们需要先安装3.0.0版本

pip install --upgrade git+https://github.com/shadowsocks/shadowsocks.git@master

安装成功后添加SS的配置文件

sudo mkdir /etc/shadowsocks
sudo vi /etc/shadowsocks/shadowsocks.json

具体配置如下

{
    "server":"1.1.1.1", #SS服务端的IP地址
    "server_port":1035, #SS服务端的端口
    "local_address": "127.0.0.1", #本地IP
    "local_port":1080, #本地端口
    "password":"password", #你设置的服务端密码
    "timeout":300,
    "method":"aes-256-cfb", #服务端加密方式
    "fast_open": false, 开启fast_open以降低延迟,但要求Linux内核在3.7+。开启方法 echo 3 > /proc/sys/net/ipv4/tcp_fastopen
    "workers": 1 线程数
}

在系统中添加SS服务,文件位置为/etc/systemd/system/shadowsocks.service

[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/sslocal -c /etc/shadowsocks/shadowsocks.json
[Install]
WantedBy=multi-user.target

启动服务并设置开机启动

systemctl enable shadowsocks.service
systemctl start shadowsocks.service
systemctl status shadowsocks.service

启动服务后验证客户端是否运行正常: curl --socks5 127.0.0.1:1080 http://httpbin.org/ip

如果客户端正常运行将显示如下信息

{
  "origin": "x.x.x.x"       #你的Shadowsock服务器IP
}

现在我们安装的SS客户端已经能够正常工作但它是socks5代理,我门在shell里执行的命令,发起的网络请求现在还不支持socks5代理,只支持http/https代理。为了我门需要安装privoxy代理,它能把电脑上所有http请求转发给shadowsocks。

安装privoxy: sudo yum -y install privoxy

启动privoxy并设置开机启动

systemctl enable privoxy
systemctl start privoxy
systemctl status privoxy

修改privoxy配置文件/etc/privoxy/config: vim /etc/privoxy/config,在其中搜索如下两行,第二行需要把注释去掉并改为上面设置的端口

listen-address 127.0.0.1:8118 # 8118 是默认端口,不用改
forward-socks5t / 127.0.0.1:1080 . #转发到本地端口

设置http/https代理,修改/etc/profile,添加如下两行

export http_proxy=http://127.0.0.1:8118 #端口要与刚刚设置的privoxy的配置文件中的端口一致
export https_proxy=http://127.0.0.1:8118

让修改的环境变量生效: source /etc/profile

测试是否成功

[root@aniu-k8s ~]# curl -I www.google.com 
HTTP/1.1 200 OK
Date: Fri, 26 Jan 2018 05:32:37 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2018-01-26-05; expires=Sun, 25-Feb-2018 05:32:37 GMT; path=/; domain=.google.com
Set-Cookie: NID=122=PIiGck3gwvrrJSaiwkSKJ5UrfO4WtAO80T4yipOx4R4O0zcgOEdvsKRePWN1DFM66g8PPF4aouhY4JIs7tENdRm7H9hkq5xm4y1yNJ-sZzwVJCLY_OK37sfI5LnSBtb7; expires=Sat, 28-Jul-2018 05:32:37 GMT; path=/; domain=.google.com; HttpOnly
Transfer-Encoding: chunked
Accept-Ranges: none
Vary: Accept-Encoding
Proxy-Connection: keep-alive

需要注意的是,ss代理是基于tcp或者udp协议,而ping是走的icmp协议,因此在ss下不能ping通google。

再补充一点,目前linux上的客户端不能开启PAC模式,只能是全局模式,我在阿里云遇到过开启SS后yum连不上阿里云的mirrors的情况,不过大部分时候正常,我是一直开着代理的,如果你想要关闭代理,只要把刚刚加在/etc/profile中的配置注释掉就可以了。

总结

总的来说配置SS的过程还是很流畅的,也很简单,基本没遇到什么问题,VPS价格也很便宜,我试了一下,看youtube的1080p完全没压力,一个月500G的流量完全够用了,不过我发现开了SS以后打不开,开VPN可以,不知道什么原因。另外再提一点,我是个人使用所以没有配置多用户的SS,如果想配置多用户的同学可以自己去google一下,我看了一下,也很简单。SS作为一个久经考验的项目,如今依然有人在维护,说明追求自由的脚步一刻都不会停止,感谢作者clowwindy。


Clloz

一个无聊的懒人。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

我不是机器人*

EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00