AD时间同步原理分析

简介:
对于加入域环境的客户端是与在父域中的权威服务器进行时间同步的。默认的同步时间的方法就是使用域层次,客户端会使用其所连接域中的域控来同步时间,而域控会反过来从整个林中的权威时间源来同步时间。如果在森林的根域中没有指定某个域控为权威时间源,那么拥有 PDC 角色域控会担当这个权威时间服务器。这台 PDC 会使用自己内部的时钟来为整个林的域控提供时间。
1.  如何保证所有域控制器和层次结构的 PDC 同步时间?如何保证所有成员服务器(客户端)与验证服务器同步时间。
由于 PDC 是林中默认的时间源,因此我们必须确保这个 DC 是永远在线的。如果我们发现 PDC 负载过高的话,那么就应该使用林中另外一台域控做为权威的时间源。
在森林根中的权威时间源获取时间的方式有两种。第一种就是从内网中所安装的硬件时钟设备上去获取时间。第二种就是从外部的时间服务器去获取时间。需要注意的是,如果我们没有配置权威时间服务器是从内部获取时间还是从外部获取时间,那么 PDC 就会使用其自己的内部时钟,也就是整个森林可靠的时间源了。
在与外部时间源进行同步时,我们是使用 NTP 协议来进行同步的,但 NTP  协议使用的是 UDP 123 这个端口,因此我们一定要确保这个端口的入站和出站流量,以确保 windows 时间服务的正常工作。
也就是说,我们首先要保证默认情况下这个 PDC 这个时间源要是正确的,那么客户端与服务端就会自动进行同步了。否则就无法靠域的层级结构来同步整个域的时间了。
2.  所有与服务器、 PDC 服务器时间各不相同。该如何检查?
如果想使用默认的 PDC 来作为权威的时间源,建议是这样的
1)  首先确保 PDC 时间源才准确性,通常建议 PDC 使用外部的权威时间源(这样可以减少时间偏差和我们管理工作量)。
我们先通过下面的命令来检查, PDC 现在的所使用时间源的状态:
w32tm /query /configuration
2)  如果我们想要指定外部权威时间服务器作为源,我们可以使用,下面这个命令:
w32tm /config [/computer: 目标计算机 ] [/update] [/manualpeerlist:peers] [/syncfromflags:flag] [/reliable: (yes|No)]
例如:
 w32tm /config /update /manualperrlist:time.windows.com,time.nist.gov,time-nw.nist.lov /syncfromflags:manual /reliable:Yes
