【系统集成】ntp服务&定期同步时间&计划任务

应用场景:(windows && linux ntp)

我们知道在稍微大点的业务系统群落中,必定搭建制定一台ntp服务器,来对整个内部网络授时同步。

当然至少也要做个同步时间计划任务,指向外网某台权威的ntp时间源来进行同步。

在计算机的世界中,时间重要性毋庸置疑,NTP网络时间协议(Network Time Protocol)自然至关重要。

下面博主将从windows和linux两个方面来阐述部署ntp服务,并如何配置ntp客户端时间同步及同步频率;

一、linux部署本地ntp服务器及时间同步配置参考:

(这里ntp软件的安装就不做介绍,可以直接yum安装。)

1.1、配置dns解析服务,确保ntp服务器指向的时间源被正常解析。

[root@oxblog-ntp ~]# vi /etc/resolv.conf    
##添加DNS服务器,最好有自己本地区常用的dns服务器
nameserver 202.106.0.20
nameserver 223.5.5.5
nameserver 223.6.6.6
nameserver 114.114.114.114

1.2、配置ntp服务配置文件并启动ntp服务设置自启动

[root@oxblog-ntp ~]#vim /etc/ntp.conf    ##编辑ntp服务配置文件
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap    
##找到上面一行,复制粘贴至下一行,去掉注释,并修改为自己当前网络范围,如下:
restrict 192.168.8.0 mask 255.255.252.0 nomodify notrap
【server 202.120.2.101 prefer
server 202.118.1.46 iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
server ntp4.aliyun.com iburst
server ntp5.aliyun.com iburst
server ntp6.aliyun.com iburst
server ntp7.aliyun.com iburst
server cn.pool.ntp.org iburst
server time.nist.gov iburst】#指定时间源,复制括弧内的到下行的上面
server 0.rhel.pool.ntp.org iburst    ##这几行是软件自带,有时不好使。
server 1.rhel.pool.ntp.org iburst    ##也可指定添加其他公用ntp服务器
server 2.rhel.pool.ntp.org iburst
server 3.rhel.pool.ntp.org iburst    ##":x"保存退出即可
[root@oxblog-ntp ~]#service ntpd start    ##启动ntpd服务
[root@oxblog-ntp ~]#chkconfig ntpd on    ##配置ntpd服务开机自启动
[root@oxblog-ntp ~]#ntpq -p        ##检查ntp服务ntp更新状态
[root@oxblog-ntp ~]#ntpstat        ##查看ntp服务状态
[root@oxblog-ntp ~]#date         ##查看本地时间是否同步
[root@oxblog-ntp ~]#hwclock -w      ##同步系统时间到硬件时间

1.3、配置ntp客户端时间同步及计划任务

[root@oxblog-ntp ~]#echo "0,20 7 * * * /usr/sbin/ntpdate ntp-ip && /sbin/hwclock -w" > crontabntp   
##这里ntp-ip是ntp服务器ip,即本机ip,因为我是在本地生成了这个文件。
##生成文件crontabntp为时间同步计划任务,然后通过scp远程拷贝到网络内其他服务器上。
##因本机是ntp服务器,所以不用crontab -e创建计划任务;
[root@Hout ~]#scp crontabntp root@192.168.8.*:/var/spool/cron/root
##用root用户远程拷贝到指定服务器即ntp客户端,生成计划任务。

二、windows ntp服务器部署及时间同步配置参考:

2.1、部署ntp服务器;

2.1.1、将服务器类型更改为 NTP。

a.  单击“开始”,单击“运行”,键入 regedit,运行打开注册表

b.  找到并单击下面的注册表子项: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/Parameters/Type

c.在右窗格中,右键单击“Type”,然后单击“修改”。

并在“编辑值”的“数值数据”框中键入 NTP,然后单击“确定”。(其默认值便是ntp)

2.1.2、 将 AnnounceFlags 设置为 5。

a.  找到并单击下面的注册表子项:(此步骤可省略)
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/Config/AnnounceFlags

b.  在右窗格中,右键单击“AnnounceFlags”,然后单击“修改”。

并在“编辑 DWORD 值”的“数值数据”框中键入 5,然后单击“确定”。

该设置强制主机将它自身宣布为可靠的时间源,从而使用自身的cmos硬件时间作为同步时间。

(虽然在windows系统中,cmos时间和本地系统时间始终保持统一,在cmos电池固件正常的情况下。)

(但是,一旦我们次选项设值为“5”,则强依赖cmos固件。)

