Total Pageviews

Sunday, 8 May 2016

利用kcptun+socks代理服务器程序翻墙

首先登陆你的linux vps.
mkdir kcptun
cd kcptun
wget https://github.com/xtaci/kcptun/releases/download/v20160507/kcptun-linux-amd64-20160507.tar.gz
tar zxvf kcptun-linux-amd64-20160507.tar.gz
root@kvm:~/kcptun# ls
kcptun-linux-amd64-20160507.tar.gz  server_linux_amd64 client_linux_amd64
root@kvm:~/kcptun# rm -rf  client_linux_amd64 (只需要用到服务器端程序:server_linux_amd64)
root@kvm:~/kcptun# ./server_linux_amd64 -h (查看server_linux_amd64的用法)
  
USAGE:
   ./server_linux_amd64 [global options] command [command options] [arguments...]
  
VERSION:
   20160507
  
COMMANDS:
   help, h    Shows a list of commands or help for one command
  
GLOBAL OPTIONS:
   --listen, -l ":29900"        kcp server listen addr:
   --target, -t "127.0.0.1:12948"    target server addr
   --key "it's a secrect"        key for communcation, must be the same as kcptun client [$KCPTUN_KEY]
   --mode "fast"            mode for communication: fast, normal, default
   --tuncrypt                enable tunnel encryption, adds extra secrecy for data transfer
   --help, -h                show help
   --version, -v            print the version
  
root@kvm:~/kcptun#  nohup ./server_linux_amd64 -l 0.0.0.0:29900 -t 127.0.0.1:20080 --key your_key --tuncrypt > /dev/null &
(此命令的意思是程序server_linux_amd64监听服务器上的端口29900,在收到连接端口29900的请求后,转发到同台机器的20080端口。同台机器的20080端口上运行的是一个socks代理服务器程序-mocks.搭建mocks,参见http://briteming.blogspot.com/2012/02/socks-server-mocks.html,
--tuncrypt的意思是对隧道进行加密。这里的端口29900可改为其他未被占用的端口号)
这样服务器端就运行起来了。

在客户端机器上。
因为我的 客户端机器为mac,于是下载客户端程序的mac版:
wget https://github.com/xtaci/kcptun/releases/download/v20160507/kcptun-darwin-amd64-20160507.tar.gz
tar zxvf kcptun-darwin-amd64-20160507.tar.gz
cd kcptun-darwin-amd64-20160507
yudeMacBook-Air:kcptun-darwin-amd64-20160507 brite$ ls
client_darwin_amd64 server_darwin_amd64
yudeMacBook-Air:kcptun-darwin-amd64-20160507 brite$ rm -rf server_darwin_amd64
yudeMacBook-Air:kcptun-darwin-amd64-20160507 brite$ ls
client_darwin_amd64
yudeMacBook-Air:kcptun-darwin-amd64-20160507 brite$
yudeMacBook-Air:kcptun-darwin-amd64-20160507 brite$ ./client_darwin_amd64 -h

USAGE:
   ./client_darwin_amd64 [global options] command [command options] [arguments...]
  
VERSION:
   20160507
  
COMMANDS:
   help, h    Shows a list of commands or help for one command
  
GLOBAL OPTIONS:
   --localaddr, -l ":12948"    local listen addr:
   --remoteaddr, -r "vps:29900"    kcp server addr
   --key "it's a secrect"    key for communcation, must be the same as kcptun server [$KCPTUN_KEY]
   --mode "fast"        mode for communication: fast, normal, default
   --tuncrypt            enable tunnel encryption, adds extra secrecy for data transfer
   --help, -h            show help
   --version, -v        print the version
  
yudeMacBook-Air:kcptun-darwin-amd64-20160507 brite$ nohup ./client_darwin_amd64 -l 0.0.0.0:12948 --remoteaddr your_vps_ip:29900 --key your_key --tuncrypt > /dev/null &
(此命令的意思是客户端程序client_darwin_amd64监听本地机器的12948端口,在收到连接12948端口的请求后,把请求转发到你的vps的29900端口。这里的key的值必须跟服务器上所设置的key的值一致。--tuncrypt表示对隧道进行加密。这里的12948端口可改为其他未被占用的端口号)
这样客户端就运行起来了。

