断线保护是什么:隧道断开的瞬间,谁来堵住出口
断线保护,英文常写作 Kill Switch,指的是当 VPN 隧道意外中断时,自动阻止设备继续通过本地网络发送数据的机制。它解决的是一个很具体的问题:隧道断开后,系统通常会把路由回落到物理网卡,正在运行的应用会立刻改用本地网络继续发包。几秒钟之内,你的真实出口地址就可能暴露给正在连接的网站。这篇文章讲它的原理、两种实现方式、可能的副作用,以及如何自己验证它有没有生效。
为什么需要它:断线并不总是“提示你一下”
网络切换、信号变弱、线路节点重启、客户端被系统回收后台进程,都可能让隧道在没有任何明显提示的情况下断开。应用并不知道这件事,它们只会发现原来的路径不通,系统又给出了另一条可用路径,于是自动改走。对于下载、远程桌面、持续同步的软件,这个切换几乎是无感的,用户往往要过一段时间才发现。
哪些场景最值得开启
需要长时间保持稳定出口的场景:大文件下载与上传、远程办公、在公共 Wi-Fi 上登录账号、需要固定出口地区才能正常使用的应用。反过来,偶尔查个网页的场景,断线保护的收益有限,开启后遇到断线反而会因为完全断网而增加困惑。
两种实现方式:杀进程 与 阻断路由
不同客户端实现断线保护的方式差别很大,效果也不一样。
应用层:检测到断线后关闭指定程序
这种方式由客户端监控隧道状态,一旦发现断开,就强制关闭用户指定的应用(比如下载工具、浏览器)。实现简单,但它只能保护列表里的程序,且从检测到断线到关闭程序之间存在时间差,这段时间里依然可能发出请求。
系统层:用包过滤或路由规则阻断非隧道出口
更可靠的做法是在系统层写规则:只允许流量经过虚拟网卡出去,物理网卡上除了建立隧道所需的连接之外一律拦截。Windows 上通常借助系统自带的网络过滤平台,macOS 和 Linux 上借助包过滤规则。这类实现覆盖所有程序,而且没有时间差,因为规则一直存在,不依赖事后检测。
| 实现方式 | 原理 | 优点 | 局限 |
|---|---|---|---|
| 应用层 | 检测断线后关闭指定进程 | 实现简单,对系统改动小 | 只保护名单内的程序,存在检测延迟 |
| 系统层 | 包过滤或路由规则阻断非隧道出口 | 覆盖全部程序,没有时间差 | 需要管理员授权,规则残留时会影响正常上网 |
| 系统自带(Android) | 始终开启的 VPN,并阻止没有 VPN 的连接 | 由系统保证,不依赖客户端存活 | 断线时整机断网,需要手动处理 |
各平台在哪里设置
桌面端的断线保护一般在客户端设置里,名称可能是“断线保护”“网络锁”或 Kill Switch,具体入口以你使用的客户端为准。Android 提供了系统级选项:进入设置中的网络与互联网,找到 VPN,点开对应 VPN 旁的设置图标,可以看到“始终开启的 VPN”以及“没有 VPN 时阻止连接”两项,菜单文字因手机品牌和系统版本略有差异。iOS 对第三方应用开放的断线保护能力与系统版本和客户端的实现方式有关,应以客户端设置页的说明为准,不要假设它和桌面端一样严格。
自己动手验证:别只相信开关
开关打开了,不代表它真的在起作用。可以用下面的步骤验证:
- 连接 VPN,确认状态稳定,打开一个持续运行的操作,比如在终端里持续 ping 一个常用域名,或者开始一个下载。
- 手动让隧道中断:在不退出客户端的前提下,关闭 Wi-Fi 再重新开启,或者在任务管理器里结束客户端的后台进程。
- 观察那个持续运行的操作:开启了系统层断线保护时,ping 应该立刻超时、下载暂停;如果仍然在持续返回结果,说明流量已经回落到本地直连。
- 重新连接隧道,确认网络恢复;如果恢复后仍然无法上网,需要在客户端里关闭断线保护,或者重启客户端清理遗留规则。
开启后的副作用要提前知道
断线保护生效时,整机会暂时断网,包括局域网内的打印机、投屏设备。多数客户端提供“允许局域网访问”的选项,可以按需勾选。另外,客户端异常退出时,拦截规则有可能被遗留,导致没有 VPN 也无法上网,这时需要重新打开客户端,或者在设置里手动关闭保护功能。
我的做法是:日常浏览不开,需要长时间下载或者在公共网络办公时再开启。如果想直接体验一款有断线保护选项的客户端,可以看看 TonBoVPN,装好之后同样按上面的四步自己验证,结论以你的设备和网络环境为准。
小结:开关之外,更要验证它有没有生效
断线保护的价值,在于把“隧道断开”从一件悄悄发生的事,变成一个明确的、需要你处理的事件。系统层实现比应用层更稳,Android 的系统选项又比第三方实现更接近底层。无论用哪一种,都花五分钟按步骤验证一次,比相信开关本身更可靠。
