KCP 是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。连时钟都需要外部传递进来,内部不会有任何一次系统调用。
1. 先下载Kcptun
mkdir kcptun
cd kcptun
wget https://github.com/xtaci/kcptun/releases/download/v20160701/kcptun-linux-amd64-20160701.tar.gz
tar -zxf kcptun-linux-amd64-20160701.tar.gz
提醒:wget时根据本地系统下载。32位下载 kcptun-linux-386-*.tar.gz,64位下载 kcptun-linux-amd64-*.tar.gz
2.创建 start.sh
vi /root/kcptun/start.sh
写入以下内容:
./server_linux_amd64 -l :29900 -t 127.0.0.1:8388 -key test -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2 > kcptun.log 2>&1 &
server_linux_amd64 对应服务端文件名,请对应修改。
-l 表示 Kcptun 的服务端监听端口,用于接收外部请求和发送数据,默认 29900; -t 表示要加速的地址,我这里设置的是我服务器的 Shadowsocks 端口;
-key 是 Kcptun 的验证密钥,服务端和本地必须一致才能通过验证,请自行设置;
-mode 为加速模式,默认 fast,这里使用 fast2。
3.创建 stop.sh
vi /root/kcptun/stop.sh
写入以下内容:
#!/bin/sh
PID=`ps -ef | grep server_linux_amd64 | grep -v grep | awk '{print $2}'`
if [[ "" != "$PID" ]]; then
echo "killing $PID"
kill -9 $PID
fi
4.创建 restart.sh
#!/bin/sh
cd /root/kcptun/
echo "Stopping Kcptun..."
sh stop.sh
sh start.sh
echo "Kcptun started."
添加开机启动:
echo "sh /root/kcptun/start.sh" >> /etc/rc.d/rc.local
上面是服务器端配置,下面配置客户端
1. 先下载客户端文件,以windows为例
http://download.csdn.NET/detail/per_son/9583356 kcptun64位下载
http://download.csdn.Net/detail/per_son/9583352 kcptun32位下载
由于 Kcptun 是控制台程序,所以我选择使用 vbs 脚本,来达到后台运行的目的:新建 run.vbs
Dim RunKcptun
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
'获取文件路径
currentPath = fso.GetFile(Wscript.ScriptFullName).ParentFolder.Path & "\"
'软件运行参数
exeConfig = "client_windows_amd64.exe -l :12948 -r 10.10.10.10:29900 -key test -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46"
'日志文件
logFile = "kcptun.log"
'拼接命令行
cmdLine = "cmd /c " & currentPath & exeConfig & " > " & currentPath & logFile & " 2>&1"
'启动软件
WshShell.Run cmdLine, 0, False
'等待1秒
'WScript.Sleep 1000
'打印运行命令
'Wscript.echo cmdLine
Set WshShell = Nothing
Set fso = Nothing
'退出脚本
WScript.quit
本地监听端口为 12948;服务器 IP 地址 10.10.10.10 端口 29900;验证密钥和服务端一致。其他参数说明见上面服务端配置的说明。
v20160616 新增参数:-conn,使用多线程连接。可尝试添加 -conn 4 以使用4线程连接服务器。
新建 stop.bat
taskkill /f /im client_windows_amd64.exe
把stop.bat 和 run.vbs 放到kcptun解压的那个文件里,双击 run.vbs 运行程序,使用 stop.bat 来停止程序,kcptun.log 为输出的日志信息。
然后是Shadowsocks 客户端配置
在客户端中新建服务器:
服务器 IP 填写:127.0.0.1
服务器端口填写:12948
正确填写你的 Shadowsocks 密码,加密方式,协议和混淆方式。
切换到该服务器上,测试是否正确运行。
专注数字化方案建设,推动智慧企业生态圈的升级发展