办公协作工具:软件 KVM、Mesh VPN 与开源远程桌面
如果你的桌面摆了两台以上的电脑——一台 Windows 台式机跑重型任务、一台 MacBook 随身携带、旁边还可能放一台 Linux 开发机——你一定经历过这种抓狂:三套键盘鼠标占满桌面,想从一台机器复制文本到另一台还得靠微信中转。
这篇文章介绍三类解决这个问题的开源工具:软件 KVM 让你用一套键鼠控制多台电脑;远程桌面 让你在任何地方操作远端的机器;Mesh VPN 把分布各处的设备组进同一个虚拟局域网,让前两类工具跨越物理网络边界工作。它们都遵循同一个原则:数据留在你自己手里。
1. 软件 KVM:一套键鼠控制所有屏幕
硬件 KVM 切换器需要额外设备、接线复杂、切换延迟明显。软件 KVM 通过网络共享键鼠和剪贴板,鼠标移动到屏幕边缘时自动切换到相邻电脑,体验就像在用一台多显示器的机器。
1.1 起源:从 Synergy 到 Barrier
这个故事要从 2001 年说起——Chris Schoeneman 创建了 Synergy,这大概是第一个能在 Windows、macOS、Linux 之间共享键鼠的开源工具[1]。Synergy 在 1.x 时代是开源免费的,但后来转向了商业化闭源模式。
2018 年前后,社区从 Synergy 1.x 的最后开源版本 fork 出了 Barrier(仓库:debauchee/barrier)[2]。Barrier 保持了 Synergy 1.x 的简洁设计,成为那几年跨平台键鼠共享的首选方案。它支持 Windows、macOS、Linux 和 BSD 系统,剪贴板共享也工作得很好。
但 Barrier 的开发在 2022 年后逐渐停滞。GitHub 上几乎没有新提交,Wayland 支持也始终停留在讨论阶段。社区需要一个新的方向。
1.2 Input Leap:维护者的新分支
Barrier 的活跃维护者随后创建了 Input Leap(仓库:input-leap/input-leap),继续沿着 Barrier 的技术路线前进[3]。Input Leap 明确了"无干扰可靠运行"的目标,并持续修复 Barrier 遗留的大量 bug。
Input Leap 与 Barrier/Synergy 1.x 保持网络协议兼容,已安装 Barrier 的用户可以平滑迁移。不过截至 2026 年,Input Leap 的 Wayland 支持仍有限,剪贴板共享在 Wayland 下尚不可用。
1.3 Deskflow:当前最活跃的继承者
Deskflow(仓库:deskflow/deskflow)是同一棵代码树上的另一个分支,但它的发展势头已经远超其它 fork[4]。Deskflow 的关键差异点:
- TLS 加密默认开启。所有网络流量经过加密,不再需要在局域网内担心键鼠数据被嗅探。
- Wayland 完整支持。借助
libei和libportal库,Deskflow 在 Wayland 会话下可以正常工作——这是 Input Leap 和 Barrier 始终没有解决的问题[5]。 - 剪贴板共享作为核心功能持续改进。支持文本、图片等格式的跨机剪贴板同步。
- 与所有 fork 网络兼容。Deskflow 可以与 Synergy 1、Barrier、Input Leap 在同一网络中混合使用。
- 商业赞助支持开发。Synergy 的母公司 Symless 赞助 Deskflow 项目,贡献代码并提供资金。
Deskflow 支持 Windows 10 v1809+、macOS 12+(Intel)/ macOS 13+(Apple Silicon)、Linux(需 Qt 6.7+ 和 libei 1.3+)、FreeBSD 等平台。macOS 用户推荐通过 Homebrew 安装:
brew tap deskflow/tap
brew install deskflow在 macOS 上首次运行时,需要在「隐私与安全性」中为 Deskflow 和 deskflow 进程授予辅助功能权限。macOS Sequoia 还需要额外允许本地网络权限。
下面的 Mermaid 图展示了 Deskflow 在典型三机部署中的工作原理:
如果你要从 Barrier 或 Input Leap 迁移到 Deskflow,不用担心配置丢失——它们的配置文件格式兼容,直接导入即可。
2. 远程桌面:操作不在身边的机器
软件 KVM 解决的是同一桌面上多台电脑的控制问题。如果你需要从咖啡馆的笔记本连接到办公室的台式机,就需要的是远程桌面工具。
2.1 RustDesk:开源、自托管、端到端加密
RustDesk 是用 Rust 编写的开源远程桌面软件,定位为 TeamViewer 和 AnyDesk 的开源替代品[6]。它的架构分两层:客户端和自托管服务器。
RustDesk 的客户端支持 Windows、macOS、Linux、iOS、Android 和 Web。核心特性:
- 自托管(Self-Host)。你可以用 Docker 在自己的服务器上部署 RustDesk Server,所有连接数据经过你自己的基础设施,不经过第三方[7]。
- P2P 端到端加密。客户端之间优先建立点对点直连,加密基于 NaCl。只有在 NAT 穿透失败时才会通过中继服务器转发。
- 多编解码器支持。软件编解码支持 VP8 / VP9 / AV1,硬件编解码支持 H264 / H265。
- 无需安装即可运行。Windows 端提供绿色免安装版本,普通用户可以直接双击运行。
- Pro 版提供企业控制。如果需要 Web 管理控制台、OIDC 单点登录、LDAP、2FA、访问控制策略等企业特性,可以使用付费的 RustDesk Server Pro。OSS 版始终免费开源。
自托管服务端的部署只需要一条 Docker 命令(以 OSS 版为例):
docker run --name hbbs -v ./data:/root -p 21115:21115 -p 21115:21115/udp -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -p 21119:21119 rustdesk/rustdesk-server:latest启动后,在客户端设置中填入你的服务器地址,所有远程连接就会通过你自己的服务器协调。
下面这张序列图展示了 RustDesk 建立 P2P 连接的过程:
2.2 安全考量
RustDesk 的安全模型有几个值得注意的细节:
- OSS 版服务端没有 Web 管理界面,所有管理操作通过命令行完成。这一方面降低了攻击面,另一方面也意味着你需要熟悉命令行操作。
- P2P 直连时流量不经服务器,密钥通过服务器的公钥体系交换,服务器无法解密直连流量。
- 如果使用公共中继服务器(RustDesk 官方提供),你的桌面画面理论上会经过官方基础设施。对于敏感场景,自建服务器是必选项。
3. Mesh VPN:把所有设备组进同一个虚拟网络
软件 KVM 和远程桌面都假设你的设备在同一个局域网内,或者至少有一台设备有公网 IP。现实是,你的笔记本在咖啡馆、台式机在家里的 NAT 后面、公司服务器在防火墙内部——它们之间根本无法直接通信。
这就是 Mesh VPN 的用武之地。它在你的所有设备之间建立一个加密的虚拟二层/三层网络,让分布在世界各地的设备就像插在同一个交换机上一样互通。有了 Mesh VPN,Deskflow 可以跨越城市共享键鼠,RustDesk 可以直接 P2P 连接而不需要中继转发。
3.1 EasyTier:Rust 写的去中心化 Mesh VPN
EasyTier(仓库:EasyTier/EasyTier)是用 Rust 和 Tokio 构建的去中心化 Mesh VPN,定位为 ZeroTier 和 Tailscale 的开源替代品[8]。GitHub 上已收获 11.7k+ stars,社区非常活跃。
EasyTier 的核心设计理念是 去中心化——没有服务器/客户端之分,所有节点对等。节点之间自动通过 UDP 和 IPv6 进行 NAT 穿透并建立 P2P 连接。当 P2P 无法建立时,流量通过公共共享节点中转。EasyTier 社区提供了免费的公共共享节点,也可以在自己的 VPS 上自建。
关键特性:
- 去中心化组网。节点平等独立,无需中心服务器。任何一个节点可以连接网络中任意已有节点来加入。
- 高效 NAT 穿透。支持 UDP 和 IPv6 穿透,在 NAT4-NAT4 的严苛网络下也能建立直连。RustDesk 社区甚至有用户建议参考 EasyTier 的穿透机制来改进 RustDesk 的 P2P 连接成功率[9]。
- WireGuard 集成。EasyTier 可以作为 WireGuard 服务器,让 iOS、Android 等设备通过标准 WireGuard 客户端接入虚拟网络。
- 子网代理。节点可以将其所在物理子网共享给虚拟网络中的其他节点,实现跨站点互访。
- 全链路零拷贝。支持 TCP / UDP / WebSocket / WireGuard 多种协议,KCP / QUIC 代理优化高丢包环境下的延迟和带宽。
- 跨平台。支持 Windows、macOS、Linux、FreeBSD、Android、OpenHarmony,以及 x86 / ARM / MIPS 等架构。提供 CLI、GUI(Tauri)和 Web 管理界面。
- LGPL-3.0 开源。
安装非常简单,Linux 下一行命令:
curl -fsSL "https://github.com/EasyTier/EasyTier/blob/main/script/install.sh?raw=true" | sudo bash -s install在两台设备上组建虚拟网络只需要两步。先在 Node A 启动第一个节点:
sudo easytier-core -i 10.144.144.1然后在 Node B 连接到它:
sudo easytier-core -i 10.144.144.2 -p udp://NODE_A_PUBLIC_IP:11010之后你就可以从 Node B ping 10.144.144.1,两台设备就像在同一局域网内。此时再启动 Deskflow 或 RustDesk,它们看到的也是同一个虚拟局域网,P2P 直连水到渠成。
下面的序列图展示了 EasyTier 的去中心化组网流程:
3.2 与 ZeroTier / Tailscale 的对比
EasyTier 不是第一个 Mesh VPN,但与它的前辈们相比有几个显著差异:
| 特性 | EasyTier | ZeroTier | Tailscale |
|---|---|---|---|
| 中心化程度 | 完全去中心化 | 依赖官方 Root Server | 依赖官方 Coordination Server |
| 自建服务器 | 可选,一行命令 | 需要自建 Moon/Controller | 需自建 Headscale |
| NAT 穿透 | 原生支持,UDP + IPv6 | 依赖官方 STUN 服务器 | 依赖 DERP 中继 |
| WireGuard 集成 | 内置门户 | 需额外配置 | 核心协议 |
| 开源协议 | LGPL-3.0 | BSL(源码可用) | MIT(客户端)/ 服务端闭源 |
| 国内网络友好度 | 高(社区中文活跃,QQ 群) | 中(官方服务有时被墙) | 低(DERP 服务器在海外) |
EasyTier 的去中心化架构意味着你不需要依赖任何第三方服务即可组网。如果你担心 ZeroTier 或 Tailscale 的官方服务不可用或被墙,EasyTier 提供了一个完全自主可控的替代方案。
4. 选型建议
三类工具解决不同层次的问题,工作场景决定了你该选哪个:
| 场景 | 推荐工具 | 理由 |
|---|---|---|
| 同一桌面多台电脑,只需共享键鼠 | Deskflow | TLS 加密、Wayland 支持、活跃开发 |
| 已有 Barrier/Input Leap 想升级 | Deskflow | 网络协议兼容,平滑切换 |
| 远程控制不在身边的电脑 | RustDesk | 自托管、P2P 加密、全平台 |
| 企业 IT 远程支持 | RustDesk Pro | Web 控制台、访问控制策略、品牌定制 |
| 远程登录自己的服务器 | 传统 SSH / RDP | RustDesk 更适合图形桌面场景 |
| 把多台异地设备组进同一虚拟网络 | EasyTier | 去中心化、NAT 穿透强、WireGuard 集成 |
| 让 Deskflow/RustDesk 跨互联网工作 | EasyTier + 对应工具 | EasyTier 提供虚拟局域网,上层工具按需搭配 |
这三类工具的关系可以理解为网络栈的三层:EasyTier 在最底层打通网络连通性,Deskflow 和 RustDesk 在应用层解决具体的交互需求。三者都开源、都支持自建基础设施、都不依赖第三方云服务——你可以根据自己的信任边界自由组合。
参考文献
Deskflow Wiki,《History of the Project》,https://github.com/deskflow/deskflow/wiki/History ↩︎
知乎专栏,《跨平台共享使用鼠标和键盘终极方案 Barrier》,https://zhuanlan.zhihu.com/p/496268224 ↩︎
Input Leap GitHub 仓库,《Open-source KVM software》,https://github.com/input-leap/input-leap ↩︎
Deskflow GitHub 仓库,《Deskflow: Share a single keyboard and mouse between multiple computers》,https://github.com/deskflow/deskflow ↩︎
Deskflow GitHub Discussions,《Known Wayland Issues》,https://github.com/deskflow/deskflow/discussions/7499 ↩︎
RustDesk 官方文档,《RustDesk Documentation》,https://rustdesk.com/docs/en/ ↩︎
RustDesk Server OSS GitHub 仓库,https://github.com/rustdesk/rustdesk-server ↩︎
EasyTier GitHub 仓库,《A simple, decentralized mesh VPN with WireGuard support》,https://github.com/EasyTier/EasyTier ↩︎
RustDesk GitHub Discussions #11979,《Improve NAT Traversal in RustDesk》,https://github.com/rustdesk/rustdesk/discussions/11979 ↩︎