NTP时钟同步方式说明
NTP在linux下有两种时钟同步方式,分别为直接同步和平滑同步:
直接同步
使用ntpdate命令进行同步,直接进行时间变更。如果服务器上存在一个12点运行的任务,当前服务器时间是13点,但标准时间时11点,使用此命令可能会造成任务重复执行。因此使用ntpdate同步可能会引发风险,因此该命令也多用于配置时钟同步服务时第一次同步时间时使用。
平滑同步
使用ntpd进行时钟同步,可以保证一个时间不经历两次,它每次同步时间的偏移量不会太陡,是慢慢来的,这正因为这样,ntpd平滑同步可能耗费的时间比较长。
标准时钟同步服务
>
时间服务器可以利用以下三种方式与其他服务器对时:
broadcast/multicast
client/server
symmetric
broadcast/multicast方式主要适用于局域网的环境,时间服务器周期性的以广播的方式,将时间信息传送给其他网路中的时间服务器,其时间仅会有少许的延迟,而且配置非常的简单。但是此方式的精确度并不高,对时间精确度要求不是很高的情况下可以采用。
symmetric的方式得一台服务器可以从远端时间服务器获取时钟,如果需要也可提供时间信息给远端的时间服务器。此一方式适用于配置冗余的时间服务器,可以提供更高的精确度给主机。
client/server方式与symmetric方式比较相似,只是不提供给其他时间服务器时间信息,此方式适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层的用户。
上述三种方式,时间信息的传输都使用UDP协议。时间服务器利用一个过滤演算法,及先前八个校时资料计算出时间参考值,判断后续校时包的精确性,一个相对较高的离散程度,表示一个对时资料的可信度比较低。仅从一个时间服务器获得校时信息,不能校正通讯过程所造成的时间偏差,而同时与许多时间服务器通信校时,就可利用过滤算法找出相对较可靠的时间来源,然后采用它的时间来校时
NTP校时:录像机可以通过NTP服务器进行校时,一般有以下两种情况:
第一种,自建NTP服务器,一般有设置网络时间服务器地址的选项,填上就可以了,自动同步。
第二种,设备如果连接到外网,可以通过国家校时服务器校时,地址2107214544,NTP端口123。也可以用上海交大NTP服务器地址2021202101。也可以使用别的校时服务器。
启用NTP,校时时间间隔默认是60分钟,可以在1-10800分钟范围调节。
一:NTP是网络时间同步协议,就是用来同步网络中各个计算机的时间的协议。
二:NTP服务端配置
21、检查系统是否安装了NTP包(linux系统一般自带NTP42),没有安装我们直接使用yum命令在线安装: yum install ntp
22、NTP服务端配置文件编辑: vim /etc/ntpconf
结果:
# @3新增-权限配置restrict 12712710restrict 192168310 mask 2552552550 nomodify notrap# @3改动-注释掉上级时间服务器地址#server 0centospoolntporg iburst#server 1centospoolntporg iburst#server 2centospoolntporg iburst#server 3centospoolntporg iburst# @4新增-上级时间服务器server 12712710 # local clockfudge 12712710 stratum 10
23、启动NTP时间服务器:service ntpd start
24、设置NTP开机自动启动:chkconfig ntpd on
25、查看NTP是否正常运行:netstat -tlunp | grep ntp
26、配置防火墙过滤规则:/sbin/iptables -I INPUT -p udp --dport 123 -j ACCEPT
如何配置:/etc/sysconfig/iptables 文件内配置开放udp 123端口: -A INPUT -p udp --destination-port 123 -j ACCEPT
A服务端配置文件解释
①:设定NTP主机来源(其中prefer表示优先主机),19216831134是本地的NTP服务器,所以优先指定从该主机同步时间。
server 192168749 prefer
server 0rhelpoolntporg
server 1rhelpoolntporg
server 2rhelpoolntporg
server 3rhelpoolntporg
②:限制你允许的这些服务器的访问类型,在这个例子中的服务器是不容许修改运行时配置或查询您的Linux NTP服务器
restrict 19216800 mask 2552552550 notrust nomodify notrap
在上例中,掩码地址扩展为255,因此从19216801-1921680254的服务器都可以使用我们的NTP服务器来同步时间
#此时表示限制向从19216801-1921680254这些IP段的服务器提供NTP服务。
restrict 19216800 mask 2552552550 notrust nomodify notrap noquery
#设置默认策略为允许任何主机进行时间同步
restrict default ignore
三:NTP客户端配置31、检查安装NTP服务有没有安装,未安装请自行安装
32、NTP客户端配置文件编辑: vim /etc/ntpconf
# @1新增-权限配置restrict 192168310 mask 2552552550 nomodify notrap# Use public servers from the poolntporg project# Please consider joining the pool (>
33、手动同步一次时间:/usr/sbin/ntpdate19216831134 (服务端主机IP,这里需要先关闭NTP服务哦)
34、启动NTP服务:service ntpd start
35、观察时间同步状况:ntpq -p
结果:
[root@localhost hct]# ntpq -p remote refid st t when poll reach delay offset jitter==============================================================================19216831134 LOCAL(0) 11 u 64 128 377 0202 73980 412834
⑥查看时间同步结果:ntpstat
[root@hct ~]# ntpstat
unsynchronised
polling server every 8 s
同步失败,同步也需要时间,需等待5-10分钟再次查询:
Every 20s: ntpstat Tue Jul 11 16:55:57 2017synchronised to NTP server (101011247) at stratum 12 time correct to within 605 ms polling server every 128 s
时间同步完成,date一下看是不是和服务器主机时间一致
B客户端配置文件详解
修改/etc/ntp/stpe-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对
C系统时间与硬件时间同步
如果主从服务时间超过1000秒则不再进行同步了,这时候要手动同步,即:/usr/sbin/ntpdate命令,如果怕服务器时差会经常变动比较大可以再Linux中添加计划任务,例如:
10 5 root /usr/sbin/ntpdate 19216831223 && /sbin/hwclock -w
ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。
拓展内容ntpq -p各个选项相关信息
restrict 控制相关权限。
语法为: restrict IP地址 mask 子网掩码 参数
其中IP地址也可以是default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器
notrap :不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。
nopeer :用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟
kod : 访问违规时发送 KoD 包。
restrict -6 表示IPV6地址的权限设置。
root@>
ntpd、ntpdate的区别
下面是网上关于ntpd与ntpdate区别的相关资料。如下所示所示:
使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。
时钟的跃变,对于某些程序会导致很严重的问题。许多应用程序依赖连续的时钟——毕竟,这是一项常见的假定,即,取得的时间是线性的,一些 *** 作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。不幸的是,ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,这有几个非常明显的问题:
第一,这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。
第二,这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。
第三,这样做不够优雅。由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。
NTPD 在和时间服务器的同步过程中,会把 BIOS 计时器的振荡频率偏差——或者说 Local Clock 的自然漂移(drift)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。
方法一采用Windows、linux等 *** 作系统自带的时间同步功能
对于Windows *** 作系统,自身已经集成了自动对时功能,在此仅以windows *** 作系统为例介绍一下。
双击系统托盘下方的时间在服务器地址栏输入NTP服务器的IP地址(1cnpoolntporg),然后点击“确定”按钮保存下来就行了。
方法二
修改注册表,提高时间同步精度
由于系统默认的时间同步间隔是7天,我们无法自由选择,使得这个功能在灵活性方面大打折扣。其实,我们也可以通过修改注册表来手动修改它的自动同步间隔以提高同步精度,以下以XP系统为例。
1 在“开始”菜单→“运行”项下输入“Regedit”进入注册表编辑器
2 展开[
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/TimeProviders/NtpClient
] 分支,并双击 SpecialPollInterval 键值,将对话框中的“基数栏”选择到“十进制”上
3
对话框中显示的数字正是自动对时的间隔(以秒为单位),比如默认的604800就是由7(天)×24(时)×60(分)×60(秒)计算来的。设定时间同步周期(建议设为900=15分钟或3600=1小时等周期值),填入对话框,点击确定保存关闭对话框。
4
在Parameters列表中,将NtpServer键值修改为NTP服务器的IP地址(1cnpoolntporg),然后点击“确定”按钮保存。
方法三,采用其他NTP客户端程序时间同步
可以在互联网上找到其他客户端程序实现电脑时间同步。
1)首先确认虚拟化底层的时间是否准确,因为所有虚拟机会自动同步虚拟主机的时间。
2)在所有AD服务器上开启时间同步功能
一、找到适合的NTP服务器
首先需要找一个适合自己网络环境的NTP服务器,因为不同的网络会有不同的NTP服务器起作用,检测NTP服务器的方法为在AD上运行 w32tm /stripchart /computer:NTP服务器域名或IP ,如 w32tm /stripchart /computer:182921211 ,若是可以使用会显示如下图
找到适合自己网络的可用NTP服务器后,假设找到182921211为可用NTP服务器,在AD服务器上开启时间同步,运行如下命令
三、设置主域控制器与国家授时中心服务器时间同步,同步周期为1天。
1、 添加时间服务器
在右边窗口点右键新建“字符串值”,将此“字符串值”命名为0。双击此新建的“字符串值”,输入: 182921211 ,保存。将“默认”(即第一个“字符串值”)修改为0即可,删除其他所有的值只保留如图所示的值
2、 指定时间源
修改键NtpServer的值为 182921211
3、 设置校时周期
修改键SpecialPollInterval的值为十进制的604800(即为604800秒,1天)
四、设置权威服务器
1、 设置权威服务器
在域控服务器上打开注册表,找到键值
修改键AnnounceFlags的值为十进制的10。
2、 启用 NTPServer
修改键Enabled的值为十进制的1
五、配置组策略,设置时间同步
1、 打开组策略管理
2、 在“Default Domain Policy”上右键,编辑。
3、 计算机配置—管理模板—系统—Windows时间服务,双击“全局配置设置”,选择“已启用”。
修改MaxNegPhaseCorrection的值为3600(即为3600秒,1小时)
修改MaxPosPhaseCorrection的值为3600(即为3600秒,1小时)
修改AnnounceFlags的值为5
点“应用”,“确定”。
4、 计算机配置—管理模板—系统—Windows时间服务—时间提供程序,“启用Windows NTP客户端”,选择“已启用”。
“配置Windows NTP客户端”,选择“已启用”。
修改NtpSever的值为 1829211
修改Type的值为NTP
修改SpecialPollInterval的值为1800(30分钟)
5、cmd命令在域控和客户端完成检测
域控上运行下面三条命令检测,返回成功执行了命令即为成功。若是返回此计算机没有重新同步,因为没有可用的时间数据。请排查上述文档中一步时间服务器是否可用,和五-4步服务器是否正确,看w32tm /query /source命令返回的结果是否正确。
域内的客户端想要同主域时间同步,执行下面的命令,返回成功执行了命令即为成功
注意时间若想成功同步,时间不能跟标准时间差别太大,在范围内的才能成功同步。
1、系统时间比标准时间系统时间晚14小时59分钟之内
2、系统时间比标准时间早30分钟之内
3)对于有些客户端Windows Times服务会自动停止,可以尝试重新注册一下此服务项
1首先,运行如下命令删除时间服务:
2然后,再运行如下命令加载默认时间配置服务:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)