旧手机当 VPN 网关:三项条件先核对
旧手机要成为设备,得角色受支持、网络能到达、有人负责恢复。三项条件,一个决定。
抽屉里的手机有处理器、闪存、Wi-Fi 和电池,这比大多数人乐于部署的单板计算机硬件更多。它还有屏幕、老化的电池,以及厂商转身之后就不再收到补丁的操作系统。这些都不决定它该成为 VPN 网关还是 NAS。
它该成为 VPN 网关还是 NAS,并不由这个比较来决定,因为比较谈的是能力,而决定谈的是运维。
三项条件决定它。任何一项不成立,这个项目就是周末实验而不是设备,最好在把数据迁上去之前先知道是哪一项不成立。
条件一:角色确实受支持
三种安排常被叫成同一个名字。VPN 客户端保护手机上应用的流量。VPN 服务器接受入站连接。网关把其他设备的流量转发进隧道。它们是不同的项目,一条能用的客户端隧道并不能证明另外两种。
标准 Android 上的应用受后台执行规则约束,开着的终端也不是守护进程。平台自己的 Doze 与 App Standby 指南解释了设备决定闲置时后台进程为何会失去网络访问,而这正是网关里绝不能有的行为。
Android 内部的 Linux 用户空间继承的限制比它消除的更多。chroot 改变文件系统根目录,但仍运行在 Android 的内核、驱动和安全策略之上,所以 chroot 里的 root 并不是平台之上的 root。换掉操作系统反而会让这台特定手机的 modem、存储和供电支持成为你项目的一部分,而机型支持通常正是没人维护的那部分。
条件二:地址可达
网关必须能被依赖它的客户端访问到。家庭路由器里的 Wi-Fi 手机,从该局域网以及路由器转发到的任何地方都能访问,但除非你另行安排,否则从互联网访问不到。
蜂窝网络让这件事更难而不是更容易。许多移动网络把用户放在运营商级 NAT 后面,因此根本没有可转发的入站地址,加一个 modem 也不会产生公网监听。如果需求是从外部远程访问,设计里必须包含中继或两端都向外连接的覆盖网络,而那是第二个需要维护的活动部件。
网络接入也因设备而异。有些手机接受 USB 以太网适配器,有些不行,而 Wi-Fi 又带来自己的延迟和漫游行为。息屏就睡、切换时掉隧道的网关,比没有网关更糟。
条件三:有人负责更新与恢复
这是人们跳过的那一项,也正是它决定东西能不能撑过一年。每个组件都需要有人负责:操作系统构建、换过的内核、服务器软件包、证书,以及你发出去的凭据。
恢复是更难的那一半。没有屏幕、触控面板坏了、电池鼓包之后,你怎么进去?你怎么吊销丢失的客户端身份?当原机是已停产的型号时,你怎么把存储恢复到替代设备上?
供电也属于这里。持续负载意味着持续发热,而老化的电池不是自动 UPS。遵循厂商指引,把任何鼓包或损伤当作停止信号,而不是绕过去处理。
当答案是不行
把三项条件对照你真正需要的东西,讲清具体任务,而不是泛泛的类别。
| Task | Phone is reasonable when |
|---|---|
| Protecting the phone's own traffic | The client is a supported Android app; no forwarding involved |
| Small lab tunnel inside one LAN | Downtime is acceptable and you can reach the device to fix it |
| Household NAS holding the only copy | Never; that is a backup problem, not a hardware problem |
| Unattended remote access for others | You already own patching, revocation and replacement |
专用 Linux 主机也逃不开这张清单。硬件和发行版受支持时,它有更清晰的服务管理器以及存储和网络管理路径,但它仍然需要供电、更新和备份。光有板子不算设备。
所以,当受支持的能力刚好匹配一件不大的任务、实验性停机确实可以接受时,就选手机。当需求是绝不能丢的家庭存储,或别人要依赖的远程访问时,就选别的。两种情况下,决定因素都是一套可复现的安装和你真正测过的恢复流程,再多的免费硬件也替代不了其中任何一个。