搬砖工VPS配置Shadowsocks以及使用kcptun加速

背景

​ 在购买搬砖工VPS以后,需要搭建一个Shadowsocks客户端,采用kcptun加速。

思路

  1. 配置VPS
  2. 搭建Shadowsocks
  3. 使用kcptun加速

配置VPS

购买搬砖工VPS以后,进入管理界面,按步骤进行:

  1. 进入kiwiVM控制台,在在左下角会有IP地址,这个记下来,连接ssh时候要用到。

VPS管理界面

  1. 在现在的搬砖工控制台中,并没有Shadowsocks安装一项,需要在隐藏界面中打开。原本我的VPS安装的是centos 6.9,但由于centos6的原因,docker安装不成功,故将系统换为centos7。在左侧Install new OS中可更换系统。

kiwiVM控制台界面

  1. 选择安装centos7带bbr加速版本,同意抹除数据,安装系统(在安装系统前记得关闭系统,安装几分钟就好了)。

安装centos7

  1. 安装完成后会给出一个root账户密码和ssh端口号,通过ssh连接工具就可以连接到VPS了。此处我用的是Xshell。

系统安装完成

  1. 使用Xshell连接VPS(其他连接工具原理类似),步骤如下所示:

xshell1

xshell2

xshell3

xshell4

  1. 在首次连接VPS时候需要做一些安全性的配置,主要是ssh的配置,防火墙的配置等。

    1. 首次连接VPS,记得先更新:

      1
      yum -y update #更新系统
    2. 用户密码(设置原则)

      • 密码不要过于简单,至少要8位以上,且同时拥有大小写字母+数字+特殊字符。
      • 密码不要使用统一密码,网站密码一个、VPS密码一个。
      • 不要使用生日、电话等个人信息作为密码。
      • 定期更换您的密码。
      • 不要把您的密码记录在任何别人能够看到的地方,最好记在心里。
    3. 删除不使用的用户和用户组

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      userdel adm
      userdel lp
      userdel sync
      userdel shutdown
      userdel halt
      userdel news
      userdel uucp
      userdel operator
      userdel games
      userdel gopher
      userdel ftp #若您需要使用匿名FTP请保留此用户,否则删除
      groupdel adm
      groupdel lp
      groupdel news
      groupdel uucp
      groupdel games
      groupdel dip
      groupdel pppusers
    4. 禁用root用户登录,添加一个用户来管理VPS

      1
      2
      useradd -m chen #添加一个chen用户
      passwd chen #设置chen用户密码

      当看到passwd: all authentication tokens updated successfully.时,表示密码修改成功。

    5. 修改root用户密码,方便使用su时候输入

      1
      passwd root
    6. 更改SSH端口

      1
      vi /etc/ssh/sshd_config
      1
      2
      3
      4
      5
      Port xxxxx #SSH尽量设置大一点,不超过65535
      PermitRootLogin no #禁止root登录
      X11Forwarding no #禁止X11转发
      PermitEmptyPasswords no #禁止空密码登录
      AllowUsers chen #设置刚才创建的chen允许登陆
      1
      2
      service sshd restart #centos 6
      systemctl restart sshd #centos 7
    7. 限制su命令的使用

      • centos 6
      1
      vi /etc/pam.d/su

      添加如下两行:

      1
      2
      auth sufficient /lib/security/pam_rootok.so debug
      auth required /lib/security/pam_wheel.so group=isd

      执行生效:

      1
      usermod -G10 chen
      • centos 7
      1
      2
      chmod -v u+w /etc/sudoers #增加sudoers文件的写的权限,默认为只读
      vi /etc/sudoers #修改sudoers

      在sudoers中添加

      chen ALL=(ALL) ALL

      1
      chmod -v u-w /etc/sudoers #删除 sudoers 的写的权限
    8. 禁止ping(这样一来自己也没法ping了)

      1
      echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    9. 启用防火墙

      说明:centos7使用的是firewalld,centos6使用的是iptables 。在配置防火墙略有差别,详情可参考以下文章(CentOS 7中firewall防火墙详解和配置以及切换为iptables防火墙),在这里将firewalld切换为iptables,按如下操作完成,再进行以下步骤。若为centos6,则直接使用而不用作如下处理。

      1
      2
      3
      service firewalld stop #关闭firewall
      systemctl disable firewalld.service #禁止firewall开机启动
      yum install iptables-services #安装iptables防火墙

      清空防火墙原来的规则:

      1
      2
      3
      iptables -F
      iptables -X
      iptables -Z

      设置防火墙:

      1
      2
      3
      iptables -A INPUT -p tcp -m multiport --dport xxxx,80,21,22 -j ACCEPT #允许SSH端口xxxx、WEB端口80、FTP端口21、22开放
      /etc/init.d/iptables save #保存配置规则
      service iptables restart #重启防火墙

      若要用firewalld则应该这样处理:

      1
      2
      3
      4
      5
      systemctl status firewalld #查看状态
      systemctl start firewalld #启动
      systemctl enable firewalld.service #设置开机启动
      firewall-cmd --zone=public --add-port=80/tcp --permanent #添加端口,--permanent永久生效,没有此参数重启后失效
      firewall-cmd --reload #重新载入
    10. 设置完成以后,重启服务器(reboot),用设置的用户名和密码登陆。

