Kcptun 是一个非常简单和快速的,基于 KCP 协议的 UDP 隧道,它可以将 TCP 流转换为 KCP+UDP 流。而 KCP 是一个快速可靠协议,能以比 TCP 浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。

Kcptun 是 KCP 协议的一个简单应用,可以用于任意 TCP 网络程序的传输承载,以提高网络流畅度,降低掉线情况。由于 Kcptun 使用 Go 语言编写,内存占用低(经测试,在64M内存服务器上稳定运行),而且适用于所有平台,甚至 Arm 平台。

脚本的功能有:
一键安装,自动下载最新版本,支持所有参数配置;
一键更新,一键卸载,完全自动化;
支持用户手动输入版本安装;
支持更新配置,自动输出推荐参数;
使用 Supervisor 管理进程,更加便捷;
自动配置服务,并随开机自启;
脚本提示全中文,更快锁定问题。

wget https://raw.githubusercontent.com/kuoruan/kcptun_installer/master/kcptun.sh
chmod +x ./kcptun.sh
./kcptun.sh

1.设置 Kcptun 的服务端端口:

请输入 Kcptun Server 端口 [1-65535]:
(默认: 29900):

请输入一个未被占用的端口,Kcptun 运行时将使用此端口。

2.设置加速的 IP:

请输入需要加速的 IP [0.0.0.0 ~ 255.255.255.255]:
(默认: 127.0.0.1):

填写你服务器的本地IP,一般为127.0.0.1或10.10.10.10

3.设置需要加速的端口:

请输入需要加速的端口 [1-65535]:
(默认: 12948):

填写你的蓝飞机端口,一般为8989或544

程序会检查当前是不是有程序占用着此端口,如果你的蓝飞机没在运行,或者没有软件使用此端口,会弹出如下提示:

当前没有软件使用此端口, 确定加速此端口?(y/n)

如果你确认蓝飞机运行时会使用此端口,那么输入 “y” 回车即可。

4.设置 Kcptun 密码:

请输入 Kcptun 密码:
(如果不想使用密码请留空):

这就是说,你可以为 Kcptun 单独设置一个密码,防止被他人恶意使用。这个密码和 蓝飞机 的密码没有半毛钱关系,请不要把它们混淆了。

再提一句,Kcptun 和 Shado... 没有任何关系,请不要脑补它们之间存在任何联系,Kcptun 你可以理解为一款网络加速软件,只不过它是通过将 TCP 协议转换为 UDP 协议,然后再通过大量的发送数据包,浪费了带宽以换取网速的提升。它能加速所有以 TCP 协议传输数据的软件,不单单是 Shado...。只是大家都用来……你懂的

回到上面的密码设置问题,如果你这里选择直接回车,也就是代表你不自定义密码。但是 Kcptun 有一个默认的密码,这个密码是: it's a secrect 。

如果你这里选择不设置密码,那么客户端的参数里边就不需要加 –key 这一参数,但是 Kcptun 还是会用上面一个密码做默认值。

剩下的配置项不用我说了,如果你了解它是干什么的,可以自定义配置。如果不知道,那么直接回车使用默认参数。但是,使用默认参数,是有可能浪费大量流量的,你会发现你的流量像泄洪一样快速减少,你需要会调节参数,套用官方的说明:

简易自我调优方法:
同时在两端逐步增大 client rcvwnd 和 server sndwnd ;
尝试下载,观察如果带宽利用率(服务器+客户端两端都要观察)接近物理带宽则停止,否则跳转到第一步。

任何事物都是有两面性的,选择了速度,就只有放弃流量。那么有没有既快得像火箭,燃料又省得像煤油灯的方法呢?呵呵!

各参数详细信息请查看:https://github.com/xtaci/kcptun

如果你用国内服务器安装,可能会出现文件下载失败。这是由于脚本会到 Github 下载文件,而 Github 的某些下载地址在国内你懂的……所以文件下载失败真不是我的锅。

如果安装成功,应该能看到如下输出信息:

恭喜, Kcptun 服务端配置完毕!
 
正在获取当前安装的 Kcptun 版本...
 
服务器IP:  10.10.10.10
端口:  29900 
加速地址: 127.0.0.1:8388
密码: 123456
加密方式 Crypt:  salsa20 
数据压缩:  已禁用 
 
当前安装的 Kcptun 版本为: v20160922
 