然后设置本地机器的浏览器的socks5代理为127.0.0.1:12948,即可翻墙。

程序下载地址:https://github.com/xtaci/kcptun/releases/tag/v20160507
(如果是其他桌面系统,则下载相应的版本)
-----------------------

an extremely simple, fast & stealth udp tunnel based on kcp。
TCP流转换为KCP+UDP流,>>>下载地址<<< 用于高丢包环境中的数据传输,工作示意图:
                +---------------------------------------+
                |                                       |
                |                KCPTUN                 |
                |                                       |
+--------+      |  +------------+       +------------+  |      +--------+
|        |      |  |            |       |            |  |      |        |
| Client | +--> |  | KCP Client | +---> | KCP Server |  | +--> | Server |
|        | TCP  |  |            |  UDP  |            |  | TCP  |        |
+--------+      |  +------------+       +------------+  |      +--------+
                |                                       |
                |                                       |
                +---------------------------------------+
kcptun是kcp协议的一个简单应用,可以用于任意tcp网络程序的传输,可以极大的提高软件网络流畅度(如浏览器,telnet等),降低掉线,连不上等情况。

Docker

docker pull xtaci/kcptun

使用方法

D:\>client_windows_amd64.exe -h
NAME:
   kcptun - kcptun client

USAGE:
   client_windows_amd64.exe [global options] command [command options] [arguments...]

VERSION:
   20160507

COMMANDS:
   help, h      Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --localaddr, -l ":12948"     local listen addr:
   --remoteaddr, -r "vps:29900" kcp server addr
   --key "it's a secrect"       key for communcation, must be the same as kcptun server [$KCPTUN_KEY]
   --mode "fast"                mode for communication: fast, normal, default
   --tuncrypt                   enable tunnel encryption, adds extra secrecy for data transfer
   --help, -h                   show help
   --version, -v                print the version

D:\>server_windows_amd64.exe -h
NAME:
   kcptun - kcptun server

USAGE:
   server_windows_amd64.exe [global options] command [command options] [arguments...]

VERSION:
   20160507

COMMANDS:
   help, h      Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --listen, -l ":29900"                kcp server listen addr:
   --target, -t "127.0.0.1:12948"       target server addr
   --key "it's a secrect"               key for communcation, must be the same as kcptun client [$KCPTUN_KEY]
   --mode "fast"                        mode for communication: fast, normal, default
   --tuncrypt                           enable tunnel encryption, adds extra secrecy for data transfer
   --help, -h                           show help
   --version, -v                        print the version

适用范围(包括但不限于):

  1. 网络游戏的数据传输
  2. 跨运营商的流量传输
  3. 其他高丢包,高干扰通信环境的TCP数据传输
from  https://github.com/xtaci/kcptun
-------------------------------------------------------


快速上手

注意,使用前请先阅读页面下方的免责声明
这里下载 最新的对应平台的版本(内含x86/x64/arm)。
执行 client -h 和server -h 查看详细使用方法. 不同平台分别为client_windows_amd64.exe或server_linux_amd64这种平台对应文件名。
我们以加速ssh -D访问为例示范使用方法如下:
  1. 假定服务器(比如ubuntu) IP地址为:xxx.xxx.xxx.xxx
  2. 在服务器端开启ssh -D, 监听127.0.0.1:8080端口,或者你可以在服务器端启动任意的socks代理,例如dante(更快),监听127.0.0.1:8080
    ssh -D 127.0.0.1:8080 ubuntu@localhost
  3. 在服务器启动kcp server:
    server -t "127.0.0.1:8080" // 所有接收到的数据包转发到sshd进程的socks 8080端口
    ---------------------------- 分割线,上面是服务器,下面是客户端 ----------------------------
  4. 在本地(比如win10)启动kcp client:
    client -r "xxx.xxx.xxx.xxx:29900" // 连接到kcp server,默认kcp server端口是29900
  5. 将浏览器socks5代理设置为127.0.0.1:12948 // 默认kcp client的端口是12948
完整转发过程为: 浏览器 -> kcp-client(:12948) -> kcp-server(:29900) -> ssh -D(:8080)