使用这个命令我们就把 PDC 设置成了使用 time.windows.com, time.nist.gov, time-nw.nist.lov 这三个作为时间源,并且是森林中的权威时间服务器。我们可以通过上面的方法,来对我们觉得有必要的所有服务进行配置。
3)  如果客户端中的 windows 时间服务有问题的话,我们可以通过下面的方法来重置这个服务(恢复到默认状态)。
1 、打开命令行
2 、键入 net stop w32time 来停止这服务
3 、键入 w32tm /unregister  来删除现在的 w32 时间服务配置
4 、键入 w32tm /register  来导入默认的时间配置
5 、键入  net start w32time  来开启这个服务。
4)  如果上面所述的方法还是不能解决我们的问题,我可以使用下面的方法来启用客户端上的 windows 时间服务日志文件来进行排错。
1. 启动注册表编辑器。
2. 找到并单击下面的注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
3.   编辑  菜单上单击  新值,然后添加以下注册表值:
·   值名称:  FileLogSize
数据类型:  DWORD
值数据:  10000000
·   值名称:  FileLogName
数据类型:  字符串
值数据:  C:\Windows\Temp\w32time.log
·   值名称:  FileLogEntries
数据类型:  字符串
值:  300
4.  在有问题的客户端上运行这个命令 w32tm /config /update
5.  收集这个日志文件,与 PDC    任意两台有问题 DC 的时间服务配置信息( w32tm /query /configuration
还有一些相关的问题,请参考如下问答:
1 、域控制器和 PDC 之间同步时间这个是理论上。但是它们之间同步是否有一个确定的标准或机制?如果没有他们之间时间同步我是否可以通过一些日志或文件证明他们的同步。
首先, Windows 时间服务是设计用来同步网络上计算机的时钟的。网络时钟同步的过程,也叫做时间收敛,这个过程发生于当每个计算机通过网络访问来自一个更可靠时间服务器时。时间收敛这个过程,涉及一个权威服务器把当前的时间以 NTP 包的形式发送给每个客户端计算机。而在这个包中所提供的信息表示了是否需要调整客户端计算机当前的时钟时间,这样就可以与更准确的服务器进行同步了。
作为时间收敛过程的一部分,域成员会试图与其在相同域内的域控进行同步时间。如果该计算机就是域控,那么它会试图与更权威的域控进行同步。
关于我们是否可以验证他们之间是否同步的问题,其实也就是监测的问题:要监测某个特定域中或计算机上的时间服务时,我们可以使用  /monitor  参数。该命令的基本语法如下:
 w32tm /monitor [/domain:  域名 ] [/computers:  计算机 1 ,计算机 2 ,计算机 3 ,… ] [/threads: N]
这里,域名是指要监测的域的 DNS 名,和由 DNS 名或 IP 地址指定的计算机名。如果我们没有指定某个域或计算机,那么就会使用目前我们所登录的这个域。我们要确保计算机名之间用逗号隔开,并且没有空格。  /thread 参数指定了同时分析的计算机数量。默认的值是 3 ;而允许的范围值在 1 50 之间。
2 、成员服务器和客户端与它们验证服务器间同步。每台 DC  的时间不一样,经过检查是它们是通过各自的硬件时钟同步的。针对这类型问题是如何引起的?怎样进一步去确认?
针对这个问题,就像我们之前说的那样,默认情况下 DC 是会去找 PDC 去同步时间的,至于为什么会变成通过各自的硬件时钟去同步,这有很多种多可能的原因,如第三方程序的干预等等。但如果 Windows time service 工作是正常的话,那么我们也就没必要去找其中的原因了,只有当与我们的预期不符时,我们需要知道它到底在干什么的时候,我们可以通过启用在我上一次回复中的 Debug log 来看时间服务到底在干什么。
3 、关于无法运行命令 w32tm /query ,及其 w32tm /register  的问题
如果无法运行这个命令是因为这个命令是 windows vista   windows server 2008 时引入的。那么我们可以换一种办法来查看这个状态,我们可以查看这个注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\
·  Nosync 表示客户端没有同步时间(就是所谓的硬件时钟)
·  NTP 表示客户端从外部时间源同步时间,并且 NTPServer 字段定义了这个时间源
·  NT5DS 表示客户端配置了使用域架构作为自己的时间同步
·  AllSync 表示客户端会从任何可靠的时间源处同步时间,包括域结构和外部时间源的。
就该注册表项而言,在 DC 上默认值是 NT5DS ,在独立的客户端或服务器上是 NTP
w32tm /register  这个命令不需要指定某个时间源,因为这个命令的用意是,把时间服务注册一下并向注册表添加默认的值。而这个默认值会牵涉到许多的注册表项,因此可以通过下面的这篇文档来进一步了解。



      本文转自daniel8294 51CTO博客,原文链接:http://blog.51cto.com/acadia627/947235,如需转载请自行联系原作者



相关文章
|
16天前
|
Linux
Linux 系统时间同步 ​使用 NTP 服务时间同步​
Linux 系统时间同步 ​使用 NTP 服务时间同步​
37 2
|
9月前
|
Ubuntu 网络协议 Linux
嵌入式Linux开发环境搭建之七---正确设置网络使开发板ping同Ubuntu(使用NAT方式,推荐)
嵌入式Linux开发环境搭建之七---正确设置网络使开发板ping同Ubuntu(使用NAT方式,推荐)
517 0
|
9月前
|
Ubuntu 网络协议 安全
嵌入式Linux开发环境搭建之七---正确设置网络使开发板ping同Ubuntu(使用桥接方式,不推荐)
嵌入式Linux开发环境搭建之七---正确设置网络使开发板ping同Ubuntu(使用桥接方式,不推荐)
448 0
|
Web App开发 Linux
Linux NTP原理及配置使用
NTP原理及配置使用 一、NTP简介 1.NTP简介   NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。
1511 0