# 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