用 VPN 的 Mac 时区:显示设置还是时钟?
时区改变的是瞬间的显示方式,从不改变瞬间本身。让时钟同步保持开启,有意识地选择时区,并在每一层所在之处分别验证。
这段讨论把显示和时钟混为一谈,而这种混淆会真正弄坏设备。一个设置决定瞬间如何显示,另一个设置决定瞬间是什么。别国的 VPN 出口本身不会改变这两者,尽管它会改变网站对你得出的结论。把这三件事分开,就是全部答案。
瞬间和显示是两回事
Mac 把时间存为一个瞬间,而每个时区只是呈现它的规则。选择柏林、东京还是丹佛,改变的是屏幕上的标签和日历运算所用的偏移量。它不会让机器相信过去的时间变少或变多。时区是加在那个数值上的镜头,而不是数值本身。正是这个区别,让手动时区控制是安全的,而手动时钟控制不是。
证书的有效期窗口和基于时间的身份验证,都是在拿真实瞬间与真实期限比较。时钟被移动几个小时,就可能把有效证书推出其窗口,或让身份验证票据看起来已过期。于是症状出现在看似与时间无关的地方:某个网站的浏览器警告、另一个网站的登录失败、某个构建工具抱怨签名。没人怀疑时钟,因为设置时显示的小时看起来是有意为之。
两个自动开关,两项职责
“日期与时间”面板提供从网络来源自动同步时间,另外还提供基于位置的自动时区选择。Apple 的日期与时间指南 把两者描述为恰好相邻的两个独立控件。关掉一个不影响另一个。所以设备可以保持准确时间却显示错误时区,也可以显示正确时区却在漂移。
自动时区选择依赖系统的定位服务,而定位服务依赖权限以及 Mac 能收集到的信号。VPN 隧道通常不会给该服务提供新的国家,所以连接时区可能根本不动;如果它移动了,先找定位来源,再怪隧道。关闭时区控制会停止移动,同时不碰维持证书有效的时钟源。读取当前状态需要两条命令,它们能消除“哪个控件在生效”的疑问:
sudo systemsetup -gettimezone
sudo systemsetup -getusingnetworktime固定时区是选择,不是改时钟
如果希望出行期间显示停留在一个时区,就手动选择那个时区,并让同步保持原样。这是受支持的配置,配有受支持的控件,而且重启后仍然有效。它还能让与你安排日程的人获得可预测的日历运算。有意固定时区,和让时钟对时间撒谎是两回事。
在受管理的 Mac 上,替换时钟源之前先弄清是否有策略在管理它,因为组织可能出于某种原因要求特定服务器,而为了赢一场关于显示小时的争论去改限制是不划算的。如果某条策略确实不适合你的情况,修正该由配置文件的所有者来做。然后确认显示的时区,以及一个你知道其预定本地时间的日历事件,因为日历可能带有自己的时区,从而覆盖系统显示。
VPN 出口改变什么,不改变什么
网站看到属于出口的地址,并可能据此推断国家。这个推断针对的是请求,而不是你 Mac 的时钟。有些服务会显示与出口相符的价格、库存或语言,而你的菜单栏仍显示家里的时间。两种观察可以同时成立,这正是让不一致看起来像缺陷的原因。
浏览器地理位置又是第三件事,因为它可能使用权限和定位提供方,而不是地址查询。账户设置再加第四件,因为已登录的配置文件常常在不看网络的情况下决定货币和语言。当网站与你的预期不符时,先记下它可能在使用这四项输入中的哪一项,再改设置。为了让 Mac 的时区去匹配网站而修改它,是唯一不可能奏效的修法,因为网站从来没读过它。这四项输入没有一项是系统的显示时区。
结果实际出现在哪里
在每一层所在之处分别验证:日期与时间面板里的系统时区、对照可信来源的瞬间,以及网站自身的视角。三项检查、三个不同界面,单凭一次观察无法确认全部三项。把选择写下来,否则下一个人会重新打开同一个问题。
如果自动时区选择反复回退你的手动选择,就去看控件而不是时钟,并在看客户端之前先看策略。如果时间本身在漂移,那是同步问题,与隧道毫无关系。把两种故障分开只需一分钟,并能避免那种经典结局:一台小时看起来正确的笔记本、一张无效证书,以及一个被同时归咎的 VPN。
把两个答案都写进变更记录:你选择的时区,以及你没有动过的时钟源。这样就不必有人猜你指的是哪一个。