Open 662 opened 6 years ago
由于 Github gists 在国内无法正常访问,所以本文旨在快速学习Linux搭建 shadowsocks 服务(以下简称ss),并利用 bbr 和 kcp 进行加速,然后在 windows/ios 设备上访问 Github gists 来学习优秀的代码片段。
注意:本文基于你对 linux 操作系统有简单的认知和理解,所以本文并不适合纯小白
以下是需要用到的资源
选购一台廉价的海外服务器就足够了,本文使用 vultr 提供的 vps,目前最便宜的是$3.5一个月。使用下面的推广链接可获得$50首冲赠送。
推广链接:https://www.vultr.com/?ref=8030646-4F
注意:推广活动是限时的,如果点击过去发现无效,就表示活动过期了。
服务端的安装方式有很多,本文选用 @flyzy2005 编写的 ss-fly 一键安装脚本。
git clone https://github.com/flyzy2005/ss-fly
ss-fly/ss-fly.sh -i yourpassword 8080
其中yourpassword是 ss 连接密码,8080是端口号。
yourpassword
8080
等待安装完成即可,安装完成之后服务会自动运行,并会开机自启。
如果需要修改密码或者端口,只需要重新运行一次安装脚本,或者直接修改/etc/shadowsocks.json这个配置文件。
/etc/shadowsocks.json
相关操作
/etc/init.d/ss-fly start # 启动 /etc/init.d/ss-fly stop # 停止 /etc/init.d/ss-fly restart # 重启 /etc/init.d/ss-fly status # 查看状态 ss-fly/ss-fly.sh -sslink # 查看连接 vi /etc/shadowsocks.json # 修改配置
这一步并不是必须的,而是为了检查 ss 服务是否在正常运行,并能被外部网络访问
netstat -lntup
检查输出结果是否有一个被 python 监听的8080端口,如果有就说明 ss 服务已经启动。
telnet yourserverip 8080
其中yourserverip是你的服务器 ip,如果连接成功,就表示 ss 服务已经能被外部网络访问。
yourserverip
如果没有telnet这个命令,可以在控制面板 > 程序和功能 > 启用或关闭 Windows 功能中勾选Telnet Client并安装。
telnet
控制面板 > 程序和功能 > 启用或关闭 Windows 功能
Telnet Client
如果telnet连接失败,可以检查以下几个方面:
ss 客户端也有很多,本文选用 shadowsocks-windows,使用方法非常简单,填写好服务器地址``服务器端口``密码就可以正常使用了,记得更新PAC配置。
服务器地址``服务器端口``密码
到这里,ss 服务端和 windows 客户端就已经安装完成了,已经可以正常的网上冲浪了。
如果你觉得冲浪的速度有点差强人意,那么你可以继续进行下面的步骤。
bbr 是 @google 开源的一套内核加速算法,可以让你搭建的 shadowsocks 速度上一个台阶。
本文使用的ss-fly一键安装脚本已经集成了bbr的一键安装,所以我们只需要在服务器上运行以下脚本就可以开启bbr加速了。
ss-fly
bbr
ss-fly/ss-fly.sh -bbr
注意:安装完成之后需要重启系统才能生效。
检测bbr加速是否开启,可以输入以下脚本:
sysctl net.ipv4.tcp_available_congestion_control
如果返回类似以下这种后面含有bbr的内容,则说明已经成功开启了。
net.ipv4.tcp_available_congestion_control = bbr cubic reno
到这里,你不但完成了 ss 服务端和 windows 客户端的安装,还对服务端的 ss 进行了 bbr 加速。
这基本能满足大多数冲浪需求了,但如果你像本文一样,购买的是非常廉价而且又远在美利坚的 vps,每到晚上速度就会慢得让人接受不了,那么你可以继续下面的步骤。
kcptun 是由 @xtaci 基于 kcp 协议的golang实现。KCP是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。
golang
注意:使用kcptun会增加流量的开支
kcptun
但是对于本文中使用的 vultr vps 最低配,也就是 500G/month 的流量限制,完全能够负担。
打开 https://github.com/xtaci/kcptun/releases 在服务器上下载最新版的kcptun服务端kcptun-linux-amd64-20xxxxxx.tar.gz
kcptun-linux-amd64-20xxxxxx.tar.gz
# 本文使用的 v20190418 wget https://github.com/xtaci/kcptun/releases/download/v20190418/kcptun-linux-amd64-20190418.tar.gz
解压之后启动服务
./server_linux_amd64 -t "yourssip:8080" -l ":8081" -mode fast3 -nocomp -sockbuf 16777217 -dscp 46 --key yourpassword # 这里是直接在当前服务器会话运行的,你可以使用 nohup 让它在后台运行,也可以注册成 systemd 服务让它以服务的形式启动
其中yourssip是你的 ss 服务器 ip,在本文中 ss 和 kcptun 部署在同一服务器,所以这里直接填写服务器的 ip 地址,8080是你的 ss 端口,8081是你准备让kcptun监听的端口,yourpassword是你的kcptun密码。
yourssip
8081
你任然可以使用netstat -lntup来查看8081端口的监听情况,以便确认kcptun是否启动成功
这样,kcptun 服务端就已经部署好了
接下来下载最新版的 windows 客户端kcptun-windows-amd64-20xxxxxx.tar.gz,解压之后会发现里面包含 windows 服务端和客户端文件,由于我们的服务端已经部署在 linux 上,所以我们只需要名为client_windows_amd64.exe的客户端文件。
kcptun-windows-amd64-20xxxxxx.tar.gz
client_windows_amd64.exe
我们用cmd运行以下脚本
cmd
client_windows_amd64.exe -r "KCP_SERVER_IP:8081" -l ":1000" -mode fast3 -nocomp -sockbuf 16777217 -dscp 46 --key yourpassword
其中KCP_SERVER_IP是你的kcptun所在服务器的 ip,8081是你的kcptun监听的端口,:1000是你的kcptun客户端准备监听的本地端口,yourpassword是你的kcptun密码。
KCP_SERVER_IP
:1000
这样我们的kcptun客户端就已经成功连接到了我们的kcptun服务端,接下来我们只需要修改一下我们的shadowsocks-windows客户端的配置,让shadowsocks-windows不把数据发送到 ss 服务器,而是把数据发送到本地的kcptun,就能实现我们的kcptun加速了。
shadowsocks-windows
# ss客户端 -> kcptun客户端 -> kcptun服务端 -> ss服务端
shadowsocks-windows 配置修改
将服务器地址改为127.0.0.1,将服务器端口改为1000,确认之后就可以享受kcptun加速带来的稳定和快乐了。
服务器地址
127.0.0.1
服务器端口
1000
到上一步的时候,由于我们在客户端每次都要开启两个程序(kcptun客户端、ss客户端),所以在使用上显得并不那么优雅。好在shadowsocks-windows提供了插件的支持,我们可以把kcptun以插件的形式加载到shadowsocks-windows,使得我们只需要启动shadowsocks-windows就可以愉快的冲浪。
ss服务器地址
插件程序
插件参数
-r %SS_REMOTE_HOST%:%SS_REMOTE_PORT% -l %SS_LOCAL_HOST%:%SS_LOCAL_PORT% --mode fast3 --nocomp --sockbuf 16777217 --dscp 46 --key kcptunpassword # kcptunpassword 是你的 kcptun 密码
确认之后就可以享受kcptun加速带来的稳定和快乐了。
国区已经没有好用的 ss 客户端了,本文使用的 potatso lite 也需要在美区才能下载,关于如何切换美区,或者注册美区账号,以下提供简要的说明,避免大家踩坑根本没有人会浏览到我的博客,哪儿来的大家。
试试
由于 Github gists 在国内无法正常访问,所以本文旨在快速学习Linux
搭建 shadowsocks 服务(以下简称ss),并利用 bbr 和 kcp 进行加速,然后在 windows/ios 设备上访问 Github gists 来学习优秀的代码片段。注意:本文基于你对 linux 操作系统有简单的认知和理解,所以本文并不适合纯小白
以下是需要用到的资源
一、 获取服务器
选购一台廉价的海外服务器就足够了,本文使用 vultr 提供的 vps,目前最便宜的是$3.5一个月。使用下面的推广链接可获得$50首冲赠送。
推广链接:https://www.vultr.com/?ref=8030646-4F
注意:推广活动是限时的,如果点击过去发现无效,就表示活动过期了。
二、 安装ss服务端
服务端的安装方式有很多,本文选用 @flyzy2005 编写的 ss-fly 一键安装脚本。
第一步:clone代码到本地
第二步:运行安装脚本
其中
yourpassword
是 ss 连接密码,8080
是端口号。等待安装完成即可,安装完成之后服务会自动运行,并会开机自启。
如果需要修改密码或者端口,只需要重新运行一次安装脚本,或者直接修改
/etc/shadowsocks.json
这个配置文件。相关操作
第三步:验证服务状态
这一步并不是必须的,而是为了检查 ss 服务是否在正常运行,并能被外部网络访问
在服务器上执行
检查输出结果是否有一个被 python 监听的
8080
端口,如果有就说明 ss 服务已经启动。在本地执行
其中
yourserverip
是你的服务器 ip,如果连接成功,就表示 ss 服务已经能被外部网络访问。如果没有
telnet
这个命令,可以在控制面板 > 程序和功能 > 启用或关闭 Windows 功能
中勾选Telnet Client
并安装。如果
telnet
连接失败,可以检查以下几个方面:8080
端口(ss-fly 在安装过程中会自动配置防火墙开放8080
);8080
(vultr 默认无防火墙);8080
,由于一些企业的防火墙策略只允许访问常用端口,所以本文使用的是8080
这种比较常用的端口;三、 安装SS客户端
ss 客户端也有很多,本文选用 shadowsocks-windows,使用方法非常简单,填写好
服务器地址``服务器端口``密码
就可以正常使用了,记得更新PAC配置。到这里,ss 服务端和 windows 客户端就已经安装完成了,已经可以正常的网上冲浪了。
如果你觉得冲浪的速度有点差强人意,那么你可以继续进行下面的步骤。
四、 开启BBR加速
bbr 是 @google 开源的一套内核加速算法,可以让你搭建的 shadowsocks 速度上一个台阶。
本文使用的
ss-fly
一键安装脚本已经集成了bbr
的一键安装,所以我们只需要在服务器上运行以下脚本就可以开启bbr
加速了。注意:安装完成之后需要重启系统才能生效。
检测
bbr
加速是否开启,可以输入以下脚本:如果返回类似以下这种后面含有
bbr
的内容,则说明已经成功开启了。到这里,你不但完成了 ss 服务端和 windows 客户端的安装,还对服务端的 ss 进行了 bbr 加速。
这基本能满足大多数冲浪需求了,但如果你像本文一样,购买的是非常廉价而且又远在美利坚的 vps,每到晚上速度就会慢得让人接受不了,那么你可以继续下面的步骤。
五、 使用KCPTUN进行加速
kcptun 是由 @xtaci 基于 kcp 协议的
golang
实现。KCP是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。注意:使用
kcptun
会增加流量的开支但是对于本文中使用的 vultr vps 最低配,也就是 500G/month 的流量限制,完全能够负担。
下载最新版的kcptun
打开 https://github.com/xtaci/kcptun/releases 在服务器上下载最新版的
kcptun
服务端kcptun-linux-amd64-20xxxxxx.tar.gz
解压之后启动服务
其中
yourssip
是你的 ss 服务器 ip,在本文中 ss 和 kcptun 部署在同一服务器,所以这里直接填写服务器的 ip 地址,8080
是你的 ss 端口,8081
是你准备让kcptun
监听的端口,yourpassword
是你的kcptun
密码。你任然可以使用
netstat -lntup
来查看8081
端口的监听情况,以便确认kcptun
是否启动成功这样,kcptun 服务端就已经部署好了
接下来下载最新版的 windows 客户端
kcptun-windows-amd64-20xxxxxx.tar.gz
,解压之后会发现里面包含 windows 服务端和客户端文件,由于我们的服务端已经部署在 linux 上,所以我们只需要名为client_windows_amd64.exe
的客户端文件。我们用
cmd
运行以下脚本其中
KCP_SERVER_IP
是你的kcptun
所在服务器的 ip,8081
是你的kcptun
监听的端口,:1000
是你的kcptun
客户端准备监听的本地端口,yourpassword
是你的kcptun
密码。这样我们的
kcptun
客户端就已经成功连接到了我们的kcptun
服务端,接下来我们只需要修改一下我们的shadowsocks-windows
客户端的配置,让shadowsocks-windows
不把数据发送到 ss 服务器,而是把数据发送到本地的kcptun
,就能实现我们的kcptun
加速了。shadowsocks-windows 配置修改
将
服务器地址
改为127.0.0.1
,将服务器端口
改为1000
,确认之后就可以享受kcptun
加速带来的稳定和快乐了。六、整合shadowsocks-windows和kcptun客户端
到上一步的时候,由于我们在客户端每次都要开启两个程序(kcptun客户端、ss客户端),所以在使用上显得并不那么优雅。好在
shadowsocks-windows
提供了插件的支持,我们可以把kcptun
以插件的形式加载到shadowsocks-windows
,使得我们只需要启动shadowsocks-windows
就可以愉快的冲浪。client_windows_amd64.exe
到shadowsocks-windows
目录;shadowsocks-windows
配置,将服务器地址
改为ss服务器地址
,将服务器端口
改为8081
(服务端kcptun
监听的端口),插件程序
填写client_windows_amd64.exe
,插件参数
填写以下内容确认之后就可以享受
kcptun
加速带来的稳定和快乐了。七、 IOS客户端
国区已经没有好用的 ss 客户端了,本文使用的 potatso lite 也需要在美区才能下载,关于如何切换美区,或者注册美区账号,以下提供简要的说明,避免大家踩坑
根本没有人会浏览到我的博客,哪儿来的大家。