风云资源站

KCPTun配置和架设

KCPTun 简介

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

KCPTun 安装

  • 本教程使用的是 CentOS 6 64x 系统。

下载 KCPTun

  • 注意:KCPTun 不分系统版本,只分主系统和位数
    64x 就选择 kcptun-linux-amd64-XXX.tar.gz
    32x 就选择 kcptun-linux-386-XXX.tar.gz
    Centos/Debian/Ubuntu 都一样。
yum install wget & mkdir /root/kcptun
# 新建一个文件夹
cd /root/kcptun
# 进入刚才新建的文件夹
wget https://github.com/xtaci/kcptun/releases/download/v20161009/kcptun-linux-amd64-20161009.tar.gz
# 下载最新的 kcptun-linux-amd64 文件
tar -zxvf kcptun-linux-amd64-*.tar.gz
# 解压刚才下载的文件
解压之后会发现只有两个文件: client_linux_amd64 和 server_linux_amd64,第一个是是客户端文件(linux的客户端),第二个是服务端文件。

下载 / 创建快捷脚本

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

懒人版

  • 请直接下载以下文件到你服务器
cd /root/kcptun &
wget https://raw.githubusercontent.com/catonisland/kcptun/master/start.sh &
wget https://raw.githubusercontent.com/catonisland/kcptun/master/stop.sh &
wget https://raw.githubusercontent.com/catonisland/kcptun/master/restart.sh &
wget https://raw.githubusercontent.com/catonisland/kcptun/master/server-config.json
  • 修改其中的参数:
  1. start.sh 中:
    -l 2333 表示 Kcptun 的服务端监听端口,用于接收外部请求和发送数据,请修改成你想用的;
    server_linux_amd64 ,自行替换为你的 服务端名称,64 位的系统就是示例的这个,如果是 32 位的则是 server_linux_386
  2. stop.sh 中:
    server_linux_amd64 ,自行替换为你的 服务端名称,64 位的系统就是示例的这个,如果是 32 位的则是 server_linux_386 ;
  3. server-config.json 中:
    请参考详细版中的解释进行适当修改

详细版

创建 start.sh

vi /root/kcptun/start.sh

写入以下内容:

#!/bin/sh
cd /root/kcptun/
./server_linux_amd64 -l ":2333" -c /root/kcptun/server-config.json > kcptun.log 2>&1 &
echo "Kcptun started."
  • 注意
    -l 2333 表示 Kcptun 的服务端监听端口,用于接收外部请求和发送数据,请修改成你想用的;
    server_linux_amd64 ,自行替换为你的 服务端名称,64 位的系统就是示例的这个,如果是 32 位的则是 server_linux_386

创建 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
else
 echo "Kcptun not running!"
fi
  • 注意
    server_linux_amd64 ,自行替换为你的 服务端名称,64 位的系统就是示例的这个,如果是 32 位的则是 server_linux_386

创建 restart.sh

vi /root/kcptun/restart.sh

写入以下内容:

#!/bin/sh
cd /root/kcptun/
echo "Stopping Kcptun..."
sh stop.sh
sh start.sh
echo "Kcptun started."

创建配置文件

vi /root/kcptun/server-config.json

写入以下内容:
注意:逗比的教程里面加密方式是 salsa20 ,但是他的客户端默认是 aes ! 这里我们均设置成 aes 吧!

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

启动服务端

sh /root/kcptun/start.sh

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

监听日志信息

tail -f /root/kcptun/kcptun.log

停止服务端

sh /root/kcptun/stop.sh

重启服务端

sh /root/kcptun/restart.sh

添加开机启动

  • Centos 系统:
chmod +x /etc/rc.d/rc.local && echo "sh /root/kcptun/start.sh" >> /etc/rc.d/rc.local
  • Ubuntu/Debian 系统:
chmod +x /etc/rc.local && echo "sh /root/kcptun/start.sh" >> /etc/rc.local

升级服务端

  • 重复一开始的步骤,下载最新版本的压缩包然后解压覆盖源文件,记得先 停止 KCPTUN 运行再覆盖。
cd /root/kcptun
# 进入新建的文件夹
wget https://github.com/xtaci/kcptun/releases/download/v20161009/kcptun-linux-amd64-20161009.tar.gz
# 下载最新的 kcptun-linux-amd64 文件,具体文件路径要自己改
tar -zxvf kcptun-linux-amd64-*.tar.gz
# 解压刚才下载的文件 节选自:https://liyuans.com/archives/kcptun-server-configuration-tutorial.html

我要评论