sh0rch/packetveil
GitHub: sh0rch/packetveil
packetveil 是一个基于 eBPF/XDP 的 WireGuard 流量混淆器,通过将 UDP 流量伪装为 QUIC、SIP、Syslog 等协议外观来规避 DPI 探测。
Stars: 92 | Forks: 9
# gutd v3 — WireGuard 流量混淆器 (TC/XDP eBPF)
[](https://github.com/sh0rch/gutd/actions/workflows/ci.yml)
[](https://github.com/sh0rch/gutd/actions/workflows/release.yml)
### 基准测试:gutd vs wg-obfuscator
| 工具 | TCP 带宽 | UDP 带宽 | UDP 丢包率 |
|---|---|---|---|
| **gutd (eBPF)** ([v3.0.15](https://github.com/sh0rch/packetveil/releases/tag/v3.0.15)) | 894 Mbits/sec | 794 Mbits/sec | 0.81% |
| **gutd (用户态)** ([v3.0.15](https://github.com/sh0rch/packetveil/releases/tag/v3.0.15)) | 592 Mbits/sec | 454 Mbits/sec | 52% |
| **wg-obfuscator** ([v1.5](https://github.com/ClusterM/wg-obfuscator/releases)) | 315 Mbits/sec | 221 Mbits/sec | 85% |
* 性能测试使用 `iperf3` 在 GitHub Actions 的 Ubuntu 22.04 运行器上的 2 个独立网络命名空间之间进行。[查看测试逻辑和完整日志](https://github.com/sh0rch/packetveil/actions/runs/28407286821)。最后更新:2026-06-29 22:39
**gutd v3** 使用 Linux TC/XDP eBPF 数据路径透明地混淆 WireGuard UDP 流量。在出口流量上,TC BPF 程序将每个 WireGuard 数据包封装在选定的混淆信封中,使用 ChaCha 密钥流掩码有效载荷,并可选地进行填充。在入口流量上,XDP 程序会验证、剥离信封,并在 WireGuard 处理之前恢复原始数据包。WireGuard 完全感知不到 gutd 的存在。提供**纯用户态模式**(与 eBPF 路径线路兼容),适用于旧版内核、非特权容器、MikroTik RouterOS 和 **Windows**。
## 混淆模式
| 模式 | `obfs=` | 线上表现形式 | 防探测 | 端口 |
|---|---|---|---|---|
| **QUIC** *(默认)* | `quic` | 伪 QUIC Long Header + SNI(看起来像 HTTPS/3) | XDP 回复 QUIC Version Negotiation | 任意 UDP 端口 |
| **GUT** | `gut` | 类 GOST 随机 UDP — 无 QUIC/TLS 特征 | 静默丢弃 | 任意 UDP 端口 |
| **SIP/RTP** | `sip` | 信令包封装在 SIP 头中;数据在 RTP 帧中 | XDP 回复 `200 OK` / `401` / `403` | `ports[0]` = SIP (5060),`ports[1+]` = RTP(至少需要 2 个) |
| **Syslog** | `syslog` | 有效载荷经过 base64 编码隐藏在伪 syslog 消息中 | 静默丢弃 | 任意 UDP 端口(通常为 514) |
所有模式均在信封基础上应用 ChaCha 有效载荷掩码。通信双方必须使用相同的模式。
## 功能
- 四种混淆模式:QUIC、GUT(类 GOST 随机 UDP)、SIP/RTP、Syslog —— 可按节点独立选择
- 在 XDP 层主动偏转 DPI 探测(QUIC:Version Negotiation;SIP:`200 OK`/`401`/`403`)
- 使用 ChaCha 进行 WireGuard 有效载荷掩码(默认 4 轮)
- veth 对上的 TC 出口钩子,物理网卡上的 XDP 入口钩子
- 端口条带化:每个节点支持多个 UDP 端口并按包轮换
- 概率性丢弃 Keepalive 以抑制 WireGuard 时序指纹
- 可变填充以混淆数据包大小
- 通过 SIGHUP 热重载(更新 BPF map,无需重启)
- 纯用户态回退模式(零 eBPF 要求,可达约 500 Mbps)
- 跨平台:Linux(eBPF + 用户态)、Windows(用户态)、RouterOS(用户态)
- 多节点支持(每个节点一对 veth + BPF 程序)
- 静态 musl 编译,零 OS 依赖 —— 可在空白的 `scratch` 容器中运行
- IPv4 和 IPv6 外部传输
- 为 NAT 后的客户端提供动态节点端点学习(`peer_ip = dynamic`)
- 通过 `gutd status` 或 SIGUSR1 信号查看统计信息
## 快速开始
在双方节点上生成共享密钥并创建最小化配置:
```
gutd genkey # → prints 256-bit hex key
```
```
# /etc/gutd/gutd.conf (Linux)
# C:\ProgramData\gutd\gutd.conf (Windows)
[peer]
peer_ip = 203.0.113.10 # remote peer public IP
ports = 41000
key =
标签:Docker镜像, WireGuard, XDP, 可视化界面, 安全渗透, 流量伪装, 网络协议混淆, 虚拟专用网, 通知系统