菜单提供“断开”,窗口有“关闭”按钮,任务管理器提供“结束任务”。三者看起来都能停掉 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

若规则随进程一起消失,说明规则归客户端所有。若进程已消失而规则仍在,说明另有组件在执行策略,找出它要排在任何改动之前。同一时刻也要记下服务状态,因为停掉的界面并不能说明系统服务的情况。

手动断开不等于崩溃

断开走的是预定的关闭路径,崩溃则会跳过它。因此两者的结果不能互换,用菜单项做的测试无法支撑客户端崩溃时如何的结论。

同理,崩溃也不能说明经过批准的临时暂停。在测试计划和后续记录里,把这三个问题分开对待。关闭路径还解释了为什么干净退出能清除崩溃留下的规则。同一个按钮,不同的代码,不同的证据。

选择你真正需要的不可用状态

如果只要隧道断开就必须保持流量封锁,那就在你关心的那个具体操作期间,用发往已知目标的无害流量去验证这一要求。把应用例外和本地网络例外都算进去,因为全设备执行往往比名字暗示的更窄。然后确认重启后的表现,因为陈旧状态通常在那时出现。

如果目标是普通的直连,就用文档中写明的那项操作,而不是结束进程或关掉整个防火墙。被中断的退出留下的旧规则,与有意封锁是两类问题,需要不同的恢复方式。

写清究竟是哪个部分停了:隧道、可见的应用,还是执行策略的那一层。这一句话就能避免这些操作造成的大部分混乱。

相关文章