特性

  1. 超级快
  2. 跨平台
  3. 采用高安全性AES-256-CFB双重加密(包+流)
  4. UDP数据包一次一密(OTP)无特征,防非法深度检测
  5. 消息摘要采用MD5保证消息完整性
  6. PSK防止MITM攻击
  7. kcptun客户端和服务端分别只有一个main.go文件,易于使用
  8. 核心基于kcp-go
  9. 基于yamux 的多路流复用( N:1 <<------>> 1:N),自动重连
  10. 三种传输模式: fast/normal/default
(注意:要实现高可靠的信息安全,上层TLS/SSL等加密手段依然不可或缺。)

适用范围(包括但不限于):

  1. 网络游戏的数据传输
  2. 跨运营商的流量传输
  3. 其他高丢包,高干扰通信环境的TCP数据传输

参数调整

初步运行成功后,强烈建议通过命令行改变如下参数加强传输安全:
1. kcp server默认端口
2. 默认密码 必须修改 最好是字母数字大小写特殊字符的组合(前往 密码生成)
3. 额外的隧道安全,可以通过 -tuncrypt 在server/client两端同时开启,即使PSK被猜到也难以破译
例如:
server -tuncrypt -l ":41111" -key "yqRhM5T5"

加密流程

                               /dev/urandom
                                     +
+-----------+                        |
|           |                        |                 +---------+   PSK   +-----------+
| PLAINTEXT |                     +--v--+              |                               |
|           |                     | OTP |              |                               |
+-----+-----+                     +--+--+              |                               |
      |                              |                 |                               |
 +----v----+    +--------+       +---v----+       +----+----+                     +----+----+        +--------+                      +-----------+
 |         |    |        |       |        |       |         |                     |         |        |        |                      |           |
 | AES+CFB +----> CIPHER +-------> PACKET +-------->AES+CFB +----> Internet +------>AES+CFB +--------> PACKET |     Copyright by     | PLAINTEXT |
 | ENCRYPT |    |  TEXT  |       |        |       | ENCRYPT |                     | DECRYPT |        |        |     @xtaci           |           |
 |         |    |        |       +---^----+       |         |                     |         |        +---+----+                      +-----^-----+
 +----^----+    +---+----+           |            +---------+                     +---------+            |                                 |
      |             |           +----+----+                      /dev/urandom                            |                                 |
      |             |           |         |                            +                             +---v----+       +--------+      +----+----+
      |             +----------->   MD5   |                            |                             |        |       |        |      |         |
      |                         |         |                        +---v----+                        |  MD5   +-------> CIPHER +------->AES+CFB |
      |                         +---------+                        |        |                        | VERIFY |       |  TEXT  |      | DECRYPT |
      |                                                  +---------+   IV   +-----------+            |        |       |        |      |         |
      |                                                  |         |        |           |            +--------+       +--------+      +----^----+
      |                                                  |         +--------+           |                                                  |
      |                                                  |                              |                                                  |
      +--------------------------------------------------v--------+   PSK   +-----------v--------------------------------------------------+

从源码的安装

预备条件:

  1. 安装好golang
  2. 设置好GOPATH 以及PATH=$PATH:$GOPATH/bin (例如: export GOPATH=/home/ubuntu; export PATH=$PATH:$GOPATH/bin), 最好放到.bashrc 或 .zshrc中

安装命令

  1. 服务端: go get github.com/xtaci/kcptun/server; server
  2. 客户端: go get github.com/xtaci/kcptun/client; client

常见问题

Q: client/server都启动了,但无法传输数据,服务器显示了stream open
A: 先杀掉client/server,然后重新启动就能解决绝大部分的问题
Q: client/server都启动了,但服务器没有收到任何数据包也没有stream open
A: 某些IDC默认屏蔽了UDP协议,需要在防火墙中打开对应的端口
Q: 出现不明原因降速严重,可能有50%丢包
A: 可能该端口被运营商限制,更换一个端口就能解决.

from  https://github.com/xtaci/kcptun/blob/32c19609ab51c87577b23842d5ca63eb52b34bd0/README.md

