服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 4677|回复: 0

kcptun加速代理

[复制链接]
dirtysea 发表于 2020-5-7 10:56:39 | 显示全部楼层 |阅读模式

kcptun为何物?

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

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

Kcptun相关项目地址:

https://github.com/xtaci/kcptun/

https://github.com/shadowsocks/kcptun/releases

https://github.com/dfdragon/kcptun_gclient/releases



KCP协议简介

        KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。 连时钟都需要外部传递进来,内部不会有任何一次系统调用。

        整个协议只有 ikcp.h, ikcp.c两个源文件,可以方便的集成到用户自己的协议栈中。也许你实现了一个P2P,或者某个基于 UDP的协议,而缺乏一套完善的ARQ可靠协议实现,那么简单的拷贝这两个文件到现有项目中,稍微编写两行代码,即可使用。

技术特性

        TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的是充分利用带宽。而 KCP是为流速设计的(单个数据包从一端发送到一端需要多少时间),以10%-20%带宽浪费的代价换取了比 TCP快30%-40%的传输速度。TCP信道是一条流速很慢,但每秒流量很大的大运河,而KCP是水流湍急的小激流。KCP有正常模式和快速模式两种,通过以下策略达到提高流速的结果:

相关项目地址:

https://github.com/skywind3000/kcp

https://link.jianshu.com/?t=https://github.com/dfdragon/kcptun_gclient/releases




废话不多少,下面开始配置实战环境如下:


  1. SS-服务器: CentOS Linux release 7.5.1804 (Core) x64
  2.  
  3. 连接客户端:windows 10 pro x64




加速原理图


一、下载Kcptun服务端

  1. #下载地址:[url]https://github.com/xtaci/kcptun/releases[/url]
  2. #注意:我这里下载的是kcptun-linux-amd64-20181114.tar.gz,根据你当前的系统环境选择!
  3. #进入SS服务器
  4. #注意:当前我是在CentOS操作系统下。
  5.  
  6. mkdir /root/kcptun
  7. cd /root/kcptun
  8. wget https://github.com/xtaci/kcptun/releases/download/v20181114/kcptun-linux-amd64-20181114.tar.gz
  9. tar -zxvf kcptun-linux-amd64-20181114.tar.gz

SS服务器只需要运行server_linux_amd64



1.创建启动脚本

  1. vim /root/kcptun/kcptun.sh

2.粘贴以下内容

  1. #!/bin/bash
  2. cd /root/kcptun/
  3. ./server_linux_amd64 -:6666 -t xx.xx.xx.xx:8080 -key test -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2 > kcptun.log 2>&1 &
  4. echo "开始运行Kcptun"

3.解释下:

  1. -:6666              //监听本地端口,待会我们从windows 10 x64 客户端需要连接此端口。
  2. xx.xx.xx.xx:8080         //当前SS服务器部署好的SS连接IP与端口
  3. key test               //为Kcptun你的验证密钥,这里为test,可以自己写,其他参数先不做介绍,可自行--help

4.关闭服务

  1. killall server_linux_amd64

5.启动Kcptun

  1. sh /root/kcptun/kcptun.sh

6.查看端口是否起来

  1. [root@host2 kcptun]# netstat -lntup
  2. Active Internet connections (only servers)
  3. Proto Recv-Send-Local Address           Foreign Address         State       PID/Program name    
  4. tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      678/sshd            
  5. tcp6       0      0 :::8080                 :::*                    LISTEN      3874/python         
  6. tcp6       0      0 :::22                   :::*                    LISTEN      678/sshd            
  7. udp        0      0 127.0.0.1:323           0.0.0.0:*                           456/chronyd         
  8. udp        0      0 0.0.0.0:68              0.0.0.0:*                           1224/dhclient       
  9. udp        0      0 0.0.0.0:40307           0.0.0.0:*                           3874/python         
  10. udp6       0      0 :::6666                 :::*                                21830/./server_linu 
  11. udp6       0      0 ::1:323                 :::*                                456/chronyd         
  12. udp6       0      0 :::8080                 :::*                                3874/python     
  13.  
  14.  
  15. #发现UDP 6666端口已经启动监听
  16. #服务已经启动,至此服务端配置完毕
  17. #######接下来,我们到windows 10 客户端#####

二、客户端Kcptun配置

  1. #下载地址:[url]https://github.com/xtaci/kcptun/releases/download/v20181114/kcptun-windows-amd64-20181114.tar.gz[/url]
  2. #注意:当前我是在windows10 64位操作系统下。
  3. #下载后解压到一个指定的文件夹内,。在此文件夹内创建文本文件,改名为run.bat,内容如下:
  1. client_windows_amd64.exe -:8080 -r xxx.xx.xx.xx:6666 -key test -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46 >kcptun.log


1.解释下

  1. -:8080                 //监听本地端口,待会我们从shadowsocks 客户端需要连接此端口。
  2. xxx.xx.xx.xx:6666        //为刚刚在SS服务器IP,及监听的UDP6666端口。
  3. key test                 //为Kcptun你的验证密钥,这里为test 服务端配置好的,其他参数先不做介绍,可自行--help

2.启动

  1. 双击打开run.bat 即可


接下来我们在设置下shadowsocks:

服务器IP为127.0.0.1

服务器端口为8080

密码为你的ss密码(和原来你用ss时候的密码一样)




三、加速前后效果对比


1.加速前


2.加速后


可以看到效果非常明显!速度快到起飞。





四、知识扩展

1.开机自动启动,后台运行等

  1. #SS服务器开即自动启动Kcptun服务
  2.  
  3. echo "sh /root/kcptun/kcptun.sh" >> /etc/rc.local
  1. #windown 10 
  2. #windown 10
  3. #windown 10 后台运行脚本,放到Kcptun目录下,保存为run.vbs,内如如下:
  4.  
  5. Dim RunKcptun
  6. Set fso = CreateObject("Scripting.FileSystemObject")
  7. Set WshShell = WScript.CreateObject("WScript.Shell")
  8. '获取文件路径
  9. currentPath = fso.GetFile(Wscript.ScriptFullName).ParentFolder.Path & "\"
  10. '软件运行参数
  11. exeConfig = "client_windows_amd64.exe -l :8080 -r xxx.xxx.xxx.xx:6666 -key test -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46"
  12. '日志文件
  13. logFile = "kcptun.log"
  14. '拼接命令行
  15. cmdLine = "cmd /c " & currentPath & exeConfig & " > " & currentPath & logFile & " 2>&1"
  16. '启动软件
  17. WshShell.Run cmdLine, 0, False
  18. '等待1
  19. 'WScript.Sleep 1000
  20. '打印运行命令
  21. 'Wscript.echo cmdLine
  22. Set WshShell = Nothing
  23. Set fso = Nothing
  24. '退出脚本
  25. WScript.quit

2.安卓手机端Kcptun插件

  1. https://github.com/shadowsocks/kcptun-android/releases

  1. #下载apk安装后,打开ss,启动插件(相当Kcptun客户端),
  2. #连接地址为SS服务器IP的Kcptun端口:6666
  3. #下面参数与win10客户端想对应即可。
  4. key=test;mtu=1400;sndwnd=256;rcvwnd=2048;mode=fast2;dscp=46

kcptun.tar.gz

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-3-28 21:44 , Processed in 0.151514 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表