使用kcptun对ss服务器进行优化加速

发布日期:2019/01/16 08:00:00

  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 密码,加密方式,协议和混淆方式。

  切换到该服务器上,测试是否正确运行。


同创双子为企业保驾护航

专注数字化方案建设,推动智慧企业生态圈的升级发展