kcptun-rust 1.1.0

A Rust implementation of kcptun, a fast and reliable tunnel based on KCP protocol
Documentation

kcptun-rust

基于 Rust 实现的 kcptun,使用 rust_tokio_kcpsmux_rust 库。

特性

  • 基于 KCP 协议的快速隧道
  • 支持多路复用 (SMUX)
  • 支持多种加密算法
  • 支持 FEC (前向纠错)
  • 可配置的传输参数
  • 客户端和服务端模式

构建

cargo build --release

使用方法

服务端

# 基本用法
./target/release/kcptun-server -l :29900 -t 127.0.0.1:12948

# 使用配置文件
./target/release/kcptun-server -c server.json

# 指定更多参数
./target/release/kcptun-server \
  --listen :29900 \
  --target 127.0.0.1:12948 \
  --key "your-secret-key" \
  --crypt aes \
  --mode fast3

客户端

# 基本用法
./target/release/kcptun-client -l :12948 -r server-ip:29900

# 使用配置文件
./target/release/kcptun-client -c client.json

# 指定更多参数
./target/release/kcptun-client \
  --localaddr :12948 \
  --remoteaddr server-ip:29900 \
  --key "your-secret-key" \
  --crypt aes \
  --mode fast3 \
  --conn 4

配置文件示例

服务端配置 (server.json)

{
  "listen": ":29900",
  "target": "127.0.0.1:12948",
  "key": "it's a secrect",
  "crypt": "aes",
  "mode": "fast",
  "mtu": 1350,
  "sndwnd": 1024,
  "rcvwnd": 1024,
  "datashard": 10,
  "parityshard": 3,
  "dscp": 0,
  "nocomp": false,
  "acknodelay": false,
  "sockbuf": 4194304,
  "smuxver": 2,
  "smuxbuf": 4194304,
  "framesize": 8192,
  "streambuf": 2097152,
  "keepalive": 10,
  "quiet": false
}

客户端配置 (client.json)

{
  "localaddr": ":12948",
  "remoteaddr": "vps:29900",
  "key": "it's a secrect",
  "crypt": "aes",
  "mode": "fast",
  "conn": 1,
  "autoexpire": 0,
  "scavengettl": 600,
  "mtu": 1350,
  "sndwnd": 128,
  "rcvwnd": 512,
  "datashard": 10,
  "parityshard": 3,
  "dscp": 0,
  "nocomp": false,
  "acknodelay": false,
  "sockbuf": 4194304,
  "smuxver": 2,
  "smuxbuf": 4194304,
  "framesize": 8192,
  "streambuf": 2097152,
  "keepalive": 10,
  "quiet": false
}

参数说明

模式 (mode)

  • normal: 正常模式
  • fast: 快速模式 (默认)
  • fast2: 更快速模式
  • fast3: 最快速模式

加密算法 (crypt)

✅ 已支持以下加密算法:

  • aes / aes-128: AES-128 加密 (默认,推荐)
  • aes-192: AES-192 加密
  • aes-256: AES-256 加密
  • tea: TEA 加密
  • xtea: XTEA 加密
  • xor / simple_xor: SimpleXOR 加密
  • blowfish: Blowfish 加密
  • cast5: CAST5 加密
  • 3des / triple_des: 3DES 加密
  • twofish: Twofish 加密
  • salsa20: Salsa20 加密
  • sm4: SM4 国密算法
  • none / null: 不加密(不推荐)

所有加密算法都与 Go 版本 kcptun 兼容。

性能调优

MTU 设置

根据网络环境调整 MTU 值:

  • 以太网: 1400-1500
  • ADSL: 1400
  • 3G/4G: 1200-1300

窗口大小

  • sndwnd: 发送窗口大小
  • rcvwnd: 接收窗口大小

增大窗口可以提高带宽利用率,但会增加内存使用。

FEC 参数

  • datashard: 数据分片数
  • parityshard: 校验分片数

FEC 可以在丢包环境下提高传输质量。

许可证

MIT License

测试

快速测试

运行基础功能测试:

./test_simple.sh

运行完整连接测试:

./test.sh

Rust 单元测试

cargo test

详细测试说明请参考 TESTING.md

参考

本项目参考了原始的 Go 版本 kcptun: https://github.com/xtaci/kcptun