Makeph/ghostwire

GitHub: Makeph/ghostwire

一个零服务器的本地优先用户态 mesh VPN 工具包,基于 Noise 加密协议构建 WireGuard 兼容的点对点隧道,无需任何托管控制面。

Stars: 0 | Forks: 0

# ghostwire [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Rust](https://img.shields.io/badge/Rust-2021-orange.svg)](https://www.rust-lang.org/) 一个完全由你掌控的本地优先用户态 mesh VPN。 ghostwire 是一个零服务器的 mesh VPN 工具包,用于从本地配置构建加密的点对点(peer-to-peer)隧道。它生成 WireGuard 兼容的 Curve25519 密钥,规划全互联(full-mesh)节点配置,导出 `wg-quick` 文件,并包含一个无需管理员权限即可测试的纯 UDP 加密数据路径。 ## 为什么选择它 - 拥有你的隧道:没有控制面 SaaS、账户或托管协调器。 - WireGuard 兼容的密钥:Curve25519 密钥采用标准 base64 编码,与 `wg` 密钥材料兼容。 - 经过审查的加密:通过 `snow` crate 使用 Noise Protocol Framework,而非自行手写的原语。 - 本地优先配置:你的 mesh 存在于本地 `ghostwire.toml` 中。 - 单一静态二进制工作流:从一个 CLI 生成、检查、导出、自测并启动。 ## 工作原理 ghostwire 使用 `Noise_IK_25519_ChaChaPoly_BLAKE2s`:基于 Curve25519、ChaCha20-Poly1305 和 BLAKE2s 的 Noise IK。发起方已经知道响应方的静态公钥,发送第一个握手数据报,响应方回复第二个。在这两个 UDP 数据报之后,两个 peer 都会建立一个 Noise 传输会话。 数据路径有意保持简单:一个应用数据包被封装为一个 Noise 传输消息,并作为一个 UDP 数据报发送。所有加密操作都委托给 `snow`。 密钥是 32 字节的 Curve25519 值,以标准 base64 格式呈现,与 WireGuard 的 `wg genkey` / `wg pubkey` 格式匹配。ghostwire 可以导出 `wg-quick` 配置,包括用于移动端导入的二维码输出。 通过 TUN 进行的真实操作系统数据包路由是可选的,并受 `--features tun` 特性门控。该路径需要管理员/root 权限,并且在 Windows 上需要 `wintun.dll`。纯 UDP 加密数据路径无需权限即可工作,并由 `ghostwire selftest` 覆盖测试。 ## 安装 从本仓库安装: ``` cargo install --path . ``` 或者构建一个 release 二进制文件: ``` cargo build --release ``` 如需真实的 TUN 路由: ``` cargo build --release --features tun ``` ## 快速开始 无需 TUN 设备即可验证本地加密数据路径: ``` ghostwire selftest ``` 创建一个包含三个节点的新本地 mesh 配置: ``` ghostwire init --name home --subnet 10.42.0.0/24 --nodes laptop,vps,phone ``` 检查节点、隧道地址、缩写的公钥、endpoint 以及哪些条目包含本地私钥: ``` ghostwire show ``` 为节点导出 WireGuard 兼容的配置: ``` ghostwire export --node laptop ``` 为移动端 WireGuard 导出二维码: ``` ghostwire export --node phone --qr # scan into the WireGuard mobile app ``` 生成全新的密钥对: ``` ghostwire keygen ``` ## 安全性 ghostwire 通过 `snow` crate 使用 `Noise_IK_25519_ChaChaPoly_BLAKE2s`。这赋予了它 Curve25519 静态身份密钥、用于会话建立期间前向保密性的临时密钥、ChaCha20-Poly1305 传输加密以及 BLAKE2s 哈希。该 crate 没有实现自己的加密原语。 私钥不会通过 `Debug` 记录日志;密钥的调试输出会被脱敏为一个简短的指纹。`ghostwire.toml` 包含本地节点的私钥,并且被有意在 git 中忽略(gitignored)。 状态:早期阶段。在信任 ghostwire 处理任何关键任务之前,请先进行审计。 ## 路线图 - 多 peer demux 与类似 WireGuard 的 cookie/index 处理。 - 漫游 endpoint。 - 预共享对称密钥选项。 - Windows 服务和 systemd 单元。 ## 许可证 MIT
标签:P2P网络, Rust, VPN, WireGuard, 可视化界面, 密码学, 手动系统调用, 网络流量审计, 网络通信, 通知系统