Windows 无需额外软件的断网开关:配置文件还是路由?
防火墙配置文件跟随网络类别,路由跟随适配器。两种方法都对比一遍,再测试隧道消失、图标撒谎时的崩溃场景。
客户端在下载中途死掉,托盘图标随之消失。传输仍然走家庭连接继续。正是这个顺序说明了断网开关为何存在,而 Windows 不用第二个产品也能接近它。
值得了解的方法有两个。它们在不同环节失效,而且都不是完整答案。
方法一:只在一个配置文件里放行程序
Windows 防火墙把规则限定在 Domain、Private 和 Public 三个配置文件上。诀窍是给隧道适配器一个类别,给物理适配器另一个类别。然后写一条出站规则,在隧道配置文件上放行受保护的程序,在其他所有位置一律拦截。防火墙读的是类别,不是适配器名称。
先把 VPN 连接设为 Private,把物理网络设为 Public。再为该程序添加一条针对不想要的那些配置文件的阻止规则。之后用 Get-NetConnectionProfile 确认这次归属,因为规则跟随的正是这个归属。
Get-NetConnectionProfile | Select-Object Name, InterfaceAlias, NetworkCategory
New-NetFirewallRule -DisplayName 'Block browser off VPN' -Direction Outbound `
-Program 'C:\Program Files\Mozilla Firefox\firefox.exe' -Action Block -Profile Public
New-NetFirewallRule -DisplayName 'Allow browser on VPN' -Direction Outbound `
-Program 'C:\Program Files\Mozilla Firefox\firefox.exe' -Action Allow -Profile Private
弱点在结构上。配置文件规则跟随类别,所以当 Windows 重新归类酒店网络时,拦截可能失效。此时规则列表里不会出现任何变化。
方法二:删除物理默认路由
路由办法更粗暴,也远远更容易审计。记下物理网关,让 VPN 以更低的度量装入自己的默认路由,然后删除物理默认路由。此后没有别的东西能承载流量。
route print -4
route delete 0.0.0.0 mask 0.0.0.0 192.168.50.1
route print -4 | findstr /c:"0.0.0.0"
客户端一死,VPN 路由就随它的适配器一起消失。机器会掉线而不是泄漏,这正是断网开关该产生的结果。
有两个细节决定它能不能撑过一周。链路一抖动,DHCP 就把网关放回来。静态寻址的物理适配器能避开这个意外。VPN 服务器自身的地址也必须保持可达。没有这条主机路由,客户端在触发拦截的那次掉线之后永远无法重连。
方法三:不留网关,只留一条持久主机路由
第三个选项先从适配器设置里清掉网关。随后一条指向 VPN 端点的持久路由取而代之。这样在隧道起来之前,机器只能和服务器说话。
route -p add 198.51.100.44 mask 255.255.255.255 192.168.50.1 metric 1
route print -4 | findstr 198.51.100.44
恢复网关就恢复普通互联网,这让它成了一个干净的开关。它不依赖监视接口事件的脚本。它也不在乎网络如何被归类。
代价是隧道停摆期间的彻底隔离。更新会停,促成这次练习的那次下载也会停。对工作笔记本来说这往往是对的,对个人机器则是有意为之的决定。
为什么地球图标什么也证明不了
Windows 通过对 Microsoft 端点的探测来报告可达性。那个探测对你的隧道一无所知。已连接的隧道可能待在一个报告无互联网的地球后面,而死掉的隧道也可能显示连接良好。
杀掉客户端进程来测试,然后尝试用数字地址访问一个公网地址。名称查询可能从缓存得到回答,所以图标和 DNS 回答都不是证据。
真实掉线之后该记录什么
把测试当成一串步骤,而不是一次检查。杀掉进程而不是断开连接,然后在两套地址族上各试一个数字地址。之后恢复客户端,确认它仍能通过你保留的路由到达自己的服务器。
taskkill /IM openvpn-gui.exe /F
ping -4 198.51.100.44
ping -6 2606:4700:4700::1111
route print -4 | findstr /c:"0.0.0.0"
在休眠后、换 Wi-Fi 后、从有线切到无线后重复这串步骤。配置文件方法和 DHCP 行为正是在这些切换处双双失效。在办公桌上成立的规则,在酒店里未必成立。
把回退步骤写在每条规则和路由旁边。Microsoft 在Windows 防火墙规则参考里记录了出站规则的创建方法,那比只放截图的教程更可靠。