Skip to content

KCPTun 服务端安装及简单配置教程

Posted on:2018年6月22日 at 08:00

服务器被 TCP 阻断后想起来 KCP 是 UDP 协议,并且逗比网有详细的教程,虽然还是踩了一些坑,但是终于能连上外网啦,便把这些记下来以共备用。本教程来源于逗比根据地,但是教程很久没更新了,便稍加修改。

KCPTun 简介

Kcptun 是一个非常简单和快速的,基于 KCP 协议的 UDP 隧道,它可以将 TCP 流转换为 KCP+UDP 流。而 KCP 是一个快速可靠协议,能以比 TCP 浪费 10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。是 KCP 协议的一个简单应用,可以用于任意 TCP 网络程序的传输承载,以提高网络流畅度,降低掉线情况。由于 Kcptun 使用 Go 语言编写,内存占用低(经测试,在 64M 内存服务器上稳定运行),而且适用于所有平台,甚至 Arm 平台。

KCPTun 服务端安装

本教程使用的系统为 Debain9 64bit

解压之后会发现只有两个文件: client_linux_amd64 和 server_linux_amd64,第一个是是客户端文件(linux 的客户端),第二个是服务端文件。

目前 KCPTun 已经加入了配置文件设定,但没有任何启动脚本,所以需要新建一些脚本。

nano /root/kcptun/server-config.json

写入以下内容:

{
  "listen": ":32143",
  "target": "127.0.0.1:23546",
  "key": "password",
  "crypt": "salsa20",
  "mode": "fast2",
  "mtu": 1350,
  "sndwnd": 1024,
  "rcvwnd": 1024,
  "datashard": 10,
  "parityshard": 3,
  "dscp": 46,
  "nocomp": false,
  "log": "/root/kcptun/kcptun.log"
}

listen 表示 Kcptun 的服务端监听端口,用于接收外部请求和发送数据,默认 2333
target 表示要加速的地址,由于 Kcptun 和 Shadowsocks 在同一服务器,地址填写 127.0.0.1(不需要改,这是指本机 IP,除非你有多个 IP),而 8388 为 Shadowsocks 服务端监听端口;
key 是 Kcptun 的验证密钥,上面的启动脚本参数默认加上了 -key passwaord ,如果不需要可以删掉,服务端和本地必须一致才能通过验证,请自行设置;
mode 为加速模式,默认 fast2
crypt 为加密方式,默认 aes-192
nocomp 为压缩传输,默认 false 表示开启压缩传输。
其他参数可以参考 项目主页 的介绍。

注意:客户端和服务端的参数 -sndwnd 2048 -rcvwnd 2048 这两个值不要大于你的本地宽带,否则流>量消耗会浪费好几倍,100M 就是 2048,50M 就是 1024。这两个值可以逐渐调小,但是不能比本地的实际宽带大!

注意:产生大量重传时,一定是窗口偏大了

日志文件在:/root/kcptun/kcptun.log

更新日志 2018-07-08:发现开机自启的问题,提出手动修改。