在日常生活中,我们动不动就会需要百度、谷歌,由于大天朝的政策,我们是没办法访问谷歌的,今天给大家介绍一种方法,来突破一下阻碍(๑乛◡乛๑)

介绍

什么是ssr(以下皆称为“酸酸乳”)。如果不了解建议先看看这个详细的介绍。Vpn与ss/ssr的区别 这里总结来说。现在你有一个代理服务器在香港,比如你现在想要访问google,你的电脑发出请求,流量通过socks5连接发到你在香港的服务器上,然后再由你在香港的服务器去访问google,再把访问结果传回你的电脑,这样就实现了翻X。

开始搭建

注册、登录这个基本操作。就直接跳过了。官网的优惠活动依旧进行。不过比起上一个老版活动(10美元)。这次新增了一个新活动(25美元)。只限新用户注册使用。

准备服务器

在创建服务器之前请确保账户中有余额。新用户需要先进行充值。因为vultr的收费方式是按照小时收费。如果不想使用了可以随时销毁服务器。点击Billing可以看到如下界面。

目前支持 支付宝 、微信 支付。微信支付是新添加的。记得上次还没有微信支付。没变的是充值最低额度依然是10美元

创建服务器

在充值完成后,点击菜单的Servers 之后可以看到一个蓝色加号按钮。点击它来创建第一个服务器吧。

点击后进入服务器配置页面。默认选中第一个Vultr Cloud Compute (VC2)。其他的用不到也就不看了。来看看这个页面都有些什么吧。

Server Location

这是第一个选项。用来选择服务器的位置。

位置的选择当然是离我们越近延迟越低。不过因为其他原因。具体最优位置需要自己来测试。这里不用担心。不理想的话后续很容易修改。我们先选择日本Tokyo。理论上离我们最近的是日本了。

Server Type

第二个是服务器类型(系统),这里推荐使用64 bit OS |Centos 7 x64 原因是很多脚本都支持CentOS而且对于此系统的相关教程很多。有问题可以方便查找解决。是大多数人优先选择的系统。其次是Debian 7+,Ubuntu 12+。这里我选择的系统依然是Centos 7

Server Size

第三个是服务器大小,本着勤俭节约的传统美德。我们选择当然是 $3.50/mo | $0.005/h 。因为只是自己使用所以没有必要追求多好的服务器。满足自己使用就好了。不推荐选择第一个。第一个只有IPv6的地址!因为IPv6目前不是特别普及。而且也不利于后面的提速。所以稳定使用还是选择有IPv4的服务器。它的流量上限是500GB。一个月重新计算一次。

Additional Features

第四个是附加功能。

  • Enable IPv6 - 是否启用IPv6 - 启用,因为后面普及的话我们可以随时更换使用。
  • Enable Auto Backups - 是否启用自动备份 - No,因为要加钱,而且没必要
  • Enable DDOS Protection - 是否启动DDOS保护 - No,而且只支持地区是:芝加哥,达拉斯,洛杉矶,迈阿密,新泽西,西雅图,硅谷,阿姆斯特丹,伦敦,巴黎和法兰克福。
  • Enable Private Networking - 是否启动专用网络 - No,不需要添加内部IP。

Startup Script

第五个启动脚本。这里不需要

SSH Keys

第六个是ssh密钥,我们也不需要。

Server Hostname & Label

最后一个是主机名和标签。填不填都行。

创建结束

到此配置已经选择完成。点击Deploy Now 来创建我们的服务器吧。点击后跳回主界面。显示服务器正在installing 等待它完成。显示 Starting 启动。之后显示Running。这时我们来测试一下服务器的延迟。


测试延迟

在此界面 (Servers) 可以看到刚刚创建服务器的大致情况。点击服务器可以进入详细页面。

现在复制IP地址。

打开CMD。输入 ping 你的服务器ip地址看回复时间。我的是93ms。理想状态。100ms左右都可以。200ms以上就要考虑试试别的服务器位置了。

如果需要重新选择,回到主界面点击三个小冒号,红色的选项删除服务器。重复上面的操作重新创建一个。再次尝试ping