搭建Shadowsocks

​ 在kiwiVM控制面板中已经没有Shadowsocks的安装了,其实这里是隐藏起来了。

  • 如果是centos6,打开以下网址(Shadowsocks服务端安装)便可进入Shadowsocks的安装界面了,安装完成就直接进入Shadowsocks服务端的配置界面,完全是图形化的造作,这里不再一一赘述。

Shadowsocks——server

  • 如果是centos7,那么选择命令行安装(python版的网上一堆教程,这里选择安装C语言版本)

    1. 通过yum源安装相关软件

      1
      2
      yum install epel-release -y
      yum install gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto c-ares-devel libev-devel libsodium-devel mbedtls-devel -y
    2. 通过yum安装shadowsocks-libev需要单独的仓库

      1
      wget https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo

      以上下载的是一个repo文件,如果下载不成功,新建文件,直接选择粘贴以下内容,修改权限为644。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      [librehat-shadowsocks]
      name=Copr repo for shadowsocks owned by librehat
      baseurl=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/epel-7-$basearch/
      type=rpm-md
      skip_if_unavailable=True
      gpgcheck=1
      gpgkey=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/pubkey.gpg
      repo_gpgcheck=0
      enabled=1
      enabled_metadata=1
    3. 把文件放到/etc/yum.repos.d/目录下

      1
      cp librehat-shadowsocks-epel-7.repo /etc/yum.repos.d/
    4. 安装

      1
      2
      yum update
      yum install shadowsocks-libev

      如果在安装shadowsocks-libev依赖包的时候出现如下的提示信息,应该是epel源已经安装,但是被禁用了。

      1
      2
      No package udns-devel available.
      No package mbedtls-devel available.

      如果被禁用就执行如下命令启用

      1
      2
      3
      yum -y install yum-utils
      yum-config-manager --enable epel
      yum update
    5. 配置

      1
      vi /etc/shadowsocks-libev/config.json

      打开后格式如下:

      1
      2
      3
      4
      5
      6
      7
      8
      {
      "server":"127.0.0.1",
      "server_port":8388,
      "local_port":1080,
      "password":"barfoo!",
      "timeout":60,
      "method":"chacha20-ietf-poly1305"
      }

      表格

      以下是我的配置:(IP和端口用xxx隐藏了,密码用*隐藏了,加密方式采用aes-256-cfb)

      1
      2
      3
      4
      5
      6
      7
      8
      {
      "server":"xxx.xxx.xxx.xxx",
      "server_port":xxxxx,
      "local_port":1080,
      "password":"**********",
      "timeout":60,
      "method":"aes-256-cfb"
      }

      如果使用aes-256-cfb加密,需要安装:

      1
      2
      yum install rng-tools -y
      rngd -r /dev/urandom

      注册为开机启动并启动软件:

      1
      2
      systemctl start shadowsocks-libev
      systemctl enable shadowsocks-libev

      此时,Shadowsocks就运行起来了,但依旧不可用。主要是因为前面设置了防火墙,这里要把加入的端口打开。

      1
      2
      3
      firewall-cmd --zone=public --add-port=8388/tcp --permanent
      #刷新防火墙,不然可能不生效
      firewall-cmd --reload

      可以通过Shadowsocks客户端检测是否安装成功。

      success

      如图所示,已经搞定。这样就成功在外了。

      Welcome to out!

使用kcptun加速

