你希望某一个家庭服务保持可达,而 VPN 对其余一切照常生效。诱人的设置是覆盖所有私有地址的本地路由例外,但那是一个错误的控制点:在下一个酒店或咖啡馆网络里,它可以把任何应答都变成一条绕过通道。本手册把例外限定在单一服务上,并在会破坏它的切换场景中验证它。

把例外定义为一个服务,而不是一个子网

记录应用、目标主机名与地址、协议与端口、允许使用的网络,以及该服务自身执行的凭证校验。对于需要认证的 NAS,证书或账户才是证明你连到了正确机器的东西。192.168.0.0/16 里的一个地址证明不了任何事,因为每台家用路由器都会下发同样的前缀。

还要确定旁边指什么。位于已路由 VLAN 上的服务,不在手机直连的子网里;而访客 Wi-Fi 可能和家里共用同一个私有前缀,却是完全不同的机器。例外应当写明服务与环境,而不只是地址范围。

确认平台控制项符合需求

Android IKEv2 配置文件构建器提供 setLocalRoutesExcluded(true),其文档要求使用可绕过型 VPN:只有当客户端允许流量绕过隧道时,这个排除才有意义。同一份文档还警告,底层网络可能下发影响排除的路由,这正是该设置跟随你加入的网络、而不是你信任的网络的原因。

它也不承诺每一种锁定策略或受管配置都会让用户开启同样的例外。路由例外、可绕过标志和设备阻止策略是三项彼此独立的控制,受管设备可能允许前两项而禁止第三项。在围绕一个复选框做设计之前,先检查已安装的配置文件和管理策略。

操作手册:构建并应用例外

步骤 1:通过部署所支持的路径创建配置文件,要么用受管配置,要么用客户端构建器。步骤 2:把 VPN 标记为可绕过,因为没有它本地路由排除不会生效。步骤 3:启用本地路由排除。步骤 4:保持服务自身的认证与证书校验开启;例外关乎路由,而非信任。步骤 5:保存并重新连接,使配置文件生效。

回滚就是同一条路径反向走:先清除排除,再清除可绕过,然后重新连接。不要直接在设备上修补路由或防火墙钩子。网络守护进程拥有那些规则,而一条手工规则可能漏掉另一个地址族、一次重连或一次网络切换。如果已安装的配置无法表达该策略,就保持更严格的封锁,直到所有者批准另一种设计。

测试四种关键场景

使用无害请求,并在运行每个场景前写下预期结果。下面的矩阵是验收测试,不是建议:只要任何一个应被拒绝的场景成功,例外就比策略更宽。

CaseNetworkDestinationExpected
1. Approved serviceHome Wi-FiThe NASReachable and authenticated
2. Other local deviceHome Wi-FiA printerDenied by VPN policy
3. Same private prefixHotel or cafe Wi-Fi192.168.1.10Denied
4. TransitionVPN drop, Wi-Fi to cellularThe NASNo silent direct path

场景 3 抓住的是宽泛的私有子网绕过,场景 4 抓住的是只在连接时应用例外的客户端。在 VPN 断开时、以及把手机切到蜂窝网络后运行场景 4,然后重新连接,确认例外无需重启即恢复。本地路由 API 参考陈述了使步骤 2 不可省略的可绕过要求。

记录例外并定期复核

持续维护的记录应当写明服务、使其正当的环境、所有者与日期。本地描述的是路由关系,不是信任级别;手机接下来加入的网络,也不是当初批准例外的那个网络。

在系统更新、客户端更新或搬迁之后复核该记录。每次续期例外时都重跑场景 3,因为一个曾经把绕过限定到单一服务的配置文件,可能因一次默认值改动而被放宽。

相关文章