Mac 控制台:把日志缩小到一次 VPN 尝试
给一次连接打上时间戳,按所属进程筛选,然后读第一条错误而不是最后一条。只导出你真正查看过的那段摘录。
VPN 连不上,有人说去看控制台,你一打开就是每秒滚动几千行的窗口。其中大部分与隧道毫无关系。真正有用的本事,是在读任何内容之前先把视野收窄到一次尝试、一个进程。
对大多数 Mac VPN 排查来说,三步就够了。
做一次你能认出来的尝试
写下本地时间和时区,然后连接一次。记下客户端显示的错误原文,因为它通常比任何一行日志都更具体。这样你就有了几秒钟的时间窗和一个搜索词。那段时间窗之前的记录,都是你不需要的历史。
无法打上时间戳的尝试,就是无法筛选的尝试。
先按进程筛选,再按文本筛选
控制台的搜索框接受进程和消息谓词,命令行版本更容易复现。log show --last 5m --predicate 'process == "NEIKEv2Provider"' 会收窄到单个提供程序。确切的进程名随连接类型而变,所以在第一次未筛选的尝试中找到它。
先按文本筛选,会把所有碰巧记录了 VPN 一词的子系统都返回出来。
谓词也可以按子系统和类别筛选,这往往比进程名更精确。统一日志允许库声明子系统,Apple 的网络组件会用到其中好几个。先从进程开始,如果默认级别隐藏了你期待的事件,再加上 --info。调试级别的消息通常需要配置描述文件,只为了读一条日志并不值得安装。
读事件顺序,而不是最后一行
最后那条断开消息是文件里信息最少的一行。往前找第一个适配器错误、验证失败或配置被拒。它们会点出失败的阶段,而断开只是说明该阶段没有恢复。复制时请保留事件顺序,因为顺序本身就是诊断依据。
本地服务启动并不是一次成功的远程握手,日志也不会假装如此。
遮挡隐藏了什么,又为什么
统一日志默认会把某些值藏在私有标记之后,所以一个有用的字段看起来可能是空的。这是关于可以收集什么的设计选择,不是缺陷。不要为了多拿到些文字就去改宽泛的隐私设置。
如果需要的值被遮挡,请改到应用自身的日志或配置里去找。
导出一段已查看的摘录
只导出你查看过的那段时间窗。路径、用户名、内部主机名和端点地址会出现在普通日志行里,整机导出会把它们统统带到接收者那里。
未改动过的原始记录和摘录都要留着。如果之后有人对时间线提出异议,只有原始记录能定论。摘录是给工单的,原始记录是给争论的。
在工单里明确写出阶段:适配器、验证还是路由。这样证据仍然可解读,而不是变成谁都读不懂的一包东西。Apple 的控制台使用指南涵盖了这里提到的收集和搜索控件。