kcptun 数据传输工具 kcptun

agolangf • 10186 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
# kcptun TCP流转换为KCP+UDP流,用于**_高丢包 _**环境中的数据传输,工作示意图: <pre>+---------------------------------------+                 |                                       |                 |                KCPTUN                 |                 |                                       | +--------+      |  +------------+       +------------+  |      +--------+ |        |      |  |            |       |            |  |      |        | | Client | +--&gt; |  | KCP Client | +---&gt; | KCP Server |  | +--&gt; | Server | |        | TCP  |  |            |  UDP  |            |  | TCP  |        | +--------+      |  +------------+       +------------+  |      +--------+                 |                                       |                 |                                       |                 +---------------------------------------+</pre> **_kcptun可以用于任意tcp网络程序的传输承载,可以极大的提高软件网络流畅度,降低掉线,连不上等情况。_** # [](https://github.com/xtaci/kcptun#特性)特性 1. 超级快 2. 采用高安全性AES-256-CFB加密,双重加密 3. UDP数据包一次一密(OTP),无特征,防非法深度检测 4. 消息摘要采用MD5,杜绝非法篡改 5. kcptun客户端和服务端分别只有一个main.go文件,易于使用 6. 核心基于[kcp-go](https://github.com/xtaci/kcp-go) 7. 基于[yamux](https://github.com/hashicorp/yamux) 的多路流复用( N:1 ------ &gt; 1:N) 加密流程: <pre>rand.Reader                                      + +-----------+                        | |           |                        |                 +---------+   PSK   +-----------+ | PLAINTEXT |                     +--v--+              |                               | |           |                     | OTP |              |                               | +-----+-----+                     +--+--+              |                               |       |                              |                 |                               |  +----v----+    +--------+       +---v----+       +----+----+                     +----+----+        +--------+                      +-----------+  |         |    |        |       |        |       |         |                     |         |        |        |                      |           |  | AES-CFB +----&gt; CIPHER +-------&gt; PACKET +--------&gt;AES-CFB +----&gt; Internet +------&gt;AES-CFB +--------&gt; PACKET |                      | PLAINTEXT |  | ENCRYPT |    |  TEXT  |       |        |       | ENCRYPT |                     | DECRYPT |        |        |                      |           |  |         |    |        |       +---^----+       |         |                     |         |        +---+----+                      +-----^-----+  +----^----+    +---+----+           |            +---------+                     +---------+            |                                 |       |             |           +----+----+                                                              |                                 |       |             |           |         |                                                          +---v----+       +--------+      +----+----+       |             +-----------&gt;   MD5   |                                                          |        |       |        |      |         |       |                         |         |                                                          |  MD5   +-------&gt; CIPHER +-------&gt;AES-CFB |       |                         +---------+                                                          | VERIFY |       |  TEXT  |      | DECRYPT |       |                                                                                              |        |       |        |      |         |       |                                                                                              +--------+       +--------+      +----^----+       |                                                                                                                                    |       |                                                                                                                                    |       +---------------------------------------------------------+    PSK   +---------------------------------------------------------------+</pre> ### [](https://github.com/xtaci/kcptun#适用范围包括但不限于)适用范围(包括但不限于): 1. 网络游戏的数据传输 2. 跨运营商的流量传输 3. 其他高丢包,高干扰通信环境的TCP数据传输 # [](https://github.com/xtaci/kcptun#快速上手)快速上手 **_注意,请确保默认服务器端UDP端口 29900 开启,防火墙允许UDP包通过。 (端口可以通过命令行参数调整,不要忘记修改对应的防火墙规则。)_** 点 [这里](https://github.com/xtaci/kcptun/releases/latest) 下载最新的对应平台的版本(**_内含x86/x64/arm_**), 执行 client -h 和server -h 查看详细使用方法. 我们以加速ssh -D访问为例示范使用方法如下: 1. 假定服务器IP为:xxx.xxx.xxx.xxx 2. 在服务器端开启ssh -D (监听127.0.0.1:8080端口,**_或者你可以在服务器端启动任意的socks代理监听127.0.0.1:8080_** )ssh -D 127.0.0.1:8080 ubuntu@localhost 3. 在服务器启动kcp server:server -t &#34;127.0.0.1:8080&#34; // 所有数据包转发到sshd进程的socks 8080端口 _---------------------------- 分割线,上面是服务器,下面是客户端 ----------------------------_ 4. 在本地启动kcp client:client -r &#34;xxx.xxx.xxx.xxx:29900&#34; // 连接到kcp server,默认kcp server端口是29900 5. 浏览器就可以连接12948端口进行socks5代理访问了。 // 默认kcp client的端口是12948 # [](https://github.com/xtaci/kcptun#从源码的安装)从源码的安装 ## [](https://github.com/xtaci/kcptun#预备条件)预备条件: 1. 安装好golang 2. 设置好GOPATH 以及PATH=$PATH:$GOPATH/bin (例如: export GOPATH=/home/ubuntu; export PATH=$PATH:$GOPATH/bin), 最好放到.bashrc 或 .zshrc中 ## [](https://github.com/xtaci/kcptun#安装命令)安装命令 1. 服务端: go get github.com/xtaci/kcptun/server; server 2. 客户端: go get github.com/xtaci/kcptun/client; client # [](https://github.com/xtaci/kcptun#常见问题)常见问题 Q: client/server都启动了,但无法传输数据,服务器显示了stream open A: 先杀掉client/server,然后重新启动就能解决绝大部分的问题 Q: client/server都启动了,但服务器没有收到任何数据包也没有stream open A: 某些IDC默认屏蔽了UDP协议,需要在防火墙中打开对应的端口 Q: 出现不明原因降速严重,可能有50%丢包 A: 可能该端口被运营商限制,更换一个端口就能解决 另外,一些比较有代表性的issue可以参考: [https://github.com/xtaci/kcptun/issues/2](https://github.com/xtaci/kcptun/issues/2) # [](https://github.com/xtaci/kcptun#参数调整)参数调整 初步运行成功后,**_强烈建议_**通过命令行改变如下参数加强传输安全: 1. 默认端口 2. 默认密码 **_必须修改_** 例如: server -l &#34;:41111&#34; -key &#34;hahahah&#34; # [](https://github.com/xtaci/kcptun#免责申明)免责申明 用户以各种方式使用本软件(包括但不限于修改使用、直接使用、通过第三方使用)的过程中,不得以任何方式利用本软件直接或间接从事违反中国法律、以及社会公德的行为。 对免责声明的解释、修改及更新权均属于作者本人所有。 _---------------------------- 分割线,上面是服务器,下面是客户端 ----------------------------_
授权协议:
MIT
开发语言:
Google Go 查看源码»
操作系统:
跨平台
10186 次点击  ∙  1 赞  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传