服务器时间不同步(NTP)导致认证失败的修复
域成员服务器或与域控时间偏差超过 5 分钟,导致 Kerberos 认证失败,用户登录报『时间差太大』,VPN、Web 应用单点登录异常,甚至备份与日志时间错乱。Windows 域要求成员时间与域控偏差在 5 分钟内,域控之间更严格。时间不同步还会让证书校验、日志关联与审计全部失准,所以时间服务应被当作核心基础设施而非可选项。
原理与判断
Kerberos 协议对时间极度敏感,默认允许的最大偏差是 5 分钟,超出后票据被视为重放攻击而拒绝。域环境里时间由 PDC 角色域控作为权威,其余域控与成员逐级跟随。只要这一条同步链任意节点断裂,就会引发大面积的认证失败,所以时间服务应被视为基础设施而非可选项。排查时先确认是『所有机器都偏』还是『仅个别偏』,可快速区分是 PDC 源问题还是单机 w32time 配置问题。虚拟化和容器环境尤其容易踩坑,宿主与客体各自校时会互相拉扯,统一由域层次负责才是正解。对于跨时区部署,先确保各站点时区设置正确,再谈同步,否则看到的时间差可能只是配置错觉。
一、诊断时间偏差
- 对比各服务器时间:w32tm /query /status 查看源(Source)与上次同步偏移(LastOffset),偏移过大即异常。
- 在 PDC 域控执行 w32tm /monitor 检查与权威时间源的偏移量与 Stratum 层级,确认根源是否准确。
- 查看事件 37(成功同步)、47(无法联系源)、52(时钟严重偏移)确认时间服务状态与失败原因。
- 用 w32tm /tz 确认时区与夏令时配置一致,时区错误常被误判为时间不同步,需先排除。
二、域控配置权威源
- 在持有 PDC 模拟器角色的域控上设置外部 NTP:w32tm /config /manualpeerlist:time.windows.com /syncfromflags:manual /reliable:yes /update。
- 重启服务:net stop w32time 然后 net start w32time,再 w32tm /resync /force 强制同步并校验偏移是否归零。
- 其余域控设为从域层次同步:w32tm /config /syncfromflags:domhier /update,并确认其源指向 PDC 而非公网。
- 用 w32tm /query /configuration 核对各域控的 Type 与 NtpServer 设置正确无误,避免指向错误源。
三、成员服务器与防火墙
- 成员服务器执行 w32tm /config /syncfromflags:domhier /update 跟随域层次,避免各自指向公网造成漂移与负载。
- 确认 UDP 123 端口在域控与上游、以及域控与成员之间放行,否则无法同步且无明显报错。
- 虚拟机需关闭宿主时间同步(Integration Services 或 VMware Tools 中的时间同步),避免与 w32time 互相打架。
- 对隔离网络可部署内网 NTP 服务器,让 PDC 指向它,统一全网信条并降低对外依赖。
四、验证与监控
- 统一部署后定期运行 w32tm /monitor 巡检,偏差超阈值即告警,提前干预。
- 对关键系统(域控、数据库、PKI)设置时间偏移监控,防止证书因时间错乱而失效。
技术总结:时间不同步直接破坏 Kerberos。PDC 角色域控指向可靠外部 NTP 并标记 reliable,其余跟随域层次,放行 UDP 123,并关闭虚拟机宿主时间同步,配合定期监控即可稳定维持时间一致。时间无小事,一次偏差足以让全林认证瘫痪。