omniedgeio/omniedge

GitHub: omniedgeio/omniedge

OmniEdge 是一款基于 WireGuard 的零配置 mesh VPN,专为分布式 AI、机器人集群和边缘设备的跨网络安全低延迟互联而设计。

Stars: 895 | Forks: 53

# OmniEdge [![Release](https://img.shields.io/github/v/release/omniedgeio/omniedge?style=flat-square)](https://github.com/omniedgeio/omniedge/releases) [![Build](https://img.shields.io/github/actions/workflow/status/omniedgeio/omniedge/release.yml?label=Build&style=flat-square)](https://github.com/omniedgeio/omniedge/actions/workflows/release.yml) [![E2E Tests](https://img.shields.io/github/actions/workflow/status/omniedgeio/omniedge/e2e.yml?label=E2E%20Tests&style=flat-square)](https://github.com/omniedgeio/omniedge/actions/workflows/e2e.yml) [![License](https://img.shields.io/github/license/omniedgeio/omniedge?style=flat-square)](LICENSE) [![Rust](https://img.shields.io/badge/rust-1.70%2B-orange?style=flat-square&logo=rust)](https://www.rust-lang.org/) [![Tauri](https://img.shields.io/badge/tauri-v2-blue?style=flat-square&logo=tauri&logoColor=white)](https://tauri.app/) [![OmniNervous](https://img.shields.io/badge/OmniNervous-v1.0.0-green?style=flat-square)](https://github.com/omniedgeio/OmniNervous)
[![Platform](https://img.shields.io/badge/platform-linux%20%7C%20macos%20%7C%20windows-blue?style=flat-square)](#supported-platforms) [![Discord](https://img.shields.io/discord/1234567890?color=5865F2&label=discord&logo=discord&logoColor=white&style=flat-square)](https://discord.gg/d4faRPYj) [![GitHub Downloads](https://img.shields.io/github/downloads/omniedgeio/omniedge/total?label=github%20downloads)](https://github.com/omniedgeio/omniedge/releases)[![Docker Pulls](https://img.shields.io/docker/pulls/omniedge/omniedge.svg)](https://hub.docker.com/r/omniedge/omniedge) ## 问题所在 构建分布式 AI 系统很难。跨网络连接机器人、边缘设备和云基础设施更是难上加难: - 你的机器人集群无法在 NAT 后进行通信 - 联邦学习节点需要安全、低延迟的链路 - 远程调试 AI 设备需要复杂的 VPN 设置 - 多智能体系统需要没有中心服务器的点对点发现 - 人形机器人遥操作要求确定性、无抖动的网络 **OmniEdge 用一个单一二进制文件解决了这个问题。** ## 为什么研究人员和开发者选择 OmniEdge | 挑战 | OmniEdge 解决方案 | | ----------------------------- | ------------------------------------------------------ | | NAT 穿透 | 自动打洞 + 中继回退,99%+ 成功率 | | 对称 NAT | 针对最困难 NAT 类型的零知识中继 | | 延迟敏感的 AI 推理 | WireGuard 加密,~0.3ms 开销 | | 确定性网络 | 用于遥操作的 6-Sigma 稳定性 (Cpk 2.92) | | 安全的模型传输 | 端到端加密 mesh | | 异构设备 | 适用于 x86、ARM64、RISC-V 的单一二进制文件 | | 气隙隔离实验室 | 自托管 nucleus 模式(无云依赖) | ## 性能:工业级稳定性 通过使用过程能力分析 (Cpk) 的 [50 次纵向测试](https://github.com/omniedgeio/OmniNervous/blob/main/Capability_test/cloud_test_50_run_paper.md) 进行验证: | 指标 | OmniEdge Tunnel | 原始网络 | 提升幅度 | | --------------------------- | ------------------ | ------------ | -------------------- | | **Latency(延迟)** | 54.69ms | 54.36ms | +0.3ms 开销 | | **延迟稳定性 (Cpk)** | **2.92 (6-Sigma)** | 6.47 | 接近确定性 | | **吞吐量** | **484.7 Mbps** | 344.1 Mbps | **+140.8%** | | **抖动 (StdDev)** | 0.057ms | 0.026ms | 有界且可预测 | ## 完美适用于 ### 机器人 - **人形机器人遥操作**:用于实时控制回路的确定性延迟 - **机器人集群**:用于多机器人协调的 mesh 网络 - **ROS 2 集成**:跨网络的无缝 DDS 发现 - **远程调试**:无需端口转发即可 SSH 登录任何机器人 ### AI 与机器学习 - **联邦学习**:边缘节点间的安全梯度交换 - **分布式推理**:跨 Jetson/Pi 集群拆分模型 - **MLOps Pipelines**:将模型无缝部署到边缘设备 - **GPU 集群访问**:连接到远程训练基础设施 ### 研究 - **多智能体系统**:用于智能体协调的 P2P 通信 - **边缘计算**:将雾节点透明地连接到云 - **IoT 测试平台**:为传感器网络提供即时 mesh - **可重复的实验**:跨试验的一致网络 ## 快速开始(60秒) ``` # 在任何 Linux 设备上安装(Jetson、Pi、服务器) curl -fsSL https://raw.githubusercontent.com/omniedgeio/omniedge/main/scripts/omniedge-install.sh | bash # 启动并连接(首次运行交互式登录) sudo omniedge start # 大功告成。您的设备现在可以通过虚拟 IP 互相访问。 ``` ## Nucleus 模式自定义服务器 当运行 `omniedge start --mode nucleus` 或 `--mode dual` 时,CLI 可以使用公共 IP 和选定端口自动注册自定义用户服务器。这需要一个 auth token;如果缺少认证或公共 IP 查找失败,它将跳过注册并继续。 ### OpenWrt 安装 ``` # 下载适用于您系统架构的安装包(例如:aarch64、OpenWrt 24.10) wget https://github.com/omniedgeio/omniedge/releases/download/v2.9.0/omniedge_2.9.0_aarch64_generic.ipk # 安装安装包 opkg install omniedge_2.9.0_aarch64_generic.ipk # 通过 UCI 进行配置 uci set omniedge.main.enabled='1' uci set omniedge.main.network_id='your-network-id' uci commit omniedge # 启动服务 /etc/init.d/omniedge start /etc/init.d/omniedge enable # Start on boot ``` ## 支持的硬件 | 设备 | 架构 | 状态 | | -------------------------------- | ------------- | ------------ | | NVIDIA Jetson (Nano/Xavier/Orin) | ARM64 | 已测试 | | Raspberry Pi 4/5 | ARM64 | 已测试 | | Intel NUC / x86 服务器 | x86_64 | 已测试 | | Apple Silicon (M1/M2/M3) | ARM64 | 已测试 | | RISC-V 开发板 | riscv64 | 实验性 | | OpenWrt 路由器 | x86_64, ARM64 | 已测试 | ## 支持的平台 ### CLI(`omniedge-cli`) | 平台 | 架构 | 包格式 | | ----------- | ------------------------------------- | -------------------------------------- | | **Linux** | x86_64, ARM64, RISC-V | `.tar.gz`, `.deb`, `.rpm`, `.AppImage` | | **macOS** | x86_64 (Intel), ARM64 (Apple Silicon) | `.tar.gz` | | **Windows** | x86_64 | `.zip` | ### 桌面版(`omniedge-desktop`) | 平台 | 架构 | 包格式 | | ----------- | ------------- | ------------------- | | **Windows** | x86_64 | `.msi`, `.exe` | | **macOS** | x86_64, ARM64 | `.dmg` | | **Linux** | x86_64 | `.deb`, `.AppImage` | ### OpenWrt(`omniedge-openwrt`) | OpenWrt 版本 | 架构 | 包格式 | 状态 | | ------------------- | ------------ | ------------ | ------ | | **24.10.x** | x86_64 | `.ipk` | 已测试 | | **24.10.x** | aarch64 | `.ipk` | 已测试 | | **25.x (snapshot)** | x86_64 | `.apk` | 已测试 | | **25.x (snapshot)** | aarch64 | `.apk` | 已测试 | ## 架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ Your AI Network │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Jetson Orin │ │ Robot Fleet │ │ Cloud │ │ │ │ 10.147.1.1 │◄──►│ 10.147.1.x │◄──►│ 10.147.1.x │ │ │ │ ( Edges ) │ │ (Edges) │ │ (Edges) │ │ │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ │ │ │ │ │ │ └───────────────────┼───────────────────┘ │ │ │ │ │ ┌─────────▼─────────┐ │ │ │ OmniEdge Mesh │ │ │ │ (WireGuard) │ │ │ │ │ │ │ │ - E2E Encrypted │ │ │ │ - NAT Traversal │ │ │ │ - Relay Fallback │ │ │ │ - 6σ Stability │ │ │ └───────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` ## 插件系统 (v2.2.0) OmniEdge 现在支持 **基于 WASM 的插件系统**,允许在不修改核心应用程序的情况下扩展功能。 ### 功能 | 功能 | 描述 | | ----------------------------- | -------------------------------------------------------- | | **WASM 沙盒** | 插件在安全的 WebAssembly 沙盒中运行 | | **事件钩子** | 对 VPN 状态变化、peer 事件、网络变化做出反应 | | **基于能力的权限控制** | 每个插件的细粒度权限 | | **热重载** | 无需重启即可安装、启用、禁用插件 | | **跨平台** | 单一插件二进制文件适用于所有平台 | ### 插件能力 | 能力 | 描述 | | ----------------- | --------------------------- | | `network-status` | 读取 VPN 连接状态 | | `peer-info` | 访问 peer 列表和状态 | | `event-hooks` | 订阅 VPN 事件 | | `http-client` | 发出出站 HTTP 请求 | | `key-value-store` | 持久化插件数据 | | `notifications` | 显示系统通知 | | `logging` | 写入应用程序日志 | ### 安装插件 ``` # 通过 CLI(v2.2.0) omniedge plugin list # List installed plugins omniedge plugin install ./plugin.zip # Install from ZIP file omniedge plugin uninstall # Remove a plugin omniedge plugin enable # Enable a plugin omniedge plugin disable # Disable a plugin omniedge plugin info # Show plugin details omniedge plugin reload # Reload a plugin omniedge plugin discover # Discover plugins in directory # 通过桌面端 UI # 设置 > 插件 > 安装插件 > 选择 .zip 文件 # 插件目录 # Windows:%APPDATA%\OmniEdge\plugins\ # macOS:~/Library/Application Support/OmniEdge/plugins/ # Linux:~/.local/share/omniedge/plugins/ ``` ### 创建插件 有关完整示例,请参阅 [examples/plugins/hello-world](examples/plugins/hello-world)。 ``` // Minimal plugin structure wit_bindgen::generate!({ world: "omniedge-plugin", exports: { world: MyPlugin, }, }); struct MyPlugin; impl Guest for MyPlugin { fn on_load() -> Result<(), String> { Ok(()) } } ``` ## NAT 穿透 (v2.1.0) OmniEdge 通过多层 NAT 穿透自动处理复杂的网络环境: ### 工作原理 ``` ┌─────────────────────────────────────────────────────────────────┐ │ NAT Traversal Stack │ ├─────────────────────────────────────────────────────────────────┤ │ 1. STUN Detection → Identify NAT type (Open/Cone/Symmetric) │ │ 2. UDP Hole Punching → Direct P2P for compatible NAT types │ │ 3. Port Mapping → UPnP/NAT-PMP to open router ports │ │ 4. Relay Fallback → Zero-knowledge relay for symmetric NAT │ └─────────────────────────────────────────────────────────────────┘ ``` ### NAT 类型兼容性 | 你的 NAT | Peer NAT | 连接方式 | | --------------- | -------------------- | --------------------- | | 开放/完全锥型 | 任意 | 直接 P2P | | 限制锥型 | 开放/完全/限制 | 直接 P2P | | 端口限制型 | 开放/完全锥型 | 直接 P2P | | 对称型 | 开放/完全锥型 | 直接 P2P(通常情况下)| | 对称型 | 对称型 | **中继**(自动) | ### 功能 | 功能 | 描述 | | ------------------------- | -------------------------------------- | | **自动 NAT 检测** | 连接时基于 STUN 的检测 | | **中继回退** | 针对对称 NAT 的零知识中继 | | **端口映射** | 支持 UPnP/NAT-PMP/PCP | | **加密信令** | X25519 + XSalsa20-Poly1305 | | **IPv6 双栈** | Happy Eyeballs (RFC 8305) | ### 配置 ``` # 检查您的 NAT 类型和设置 omniedge status # 配置 NAT traversal omniedge config show # View current settings omniedge config relay on # Enable relay fallback omniedge config portmap on # Enable UPnP/NAT-PMP omniedge config ipv6 prefer # Prefer IPv6 when faster omniedge config encrypt on # Enable encrypted signaling ``` ## 运行模式 | 模式 | 描述 | 用例 | | ------------------ | --------------- | ------------------------------ | | **edge**(默认) | VPN 客户端 | 将设备连接到 mesh | | **nucleus** | 仅信令服务器 | 自托管中继,无云 | | **dual** | VPN + 信令 | 中心枢纽 + mesh 参与者 | ``` # Edge 模式 - 加入现有网络 sudo omniedge start -n # Nucleus 模式 - 运行您自己的 signaling server(隔离网络实验室) sudo omniedge start --mode nucleus --port 51821 --secret "YourLabSecret123" # Dual 模式 - 同时参与 mesh 的 Hub 节点 sudo omniedge start -n --mode dual --secret "YourSecret123456" ``` ## 传输模式 (v2.5.0) OmniEdge 支持两种传输模式以满足不同的网络需求: | 模式 | 层级 | 接口 | 平台 | 用例 | | ---------------- | ------------------ | ---------- | ---------- | --------------------------- | | **L3**(默认) | IP (Layer 3) | TUN | 全部 | 标准 VPN,IP 路由 | | **L2** | 以太网 (Layer 2) | TAP | 仅限 Linux | 桥接,非 IP 协议 | ### L3 模式(默认) L3 模式在 IP 层运行,在 peer 之间路由 IP 数据包。这是默认设置,适用于所有平台。 ``` # L3 模式(默认 - 无需 flag) sudo omniedge start -n # 显式 L3 模式 sudo omniedge start -n --transport-mode l3 ``` ### L2 模式(仅限 Linux) L2 模式在以太网层级运行,在 peer 之间桥接以太网帧。这可以实现: - **非 IP 协议**:ARP、DHCP 中继、NetBIOS、STP - **MAC 地址可见性**:跨 mesh 查看实际的 MAC 地址 - **VLAN 桥接**:跨站点扩展 VLAN - **遗留协议支持**:不使用 IP 的协议 ``` # L2 模式(仅限 Linux,需要 l2-vpn feature) sudo omniedge start -n --transport-mode l2 ``` **要求**: - Linux 操作系统(TAP 设备需要 Linux 内核) - 使用 `--features l2-vpn` 标志构建 **注意**:L2 模式目前处于预览阶段。OmniNervous L2 模块的完整集成正在进行中。 ## SSH 集成 (v2.7.0) OmniEdge 现在包含一个**内置的 SSH 服务器和客户端**,无需向互联网暴露端口即可安全远程访问 mesh 网络中的任何设备。 ### 功能 | 功能 | 描述 | |---------|-------------| | **Mesh SSH 客户端** | 按名称或虚拟 IP 连接到任何 peer 的 SSH | | **内置 SSH 服务器** | 通过 mesh 接受 SSH 连接 | | **SFTP 支持** | 与 peer 进行安全的文件传输 | | **SCP 支持** | 使用熟悉的 scp 语法复制文件 | | **会话录制** | 录制 SSH 会话以用于审计/合规 | | **集群操作** | 跨多个节点执行命令 | | **紧急访问** | 用于事件响应的破窗机制 | | **独立模式** | 在没有 OmniEdge 后端的情况下运行 SSH 服务器 | ### SSH 命令 ``` # 连接到 peer(通过名称或虚拟 IP) omniedge ssh user@my-robot # By peer name omniedge ssh user@10.147.1.5 # By virtual IP omniedge ssh -p 2222 user@peer # Custom port # 执行远程命令 omniedge ssh user@peer "uptime" omniedge ssh user@peer "systemctl status myservice" # 交互式 SFTP omniedge sftp peer # Start SFTP session # 复制文件(SCP) omniedge scp local.txt peer:/remote/path omniedge scp peer:/remote/file.txt ./local/ omniedge scp -r ./folder peer:/path # Recursive copy ``` ### 独立 SSH 服务器 完整 OmniEdge 后端的情况下运行 SSH 服务器 - 适用于测试、开发或轻量级部署: ``` # 默认:仅限私有网络(10.x、172.16.x、192.168.x) omniedge ssh-server # 接受来自任何 IP 的连接(开发/测试) omniedge ssh-server --permissive # 仅限 Localhost(127.0.0.0/8) omniedge ssh-server --localhost-only # 自定义网络 allowlist omniedge ssh-server --allow-network 192.168.1.0/24 # 用户映射(将 SSH 用户映射到本地用户) omniedge ssh-server --user-map git:admin --default-user guest # 自定义端口和 host key omniedge ssh-server -p 22 --host-key-path /etc/omniedge/host_key ``` ### 用例 - **远程机器人调试**:无需端口转发即可 SSH 登录到机群中的任何机器人 - **安全文件部署**:通过 SFTP 将 ML 模型传输到边缘设备 - **集群管理**:在所有节点上同时执行命令 - **事件响应**:带有审计日志的紧急访问 - **气隙隔离操作**:用于隔离网络的独立 SSH 服务器 ## 自托管模式(气隙隔离实验室) 完全离线运行,无云依赖: ``` # 在您的中央服务器上(例如,实验室 gateway) sudo omniedge start --mode nucleus --port 51821 --secret "LabSecret2026!" # 在边缘设备上 - 它们会通过您的 nucleus 互相发现 # 通过 dashboard 或 API 配置网络设置 ``` **用例:** - 安全的研究环境 - 具有网络隔离的工业机器人 - 国防和政府应用 - 隐私关键型部署 ## CLI 参考 ``` # 基本操作 omniedge start # Connect to first available network omniedge start -n # Connect to specific network omniedge status # Check connection status omniedge stop # Disconnect # 身份验证 omniedge start -s # Non-interactive login (CI/CD) # Exit node(通过 peer 路由流量) omniedge start -x # Run as exit node omniedge start -e # Use specific exit node omniedge start --no-exit-node # Disable exit node # NAT traversal 配置(v2.1.0) omniedge config show # Show current network settings omniedge config relay on|off # Enable/disable relay fallback omniedge config relay server # Set custom relay server omniedge config portmap on|off # Enable/disable UPnP/NAT-PMP omniedge config ipv6 on|off|prefer # IPv6 settings omniedge config encrypt on|off # Encrypted signaling omniedge config reset # Reset to defaults # 插件管理(v2.2.0) omniedge plugin list # List installed plugins omniedge plugin install # Install plugin from ZIP omniedge plugin uninstall # Remove a plugin omniedge plugin enable # Enable a plugin omniedge plugin disable # Disable a plugin omniedge plugin info # Show plugin details omniedge plugin reload # Reload a plugin omniedge plugin discover # Discover plugins in directory # 版本检查和升级(v2.6.0) omniedge version # Display version with commit hash omniedge version --check # Check GitHub for updates omniedge version --releases # Show recent release history omniedge upgrade # Self-update to latest version omniedge upgrade --check # Check only, don't install omniedge upgrade --yes # Skip confirmation prompt # SSH 集成(v2.7.0) omniedge ssh user@peer # SSH to peer by name or IP omniedge ssh user@peer command # Execute remote command omniedge sftp peer # Interactive SFTP session omniedge scp file.txt peer:/path # Copy files to/from peers omniedge ssh-server # Start standalone SSH server omniedge ssh-server --permissive # Accept from any IP # 高级模式 omniedge start --mode nucleus --port 51821 --secret "..." # Signaling server omniedge start --mode dual --secret "..." # Hub + client ``` ## V2 迁移通知 OmniEdge V2 是使用 Rust 的完全重写版本,取代了传统的 Go/n2n 实现: | 方面 | V1(传统版本) | V2(当前版本) | | ----------- | ---------------------------------------------------------------- | ----------------------------- | | 语言 | Go | Rust | | 协议 | n2n | OmniNervous(基于 WireGuard) | | 许可证 | GPL-3.0 | Apache-2.0 / MIT | | 代码仓库 | [omniedge-legacy](https://github.com/omniedgeio/omniedge-legacy) | 本仓库 | ## 研究与引用 在你的研究中使用了 OmniEdge?我们很乐意听取你的分享。 ``` @software{omniedge2026, title = {OmniEdge: Zero-Config P2P Mesh VPN for Edge Computing}, author = {OmniEdge Team}, year = {2026}, url = {https://github.com/omniedgeio/omniedge}, note = {Industrial-grade stability (Cpk 2.92) validated through 50-run longitudinal testing} } ``` ### 相关出版物 - [OmniNervous 协议稳定性分析](https://github.com/omniedgeio/OmniNervous/blob/main/Capability_test/cloud_test_50_run_paper.md) - 50 次 Cpk 验证研究 ## 技术栈 - **[Rust](https://www.rust-lang.org/)** - 内存安全,零开销抽象 - **[WireGuard](https://www.wireguard.com/)** - 现代的、经过审计的密码学 - **[OmniNervous](https://github.com/omniedgeio/OmniNervous)** - 具有 NAT 穿透功能的高性能 P2P daemon - 基于 STUN 的 NAT 检测 - 针对对称 NAT 的中继回退 - UPnP/NAT-PMP/PCP 端口映射 - 用于 IPv6 的 Happy Eyeballs (RFC 8305) - **[Tauri](https://tauri.app/)** - 轻量级桌面应用 ## 社区 - [Discord](https://discord.gg/d4faRPYj) - 提问、分享项目 - [GitHub Issues](https://github.com/omniedgeio/omniedge/issues) - 提交 Bug 报告和功能请求 - [Twitter](https://twitter.com/omniedgeio) - 更新和公告 ## 许可证 采用 [Apache License 2.0](LICENSE-APACHE) 和 [MIT License](LICENSE-MIT) 双重授权。 可自由用于学术和商业项目。详情请参阅 [LICENSING.md](LICENSING.md)。 **为构建未来的机器而生。** [网站](https://connect.omniedge.io) | [文档](https://connect.omniedge.io/docs) | [Discord](https://discord.gg/d4faRPYj) | [Twitter](https://twitter.com/omniedgeio)
标签:Mesh网络, Rust, Tauri, VPN, 内网穿透, 可视化界面, 网络流量审计, 网络通信, 请求拦截, 边缘计算, 通知系统