你去找 Mac 的 VPN 日志,找到一条指向 PPP 文件的说明,而这台机器上并没有那个文件,于是断定什么都没有记录。这个结论通常是错的。记录存在于统一日志中,文件缺失只说明这套部署不是写该文件的那一类,并不意味着尝试没有被记录。把这两件事混为一谈,会让人白白花一小时去证明一个否定命题。

系统原生 VPN、Tunnelblick 以及厂商自带客户端,日志归属可能各不相同。如果客户端提供受支持的日志视图,就先从那里开始;当你需要尝试前后的系统事件或提供商事件时,再动用 Console。

先确定真正失败的是哪个客户端

动手之前,先记下 macOS 版本、客户端版本、连接名称和协议。这四个事实决定了你要搜索的进程名,也是支持工程师最先会问你的内容。

如果连接是从厂商客户端的菜单栏项发起的,值得关注的消息可能来自该客户端,而不是系统的 VPN 提供商。如果是从系统自带的 VPN 面板发起的,那么要找的就是提供商进程。在这两者之间靠猜,会浪费一次尝试,所以先确认连接属于哪个应用。

在尝试之前开启实时视图

打开 Console,在 Devices 下选择这台 Mac,而不是已连接的手机,也不是旧的报告包。点击工具栏上的 Start 让数据流变为实时,然后记下时间及其时区。如果视图要求管理员权限,就使用管理员权限;在受管理的 Mac 上,应向所有者申请该权限,而不是绕开它。

现在做一次正常的连接尝试,并记录看到的失败。只做一次很重要:再重试一次会把新事件追加到同一条流里,而在同一个窗口里混入两次尝试,正是人们最后去查错握手的原因。

这一切都不保证痕迹已经存在。Console 是一套采集流程,你是在为干净的抓取创造条件,而不是取回某个事先录好的东西。

按进程收窄,而不是按传闻收窄

先放到足够宽以识别归属,再用你抓取结果里真正出现的进程和消息属性来细化。旧指南里引用的提供商标签,只是针对某个 macOS 版本和某种协议的线索,不是永久有效的过滤器。过早按它过滤,可能得到一个空窗口,看起来像日志故障,其实只是搜索没命中。要加一个你能撤掉的条件,而不是加一个把证据撤掉的条件。

Console 允许组合多个条件,它们会一起收窄范围。如果结果消失,就删掉或放宽限制最强的那个条件,而不是再加一个。只显示最后那条错误是常见的失误,因为解释该错误的事件通常出现在前面几行.

保留足够的上下文来回答一个问题

展开相关消息并阅读其细节,然后把第一个有意义的失败连同它周围的连接事件一起保留下来。单独一行说连接已停止,对读者说明不了任何原因。

要准确说明记录证明了哪个阶段:本地提供商或服务从未启动、与对方的往返交换、认证阶段被拒,还是之后的路由或域名解析投诉。进程启动的消息并不等于握手完成,成功连接之后出现的路由警告描述的故障也与连接失败不同。

如果客户端自己保留日志,就在那里比对同一次尝试,而不是把当前的 Console 事件与只追加文件里的另一次重试混在一起。旧的 PPP 文件说明只适用于仍然会生成该文件的部署。

只分享最小可用的摘录

选中相关消息,用受支持的 Share 操作发给预期接收者。附上版本和时间的说明,发送前再检查内部主机名、账户标识、地址以及无关事件。整包诊断归档容易附上,事后却很难说明理由。

要做好准备:在当前隐私或日志配置下,有些事件根本不会出现。这种情况下,就按厂商或管理员规定的诊断流程去做,不要为了收集更多历史而关闭全系统防护。真正值得交付的内容很小:哪个客户端、哪个协议、尝试发生在何时、第一条相关事件,以及随后发生了什么。

相关文章