NTP的层次stratum

本文介绍了NTP协议的作用,如何确保时间同步的精确性和网络安全,包括时间源选择、层次结构、认证机制,以及在Cisco设备上的配置实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NTP

  

NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。
在计算机的世界里,时间非常地重要,例如对于火箭发射这种科研活动,对时间的统一性和准确性要求就非常地高,是按照A这台计算机的时间,还是按照B这台计算机的时间?NTP就是用来解决这个问题的,NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)进行时间同步,它可以提供高精准度的时间校正,而且可以使用加密确认的方式来防止病毒的协议攻击。
NTP要提供准确的时间,就必须有准确的时间来源,那可以用格林尼治时间吗?答案是否定的。因为格林尼治时间是以地球自转为基础的时间计量系统,但是地球每天的自转是有些不规则的,而且正在缓慢加速,因此,格林尼治时间已经不再被作为标准时间使用。
新的标准时间,是由原子钟报时的国际标准时间UTC(Universal Time Coordinated,世界协调时)。所以NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。
有了准确而可靠的的时间源,那这个时间如何传播呢?在NTP中,定义了时间按照服务器的等级传播,按照离外部UTC源远近将所有的服务器归入不同的Stratum(层)中,例如把通过GPS(Global Positioning System,全球定位系统)取得发送标准时间的服务器叫Stratum-1的NTP服务器,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础,
这种阶梯式的架构示意图如图1所示。

计算机主机一般同多个时钟服务器连接,利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源以便校正主机时间。即使在主机长时间无法与某一时钟服务器联系的情况下,NTP服务依然可以有效运转。
为了防止对时钟服务器的恶意破坏,NTP使用了识别机制,检查发送来的信息是否是真正来自所宣称的时钟服务器并检查信息的返回路径,以提供对抗干扰的保护机制。 [1] 
NTP时间同步报文中包含的时间是格林威治时间,是从1900年开始计算的秒数。

 NTP(网络时间协议)

    某些时候,我们需要在Cisco设备上做一些基于时间的策略或访问控制,让这些策略或控制在特定的时间内生效,所以设备上必须存在着准确的时间。但是如果手工给设备配好时间,当设备因为某些原因重启后,时间将被刷新到出厂时的时间,这样就影响到我们所做的策略或服务。这时我们就需要设备能够借助于远程时间服务器上的时间来同步自己的本地时间,让设备在正常工作时,本地的时间和远程时间服务器的时间保持一致。

    本地设备的时间和远程时间服务器即使能够同步,也会存在毫秒级的误差,如果自己和远程时间服务器同步,那么别人再和自己同步,就意味着别人的时间误差可能更大。在这里,时间的精准度就会有高低,Cisco设备的NTP把这样的精准度高低称为stratum,如果stratum值越大,就表示精准度越差,stratum值越小表示精准度就越好。比如远程一台时间服务器的stratum是2,本地设备和它同步后,自己的stratum就是3,精准度就差了一些,如果这时别的设备再和自己同步,那么它得到的stratum就是4,精准度就意味着更差。
Cisco设备即可以做为NTP客户端,即自己和远程时间服务器同步,也可作为NTP服务器,即向别的设备提供自己的时间,让别的设备和自己的时间同步,如果将Cisco设备作为NTP服务器,默认的stratum是8,就表示远程设备和自己同步后,stratum就是9。

   配置

    1.配置时间

     (1)为设备配置时区

          R1(config)#clock timezone GMT +8        配置时区为东8区时

     (2)为设备配置时间

          R1#clock set 20:00:00 1 oct 2008        配置时间为2008年10月1日20点整

    注:此时间为东8区时2008年10月1日20点整,如果将时区更新,设备会自行计算时差将时间调整到对应时区的时间。

     2.查看结果:

       (1)r1#show clock

    配置NTP
          (1)
配置NTP服务器

           注:配置master和stratum(默认为8)

           R1(config)#ntp master 5      stratum为5

      (2)配置NTP数据包的源地址

           注:此地址为数据发出时的源地址,并不影响NTP时间同步

           R1(config)#ntp source Loopback0

    配置NTP Client

         (1)指定NTP服务器地址

              R2(config)# ntp server 10.1.1.1

         (2)配置clock timezone

              R2(config)# clock timezone GMT +8

             (3)查看结果

              R2#show clock

          说明:看本地时间和服务器的时间是否一致。

     NTP认证

    服务器和客户端之间可以使用MD5来提供安全认证,只有双方在密码相同的情况下,时间才能同步,双方可以同时配置多个key,号码也可以不一样,但当前使用的的key密码必须是相同的,否则时间不能同步。

    配置

   1.配置NTP服务器:

    (1)开启认证

         R1(config)# ntp authenticate

    (2)配置密码

         R1(config)# ntp authentication-key 5 md5 cisco

    (3)使用某个密码 注:在key只有一个的情况下,可以不配

         R1(config)#ntp trusted-key 5

  2.配置NTP Client;

    (1) 开启认证

        R2(config)# ntp authenticate

   (2)配置密码

        R2(config)# ntp authentication-key 20 md5 cisco

   (3)使用某个密码

        R2(config)#ntp trusted-key 20

   (4)打开对服务器的密码使用,让发送给服务器的数据中携带密码

        R2(config)#ntp server 10.1.1.1 key 20

  3.查看结果

   (1)未同步的:

        R2#sh ntp status

           Clock is unsynchronized, stratum 16, no reference clock

        R2#show ntp association detail 

           12.0.0.1 configured, insane, invalid, unsynced, stratum 16

  (2)已同步的:

       R2#sh ntp status

          Clock is synchronized, stratum 6, reference is 127.127.7.1

      R2#sh ntp associations detail

         10.1.1.1 configured, authenticated, our_master, sane, valid, stratum 6

