AI 助手:
项目里还集成了一个可选的 AI 助手。
模型和 API 密钥配置在主服务端,密钥不会下发到客户端。客户端发送给 AI 服务端的上下文会经过端到端加密。
它可以帮助用户检查网络状态、分析 P2P 问题、创建服务映射、修改访问权限或者处理常见故障。
涉及修改时,AI 不能直接绕过用户执行。它必须先生成操作计划,列出准备调用的工具、原因、风险和是否可撤销,用户确认以后才会真正执行。
客户端支持保存多个本地会话,聊天记录保存在当前设备。
客户端和服务端:
Windows 客户端是便携 EXE,不需要安装器。
用户拿到文件以后,第一次运行只需要输入:
设备名称
主服务端 IP 或域名
管理员分配的一次性授权哈希
配对完成后,设备身份会保存在本机。后续双击启动即可,不需要每次重新输入哈希。
主服务端负责设备授权、证书签发、吊销、节点管理和更新分发。
服务端和子节点支持:
Linux amd64
Linux arm64
多 Lighthouse
多 Relay
子节点健康检查
故障切换
签名吊销列表
客户端更新发布
安全方面:
设备的 Nebula 私钥在客户端本机生成,不上传到控制服务器。
一次性授权哈希会绑定设备身份和公钥,已经使用或吊销后不能继续拿去注册其他设备。
更新包会验证:
Ed25519 签名
SHA-256
文件大小
版本信息
启动后的健康状态
更新失败或者新版本无法正常启动时,可以回滚上一版本。
技术栈:
项目主体使用 Go 编写。
Windows 原生窗口使用 WebView2,界面资源直接嵌入 EXE,不会额外打开 Edge 或 Chrome 浏览器窗口。
主要用到:
Go
SlackHQ Nebula
WebView2
SQLite
Windows DPAPI
X25519
AES-256-GCM
Ed25519
PowerShell
Bash
systemd
GitHub Actions
Windows、Ubuntu 测试以及 Linux amd64/arm64 构建都由 GitHub Actions 自动执行。
当前状态:
MeshLAN 现在已经能够满足我自己和朋友之间的日常使用,但它仍然是一个比较年轻的项目。
不同地区、运营商、路由器、IPv6 环境和 TUN 软件的组合非常多,我不可能一个人覆盖所有网络情况。
如果你也有异地组网、共享 localhost、联机开发、访问家庭服务或者游戏服务器的需求,可以试试看。
遇到问题欢迎提交 Issue。也欢迎对 Windows 网络、IPv6、NAT 打洞、Nebula、多 Relay、UI、文档和安全感兴趣的人一起完善。
项目已使用 MIT License 开源。
GitHub: https://github.com/zhaoxuya520/MeshLAN
如果觉得项目有用,欢迎点个 Star。