我有一个安装了 Samba 4 作为 AD DC 的 VM。它也是 NTP 服务器,服务器上的时间是正确的。使用 进行了测试ntpdate -q ntp-server
,它给出了正确的时间和日期:
ntpdate -q dc01
-> server 10.0.0.25, stratum 2, offset -0.000003, delay 0.02570
-> 5 Apr 00:29:02 ntpdate[19581]: adjust time server 10.0.0.25 offset -0.000003 sec
今天,我在冬令时转为夏令时后首次启动 Windows 10 客户端,现在仍处于冬令时。我尝试了以下操作,但无济于事:
w32tm /config /syncfromflags:domhier /update
-> The command completed successfully.
net stop w32time
-> The Windows Time service is stopping.
The Windows Time service was stopped successfully.
net start w32time
-> The Windows Time service is starting.
-> The Windows Time service was started successfully.
w32tm /resync
-> Sending resync command to local computer
-> The computer did not resync because no time data was available.
我假设“向本地计算机发送重新同步命令”意味着告诉 NTP 客户端连接到 NTP 服务器(AD DC VM)以获取时间更正。
显然什么也没有发生。
作为额外的提示并且可能很有价值:“日期和时间”配置对话框中的“Internet 时间”选项卡未显示,对于域客户端来说这似乎是正常的。
谢谢您的任何意见!
答案1
最后,一些随机的 w32time 相关帖子让我找到了解决方案。首先,日志记录有助于:
w32tm /debug /enable /file:c:\temp\ntpDebug.log /size:102400 /entries:0-300
w32tm /resync
-> Sending resync command to local computer
-> The computer did not resync because no time data was available.
在日志文件中,AD DC 已列为时间服务器,但它仍然声称没有时间服务器可以询问。
错误消息“Tx 时间戳未返回,并且可能不受当前网络接口支持”让我关注微软支持文章。
w32tm /config /manualpeerlist:"dc01,0x8 dc02,0x8" /syncfromflags:MANUAL
net stop w32time
net start w32time
w32tm /resync
-> Sending resync command to local computer
The command completed successfully.
显然 Samba 4 不喜欢 Windows 10 对称主动模式请求。因此,使用 0x8 将时间客户端切换到客户端模式。
不要忘记关闭日志记录:
w32tm /debug /disable
开始了 :)
答案2
我们按照以下方法解决了这个问题Samba Wiki / 在 DC 上配置时间同步。在我们的案例中(在 Debian/buster 上运行的 Samba AD)ntpsigndsocket
在文件中丢失并且不正确ntp.conf
。
ntp.conf
应该包含这一行:
ntpsigndsocket /var/lib/ntp_signd/
可以通过以下方式确定套接字路径:
% sudo lsof -Un | grep signd
samba 525 root 23u unix 0x0000000029f51b41 0t0 15061 /var/lib/samba/ntp_signd/socket type=STREAM
我们的 Windows 域(Windows Server 2019)已经拒绝与域控制器同步其时间:
时间提供程序 NtpClient:尝试联系域控制器 %1 8 次后,未收到有效响应。此域控制器将不再作为时间源,NtpClient 将尝试发现要从中同步的新域控制器。错误为:%2
我们通过停止时间提供程序服务、重新注册并重新启动服务来解决这个问题:
net stop w32time
w32tm /unregister
w32tm /register
net start w32time
(Aw32tm /resync
可能就足够了。)
然后应显示域控制器w32tm /query /source
。
答案3
如果你遵循samba 设置说明你需要添加同步NTP协议进入配置并设置 ntp_signd 文件夹的权限,则您无需手动更改使用默认设置配置的 Windows 客户端。问题不太可能出在 Windows 上,最有可能是 ntp.conf 配置错误。请记住在进行更改后重新启动 ntp 服务。
我发现本指南有用
另一个答案中 ntp.conf 中提供给 ntp_signd 的路径对我来说也不正确(ubuntu),应该是ntpsigndsocket /var/lib/samba/ntp_signd
注意:当你对 w32tm 进行更改时,你需要使用 /update 参数才能使更改生效:
w32tm /config /update
w32tm /resync
您应该像这样设置您的客户端(这是默认配置):
w32tm /config /syncfromflags:domhier /update
请注意,如事件日志中所示,在尝试 8 次(共 15 分钟)后,窗口将超时。时间提供程序 NtpClient:尝试联系域控制器 DC1.example.com 8 次后,未收到有效响应。此域控制器将作为时间源被丢弃,NtpClient 将尝试发现要从中同步的新域控制器。错误为:对等方无法访问。
您可以使用以下命令进行调试:
w32tm /debug /enable /file:C:\temp\w32time.log /entries:0-116 /size:10000000
并记得使用以下命令禁用它:
w32tm /debug /disable
检查 ntp 服务是否正在监听/运行
sudo lsof -i:123
,您可以在 ntp.conf 中配置日志记录
logfile /var/log/ntp