咖啡厅 Wi-Fi 的常见故障
公共网络的 DHCP 续租失败、AP 重启、信号抖动都会造成隧道中断。若客户端回落明文,你以为在"断网",实际却在继续以真实 IP 明文访问网页。
多数客户端在隧道异常时会自动把流量改回系统默认网络——此时未加密的数据会直接从本地网卡发出。快连的终止开关改变这一行为:它接管系统路由与 DNS,在异常状态下保持"通路关闭",直到加密隧道真正恢复。
用户通常只在"连接中"关注加密,却忽略了最危险的几秒钟——隧道失效到客户端察觉之间的时间差。
公共网络的 DHCP 续租失败、AP 重启、信号抖动都会造成隧道中断。若客户端回落明文,你以为在"断网",实际却在继续以真实 IP 明文访问网页。
从 Wi-Fi 切到蜂窝、从公司内网切到家庭网络时,旧隧道失效而客户端尚未察觉,操作系统可能直接把流量送到新网络。
它不负责防止断线,只负责在断线期间不给出路。用户得到的是明确的"连不上",而不是被静默改道的假象。
终止开关的状态机监听以下事件。任一事件发生即进入封锁状态,无需用户干预。
| 触发条件 | 判定依据 | 客户端响应 | 是否可恢复 |
|---|---|---|---|
| 用户主动断开或退出 | 本地控制指令 | 立即撤销路由与 DNS 权限 | 需手动连接 |
| 握手失败 | 握手超时或认证失败 | 保持封锁,按退避策略重试 | 自动 |
| 会话密钥失效 | 密钥过期或被服务端撤销 | 阻断并提示需重新连接 | 自动重建 |
| 网络切换 | 网卡状态变化、路由表变更 | 新网络下维持封锁直至隧道重建 | 自动 |
| 心跳超时 | 连续 N 次心跳未响应 | 判定链路失联并阻断 | 自动 |
| 休眠唤醒后未重建 | 唤醒后握手未完成 | 维持封锁,提示隧道不可用 | 自动 |
断线发生后,从"事件产生"到"路由彻底关闭"之间的时间,就是泄露窗口。快连把这一过程压缩到毫秒级。
| 阶段 | 处理动作 | 耗时 | 累计 |
|---|---|---|---|
| 事件捕获 | 状态机收到断线事件 | < 0.5 ms | 0.5 ms |
| 队列清理 | 清空待发送队列、释放缓冲明文 | 约 1 ms | 1.5 ms |
| 路由撤销 | 从系统路由表移除默认路由 | 约 2 ms | 3.5 ms |
| DNS 回收 | 撤销 DNS 解析权限、清除缓存 | 约 2 ms | 5.5 ms |
| 连接中断 | 向已建立连接发送 RST | 约 1.5 ms | 约 7 ms |
| 状态更新 | 刷新界面提示"已阻断流量" | 约 1 ms | 约 8 ms |
| 网络环境 | 切断时延均值 | 说明 |
|---|---|---|
| 局域网 / 有线 | 约 8 ms | 路由操作本机完成,耗时最低 |
| Wi-Fi 5 / 6 | 约 9 ms | 网卡驱动注销连接带来少量增量 |
| 蜂窝网络 | 约 14 ms | 调制解调器状态切换需要额外时间 |
| 低功耗设备 | 约 22 ms | 算力受限导致路由批处理耗时增加 |
从断网瞬间到恢复放行,客户端按固定顺序处理。任何一步失败都不会退化为明文直连。
"零残留"需要可验证的口径,而不是一句宣传语。下表列出断线瞬间需要清理的每一类数据及其判定方法。
| 数据类型 | 存放位置 | 终止开关处理 | 判定方法 |
|---|---|---|---|
| 待发送队列 | 客户端发送缓冲区 | 断线瞬间清空,不做明文重放 | 抓包应观察不到任何明文 TCP 数据 |
| 写缓冲 | 设备内存 | 随会话销毁释放,不做落盘 | 内存转储中不应出现明文残留 |
| DNS 缓存 | 系统与客户端解析缓存 | 同步清除,防止解析请求泄漏 | 断线后不应有 DNS 查询到达本地网关 |
| TLS 会话票据 | 客户端存储 | 删除,禁止下次会话复用 | 重连后不复用旧票据 |
| 域名访问记录 | 客户端缓存 | 清除,不保留访问痕迹 | 客户端本地不应存在访问历史文件 |
| 路由表条目 | 系统路由表 | 撤销默认路由,保持关闭态 | 断线期间所有出站请求均失败 |
| 场景 | 未开启终止开关 | 已开启终止开关 | 明文出网 |
|---|---|---|---|
| 手动断开 | 立即回落系统默认网络 | 路由保持关闭,需手动放行 | 0 字节 |
| Wi-Fi 切换蜂窝 | 数秒内走新网络明文直连 | 新网络下路由仍为关闭态 | 0 字节 |
| 握手超时 | 重试期间回落明文 | 仅在隧道建立后放行 | 0 字节 |
| 服务器维护重启 | 持续明文直连直到用户察觉 | 阻断并提示隧道不可用 | 0 字节 |
| 休眠唤醒 | 唤醒后短暂明文直连 | 隧道重建成功前不通路 | 0 字节 |
| 用户主动临时放行 | — | 明确提示已切换为无保护状态 | 风险由用户承担 |
终止开关需要操作系统层面的流量接管权限,因此在四个平台上的实现机制并不相同。
开启终止开关后务必做一次自测。能看到提示不等于真的阻断——需要用可验证的方式确认。
首次开启时系统会请求流量接管权限。Windows 需允许驱动加载,macOS 需在系统设置中允许网络扩展,Android 自动授予,iOS 需在系统设置中确认添加 VPN 配置。
进入「设置 → 安全」,将终止开关设置为"断开时阻断全部流量"。注意选择的是"阻断"模式而非"仅阻断隧道内流量"。
建立连接后,客户端状态栏应显示终止开关已激活。连接详情中可见当前策略。
保持连接状态下关闭 Wi-Fi,或临时断开网络 30 秒。客户端应立即提示"已阻断流量"。
断网期间用浏览器访问任意页面——应当完全打不开。如果还能打开,说明终止开关未真正生效,需检查权限是否授予。
恢复网络后,客户端应自动重建隧道并提示"已恢复加密连接",随后网页才能正常访问。恢复过程中不应出现任何一次明文成功访问。
终止开关是一把双刃剑:它把"意外泄露"换成了"意外断网"。了解代价才能正确使用。