客户端和服务器端时钟同步问题

Navigation:  其他 > 常见问题 >

客户端和服务器端时钟同步问题

Previous pageReturn to chapter overviewNext page

uFAQ1:

针对ICV客户端和服务器端可能存在时钟不一致的问题,可以采取如下措施加以解决:选择一台要部署的Scada节点的服务器作为NTP服务器,其他的客户端和该服务器利用NTP协议进行同步;若服务器端和客户端已经在同一个域中,域控制器会自动保持时间的同步,则不要做此处理。其他条件下可以采用以下时间同步的办法:

服务端:

1)开启服务端的保证windows time服务启动,启动方式为自动。在控制面板-》管理工具-》服务-》windows time中开启,也可通过批处理语句执行。

命令:

sc config W32Time start= auto

sc start W32Time

 

2)设置服务端为NtpServer,打开时间同步服务功能,修改注册表以下项的键值

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer内的“Enabled”设置为“1”,打开时间同步服务功能。

命令:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer /v Enabled /t REG_DWORD /d 1 /f

 

3)强制主机将它自身宣布为可靠的时间源,修改以下键值

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config里的“AnnounceFlags”设置为“5”,表示强制主机将它自身宣布为可靠的时间源,从而使用CMOS时钟。如果设置为“a”,则表示为采用外面的时间服务器。

命令:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer /v Enabled /t REG_DWORD /d 1 /f

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config /v AnnounceFlags /t REG_DWORD  /d 5 /f

 

4)重启Win32Time服务

命令:

net stop w32time && net start w32time,其中,“&&”符号表示同时执行两条命令。

 

客户端:

1)开启服务端的保证windows time服务启动,启动方式为自动。在控制面板-》管理工具-》服务-》windows time中开启,也可通过批处理语句执行。

命令:

sc config W32Time start= auto

sc start W32Time

 

2)设置客户端为NtpClient,修改注册表以下项的键值

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient内的“Enabled”设置为“1”。

命令:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v Enabled /t REG_DWORD /d 1 /f

 

3)客户端的设定时间同步服务器,更改注册表即可。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient里的

“SpecialPollInterval”时间间隔(单位为秒,43200为12小时);

“SpecialPollTimeRemaining”时间同步的服务器,格式为:“IP address,0”,例如:168.2.8.180,0。

命令:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v SpecialPollInterval /t REG_DWORD /d 1 /f

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v SpecialPollTimeRemaining /t REGMULTI_SZ /d 168.2.9.119,0 /f

 

4)建立IPC链接:建立一个空连接(当然,这需要目标开放ipc$)

语法:net use \\ip\ipc$ "[密码]" /user:"[用户名]"

上面的命令包括四个空格,net与use中间有一个空格,use后面一个,密码左右各一个空格

 

5)在客户端设定器为时间同步服务器SNTP,改变计算机的默认时间服务器,这步实际和第三步修改注册表的功能是一致的,为防止注册表不可写入的情况发生,加上这一步。

命令:

net time /setsntp [:时间服务器地址]

 

6)设定客户端的时间和服务端保持一致

命令:

net time \\[时间服务器地址] /set /y

 

以上客户端和服务端有关注册表的修改可以用户在注册表中修改,也可直接在DOC下输入命令执行,或者通过批处理文件执行;执行批处理文件时要以管理员权限执行,并且这个BAT文件要放在” C:\WINDOWS”下;在“附件-》系统工具-》任务计划”中添加任务,可以设定这个批处理任务执行的时间,设定为每天、每周或者开机时校正时间,这样就能定时校正时间。 

 

案例:时间服务器的Ip为168.2.9.119,用户名是zhangsan,密码是1234567,执行下面的批处理程序可以保持时间的同步。

 

客户端批处理程序的代码如下:

sc config W32Time start= auto

sc start W32Time

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v Enabled /t REG_DWORD /d 1 /f

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v SpecialPollInterval /t REG_DWORD /d 1 /f

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient /v SpecialPollTimeRemaining /t REGMULTI_SZ /d 168.2.9.119,0 /f

net use \\168.2.9.119\ipc$ "1234567" /user:"zhangsan"

net time /setsntp:168.2.9.119

net time \\168.2.9.119 /set /y

 

服务端批处理程序的代码如下:

sc config W32Time start= auto

sc start W32Time

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer /v Enabled /t REG_DWORD /d 1 /f

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config /v AnnounceFlags /t REG_DWORD  /d 5 /f

net stop w32time && net start w32time

 

uFAQ2:

时间同步失败。

检查服务端和客户端的时间是否一致,如果不一致,可以通过配置时间同步误差解决

检查服务端和客户端的时区是否相同,同步时要保证一致。