退出还是断开:两种截然不同的 VPN 结果
退出、断开、暂停和关闭窗口可能留下不同的清理与封锁状态。测试隐私行为前,先读客户端自己的定义。
菜单提供“断开”,窗口有“关闭”按钮,任务管理器提供“结束任务”。三者看起来都能停掉 VPN,却可能让机器留在不同状态。一个可能只停掉隧道而保留封锁,另一个可能作为正常退出的一部分清理干净,第三个可能只是隐藏界面,后台组件仍在运行。把它们当成同义词,正是隐私测试得出错误结论的常见原因。
客户端文档是弄清其中差别的唯一可靠依据。
四种操作,可能对应四种行为
断开通常会拆除隧道,但客户端仍驻留内存,这意味着服务、托盘组件或终止开关规则都能在这次点击后存活。随后许多客户端继续封锁流量,因为策略规定只要客户端在场,设备就不得回退到直连。这种表现看似网络故障,实为有意的保护。
退出本意是结束整个应用,行为规范的客户端会在退出时清除自己的规则。有些设计则改为保留一个独立助手来继续执行策略,这是选择而非缺陷。关闭窗口是界面操作,对隧道没有既定影响;而暂停(如果提供)是第四种行为,有自己的规则。
服务端故障则是完全不同的第五条路径,也是用户实际最常遇到的一种。
在每个操作前后读取状态
操作前记录进程列表、服务状态和防火墙规则,操作后立刻再记一遍。对比两份记录就能看出这项操作究竟做了什么,而不必依赖界面的自述。
systemctl status wg-quick@wg0 --no-pager pgrep -a -f 'openvpn|wireguard|vpnagent' ip link show | grep -E 'tun|wg' nft list ruleset | grep -E 'drop|reject' | head -20 scutil --nc list
若规则随进程一起消失,说明规则归客户端所有。若进程已消失而规则仍在,说明另有组件在执行策略,找出它要排在任何改动之前。同一时刻也要记下服务状态,因为停掉的界面并不能说明系统服务的情况。
手动断开不等于崩溃
断开走的是预定的关闭路径,崩溃则会跳过它。因此两者的结果不能互换,用菜单项做的测试无法支撑客户端崩溃时如何的结论。
同理,崩溃也不能说明经过批准的临时暂停。在测试计划和后续记录里,把这三个问题分开对待。关闭路径还解释了为什么干净退出能清除崩溃留下的规则。同一个按钮,不同的代码,不同的证据。
选择你真正需要的不可用状态
如果只要隧道断开就必须保持流量封锁,那就在你关心的那个具体操作期间,用发往已知目标的无害流量去验证这一要求。把应用例外和本地网络例外都算进去,因为全设备执行往往比名字暗示的更窄。然后确认重启后的表现,因为陈旧状态通常在那时出现。
如果目标是普通的直连,就用文档中写明的那项操作,而不是结束进程或关掉整个防火墙。被中断的退出留下的旧规则,与有意封锁是两类问题,需要不同的恢复方式。
写清究竟是哪个部分停了:隧道、可见的应用,还是执行策略的那一层。这一句话就能避免这些操作造成的大部分混乱。