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_kcp` 和 `smux_rust` 库。

## 特性

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

## 构建

```bash
cargo build --release
```

## 使用方法

### 服务端

```bash
# 基本用法
./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
```

### 客户端

```bash
# 基本用法
./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)

```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)

```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

## 测试

### 快速测试

运行基础功能测试:
```bash
./test_simple.sh
```

运行完整连接测试:
```bash
./test.sh
```

### Rust 单元测试

```bash
cargo test
```

详细测试说明请参考 [TESTING.md](TESTING.md)

## 参考

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