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_amd64 和 server_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.exe和kcptun_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的固定倍数发包来说更加智能而已,所以你的实际消耗流量至少是你使用量的两倍,参数不同,甚至会有更高的消耗。
这种情况有以下几种可能:
- ISP 对UDP丢包极高,例如50%;
- 服务器,客户端本身的带宽较低,这种情况可以适当调低sndwnd /rcvwnd;
- 可以尝试 -dscp 46参数降低丢包率;
合理使用,以免违反TOS被查封。
至此,这台小东西上已经跑了2个服务,下一步我准备继续在上面增加另外一个服务:v2ray。