​ 直接使用Shadowsocks会慢速和不稳定,于是就有了kcptun加速。安装kcptun也有两种方式,这里讲述GUI的方式安装,直观方便,这里贴上原作者的博客链接:Kcptun服务端一键安装脚本

  1. 服务端安装(xxxxx为Shadowsocks设置的端口号):

    执行以下命令,得到加速IP和加速端口号。

    1
    ss -nl | grep xxxxx

    得到的是下面一种情况(xxx.xxx.xxx.xxx为服务器地址):

    1
    2
    udp    UNCONN     0      0      xxx.xxx.xxx.xxx:xxxxx                 *:*                 
    tcp LISTEN 0 128 xxx.xxx.xxx.xxx:xxxxx *:*

    此时为作者所说的情况4,也就是服务器IP+端口号,此时的加速IP为xxx.xxx.xxx.xxx,加速端口xxxxx,其他情况分别为:::xxxxx,0.0.0.0:xxxxx,127.0.0.1:xxxxx,这三种情况的加速IP为127.0.0.1,加速端口为xxxxx。

    使用方法:

    1
    2
    3
    wget --no-check-certificate https://github.com/kuoruan/shell-scripts/raw/master/kcptun/kcptun.sh
    chmod +x ./kcptun.sh
    ./kcptun.sh
    1. 设置 Kcptun 的服务端端口(为占用的端口,给kcptun使用,此端口需要在firewall中添加)

      1
      2
      请输入 Kcptun Server 端口 [1-65535]:
      (默认: 29900):
    2. 设置加速的 IP (上面得到的加速IP)

      1
      2
      请输入需要加速的地址:
      (默认: 127.0.0.1):
    3. 设置需要加速的端口(上面得到的加速端口)

      1
      2
      请输入需要加速的端口 [1-65535]:
      (默认: 12948):
    4. 设置 Kcptun 密码 (直接回车则设置为it's a secrect,这个密码和Shadowsocks无关)

      1
      2
      请输入 Kcptun 密码:
      (如果不想使用密码请留空):
    5. 禁用压缩

      1
      2
      是否禁用数据压缩?
      (默认: 不禁用) [y/n]:

    以上仅列出一些关键步骤,具体步骤会在设置中体现。enjoy it.

    安装成功会输出如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    恭喜, Kcptun 服务端配置完毕!

    正在获取当前安装的 Kcptun 版本...

    服务器IP: 10.10.10.10
    端口: 29900
    加速地址: 127.0.0.1:8388
    密码: 123456
    加密方式 Crypt: salsa20

    当前安装的 Kcptun 版本为: v20160922

    推荐的客户端配置为:
    {
    "localaddr": ":8388",
    "remoteaddr": "10.10.10.10:29900",
    "key": "123456",
    "crypt": "salsa20",
    "mode": "fast",
    "mtu": 1350,
    "sndwnd": 1024,
    "rcvwnd": 1024,
    "datashard": 10,
    "parityshard": 3,
    "dscp": 0,
    "conn": 1,
    "autoexpire": 60,
    "nocomp": false
    }

    手机端参数可以使用:
    *******

    其他参数请自行计算或设置, 详细信息可以查看: https://github.com/xtaci/kcptun

    Kcptun 安装目录: /usr/share/kcptun
    Kcptun 日志文件目录: /var/log/kcptun/

    以上大括号里面的信息很重要,复制下来。在本地建立一个json文件,将其内容添加进去。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    {
    "localaddr": ":8388",
    "remoteaddr": "10.10.10.10:29900",
    "key": "123456",
    "crypt": "salsa20",
    "mode": "fast",
    "mtu": 1350,
    "sndwnd": 1024,
    "rcvwnd": 1024,
    "datashard": 10,
    "parityshard": 3,
    "dscp": 0,
    "conn": 1,
    "autoexpire": 60,
    "nocomp": false
    }

    注意:服务端的 sndwnd 对应的是客户端的 recwnd,所以请不要问我为什么输出的客户端参数和你配置的服务端参数是反的。

    安装之后,Kcptun 服务交由 Supervisor 管理。

    Supervisor 相关命令:

    centos6:service supervisord {start|stop|restart|status}

    centos7:systemctl {start|stop|restart|status} supervisord.service

    Kcptun 相关命令:

    supervisorctl {start|stop|restart|status} kcptun

    Supervisor 启动的时候会同时启动 Kcptun,运行 kcptun 相关命令时先确保 Supervisor 已启动。

    以上就完成服务端的配置了。接下来完成客户端的配置。

  2. 客户端安装:

    • 先到下载一个启动 Kcptun 的工具。请注意,这只是用来启动 Kcptun 的工具,而不是 Kcptun 客户端。

      下载链接

    • 然后下载服务端对应版本的 Kcptun(保存下来的提示信息里有):

      1
      当前安装的 Kcptun 版本为: v20160922

      下载链接

    • 将下载的两个压缩包解压,放在同一目录下。再把之前的json文件拿过来一起。

      1
      2
      3
      4
      kcptun_gclient.exe #Kcptun 启动工具
      client_windows_amd64.exe #Kcptun 客户端程序
      server_windows_amd64.exe #Kcptun 服务端程序
      client.json #服务器信息文件
    • 打开 Kcptun 启动工具(可将程序以管理员身份运行,添加开机启动),界面如下,请按序号操作

      步骤

  3. Shadowsocks 配置

    • 在 Shadowsocks 客户端中添加一个选项,服务器IP固定填写 127.0.0.1,服务器端口填写 Kcptun 启动工具中配置的“本地监听端口”(即这里的 xxxxx),密码和加密配置的是 Shadowsocks 的密码和加密。

    • 将代理切换到新建的选项上,尝试访问。查看 Kcptun 启动工具中的日志区,会有大量的stream opened和stream closed 输出。

    • 再用 shelll 看看服务端日志,如果有相同的信息输出,说明配置正确,并能正常使用。查看服务端日志使用 。

      1
      ./kcptun.sh log

kcptun加速到此完成。这样就能非常愉快的玩耍了。

实测YouTube 1080HD完全不卡顿,流畅的一笔~

Donate comment here