我又要说中国人就是聪明 。这个程序跟obfstunnel- http://briteming.blogspot.com/2016/04/obfstunnelsockshttp.html有得一比.不过经过几个小时的测试,莫名其妙的,我用kcptun就翻不了墙了,这是怪事,用ps aux|grep 命令检查了客户端程序和服务器端程序都在运行中,而且也检查了服务器上的socks代理服务器程序也在运行中,但就是用kcptun翻不了墙。可见这个kcptun并不够robust.

那个obfsproxy的srcamblesuit版+socks代理服务器程序(http://briteming.blogspot.com/2016/03/obfsproxysockshttp.html)翻墙,不过obfsproxy的服务器端有时容易退出。

我感觉还是obfstunnel(http://briteming.blogspot.com/2016/04/obfstunnelsockshttp.html)比较robust!!我更推荐用obfstunnel翻墙。

----------------------------
小内存福音,Kcptun + Shadowsocks加速方案

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


KCP 协议:https://github.com/skywind3000/kcp
Kcptun 项目地址:https://github.com/xtaci/kcptun
如果你在使用过程中有什么问题,也可以添加博主QQ寻求帮助。

相关项目
以下为 Kcptun 的相关项目,如果有兴趣,可以了解一下。
1.Kcp-server:https://github.com/clangcn/kcp-server
Kcp-server 是在 Kcptun 的基础上,添加了配置文件的支持,并简化了安装过程,一条命令即可配置完毕。
如果你是小白,而且看了后面的教程也看不懂的话,推荐直接使用 Kcp-server 吧,就是更新较原版略慢。

2016.06.27 v20160627发布,新参数-nocomp,需要在两端同时使用以禁止压缩传输。
2016.06.17 添加客户端开机自启批处理,重写软件启动vbs脚本。
本教程以 CentOS 6.5 64位为例。
首先下载 Kcptun,可以到 GitHub 上获取最新版:小内存福音,Kcptun + Shadowsocks加速方案 - 第2张  | 扩软博客
用 Xshell 或者 Putty 登陆服务器,下载 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-*.tar.gz
注:请根据你的系统下载对应版本。32位系统下载 kcptun-linux-386-*.tar.gz,64位系统下载 kcptun-linux-amd64-*.tar.gz
解压之后有两个文件:client_linux_amd64 和 server_linux_amd64,一个用于服务器,一个用于客户端。
这个项目目前还没有 init 脚本,也还不支持配置文件,于是我写了两个简单的 sh 脚本,用于启动和关闭服务端。请在服务端程序相同目录下新建两个文件 start.sh 和 stop.sh。
创建 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。
由于可用参数太多,不一一举例,其他参数可以参考项目主页的介绍。
响应速度:
fast3 > [fast2] > fast > normal > default
有效载荷比:
default > normal > fast > [fast2] > fast3
中间 mode 参数比较均衡,总之就是越快越浪费带宽,推荐模式 fast2。
其他参数,请使用 ./server_linux_amd64 -h 查看,更深层次的参数调整需要理解 KCP 协议,并通过“隐藏参数”调整。巭孬嫑乱动
下面是作者给的配置样例,适用大部分ADSL接入(非对称上下行)的参数(实验环境电信100M ADSL)。其它带宽请按比例调整,比如 50M ADSL,把 CLIENT 的 -sndwnd -rcvwnd 减掉一半,SERVER 不变。

SERVER:   -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2
CLIENT:   -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46
创建 stop.sh,
写入以下内容:
PID=`ps -ef | grep server_linux_amd64 | grep -v grep | awk '{print $2}'`
if [[ "" !=  "$PID" ]]; then
  echo "killing $PID"
  kill -9 $PID
fi

然后可以启动服务端:
sh start.sh
kcptun.log 为日志信息。
停止服务端请使用:
sh stop.sh

配置客户端
以本地 Windows 64位系统为例,首先下载 Kcptun 的 Windows 版本。
我这里先新建一个文件夹,命名为 Kcptun,然后下载:
https://github.com/xtaci/kcptun/releases/download/v20160701/kcptun-windows-amd64-20160701.tar.gz
解压到文件夹下。

本地监听端口为 12948;服务器 IP 地址 10.10.10.10 端口 29900;验证密钥和服务端一致。其他参数说明见上面服务端配置的说明。
v20160616 新增参数:-conn,使用多线程连接。可尝试添加 -conn 4 以使用4线程连接服务器。
新建 stop.bat:
taskkill /f /im client_windows_amd64.exe

速度实测
我用的服务器是搬瓦工 512M 内存,费利蒙机房,以此测试加速效果。
按结论看,Kcptun 的加速效果略逊于 Finalspeed,估计需要细调配置。
刚运行 Finalspeed 时,内存占用就达到了 9.1% 也就是接近 47M;而此时 Kcptun 占用 0.4%,也就是 2M左右。
YouTube 1440p 满跑情况下,FInalspeed 最高内存占用 15.4%,接近 79M;而此时 Kcptun 占用 3% 左右,即 15.5M。
速度方面,Finalspeed 最大速度达到了10000 Kbps +,Kcptun 6000+ Kbps。

以上结论为本人测试所得,仅作为参考;实际情况请自行测试。
------------------


双边加速软件kcptun搭建教程(服务器端)



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

KCP 协议:https://github.com/skywind3000/kcp
Kcptun 项目地址:https://github.com/xtaci/kcptun

KCPTun安装

本教程使用的是 Debian 64x 系统。
下载KCPTun,并解压:
注意:下面的KCPTun文件下载可能不是最新的地址,最新文件的下载地址看这里:
Github-kcptun-releases,直接替换第三行 wget 后面链接的版本号就行了。
注意:KCPTun不分系统版本,只分主系统和位数,
比如 64x 就选择 kcptun-linux-amd64-XXX.tar.gz
32x就选择 kcptun-linux-386-XXX.tar.gz ,Centos/Debian/Ubuntu都一样。
  1. mkdir /root/kcptun
  2. # 新建一个文件夹
  3. cd /root/kcptun
  4. # 进入刚才新建的文件夹
  5. wget https://github.com/xtaci/kcptun/releases/download/v20161222/kcptun-linux-amd64-20161222.tar.gz
  6. # 下载最新的 kcptun-linux-amd64 文件
  7. tar -zxvf kcptun-linux-amd64-20161222.tar.gz
  8. # 解压刚才下载的文件
解压之后会发现只有两个文件: client_linux_amd64 server_linux_amd64,第一个是是客户端文件(linux的客户端),第二个是服务端文件。
目前KCPTun已经加入了配置文件设定,但没有任何启动脚本,所以需要新建一些脚本。
注:下面需要 vi 操作。
简单的说就是vi XXX打开文件,按I键 进入编辑模式,然后输入内容后按 Esc键 退出编辑模式,然后按 :wq 保存并退出。
创建 start.sh:
  1. vi /root/kcptun/start.sh
写入以下内容:
  1. #!/bin/bash
  2. cd /root/kcptun/
  3. ./server_linux_amd64 -c /root/kcptun/server-config.json 2>&1 &
  4. echo "Kcptun started."
server_linux_amd64 对应服务端文件名,请对应修改。
创建配置文件:
  1. vi /root/kcptun/server-config.json
写入以下内容:
  1. {
  2. "listen": ":2333",
  3. "target": "127.0.0.1:8388",
  4. "key": "dou-bi.co",
  5. "crypt": "aes-192",
  6. "mode": "fast2",
  7. "mtu": 1350,
  8. "sndwnd": 1024,
  9. "rcvwnd": 1024,
  10. "datashard": 70,
  11. "parityshard": 30,
  12. "dscp": 46,
  13. "nocomp": false,
  14. "acknodelay": false,
  15. "nodelay": 0,
  16. "interval": 40,
  17. "resend": 0,
  18. "nc": 0,
  19. "sockbuf": 4194304,
  20. "keepalive": 10,
  21. "log": "/root/kcptun/kcptun.log"
  22. }
  • listen 表示 Kcptun 的服务端监听端口,用于接收外部请求和发送数据,默认 2333
  • target 表示要加速的地址,由于 Kcptun 和 Shadowsocks 在同一服务器,地址填写 127.0.0.1(不需要改,这是指本机IP,除非你有多个IP),而 8388 为 Shadowsocks 服务端监听端口
  • key 是 Kcptun 的验证密钥,上面的启动脚本参数默认加上了 -key dou-bi.co 如果不需要可以删掉,服务端和本地必须一致才能通过验证,请自行设置;
  • mode 为加速模式,默认 fast2 ;
  • crypt 为加密方式,默认 aes-192 ;
  • nocomp 为压缩传输,默认 false 表示开启压缩传输。
其他参数可以参考项目主页的介绍。
下面是引用官方介绍:
响应速度:
fast3 > [fast2] > fast > normal > default
有效载荷比:
default > normal > fast > [fast2] > fast3
中间 mode 参数比较均衡,总之就是越快越浪费带宽,推荐模式 fast2。
其他参数,请使用 ./server_linux_amd64 -h 查看,更深层次的参数调整需要理解 KCP 协议,并通过“隐藏参数”调整。
作者推荐配置参数:
  1. 适用大部分ADSL接入(非对称上下行)的参数(实验环境电信100M ADSL)。
  2. 其它带宽请按比例调整,比如 50M ADSL,把 -sndwnd -rcvwnd 减掉一半。
  3.  
  4. SERVER:   -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2
  5. CLIENT:   -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46
注意:客户端和服务端的参数 -sndwnd 2048 -rcvwnd 2048 这两个值不要大于你的本地宽带,否则流量消耗会浪费好几倍,100M就是2048,50M就是1024。这两个值可以逐渐调小,但是不能比本地的实际宽带大!
注意:产生大量重传时,一定是窗口偏大了
创建 stop.sh:
  1. vi /root/kcptun/stop.sh
写入以下内容:
  1. #!/bin/bash
  2. PID=`ps -ef | grep server_linux_amd64 | grep -v grep | awk '{print $2}'`
  3. if [ "" != "$PID" ]; then
  4. echo "killing $PID"
  5. kill -9 $PID
  6. else
  7. echo "Kcptun not running!"
  8. fi
注意:这里的 server_linux_amd64 ,自行替换为你的 服务端名称,64位的系统就是示例的这个,如果是32位的则是 server_linux_386 。
创建 restart.sh:
  1. vi /root/kcptun/restart.sh
写入以下内容:
  1. #!/bin/bash
  2. cd /root/kcptun/
  3. echo "Stopping Kcptun..."
  4. bash stop.sh
  5. bash start.sh
  6. echo "Kcptun started."
给上面创建的脚本添加执行权限:
  1. chmod +x /root/kcptun/*.sh
启动服务端:
  1. sh /root/kcptun/start.sh
日志文件在:/root/kcptun/kcptun.log
监听日志信息:
  1. tail -f /root/kcptun/kcptun.log
停止服务端:
  1. sh /root/kcptun/stop.sh
重启服务端:
  1. sh /root/kcptun/restart.sh

添加开机启动:

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

升级服务端

重复一开始的步骤,下载最新版本的压缩包然后解压覆盖源文件,记得先 停止KCPTUN运行再覆盖。
  1. cd /root/kcptun
  2. # 进入新建的文件夹
  3. wget https://github.com/xtaci/kcptun/releases/download/v20161222/kcptun-linux-amd64-20161222.tar.gz
  4. # 下载最新的 kcptun-linux-amd64 文件
  5. tar -zxvf kcptun-linux-amd64-20161222.tar.gz
  6. # 解压刚才下载的文件

故障排除

  • 客户端和服务器端皆无 stream opened信息。
连接客户端程序的端口设置错误。
  • 客户端有 stream opened信息,服务器端没有。
连接服务器的端口设置错误,或者被防火墙拦截。
  • 客户端服务器皆有 stream opened信息,但无法通信。
上层软件的设定错误。
注意:日志信息在你的客户端或者服务端同目录下的 kcptun.log 中。

注意事项

KcpTun有个缺点,就是实际流量消耗 最少是 你使用量的两倍!如果参数调整有问题,可能会浪费十几倍的流量,而加速幅度也并不会上升多少。

作者的解释:

  • 出现这个情况有几种可能:
  • ISP 对UDP丢包极高,例如50%
  • 服务器,客户端本身的带宽较低,可以适当调低sndwnd /rcvwnd
  • 可以尝试 -dscp 46参数降低丢包率。
希望你们注意一下这个问题,可能搞不好就被 IDC 以滥用网络的名义封VPS了。