ntp原理与设置

一. 基本概念

NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。

在计算机的世界里,时间非常地重要,例如对于火箭发射这种科研活动,对时间的统一性和准确性要求就非常地高,是按照A这台计算机的时间,还是按照B这台计算机的时间?NTP就是用来解决这个问题的,NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。

它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)进行时间同步,它可以提供高精准度的时间校正,而且可以使用加密确认的方式来防止恶毒的协议攻击。 
这里写图片描述  
0层的服务器采用的是原子钟、GPS钟等物理设备,stratum 1与stratum 0 是直接相连的,往后的stratum与上一层stratum通过网络相连,同一层的server也可以交互。

1、C/S合一

ntpd对下层client来说是service server,对于上层server来说它是client,也就是说新版的NTP服务程序已经不对服务端和客户端进行区分了,统一叫做ntpd。ntpd根据配置文件的参数决定是要为其他服务器提供时钟服务或者是从其他服务器同步时钟。所有的配置都在/etc/ntp.conf文件中。

2、NTP客户端同步间隔

NTP服务会间隔多长时间想时钟服务器请求一次时钟同步呢?默认最小时间间隔为64s,默认最大时间间隔是1024s(17分钟左右)。64s是比较合理的,默认间隔也是可调的(Note that most device drivers will not operate properly if the poll interval is less than 64 s and that the broadcast server and manycast client associations will also use the default, unless overridden.)。

3、容忍误差范围

NTP服务并不是在任何情况下都会进行同步的。当时钟服务器时间和本地时间相差大于1000s时,NTP服务就会认为是人为调整了时钟或出现了硬件故障,例如CMOS电池损坏等。此时,NTP服务就会退出,需要人工(ntpdate …)进行时钟同步。

采用-g选项可以让ntpd忽略1000s或更大误差,设置时钟到server system time, 但是ntpd还是会因此退出。

4、层次(strata)

stratum根据上层server的层次而设定(+1)。

对于提供network time service provider的主机来说,stratum的设定要尽可能准确。

而作为局域网的time service provider,通常将stratum设置为10 (Stratum 10 is conventional for unsynchronized local clocks; it is high enough that nobody is likely to mistake it for a desirable clock to synchronize with.),如下:

server  127.127.1.0     # local clock
fudge   127.127.1.0     stratum 10
#stratum设置为其它值也是可以的,其范围为0~15

二、设置与启动

文件路径:/etc/ntp.conf

# 1. 先处理权限方面的问题,包括放行上层服务器以及开放局域网用户来源:
restrict default kod nomodify notrap nopeer noquery     <==拒绝 IPv4 的用户
restrict -6 default kod nomodify notrap nopeer noquery  <==拒绝 IPv6 的用户
restrict 220.130.158.71   <==放行 tock.stdtime.gov.tw 进入本 NTP 的服务器
restrict 59.124.196.83    <==放行 tick.stdtime.gov.tw 进入本 NTP 的服务器
restrict 59.124.196.84    <==放行 time.stdtime.gov.tw 进入本 NTP 的服务器
restrict 127.0.0.1        <==底下两个是默认值,放行本机来源
restrict -6 ::1
restrict 192.168.100.0 mask 255.255.255.0 nomodify <==放行局域网用户来源,或者列出单独IP

# 2. 设定主机来源,请先将原本的 [0|1|2].centos.pool.ntp.org 的设定批注掉:
server 220.130.158.71 prefer  <==以这部主机为最优先的server
server 59.124.196.83
server 59.124.196.84

# 3.默认的一个内部时钟数据,用在没有外部 NTP 服务器时,使用它为局域网用户提供服务:
# server 127.127.1.0 # local clock
# fudge 127.127.1.0 stratum 10

# 4.预设时间差异分析档案与暂不用到的 keys 等,不需要更动它:
driftfile /var/lib/ntp/drift
keys      /etc/ntp/keys

文件路径:/etc/sysconfig/ntpd

OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
SYNC_HWCLOCK=yes
# 将他改成 yes 吧!这样 BIOS 的时间也会跟着改变的!

启动:

/etc/init.d/ntpd start 或 /etc/init.d/ntpd restart

查看端口使用情况:

netstat -tlunp | grep ntp

Client单独用ntpdate更新时间:

ntpdate ntp_server_ip
其后可能需要hwclock -w (clock -w)写入BIOS timer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值