662 / issue-blog

Blog
MIT License
1 stars 0 forks source link

如何通过 Github gists 学习优秀的代码片段 #1

Open 662 opened 6 years ago

662 commented 6 years ago

由于 Github gists 在国内无法正常访问,所以本文旨在快速学习Linux搭建 shadowsocks 服务(以下简称ss),并利用 bbrkcp 进行加速,然后在 windows/ios 设备上访问 Github gists 来学习优秀的代码片段。

注意:本文基于你对 linux 操作系统有简单的认知和理解,所以本文并不适合纯小白

以下是需要用到的资源

一、 获取服务器

选购一台廉价的海外服务器就足够了,本文使用 vultr 提供的 vps,目前最便宜的是$3.5一个月。使用下面的推广链接可获得$50首冲赠送。

推广链接:https://www.vultr.com/?ref=8030646-4F

注意:推广活动是限时的,如果点击过去发现无效,就表示活动过期了。

二、 安装ss服务端

服务端的安装方式有很多,本文选用 @flyzy2005 编写的 ss-fly 一键安装脚本。

第一步:clone代码到本地

git clone https://github.com/flyzy2005/ss-fly

第二步:运行安装脚本

ss-fly/ss-fly.sh -i yourpassword 8080

其中yourpassword是 ss 连接密码,8080是端口号。

等待安装完成即可,安装完成之后服务会自动运行,并会开机自启。

如果需要修改密码或者端口,只需要重新运行一次安装脚本,或者直接修改/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 服务已经能被外部网络访问。

如果没有telnet这个命令,可以在控制面板 > 程序和功能 > 启用或关闭 Windows 功能中勾选Telnet Client并安装。

如果telnet连接失败,可以检查以下几个方面:

  1. 服务器防火墙是否开放8080端口(ss-fly 在安装过程中会自动配置防火墙开放8080);
  2. 服务器提供商的防火墙策略是否开放8080vultr 默认无防火墙);
  3. 你所在的网络是否允许访问8080,由于一些企业的防火墙策略只允许访问常用端口,所以本文使用的是8080这种比较常用的端口;

三、 安装SS客户端

ss 客户端也有很多,本文选用 shadowsocks-windows,使用方法非常简单,填写好服务器地址``服务器端口``密码就可以正常使用了,记得更新PAC配置。

到这里,ss 服务端和 windows 客户端就已经安装完成了,已经可以正常的网上冲浪了。

如果你觉得冲浪的速度有点差强人意,那么你可以继续进行下面的步骤。

四、 开启BBR加速

bbr@google 开源的一套内核加速算法,可以让你搭建的 shadowsocks 速度上一个台阶。

本文使用的ss-fly一键安装脚本已经集成了bbr的一键安装,所以我们只需要在服务器上运行以下脚本就可以开启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进行加速

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

# 本文使用的 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密码。

你任然可以使用netstat -lntup来查看8081端口的监听情况,以便确认kcptun是否启动成功

这样,kcptun 服务端就已经部署好了

接下来下载最新版的 windows 客户端kcptun-windows-amd64-20xxxxxx.tar.gz,解压之后会发现里面包含 windows 服务端和客户端文件,由于我们的服务端已经部署在 linux 上,所以我们只需要名为client_windows_amd64.exe的客户端文件。

我们用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密码。

这样我们的kcptun客户端就已经成功连接到了我们的kcptun服务端,接下来我们只需要修改一下我们的shadowsocks-windows客户端的配置,让shadowsocks-windows不把数据发送到 ss 服务器,而是把数据发送到本地的kcptun,就能实现我们的kcptun加速了。

#   ss客户端 -> kcptun客户端 -> kcptun服务端 -> ss服务端

shadowsocks-windows 配置修改

服务器地址改为127.0.0.1,将服务器端口改为1000,确认之后就可以享受kcptun加速带来的稳定和快乐了。

六、整合shadowsocks-windows和kcptun客户端

到上一步的时候,由于我们在客户端每次都要开启两个程序(kcptun客户端、ss客户端),所以在使用上显得并不那么优雅。好在shadowsocks-windows提供了插件的支持,我们可以把kcptun以插件的形式加载到shadowsocks-windows,使得我们只需要启动shadowsocks-windows就可以愉快的冲浪。

  1. 复制client_windows_amd64.exeshadowsocks-windows目录;
  2. 修改shadowsocks-windows配置,将服务器地址改为ss服务器地址,将服务器端口改为8081(服务端kcptun监听的端口),插件程序填写client_windows_amd64.exe插件参数填写以下内容
    -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加速带来的稳定和快乐了。

七、 IOS客户端

国区已经没有好用的 ss 客户端了,本文使用的 potatso lite 也需要在美区才能下载,关于如何切换美区,或者注册美区账号,以下提供简要的说明,避免大家踩坑根本没有人会浏览到我的博客,哪儿来的大家

  1. 需要能访问真正互联网的网络,推荐使用 nuts 的 ios 版;
  2. 不要用 wifi 代理,用代理无法访问 appstore;
  3. 需要一个美国身份的生成器,不要乱填,乱填无法通过验证,推荐使用 fake name generator
662 commented 4 years ago

试试