推荐的客户端配置为: 
{
  "localaddr": ":8989",
  "remoteaddr": "123.199.11.22:29900",
  "key": "123456",
  "crypt": "salsa20",
  "mode": "fast",
  "mtu": 1350,
  "sndwnd": 1024,
  "rcvwnd": 1024,
  "datashard": 10,
  "parityshard": 3,
  "dscp": 0,
  "conn": 1,
  "autoexpire": 60,
  "nocomp": true
}
 
手机端参数可以使用:
-key "123456" -crypt "salsa20" -nocomp
 
其他参数请自行计算或设置, 详细信息可以查看: https://github.com/xtaci/kcptun
 
Kcptun 安装目录: /usr/share/kcptun
Kcptun 配置文件: /usr/share/kcptun/server-config.json
Kcptun 日志文件: /var/log/kcptun.log
 
Supervisor {启动|关闭|重启|查看状态} 命令: service supervisord {start|stop|restart|status}
Kcptun 服务端 {启动|关闭|重启|查看状态} 命令: supervisorctl {start|stop|restart|status} kcptun

请将以上的提示信息复制保存下来,后面配置客户端会用到这些提示信息。
安装之后,Kcptun 服务交由 Supervisor 管理。
Supervisor 相关命令:

service supervisord {start|stop|restart|status}

Kcptun 相关命令:

supervisorctl {start|stop|restart|status} kcptun

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

客户端配置
1.先到下载一个启动 Kcptun 的工具。请注意,这只是用来启动 Kcptun 的工具,而不是 Kcptun 客户端。
https://github.com/dfdragon/kcptun_gclient/releases
2.然后下载服务端对应版本的 Kcptun(保存下来的提示信息里有):
1
当前安装的 Kcptun 版本为: v20160922
https://github.com/xtaci/kcptun/releases
32位系统下载:kcptun-windows-386-20160922.tar.gz
64位系统下载:kcptun-windows-amd64-20160922.tar.gz
注意看红字的版本号和服务端版本一致。然后将它们解压到一起:

kcptun_gclient.exe -- Kcptun 启动工具
client_windows_amd64.exe -- Kcptun 客户端程序
server_windows_amd64.exe -- Kcptun 服务端程序

打开 Kcptun 启动工具,然后看保存下来的提示信息上面一部分:

服务器IP:  10.10.10.10
端口:  29900 
加速地址: 127.0.0.1:8388
加密方式 Crypt:  salsa20 
数据压缩:  已禁用

几项说明:
本地监听端口,这个端口你可以随意设置,不是必须设置为 Shadowsocsk 的端口;
KCP服务器地址为你的服务器IP地址,端口为 Kcptun 的端口;
通信密钥是你配置的 Kcptun 密码,不是 Shadowsocks 的密码;在配置 Kcptun 的时候,和 Shadowsocks 无关。
参数区配置的时候,只需要配置你修改过的部分就行了,其他部分都不用改,除非你了解每项参数的意义;
日志区非常重要,在排查问题的时候,这是必看部分;
右下角为 Kcptun 版本,确保与服务端版本一致,更新服务端之后,也需要更新本地客户端,只需要替换客户端文件即可。
配置完毕,点击启动。
然后在 Shadowsocks 客户端中添加一个选项,服务器IP固定填写 127.0.0.1,服务器端口填写 Kcptun 启动工具中配置的“本地监听端口”(即这里的 8388),密码和加密配置的是 Shadowsocks 的密码和加密。
基本原则,配置 Kcptun 的时候不用管 Shadowsocks 的参数,配置 Shadowsocks 的时候不用管 Kcptun 的参数,别把它们的配置参数搞混了。
将代理切换到新建的选项上,尝试访问。查看 Kcptun 启动工具中的日志区,会有大量的如下信息输出:

2016/09/24 11:57:15 stream closed
2016/09/24 11:57:15 stream opened
2016/09/24 11:57:17 stream closed
2016/09/24 11:57:17 stream closed
2016/09/24 11:57:18 stream closed
2016/09/24 11:57:19 stream closed
2016/09/24 11:57:19 stream closed
2016/09/24 11:57:19 stream closed
2016/09/24 11:57:19 stream opened
2016/09/24 11:57:19 stream closed
2016/09/24 11:57:26 stream closed
2016/09/24 11:57:26 stream closed

如需检查更新:

./kcptun.sh update

注:全面支持脚本、Kcptun和配置的更新!
如需重新配置:

./kcptun.sh reconfig

卸载:

./kcptun.sh uninstall