那条提示是一张许可单,不是诊断结论。当 macOS 说某个配置会过滤或监控流量时,它是在告诉你:你已批准的某个组件能够看到它覆盖的路径,并询问你是否接受。对话框无法告诉你谁在运行该组件、它记录了什么,也无法告诉你它是否解密任何内容。这些答案存在于描述文件、扩展列表和机器上的证书里,所以应当从那里查起,而不是反复重读那句话。

把提示当成一个范围问题来读

每条激活提示都指向两样没有明确点名的事物:处理流量的扩展,以及把流量导入该扩展的配置。在当前的 macOS 上,这些组件是 NetworkExtension 系统扩展,安装或激活其中之一需要在“系统设置”中批准。措辞之所以宽泛,是因为操作系统无法知道批准者是 IT 部门、订阅制 VPN,还是随其他软件捆绑而来的过滤代理。

这就是同一段文字能覆盖三种不同安排的原因。受管理的 Mac 从设备管理收到描述文件,个人 Mac 从你安装的应用获得配置,而安全产品可能安装一个从不自称 VPN 的过滤器。这些标签都不能说明意图。它们只告诉你该先向哪一方提问。

两条命令可以迅速区分这些情况。第一条列出已安装的系统扩展以及各自是否处于活动状态,第二条列出配置描述文件及其载荷和签名机构。

systemextensionsctl list
profiles show -type configuration

区分隧道与过滤器

数据包隧道给 Mac 一条路由,并把路由表送入其中的流量统统承载起来。内容过滤器工作在流层面,能看到每条连接,并可以放行、阻断或重定向它。一款产品可以同时提供两者,而提示不会因此改变。这一区别很重要,因为你能收集的证据和你将看到的故障并不相同。

看扩展类别,而不是营销名称。隧道通常表现为一个 VPN 配置和一个网络扩展,而过滤器可能根本没有 VPN 服务。如果产品提供两种模式,由活动配置选定其一,切换模式会改变覆盖范围,却不改变供应商。

VPN 服务列表是查看隧道是否存在的最快方式。不是 VPN 的过滤器不会出现在其中,这本身就是有用的信息。

scutil --nc list

已连接标记并不证明覆盖范围。应用可以被按应用规则排除,而且发往本地网络的流量常常按设计绕过隧道。当某个应用表现得像是没被监视时,先怀疑路由或排除项,再假定监视器坏了。

运营者不读载荷也能知道什么

元数据不是安慰奖。地址、端口、DNS 名称、连接时间、字节数以及通过认证的身份,对路径上的组件都是可见的。反复在同一时段访问同一主机就会形成规律,而规律能说明的东西可能比单个页面更多。

这就是对那个常见问题的诚实回答。即使内容始终封存,运营者也能看到何时、何地。

载荷可见性需要第二次更响亮的变更。正确验证的 HTTPS 会话对隧道或流过滤器保持不透明,本地文件以及从不进入覆盖路径的流量也是如此。要读取页面正文,需要一个 Mac 已经信任的证书颁发机构,也就是一张凭自身批准而安装的拦截证书。这一步把边界从元数据移到内容,值得单独审视。

覆盖范围也止于设备。一台笔记本上的隧道不覆盖手机、平板,也不覆盖同一 Wi-Fi 上他人的机器,企业客户端无法盘点咖啡馆里的其他顾客。设备管理软件能收集的比隧道暴露的更多,但那是另一套控制,属于不同的策略负责人。

ArtifactVisible on the covered pathExtra step required
Destination address and portYesNone
DNS names and query timingUsuallyNone
HTTPS request and response bodiesNoTrusted root certificate
Files already stored on the MacNoEndpoint agent
Other devices on the same Wi-FiNoSeparate enrollment

在惊慌之前先检查证书存储

受信任的根证书,是“监视流量”与“读取流量”之间的差别。检查系统钥匙串里你不认识的机构,留意那些在提示出现前后冒出来的条目。受管理的 Mac 可能合法地带着雇主推送的检查根证书,那么这件事该由管理员来谈。个人 Mac 若意外获得了一张,那就是值得处理的发现。记下通用名称、签发者和添加日期,以便日后回答这个问题。

把那份列表与设备管理报告的内容作比较。如果描述文件列表和证书列表不一致,决定 Mac 会接受什么的是证书列表。

两条命令覆盖了检查的大部分内容。第一条打印配置描述文件;第二条打印管理员管理的系统钥匙串中的证书,而新增的根证书通常就落在那里。

profiles show -type configuration
security find-certificate -a -p /Library/Keychains/System.keychain

Apple 自带的根证书存放在另一个钥匙串里,不是这里的重点。在个人 Mac 上,第二条命令返回空结果很常见。若结果非空,在把它打发掉之前值得逐条主体读一遍。

做决定,然后写清理由

当你能够说出运营者、组件和原因,并且该请求与你或你所在组织做过的选择相符时,批准是合理的。当提示毫无上下文地出现,尤其是在网络变更或一次无关安装之后,调查才是正确的回应。先断开连接,记录描述文件标识符和扩展,再做决定。移除是第三条路,它恢复先前的路由,而不触及账户。

把同意与移除当作在不同时间做出的两个独立决定。今天批准一个过滤器,并不等于承诺一直保留它;移除描述文件也不会抹去服务器端关于它在活动期间观察到了什么的记录。

如果提示是在你已在运行的软件更新之后出现的,先读该版本的发行说明再点。供应商确实会在版本之间改变扩展架构,新的过滤器可能随例行更新一起到来。如果提示是在加入新网络之后出现的,把时机当作证据,检查变更了什么。

保留一份简短记录:描述文件名、扩展标识符、运营者、若添加过则记下证书指纹,以及日期。下一个人可以从这条时间线出发,而不必从对话框的措辞出发。

相关文章