PS:在vultr中每一次创建会默认扣除服务器的1小时费用。在达到1小时之前不会重复计费。(这样也是为了防止恶意用户吧)

连接服务器

连接软件,我使用的是 Xshell 。服务器默认用户名root。密码在服务器详细页面。直接复制就行。

安装脚本

关于脚本

1、一键安装 Shadowsocks-PythonShadowsocksRShadowsocks-GoShadowsocks-libev 版(四选一)服务端;
2、各版本的启动脚本及配置文件名不再重合;
3、每次运行可安装一种版本;
4、支持以多次运行来安装多个版本,且各个版本可以共存(注意端口号需设成不同);
5、若已安装多个版本,则卸载时也需多次运行(每次卸载一种);

默认配置

服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成)
密码:自己设定(如不设定,默认为 teddysun.com)
加密方式:自己设定(如不设定,Python 和 libev 版默认为 aes-256-gcm,R 和 Go 版默认为 aes-256-cfb)
协议(protocol):自己设定(如不设定,默认为 origin)(仅限 ShadowsocksR 版)
混淆(obfs):自己设定(如不设定,默认为 plain)(仅限 ShadowsocksR 版)
备注:脚本默认创建单用户配置文件,如需配置多用户,请手动修改相应的配置文件后重启即可。

使用方法

使用root用户登录,运行以下命令

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

选择安装版本

选择ShadowsocksR

设置密码

因为是演示所以我设置的是12345678。

设置端口

直接回车使用默认的就行。或者自己设定一个。注意不要超范围。

设置加密方式

默认就好。

设置协议

同样默认。

设置混淆

同样回车。到此设置完成。按任意键执行安装。等待安装结束。

安装结束

安装完成后脚本提示如下:

现在来使用准备好的客户端连接服务端,开始 "饭抢" 吧。


脚本其他使用

卸载方法

若已安装多个版本,则卸载时也需多次运行(每次卸载一种)

使用root用户登录,运行以下命令:

./shadowsocks-all.sh uninstall

启动脚本方法

启动脚本后面的参数含义,从左至右依次为:启动,停止,重启,查看状态。

Shadowsocks-Python 版:
/etc/init.d/shadowsocks-python start | stop | restart | status

ShadowsocksR 版:
/etc/init.d/shadowsocks-r start | stop | restart | status

Shadowsocks-Go 版:
/etc/init.d/shadowsocks-go start | stop | restart | status

Shadowsocks-libev 版:
/etc/init.d/shadowsocks-libev start | stop | restart | status

各版本默认配置文件

Shadowsocks-Python 版:
/etc/shadowsocks-python/config.json

ShadowsocksR 版:
/etc/shadowsocks-r/config.json

Shadowsocks-Go 版:
/etc/shadowsocks-go/config.json

Shadowsocks-libev 版:
/etc/shadowsocks-libev/config.json

进阶配置1(提速)

如上的配置已经可以满足日常游览使用了。但是如果想要看youtube 4k视频还是有些吃力。速度还是太慢了。那么来提速一下,让服务器跑满自己的带宽,速度达到10M/s。

这里使用的加速脚本是BBR。最近,Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。
根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。

关于本脚本

1、本脚本已在 Vultr 上的 VPS 全部测试通过。
2、当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
3、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
4、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

使用方法

使用root用户登录,运行以下命令:

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

按任意键开始安装。等待安装结束。

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。

重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

uname -r

查看内核版本,显示为最新版就表示 OK 了

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
或者为:
net.ipv4.tcp_available_congestion_control = reno cubic bbr

输入

sysctl net.ipv4.tcp_congestion_control

返回值一般为:
net.ipv4.tcp_congestion_control = bbr

输入

sysctl net.core.default_qdisc

返回值一般为:
net.core.default_qdisc = fq

输入

lsmod | grep bbr

返回值有 tcp_bbr 模块即说明 bbr 已启动。

注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。下面是我的截图

后面关于更换最新内核的折腾。在原版教程中有一些描述。可以作为参考。就不继续折腾了。