(切当网络内ntp服务器部位预控,无需设置PDC(权威时间服务器,此项也可忽略)

(所以这里建议保留默认值“a”,即十进制的“10”,即时钟源为本地制定的ntp服务器地址。)

2.1.3、启用 NTPServer。

a.  找到并单击下面的注册表子项:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/TimeProviders/NtpServer

b.  在右窗格中,右键单击“Enabled”,然后单击“修改”。

并在“编辑 DWORD 值”的“数值数据”框中键入 "1",默认为0 关闭状态。

2.1.4、关闭NTPClient。

(这一步可忽略,因为我们需要它从指定外部时间源获取本地时间同步)

a.找到并单机下面的注册表子项:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControl/SetServices/W32TimeTime/Providers/NtpClinet

b.在右窗格中,右键单击"Enabled",然后单击“修改”。

并在“编辑 DWORD 值”的“数值数据”框中键入 "0",默认为1 启用状态。

2.1.4、指定时间源。

a.  找到并单击下面的注册表子项: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/Parameters/NtpServer

b.  在右窗格中,右键单击“NtpServer”,然后单击“修改”。

c.  在“编辑值”的“数值数据”框中键入 ntp源地址,(ip或域名,多个以空格分隔)
注意:列出的每个 时间源 dns名称都必须是唯一的。必须在每个 DNS 名称后面附加 ,0x1。

0x1代表每一个小时向时钟源同步一次,0x9代表每12小时同步一次。如不附加,则步骤5不生效

2.1.5、 选择轮询间隔。

a.  找到并单击下面的注册表子项:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/TimeProviders/NtpClient/SpecialPollInterval

b.  在右窗格中,右键单击“SpecialPollInterval”,然后单击“修改”。
在“编辑 DWORD 值”的“数值数据”框中键入 "900",然后单击“确定”。

注意:此值为您希望各次轮询之间的间隔秒数。建议值为 900(十进制)。即该值将时间服务器配置为每隔 15 分钟轮询一次。

2.1.6、 配置时间校准设置。

a.  找到并单击下面的注册表子项:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/Config/MaxPosPhaseCorrection
b.  在右窗格中,右键单击“MaxPosPhaseCorrection”,然后单击“修改”。
c.  在“编辑 DWORD 值”的“基数”框中单击以选择“十进制”。
d.  在“编辑 DWORD 值”的“数值数据”框中键入 TimeInSeconds,然后单击“确定”。

该项指定服务可进行的最大正时间校准量(以秒为单位)。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config/MaxNegPhaseCorrection

e.  在右窗格中,右键单击“MaxPosPhaseCorrection”,然后单击“修改”。
f.  在“编辑 DWORD 值”的“基数”框中单击以选择“十进制”。
g.  在“编辑 DWORD 值”的“数值数据”框中键入 TimeInSeconds,然后单击“确定”。

该项指定系统轮询间隔所允许的最大间隔(单位是用对数形式表示的秒)。

(好吧,此项配置也可忽略,以默认值即可)

2.1.7、 退出编辑,重启服务并设置开机自启动。

键入Win+R打开运行,并执行cmd打开字符命令行窗口执行如下命令:

net stop w32time && net start w32time

或键入Win+R打开运行,并执行services.msc打开服务器管理器窗口;

找到windows time 服务,启用或重启,并可对其属性权限设置允许那些用户可运行此服务器。

2.1.8、修改防火墙及组策略:

哈哈,是不是感觉到了步骤,我们的步骤就结束了,其实不然,有的时候我们还需要开放权限;

首先我们要修改防火墙,开放UDP端口:123

键入Win+R打开运行,并执行wf.msc命令打开高级防火墙配置窗口;

选择出战入站规则,添加,开放端口,这里就不细说了。

其次,当我们主机成员在域的环境下,还要修改本地组策略配置:

键入Win+R打开运行,并执行gpedit.msc命令打开本地组策略配置窗口;

并找到“管理模板\系统\Windows 时间服 务\全局配置设置”选中设置启用状态。

好了,到此windows的ntp服务器就部署完毕了,当然有些内容和步骤可以省略,请明白后酌情操作

2.2、配置客户端ntp时间同步:

2.2.1、win xp/2003 /2008/7 操作系统配置:(常规配置)

键入Win+R打开运行,并执行timedate.cpl命令打开日期和时间配置窗口;

选中internet时间选项,选中更改设置,打开internet时间设置;

在时间服务器表单,输入自己的本地ntp服务器ip或域名,点击立即更新并确认退出;

键入CTRP+R打开运行,并执行regedit命令打开注册表配置窗口,并找到以下注册表子项:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/TimeProviders/NtpClient

在右边窗口找到SpecialPollInterval表项,双击,点击十进制,在数值数据处,填写86400

单位为秒,轮询时间,即24小时,向ntp服务器同步一次。请根据情况配置。

这个很重要,比如博主工作中,很多市场白天开市期间是无法修改的,只有每天早晨4点到6点可以同步。

2.2.2、win server 2012 R2 配置时间同步;

在Windows2012R2操作系统里,键入运行timedate.cpl命令打开日期和时间配置窗口中,

没有了internet时间选项,则需要使用另外的方式去做时间同步;

键入Win+R打开运行或powershell终端,执行gpedit.msc打开本地组策略配置窗口;

依次找到:计算机配置\管理模板\系统\windows 时间服务\时间提供程序

右边窗口,选中并双击“配置windows ntp 客户端”,打开配置窗口

在Ntp Server项,输入ntp服务器ip地址或域名:(如阿里的ntp: time.pool.aliyun.com,0x9

注意 0x9 或 0x1 必须要有 ; 然后在 类型 项, 选择 NTP ; 最后点击 应用并确定 按钮 退出;

右边窗口,选中并双击“启动windows ntp 客户端”,打开窗口,勾选启用,并确认退出;

最后cmd或powershell运行命令:gpupdate /force      更新组策略使其生效。

2.2.3、win中,ntp客户端命令配置并相关查看及扩展:

2.2.3.1、修改当前计算机时间:

time        #按照当前时间格式输入,直接更改系统时间,精确到毫秒。

2.2.3.2、查看当前系统时间及日期:

net time \\127.0.0.1        #也可查看远程其他服务器的时间和日期。

2.2.3.3、显示当前系统时区配置

W32tm /tz

2.2.3.4、查看当前指定的ntp时间服务器是谁

w32tm /query /source

2.2.3.5、域中配置ntp服务器PDC权威时间服务器

1.  将服务器设置为内部硬件时钟
打开Service注册表,找到选项:
HKEY LOCAL MACHINE\SYSTEM\ CurrentControlSet\Services\W32Time\Parameters
右窗口选中ReliableTimeSource与LocalNTP选项(二进制)均设置为1,并重启服务:
net stop w32tim & net strart w32time
2.  将PDC的时间与公网服务器时间同步。
a)  net time /setsntp:192.43.244.18
b)  继续修改parameters注册表右窗口选项:
 (1)将服务器类型改为 NTP,即修改“TYPE”值为NTP。
 (2) 将该服务器配置为可靠的时间源,即修改“ReliableTimeSource”为1。
 (3) 修改“LocalNTP”值为1。
 (4) 指定时间源,即修改“NtpServer”为时间源地址。格式如上案例查找;
 (5)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient]分支
