Ubuntu + macOS WireGuard 虚拟局域网搭建:从云端中继到 macOS 系统级守护实践

开场:告别内网穿透的“开盲盒”体验 在多设备办公和 HomeLab 运维中,远程访问内网资源一直是个痛点: frp / 端口映射:家宽没有公网 IP,或者公网 IP 隔三差五变动,还要针对每个端口配置穿透规则。 ZeroTier / Tailscale:虽然方便,但依赖第三方中央控制平面,国内网络偶发打洞失败或握手延迟飙升。 传统 OpenVPN / IPsec:配置繁琐、代码庞大,在笔记本睡眠唤醒或 Wi-Fi 切换后重连极慢。 WireGuard 的出现彻底解决了这些问题: 代码精简:仅约 4,000 行核心代码,直接集成进 Linux 内核,吞吐量接近线速。 现代密码学:基于 Noise 协议框架与 Curve25519、ChaCha20-Poly1305,没有臃肿的握手协商。 极简身份机制:每个节点一对公私钥,无状态(Stateless)UDP 通信,原生支持移动漫游(Roaming)。 本文将从零开始,手把手记录一套完整的 Ubuntu 云端中继 + 家庭设备 + macOS 终端极客接入 的生产级配置方案,并深度复盘在 macOS 上实现系统级 LaunchDaemon 开机常驻与事件驱动自愈重连的实战经验。 1. 架构设计与网络规划 WireGuard 在协议层没有严格的“客户端”与“服务端”之分,所有节点都是平等的 Peer。但在实际拓扑中,我们通常将拥有固定公网 IP 的云服务器作为汇聚与中继节点。 拓扑规划 ┌───────────────────────────────┐ │ Ubuntu 云服务器 (Node A) │ │ 公网 IP: 198.51.100.1 │ │ 虚拟 IP: 10.100.0.1/24 │ └──────────────┬────────────────┘ │ WireGuard UDP :51820 ┌────────────┴────────────┐ │ │ ┌────────┴────────┐ ┌────────┴────────┐ │ 家庭 NAS / PC │ │ MacBook 笔记本 │ │ (Node B) │ │ (Node C) │ │ 虚拟 IP: │ │ 虚拟 IP: │ │ 10.100.0.2/24 │ │ 10.100.0.3/24 │ └─────────────────┘ └─────────────────┘ 节点分配表 节点 角色 真实网络 虚拟 IP (wg0) 监听端口 / 对端 Node A 云端中继网关 拥有固定公网 IP 10.100.0.1/24 监听 51820 (UDP) Node B 家庭服务器(Ubuntu 24 Server) 家庭宽带内网 (NAT) 10.100.0.2/24 对端指向 Node A Node C macOS 办公本 移动办公 / Wi-Fi (NAT) 10.100.0.3/24 对端指向 Node A 网段选择提示:虚拟子网建议使用 10.100.0.0/24 等不常用网段,避免与家庭路由器默认的 192.168.1.0/24 发生网段冲突。 ...

August 19, 2026 · FXIO

自托管到底在折腾什么?从 awesome-selfhosted 到 go2rtc 的四层答案

自托管到底在折腾什么?从 awesome-selfhosted 到 go2rtc 的四层答案 「为什么你要自己架服务,直接用现成的不好吗?」——本文用四个 GitHub 项目回答这个问题。自托管不是一种技术偏好,是一套关于数据主权的价值观,而它的工程形态远比想象中精致。 每次跟人聊起家里那台跑着十几个容器的小服务器,总会被问:「云上不香吗?免费额度不够吗?」 香。但研究完 awesome-selfhosted(307K Star)这个索引库和它圈子里的几个代表项目后,我想给自托管一个更准确的定义:**它不是「自己部署软件」,而是「把数据、服务、规则的控制权收回到自己手里」。**这个定义能解释为什么这个圈子既极客又固执。 第一层:一张地图——awesome-selfhosted 先看规模。awesome-selfhosted 收录了数百个可自托管应用,覆盖: 类别 代表项目 替代的商业服务 通信 Matrix、Jitsi、Discourse Slack、Zoom、Reddit 内容 Ghost、BookStack、Strapi Medium、Notion、Airtable 文件同步 Nextcloud、MinIO、Syncthing Google Drive、Dropbox 媒体 Jellyfin、Immich、Navidrome Netflix 相册、Google Photos、Spotify DevOps Gitea、Drone、Uptime Kuma GitHub、Jenkins、StatusPage AI Ollama、LocalAI OpenAI API(本地化) 注意几个细节,能看出这个社区的「价值观洁癖」: 只收符合开源定义(OSD)的软件,非自由软件单独关进 non-free.md 小黑屋。数据主权的前提是软件本身可审计,逻辑是自洽的。 GitHub Actions 自动巡检死链和弃坑项目——索引库最大的天敌是腐烂,他们用自动化对抗它。 元数据独立仓库(YAML/JSON)管理,README 自动生成——数据与展示分离,这个工程实践本身就值得抄。 它诚实列出了缺点:技术门槛、安全更新责任、硬件带宽成本。自托管不是免费的,只是把「订阅费」换成了「运维投入」。想清楚这笔账,再看要不要入坑。 第二层:协议翻译官——go2rtc 如果说 awesome-selfhosted 是地图,go2rtc(AlexxIT,Go 语言)就是自托管精神的极致样本。它解决的问题特别具体:家里摄像头品牌太杂,协议互不相通。 海康用私有协议、小米用自家的、Ring 又是一套;你想看画面,要么装五个 App,要么各厂商的云服务各看各的(还得交月费)。go2rtc 的做法是做一个「通用协议转换网关」: graph LR A[RTSP/ONVIF/海康/小米<br/>Ring/Wyze/GoPro...] --> G[go2rtc<br/>协议转换网关] G --> B[WebRTC 零延迟播放] G --> C[HLS / MP4 / RTMP] G --> D[HomeKit / Home Assistant] 输入端支持 RTSP/RTMP/WebRTC/ONVIF/HLS 加一堆私有协议,输出端支持 WebRTC(零延迟)、HLS、MP4、HomeKit,还能双向音频、推流到 YouTube/Telegram。 ...

August 4, 2026 · FXIO