64M内存VPS利用手札:(二)debian下安装Kcptun加速SS服务


之前我们已经安装好了shadowsocks服务,详见64M内存VPS利用手札:(一)安装shadowsocks-libev 。但是作为美国VPS来讲,一般的情况下,用以浏览网站完全足够,但是需要观看视频等情况就有些不够用了,所以要安装Kcptun来加速,当然,还是那台64M的小鸡。

一、什么是Kcptun

A Secure Tunnel Based On KCP with N:M Multiplexing。项目主页:https://github.com/xtaci/kcptun

二、安装Kcptun

官方提供了各种平台的预编译版,所以安装就相当方便了。

mkdir /root/kcptun
cd /root/kcptun
wget https://github.com/xtaci/kcptun/releases/download/v20170329/kcptun-linux-386-20170329.tar.gz
tar -zxvf kcptun-linux-386-20170329.tar.gz

注意:请根据系统下载对应版本。32位系统下载 kcptun-linux-386-.tar.gz,64位系统下载 kcptun-linux-amd64-.tar.gz

解压的两个文件:client_linux_amd64server_linux_amd64,一个用于服务器,一个用于客户端。

三、建立脚本及配置文件

建立start.sh脚本

vim /root/kcptun/start.sh
#!/bin/bash
cd /root/kcptun/
./server_linux_386 -c /root/kcptun/server-config.json > kcptun.log 2>&1 &
echo "Kcptun started."

建立stop.sh脚本

vim /root/kcptun/stop.sh
#!/bin/bash
echo "Stopping Kcptun..."
PID=`ps -ef | grep server_linux_386 | grep -v grep | awk '{print $2}'`
if [ "" != "$PID" ]; then
echo "killing $PID"
kill -9 $PID
fi
echo "Kcptun stoped."

建立restart.sh脚本

vim /root/kcptun/restart.sh
#!/bin/bash
cd /root/kcptun/
sh stop.sh
echo "Restarting Kcptun..."
sh start.sh

注意其中server_linux_386根据实际情况替换

给sh脚本添加执行权限

chmod +x *.sh

建立配置文件

vim /root/kcptun/server-config.json
{
	"listen": ":29900",
	"target": "127.0.0.1:12948",
	"key": "https://awy.me",
	"crypt": "salsa20",
	"mode": "fast2",
	"mtu": 1350,
	"sndwnd": 1024,
	"rcvwnd": 1024,
	"datashard": 70,
	"parityshard": 30,
	"dscp": 46,
	"nocomp": false,
	"acknodelay": false,
	"nodelay": 0,
	"interval": 40,
	"resend": 0,
	"nc": 0,
	"sockbuf": 4194304,
	"keepalive": 10
}

listen 表示 Kcptun 的服务端监听端口,用于接收外部请求和发送数据,默认 29900;
target 表示要加速的地址,由于 Kcptun 和 Shadowsocks 在同一服务器,地址填写 127.0.0.1(不需要改,这是指本机IP,除非你有多个IP),而 12948 为 Shadowsocks 服务端监听端口;
key 是 Kcptun 的验证密钥,服务端和本地必须一致才能通过验证;
mode 为加速模式,fast3, fast2, fast, normal (默认: “fast”) ;
crypt 为加密方式,支持aes, aes-128, aes-192, salsa20, blowfish, twofish, cast5, 3des, tea, xtea, xor, none (默认: “aes”);
nocomp 为压缩传输,false 表示开启压缩传输。

其余参数请自行使用 ./server_linux_386 -h 查看或参考项目地址说明文档

推荐参数:

适用大部分ADSL接入(非对称上下行)的参数(实验环境电信100M ADSL)。
其它带宽请按比例调整,比如 50M ADSL,把 -sndwnd -rcvwnd 减掉一半。

SERVER: -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2
CLIENT: -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46

启动Kcptun并添加开机运行

sh /root/kcptun/start.sh

进程里能查看到已经正常运行。

添加开机运行

chmod +x /etc/rc.local;echo "sh /root/kcptun/start.sh" >> /etc/rc.local

四、客户端配置

建议使用GUI客户端kcptun gclient ,避免出错,最新版下载地址https://github.com/dfdragon/kcptun_gclient/releases/latest

同时下载最新版的Kcptun windows客户端,链接:https://github.com/xtaci/kcptun/releases/latest ,请根据自己操作系统选择。

将解压出来的client_windows_amd64.exekcptun_gclient.exe放到同一文件夹,运行kcptun_gclient.exe进行配置,配置文件kcptun.xml会保存在kcptun gclient目录下。

也可以在该文件夹下建立配置文件client-config.json。

{
	"localaddr": ":12948",
	"remoteaddr": "10.10.10.10:29900",
	"key": "https://awy.me",
	"crypt": "salsa20",
	"mode": "fast2",
	"conn": 1,
	"autoexpire": 60,
	"mtu": 1350,
	"sndwnd": 128,
	"rcvwnd": 1024,
	"datashard": 70,
	"parityshard": 30,
	"dscp": 46,
	"nocomp": false,
	"acknodelay": false,
	"nodelay": 0,
	"interval": 40,
	"resend": 0,
	"nc": 0,
	"sockbuf": 4194304,
	"keepalive": 10
}

请参考服务端配置文件参数填写

localaddr本地监听端口(默认: “:12948”) remoteaddr KCP服务器地址(默认: “vps:29900”)

使用时请在客户端界面上勾选使用配置文件。

五、测试结果及注意事项

实际测试能够正常观看YouTube 1080P视频。下载速度根据本地客户端统计最高能达到2MB/s。

注意:Kcptun双边加速本质上是TCP转UDP附带多倍发包以应对丢包环境的软件,相比netspeeder的固定倍数发包来说更加智能而已,所以你的实际消耗流量至少是你使用量的两倍,参数不同,甚至会有更高的消耗。

这种情况有以下几种可能:

  1. ISP 对UDP丢包极高,例如50%;
  2. 服务器,客户端本身的带宽较低,这种情况可以适当调低sndwnd /rcvwnd;
  3. 可以尝试 -dscp 46参数降低丢包率;

合理使用,以免违反TOS被查封。

至此,这台小东西上已经跑了2个服务,下一步我准备继续在上面增加另外一个服务:v2ray