安装完成

现在测试一下自己的速度。打开 youtube 搜索4k。来体验流畅的观影效果吧。


进阶配置2(定时任务)

有时候我们需要监视一下Shadowsocks 服务端的运行状态,当遇到某种不可控因素导致进程被杀掉的情况下,就需要自动重新启动,以保证服务的可持续性。使用如下方法,自动监视,一旦发现进程不存在便会重新启动。每次监视事件都会写入日志。

下载安装

首先需要将脚本下载到某个固定路径下,比如 /opt 下,再赋予执行权限。
执行以下命令:

wget --no-check-certificate -O /opt/shadowsocks-crond.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-crond.sh
chmod 755 /opt/shadowsocks-crond.sh

检查 cron 进程

执行以下命令,检查 cron 进程是否存在:

ps -ef | grep -v grep | grep cron

如果存在返回值,则表示 cron 已经正确安装并处于启动中。

否则,则需要安装 cron。

CentOS/Redhat/Amazon 执行如下命令:

yum install -y crontabs

Debian/Ubuntu 执行如下命令:

apt-get install -y cron

最后放一下我的过程截图

配置 cron 计划

假设监视脚本路径就是 /opt/shadowsocks-crond.sh
假设设为每 5 分钟监视一次。
那么配置 cron 计划如下:

(crontab -l ; echo "*/5 * * * * /opt/shadowsocks-crond.sh") | crontab -


 其中 */5 * * * * /opt/shadowsocks-crond.sh
 即每过 5 分钟,执行一次脚本 /opt/shadowsocks-crond.sh

以上表示,在保留原有的 cron 设置的前提下,追加设置

这样系统便会每 5 分钟检查一下 Shadowsocks 进程是否存在,如果不存在了会自动重新启动。
脚本每次运行会写日志的,日志完整路径如下:
/var/log/shadowsocks-crond.log

脚本代码

#!/usr/bin/env bash
#=================================================================#
#   System Required:  CentOS, Debian, Ubuntu                      #
#   Description: Check Shadowsocks Server is running or not       #
#   Author: Teddysun <i@teddysun.com>                             #
#   Visit: https://shadowsocks.be/6.html                          #
#=================================================================#

name=(Shadowsocks Shadowsocks-Python ShadowsocksR Shadowsocks-Go Shadowsocks-libev)
path=/var/log
[[ ! -d ${path} ]] && mkdir -p ${path}
log=${path}/shadowsocks-crond.log

shadowsocks_init[0]=/etc/init.d/shadowsocks
shadowsocks_init[1]=/etc/init.d/shadowsocks-python
shadowsocks_init[2]=/etc/init.d/shadowsocks-r
shadowsocks_init[3]=/etc/init.d/shadowsocks-go
shadowsocks_init[4]=/etc/init.d/shadowsocks-libev

i=0
for init in "${shadowsocks_init[@]}"; do
    pid=""
    if [ -f ${init} ]; then
        ss_status=$(${init} status)
        if [ $? -eq 0 ]; then
            pid=$(echo "$ss_status" | sed -e 's/[^0-9]*//g')
        fi

        if [ -z "${pid}" ]; then
            echo "$(date +'%Y-%m-%d %H:%M:%S') ${name[$i]} is not running" >> ${log}
            echo "$(date +'%Y-%m-%d %H:%M:%S') Starting ${name[$i]}" >> ${log}
            ${init} start &>/dev/null
            if [ $? -eq 0 ]; then
                echo "$(date +'%Y-%m-%d %H:%M:%S') ${name[$i]} start success" >> ${log}
            else
                echo "$(date +'%Y-%m-%d %H:%M:%S') ${name[$i]} start failed" >> ${log}
            fi
        else
            echo "$(date +'%Y-%m-%d %H:%M:%S') ${name[$i]} is running with pid $pid" >> ${log}
        fi

    fi
    ((i++))
done

声明

文章作者:ic翼
脚本原作者:秋水逸冰
原文链接:https://bingyishow.top/Technical-article/74.html
最后感谢文章作者以及文章中的脚本提供者