并双击SpecialPollInterval键值,选择“十进制”,输入自动对时的间隔(以秒为单位)
比如默认的604800就是由7(天)×24(时)×60(分)×60(秒)计算来的。
设定时间同步周期(建议设为900=15分钟或3600=1小时等周期值),因为这是服务器。
(6)重启时间服务:net stop w32time && net start w32time
3.同步域内时间的步骤小结:(这一步骤,在客户端操作)
   a.  确定域内的PDC,  net time /domain:domain名称
   b.  查询PDC使用的时间源 net time \\PDC的IP地址 /QuerySntp
   c.  修改PDC使用的时间源 net time \\PDC的IP地址 /SetSntp:事件源地址
   d.  立即手动同步域内其他服务器的时间,使其与PDC保持一致。   
net time /set或w32tm /resync /computer:PDC(IP),建议使用后一个命令
   e.  手动设置各个服务器的时间源,指向PDC(计算机名或IP地址)
Net time \\serverIP /setsntp:PDC(IP)

此外:当遇时间不准时,可进行如下调试:

输入命令:W32tm /monitor /domain:test.com,可以获取PDC的IP地址
Net time \\PDC-IP-address /setsntp: time.windows.com
##远程登陆PDC服务器,让其和外部时间服务器同步
 Net time \\192.168.1.1 /Querysntp 或是
W32tm /monitor /computers:192.168.1.1,192.168.1.2
##远程查看某台客户端的时间数据源是否指定到本地PDC服务器上
Net time \\192.168.1.1 /SetSntp:PDC-ip-adress
##远程将客户端的时间数据源指定到本地PDC权威时间服务器上
W32tm /resync /computer:192.168.1.1 && W32tm /resync /computer:192.168.1.2
##远程让其客户端立即和PDC同步时间,否则不会立即同步,有系统配置间隔时间决定

提问:为啥我执行的命令,总是报错或拒绝。

(用户权限问题,且有些命令是在域环境下配置)

Bingo!好了今天分享的内容就到这里了,更多精彩内容,稍后奉献,敬请期待!

Edit@bigmouth【原创博文】®【系统集成】


原创文章,转载请注明:转自于公牛博客

本文链接地址:【系统集成】ntp服务&定期同步时间&计划任务

28
祝福我们的祖国繁荣昌盛
  • 请尽情挥洒您的笔墨!

    支持,只有支持才是访问博客的正确方式!

    2017-04-14 15:26回复

    对你爱爱爱不完,我可以天天月月年年看你博客到永远!

    2017-04-05 15:23回复

    富强、民主、文明、和谐,自由、平等、公正、法治, 爱国、敬业、诚信、友善。

    2017-03-27 16:47回复

    欢迎来到公牛博客更多分享更多精彩记录美丽点亮生活

    公牛博客·统计碑运行:2841 D
    博文:213 P
    评论:1872 S