手机连上 VPN 后智能家居设备消失
本地发现、手机权限和云端控制使用不同的路径。先确定失败的操作,再重置集线器或更改网络。
台灯在家里通过它的应用正常工作,手机一连接 VPN 就停止响应,隧道断开后又恢复。台灯本身没有任何问题。手机现在把部分或全部流量走了另一条路径,而智能家居应用可能使用的发现方式这条路径并不承载。在重置任何东西之前,先确定失败的操作。
两条路径,而隧道只影响其中一条
智能家居指令可以走两条路。它可以经本地网络直接到达附近的设备,也可以经厂商的云服务、由设备自己的连接抵达。手机 VPN 改变的是手机的路径;它并不会把集线器、灯泡或音箱搬进隧道。设置、控制和通知可能各用不同的机制,这正是部分失败看起来不一致的原因。
因此第一个诊断对象不是 VPN 设置,而是失败的那个操作。本地设置和云端控制同时失败,指向的完全是别处。
单独测试本地发现
本地发现通常依赖链路本地组播,而经过路由的隧道不会将其扩展。检查名称能否解析,以及不打开应用时地址是否可达。
avahi-resolve -n lamp.local
ip route get 192.168.1.50
ping -c 3 192.168.1.50解析器调用显示 mDNS 是否有应答,路由查询显示哪个接口会把流量带到设备,ping 则显示本地路径到底通不通。若路由把设备的子网送进隧道,就解释了为什么上网正常而发现失败。名称能解析却无人应答,说明问题在接入点的隔离,而不是 VPN。请把示例中的名称和地址换成你自己网络里的值。
如果只有云端路径出问题
如果本地指令能用、远程指令不能用,手机的隧道可能干扰的是云会话而不是发现。新的出口地址可能触发账户验证、打断已固定的会话或通不过地区检查。在应用和网络其余部分不变的情况下对比一项受支持的操作,并保留证书校验。服务自带的恢复流程才是正确工具;为了登录通过而关闭安全检查则不是。
也要检查 DNS,因为应用可能把厂商的端点解析成只有从预期地区才会正确应答的主机名。
远程访问是第三种设计
从外面访问家里的设备,与让手机走 VPN 是两件独立的事。它需要私有网关、已定义的路由和很窄的访问规则,并不是订阅一个带互联网出口的 VPN 就能实现的。用大面积端口转发来弥补说不清的选路问题,会把从未为此设计的设备暴露出来。每次改动之后,逐项测试发现、本地控制和云端控制。如果你为应用加了本地网络例外,请确认手机其余流量仍走你预期的隧道。
记下哪条路径失败、哪项改动解决了它。智能家居的故障通常是选路或权限的边界,下一台设备也会遇到同一个边界。