精华内容
下载资源
问答
  • ntpd

    千次阅读 2017-11-06 17:26:29
    如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。 #允许BIOS与系统时间同步,也可以通过...

    Linux的NTP配置总结

    转载


    2015-08-20 12:29 by 潇湘隐者, 55661 阅读, 6 评论, 收藏, 编辑

    在Linux系统中,为了避免主机时间因为在长时间运行下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务来同步不同机器的时间。NTP 是网络时间协议(Network Time Protocol)的简称,干嘛用的呢?就是通过网络协议使计算机之间的时间同步化。

     

    安装NTP包

    检查是否安装了ntp相关包。如果没有安装ntp相关包,使用rpm或yum安装,安装也非常简单方便。

    [root@localhost ~]#  rpm -qa | grep ntp
    ntpdate-4.2.6p5-1.el6.x86_64
    fontpackages-filesystem-1.41-1.1.el6.noarch
    ntp-4.2.6p5-1.el6.x86_64

     

    NTP的配置

     

    A: 配置/etc/ntp.conf

    NTP Server的主要配置文件为/etc/ntp.conf ,没有修改过的ntp.conf文件内容如下所示,配置选项都有相关注释信息(Linux 版本为Red Hat Enterprise Linux Server release 6.6 )

    [root@localhost ~]# more /etc/ntp.conf
    # For more information about this file, see the man pages
    # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
     
    driftfile /var/lib/ntp/drift
     
    # Permit time synchronization with our time source, but do not
    # permit the source to query or modify the service on this system.
    restrict default kod nomodify notrap nopeer noquery
    restrict -6 default kod nomodify notrap nopeer noquery
     
    # Permit all access over the loopback interface.  This could
    # be tightened as well, but to do so would effect some of
    # the administrative functions.
    restrict 127.0.0.1 
    restrict -6 ::1
     
    # Hosts on local network are less restricted.
    #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
     
    # Use public servers from the pool.ntp.org project.
    # Please consider joining the pool (http://www.pool.ntp.org/join.html).
    server 0.rhel.pool.ntp.org iburst
    server 1.rhel.pool.ntp.org iburst
    server 2.rhel.pool.ntp.org iburst
    server 3.rhel.pool.ntp.org iburst
     
     
    #broadcast 192.168.1.255 autokey        # broadcast server
    #broadcastclient                        # broadcast client
    #broadcast 224.0.1.1 autokey            # multicast server
    #multicastclient 224.0.1.1              # multicast client
    #manycastserver 239.255.254.254         # manycast server
    #manycastclient 239.255.254.254 autokey # manycast client
     
    # Enable public key cryptography.
    #crypto
     
    includefile /etc/ntp/crypto/pw
     
    # Key file containing the keys and key identifiers used when operating
    # with symmetric key cryptography. 
    keys /etc/ntp/keys
     
    # Specify the key identifiers which are trusted.
    #trustedkey 4 8 42
     
    # Specify the key identifier to use with the ntpdc utility.
    #requestkey 8
     
    # Specify the key identifier to use with the ntpq utility.
    #controlkey 8
     
    # Enable writing of statistics records.
    #statistics clockstats cryptostats loopstats peerstats

    各个选项信息:

    #系统时间与BIOS事件的偏差记录

    driftfile /etc/ntp/drift

     

    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地址的权限设置。

    1:设定NTP主机来源(其中prefer表示优先主机),192.168.7.49是本地的NTP服务器,所以优先指定从该主机同步时间。

    server 192.168.7.49 prefer 
     
    server 0.rhel.pool.ntp.org iburst
     
    server 1.rhel.pool.ntp.org iburst
     
    server 2.rhel.pool.ntp.org iburst
     
    server 3.rhel.pool.ntp.org iburst

    clip_image001

     

    2:限制你允许的这些服务器的访问类型,在这个例子中的服务器是不容许修改运行时配置或查询您的Linux NTP服务器

     

    restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap

    在上例中,掩码地址扩展为255,因此从192.168.0.1-192.168.0.254的服务器都可以使用我们的NTP服务器来同步时间

     

    #此时表示限制向从192.168.0.1-192.168.0.254这些IP段的服务器提供NTP服务。

    restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap noquery

     

    #设置默认策略为允许任何主机进行时间同步

    restrict default ignore

     

    3:确保localhost(这个常用的IP地址用来指Linux服务器本身)有足够权限.使用没有任何限制关键词的语法:

    restrict 127.0.0.1

    restrict -6 ::1

     

    B:配置/etc/ntp/stpe-tickers文件

    修改/etc/ntp/stpe-tickers文件,内容如下(当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对)

    [root@localhost ntp]# more /etc/ntp/step-tickers 
    # List of servers used for initial synchronization.
    [root@localhost ntp]# vi /etc/ntp/step-tickers 
    # List of servers used for initial synchronization.
    server 192.168.7.49 prefer
    server 0.rhel.pool.ntp.org
    server 1.rhel.pool.ntp.org 
    server 2.rhel.pool.ntp.org 
    server 3.rhel.pool.ntp.org 

    关于ntp.conf and step-tickers区别:

    step-tickers is used by ntpdate where as ntp.conf is the configuration file for the ntpd daemon. ntpdate is initially run to set the clock before ntpd to make sure time is within 1000 sec. ntp will not run if the time difference between the server and client by more then 1000 sec ( or there about). The start up script will read step-tickers for servers to be polled by ntpdate.

    C:配置/etc/sysconfig/ntpd文件

    ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。

    #允许BIOS与系统时间同步,也可以通过hwclock -w 命令

    SYNC_HWCLOCK=yes

     

    IPTABLES 配置

    由于NTP服务需要使用到UDP端口号123,所以当系统的防火墙(Iptables)启动的情况下,必须开放UDP端口号123。

    [root@localhost ~]#  /etc/init.d/iptables status
    Table: filter
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
     
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
     
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination         
     
    [root@localhost ~]# /sbin/iptables -I INPUT -p udp --dport 123 -j ACCEPT
    [root@localhost ~]#  /etc/init.d/iptables status
    Table: filter
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:123 
    2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    6    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
     
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
     
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination         
     
    [root@localhost ~]# 

    clip_image002

    如果防火墙没有开放UDP端口号123,有可能出现下面情况。

    [root@localhost ~]# /usr/sbin/ntpq -c rv | grep stratum

    stratum=16, precision=-24, rootdelay=0.000, rootdisp=3.525, refid=INIT,

    [root@localhost~]#

    A stratum level of 16 indicates that NTP is not synchronizing correctly.If a stratum level of 16 is detected, wait 15 minutes and issue the command again. It may take this long for the NTP server to stabilize.If NTP continues to detect a stratum level of 16, verify that the NTP port (UDP Port 123) is open on all firewalls between the cluster and the remote machine you are attempting to synchronize to.

     

    启动NTP服务

     

    [root@localhost ~]# service ntpd status
    ntpd is stopped
    [root@localhost ~]# service ntpd start
    Starting ntpd: [  OK  ]
    [root@localhost ~]# 
     
    service ntpd status      #查看ntpd服务状态
    service ntpd start           #启动ntpd服务
    service ntpd stop            #停止ntpd服务
    service ntpd restart         #重启ntpd服务

    检查ntp服务是否开机启动,将其设置为开机启动。

    [root@localhost ~]# chkconfig --list ntpd

    ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

    [root@localhost ~]# runlevel

    N 3

    [root@localhost ~]# chkconfig ntpd on #在运行级别2、3、4、5上设置为自动运行

    [root@localhost ~]# chkconfig --list ntpd

    ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    [root@localhost ~]#

    如果要设置在运行级别上自动运行,可以使用下面命令

    chkconfig --level 345 ntpd on

    可以用下面命令检测NTP服务是否运行

    [root@localhost ~]# pgrep ntpd 
    2639
    2641
    [root@localhost ~]# netstat -tlunp | grep ntp   #如果看到123端口,说明ntp服务成功启动。
    udp        0      0 192.168.7.224:123           0.0.0.0:*                               2639/ntpd           
    udp        0      0 127.0.0.1:123               0.0.0.0:*                               2639/ntpd           
    udp        0      0 0.0.0.0:123                 0.0.0.0:*                               2639/ntpd           
    udp        0      0 fe80::250:56ff:feb3:b5:123  :::*                                    2639/ntpd           
    udp        0      0 ::1:123                     :::*                                    2639/ntpd           
    udp        0      0 :::123                      :::*                                    2639/ntpd           
    [root@localhost ~]# 

    clip_image003

    查看ntp服务器有无和上层ntp连通

    [root@localhost ~]# ntpstat
    synchronised to NTP server (192.168.7.49) at stratum 6 
       time correct to within 440 ms
       polling server every 128 s
    [root@localhost ~]# 

    查看ntp服务器与上层ntp的状态

    [root@localhost ~]# ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
     192.168.7.49    192.168.7.50     5 u   13   64    3    5.853  1137178   2.696
    [root@localhost ~]# ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
     192.168.7.49    192.168.7.50     5 u   17   64    3    5.853  1137178   2.696
    [root@localhost ~]# ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
     192.168.7.49    192.168.7.50     5 u    1   64    1    0.937   -9.570   0.000

    clip_image004

    remote   - 本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先

    refid    - 参考上一层ntp主机地址

    st       - stratum阶层

    when     - 多少秒前曾经同步过时间

    poll     - 下次更新在多少秒后

    reach    - 已经向上层ntp服务器要求更新的次数

    delay    - 网络延迟

    offset   - 时间补偿

    jitter   - 系统时间与bios时间差

    要查看 ntpd 进程的状态,请运行以下命令,按 Ctrl+C 停止查看进程。

    clip_image005

    第一列中的字符指示源的质量。星号 ( * ) 表示该源是当前引用。

    remote 列出源的 IP 地址或主机名。

    when   指出从轮询源开始已过去的时间(秒)。

    poll   指出轮询间隔时间。该值会根据本地时钟的精度相应增加。

    reach  是一个八进制数字,指出源的可存取性。值 377 表示源已应答了前八个连续轮询。

    offset 是源时钟与本地时钟的时间差(毫秒)。

     

    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)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。

    展开全文
  • ntpd 网络时间守护程序 用法 将TZ变量更改为您的时区。 docker run -d \ --name=ntpd \ --restart=always \ --publish=123:123/udp \ --cap-add=SYS_TIME \ --memory 64M \ --cpu-quota "25000" \ -e TZ=...
  • ntpd离线安装所需资源

    2021-01-05 19:57:14
    ntpd离线安装所需资源
  • ntpd同步主机时间.zip

    2020-04-09 16:34:10
    ntpd同步时间rpm包
  • ntpd、ntpdate的区别 使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。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)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。


    ntp的移植

    (转者注)ntp下载地址: https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/

    1)  ./configure --prefix=YOUR_INSTALL_DIRECTORY--host=arm-linux
    2)  make
    3)  make install
    

    ntp的使用

    1. 在客户端上vi /etc/services 增加两行:
    ntp     123/tcp
    ntp     123/udp
    
    1. 如果客户端/etc目录下没有localtime文件,将服务器上/etc目录下的localtime文件复制到客户端的/etc目录下

    2. 打开时间服务器(假设其IP地址为192.168.1.11)上的ntp进程

    /etc/init.d/ntp start
    
    1. 客户端开始更新时间
    ntpdate 192.168.1.11
    

    注意:

    l 如果重启ntp守护进程后,开发板有可能无法立即更新时间,提示错误“no server suitable for synchronization found”,这是因为每次重启NTP服务器之后大约要3-5分钟客户端才能与服务器建立正常的通讯连接,等待一会儿再更新就可以了。

    l 有可能防火墙会阻碍更新时间,这时可以加上“-u”参数。


    ntp的配置

    这方面的文章网上有很多,讲的也很详细,主要就是修改/etc/ntp.conf文件,我稍作了修改,加了两行:

    server 210.72.145.44
    server cn.pool.ntp.org
    

    之后我就可以同步时间了,有人加了这么一行

    restrict 192.168.1.1 mask 255.255.255.0 nomodify
    

    我没有加,但依然成功(转者注:这一行的目的是配置是否为其他PC提供时间服务),看了下配置文件有这第一行

    restrict ::1
    

    可能这一行就包含那一行的意思吧!仅仅是猜测。下面给出一个样本加注释,仅供参考:

    # 1. 关于权限设定部分
    #   权限的设定主要以 restrict 这个参数来设定,主要的语法为:
    #   restrict IP mask netmask_IP parameter
    #   其中 IP 可以是软件地址,也可以是 default ,default 就类似 0.0.0.0
    #   至于 paramter 则有:
    #   ignore :关闭所有的 NTP 联机服务
    #   nomodify:表示 Client 端不能更改 Server 端的时间参数,不过,
    #   Client 端仍然可以透过 Server 端来进行网络校时。
    #   notrust :该 Client 除非通过认证,否则该 Client 来源将被视为不信任网域
    #   noquery :不提供 Client 端的时间查询
    #   notrap :不提供trap这个远程事件登入
    #  如果 paramter 完全没有设定,那就表示该 IP (或网域)“没有任何限制”

    restrict default nomodify notrap noquery # 关闭所有的 NTP 要求封包
    restrict 127.0.0.1    #这是允许本级查询
    restrict 192.168.0.1 mask 255.255.255.0 nomodify

    # 在192.168.0.1/24网段内的服务器就可以通过这台NTP Server进行时间同步了
    # 2. 上层主机的设定
    #  要设定上层主机主要以 server 这个参数来设定,语法为:
    #  server [IP|HOST Name] [prefer]
    #  Server 后面接的就是我们上层 Time Server 啰!而如果 Server 参数
    #  后面加上 perfer 的话,那表示我们的 NTP 主机主要以该部主机来作为
    #  时间校正的对应。另外,为了解决更新时间封包的传送延迟动作,
    #  所以可以使用 driftfile 来规定我们的主机
    #  在与 Time Server 沟通时所花费的时间,可以记录在 driftfile
    #  后面接的文件内,例如下面的范例中,我们的 NTP server 与
    #  cn.pool.ntp.org联机时所花费的时间会记录在 /etc/ntp/drift文件内

    server 0.pool.ntp.org
    server 1.pool.ntp.org
    server 2.pool.ntp.org
    server cn.pool.ntp.org prefer

    # 其他设置值,以系统默认值即可

    server 127.127.1.0 # localclock
    fudge 127.127.1.0 stratum 10
    driftfile /var/lib/ntp/drift
    broadcastdelay 0.008
    keys /etc/ntp/keys

    总结一下,restrict用来设置访问权限,server用来设置上层时间服务器,driftfile用来设置保存漂移时间的文件。


    不同机器之间的时间同步

    为了避免主机时间因为长期运作下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务器和ntp客户机。在网络中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。 同步时间,可以使用ntpdate命令,也可以使用ntpd服务。 使用ntpdate比较简单。格式如下:

    [root@linux ~]# ntpdate [-nv] [NTP IP/hostname]
    [root@linux ~]# ntpdate 192.168.0.2
    [root@linux ~]# ntpdate time.ntp.org
    

    但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。如果cpu tick有问题,只是治标不治本。所以,一般配合cron命令,来进行定期同步设置。比如,在crontab中添加:

    0 12 * * * */usr/sbin/ntpdate 192.168.0.1
    

    这样,会在每天的12点整,同步一次时间。ntp服务器为192.168.0.1。

    要注意的是,ntpd 有一个自我保护设置:如果本机与上源时间相差太大, ntpd 不运行. 所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ntpd服务。ntpd服务 运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小, 逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程.


    ntpd服务的设置

    ntpd服务的相关设置文件如下:

    1. /etc/ntp.conf:这个是NTP daemon的主要设文件,也是 NTP 唯一的设定文件。

    2. /usr /share/zoneinfo/:在这个目录下的文件其实是规定了各主要时区的时间设定文件,例如北京地区的时区设定文件在/usr/share/zoneinfo/Asia/Beijing 就是了。这个目录里面的文件与底下要谈的两个文件(clock 与localtime)是有关系的。

    3. /etc/sysconfig/clock:这个文件其实也不包含在NTP 的 daemon 当中,因为这个是 linux 的主要时区设定文件。每次开机后,Linux 会自动的读取这个文件来设定自己系统所默认要显示的时间。

    4. /etc /localtime:这个文件就是“本地端的时间配置文件”。刚刚那个clock 文件里面规定了使用的时间设置文件(ZONE) 为/usr/share/zoneinfo/Asia/Beijing ,所以说,这就是本地端的时间了,此时, Linux系统就会将Beijing那个文件另存为一份 /etc/localtime文件,所以未来我们的时间显示就会以Beijing那个时间设定文件为准。

    5. /etc/timezone:系统时区文件


    ntp服务的启动与观察

    在启动NTP服务前,先对提供服务的这台主机手动的校正一次时间咯。(因为启动服务器,端口会被服务端占用,就不能手动同步时间了)

    [root@linux ~] # ntpdate cn.pool.ntp.org
    25 Apr 14:33:51 ntpdate[8310]: step time server80.85.129.2 offset 6.655976 sec
    

    然后,启动ntpd服务:

    [root@linux ~] # /etc/init.d/ntp start/restart
    

    查看端口:

    [root@linux ~] # netstat -ln|grep 123
    udp    0   0 192.168.228.153:123    0.0.0.0:*
    udp    0   0 127.0.0.1:123       	0.0.0.0:*
    udp    0   0 0.0.0.0:123         	0.0.0.0:*
    udp    0   0 :::123           		:::*
    

    ntptrace

    [root@linux ~] # ntptrace –n 127.0.0.1
    127.0.0.1:stratum 11, offset 0.000000,synch distance0.950951
    222.73.214.125:stratum 2,offset –0.000787,synch distance0.108575
    209.81.9.7:stratum 1,offset 0.000028,synch distance0.00436,refid ‘GPS’
    

    # 这个指令可以列出目前NTP服务器(第一层)与上层NTP服务器(第二层)彼此之间的关系

    ntpq

    [root@linux ~] # ntpq –p
    

    指令“ntpq -p”可以列出目前我们的NTP与相关的上层NTP的状态,以上的几个字段的意义如下:

    remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由“+”则代表目前正在作用钟的上层NTP,如果是“*”则表示也有连上线,不过是作为次要联机的NTP主机。

    refid:参考的上一层NTP主机的地址

    st:即stratum阶层

    when:几秒前曾做过时间同步更新的操作

    poll:下次更新在几秒之后

    reach:已经向上层NTP服务器要求更新的次数

    delay:网络传输过程钟延迟的时间

    offset:时间补偿的结果

    jitter:Linux系统时间与BIOS硬件时间的差异时间


    系统时间与硬件时间同步

    ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。



    版权声明

    本文转自:https://developer.aliyun.com/article/5615

    展开全文
  • ntpd与ntpdate的区别

    万次阅读 2018-04-17 12:57:58
    之前配置ntpd的时候搜到一句话,印象很深刻,也觉得很有标题党的效果,就借鉴为标题了:“我认为有几种人是必须不招聘/裁掉的: 1 用ntpdate代替ntpd的人”但具体原因不太懂,总觉得还是用ntpdate比较方便。...

    之前配置ntpd的时候搜到一句话,印象很深刻,也觉得很有标题党的效果,就借鉴为标题了:

    “我认为有几种人是必须不招聘/裁掉的: 1 用ntpdate代替ntpd的人”但具体原因不太懂,总觉得还是用ntpdate比较方便。


    今天问了红帽技术支持,对方的解释是:

    ntpd在实际同步时间时是一点点的校准过来时间的,最终把时间慢慢的校正对。而ntpdate不会考虑其他程序是否会阵痛,直接调整时间。
    一个是校准时间,一个是调整时间。
    以下是一个形象的假设:
    linuxtone限制用户注册1小时才能发帖。
    数据库服务器在 10:00分接受了我的注册邀请;
    10:03分,ntpdate将数据库时间强行改成9:35分;
    然后10:05分(9:37分)我尝试发帖,系统判断我注册时间是否满一小时会使用:9:37 - 10:00
    最后电脑就逻辑混乱了。。。
    类似的帖子网上也有很详细的说明,贴出来给大家看看:
    时钟的跃变,有时候会导致很严重的问题。许多应用程序依赖连续的时钟??毕竟,这是一项常见的假定,即,取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。

    不幸的是,ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,这有几个非常明显的问题:


    第一,这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。


    第二,这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。


    第三,这样做不够优雅。由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。
    因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。

    NTPD 在和时间服务器的同步过程中,会把 BIOS 计时器的振荡频率偏差??或者说 Local Clock 的自然漂移(drift)??记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。


    ##############

    最后提醒一下使用vmware的各位,因为虚拟机的时钟不太正常,比正常速度慢好多秒,所以在虚拟机上测试ntpd很难得到理想的结果,我当年就是为这个问题耽搁了好几天。。



    Linux系统的NTP设置和同步:

    摘要:

    GMT/UTC/CST;

    /etc/localtime,/usr/share/zoneinfo/*时区文件,/etc/profile加TZ变量;

    硬件时间RTC,系统时间;date,hwclock,tzselect;

    ntp relay server;rpm –ivh  ntp-*;ntpdate 0.uk.pool.ntp.org ;ntpq –p,watch ntpq –p;

    /etc/ntp.conf;/etc/init.d/ntpd start;chkconfig --level 35 ntpd on;service ntpd status;

    设置NTP服务器不难但是NTP本身是一个很复杂的协议. 


    1. 时间和时区
    如果有人问你说现在几点? 你看了看表回答他说晚上8点了. 这样回答看上去没有什么问题,但是如果问你的这个人在欧洲的话那么你的回答就会让他很疑惑,因为他那里还太阳当空呢.
    这里就有产生了一个如何定义时间的问题. 因为在地球环绕太阳旋转的24个小时中,世界各地日出日落的时间是不一样的.所以我们才有划分时区(timezone) 的必要,也就是把全球划分成24个不同的时区. 所以我们可以把时间的定义理解为一个时间的值加上所在地的时区(注意这个所在地可以精确到城市)
    地理课上我们都学过格林威治时间(GMT), 它也就是0时区时间. 但是我们在计算机中经常看到的是UTC. 它是Coordinated Universal Time的简写. 虽然可以认为UTC和GMT的值相等(误差相当之小),但是UTC已经被认定为是国际标准,所以我们都应该遵守标准只使用UTC
    那么假如现在中国当地的时间是晚上8点的话,我们可以有下面两种表示方式
    20:00 CST 
    12:00 UTC

    这里的CST是Chinese Standard Time,也就是我们通常所说的北京时间了. 因为中国处在UTC+8时区,依次类推那么也就是12:00 UTC了.
    为什么要说这些呢?
    第一,不管通过任何渠道我们想要同步系统的时间,通常提供方只会给出UTC+0的时间值而不会提供时区(因为它不知道你在哪里).所以当我们设置系统时间的时候,设置好时区是首先要做的工作
    第二,很多国家都有夏令时(我记得小时候中国也实行过一次),那就是在一年当中的某一天时钟拨快一小时(比如从UTC+8一下变成UTC+9了),那么同理到时候还要再拨慢回来.如果我们设置了正确的时区,当需要改变时间的时候系统就会自动替我们调整
    现在我们就来看一下如何在Linux下设置时区,也就是time zone

    2. 如何设置Linux Time Zone
    在Linux下glibc提供了事先编译好的许多timezone文件, 他们就放在/usr/share/zoneinfo这个目录下,这里基本涵盖了大部分的国家和城市

    # ls -F /usr/share/zoneinfo/
    Africa/      Chile/   Factory    Iceland      Mexico/   posix/      Universal
    America/     CST6CDT GB         Indian/      Mideast/ posixrules US/
    Antarctica/ Cuba     GB-Eire    Iran         MST       PRC         UTC
    Arctic/      EET      GMT        iso3166.tab MST7MDT   PST8PDT     WET
    Asia/        Egypt    GMT0       Israel       Navajo    right/      W-SU
    Atlantic/    Eire     GMT-0      Jamaica      NZ        ROC         zone.tab
    Australia/   EST      GMT+0      Japan        NZ-CHAT   ROK         Zulu
    Brazil/      EST5EDT Greenwich Kwajalein    Pacific/ Singapore
    Canada/      Etc/     Hongkong   Libya        Poland    Turkey
    CET          Europe/ HST        MET          Portugal UCT

    在这里面我们就可以找到自己所在城市的time zone文件. 那么如果我们想查看对于每个time zone当前的时间我们可以用zdump命令

    # zdump Hongkong
    Hongkong Fri Jul 6 06:13:57 2007 HKT

    那么我们又怎么来告诉系统我们所在time zone是哪个呢? 方法有很多,这里举出两种
    第一个就是修改/etc/localtime这个文件,这个文件定义了我么所在的local time zone.
    我们可以在/usr/share/zoneinfo下找到我们的time zone文件然后拷贝去到/etc/localtimezone(或者做个symbolic link)
    假设我们现在的time zone是BST(也就是英国的夏令时间,UTC+1)

    # date
    Thu Jul 5 23:33:40 BST 2007我们想把time zone换成上海所在的时区就可以这么做

    # cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    # date
    Fri Jul 6 06:35:52 CST 2007这样时区就改过来了(注意时间也做了相应的调整)
    第二种方法也就设置TZ环境变量的值. 许多程序和命令都会用到这个变量的值. TZ的值可以有多种格式,最简单的设置方法就是使用tzselect命令

    tzselect
    ...

    You can make this change permanent for yourself by appending the line
    TZ='Asia/Hong_Kong'; (permission denied?) export TZ 
    to the file '.profile' in your home directory; then log out and log in again.

    TZ变量的值会override /etc/localtime. 也就是说当TZ变量没有定义的时候系统才使用/etc/localtime来确定time zone. 所以你想永久修改time zone的话那么可以把TZ变量的设置写入/etc/profile里

    3. Real Time Clock(RTC) and System Clock 
    说道设置时间这里还要明确另外一个概念就是在一台计算机上我们有两个时钟:一个称之为硬件时间时钟(RTC),还有一个称之为系统时钟(System Clock)
    硬件时钟是指嵌在主板上的特殊的电路, 它的存在就是平时我们关机之后还可以计算时间的原因
    系统时钟就是操作系统的kernel所用来计算时间的时钟. 它从1970年1月1日00:00:00 UTC时间到目前为止秒数总和的值 在Linux下系统时间在开机的时候会和硬件时间同步(synchronization),之后也就各自独立运行了 
    那么既然两个时钟独自运行,那么时间久了必然就会产生误差了,下面我们来看一个例子

    # date
    Fri Jul 6 00:27:13 BST 2007

    [root@rhe5 /]# hwclock --help
    hwclock - query and set the hardware clock (RTC)

    Usage: hwclock [function] [options...]

    Functions:
      --help        show this help
      --show        read hardware clock and print result
      --set         set the rtc to the time given with --date
      --hctosys     set the system time from the hardware clock
      --systohc     set the hardware clock to the current system time
      --adjust      adjust the rtc to account for systematic drift since
                    the clock was last set or adjusted
      --getepoch    print out the kernel's hardware clock epoch value
      --setepoch    set the kernel's hardware clock epoch value to the
                    value given with --epoch
      --version     print out the version of hwclock to stdout

    Options:
      --utc         the hardware clock is kept in coordinated universal time
      --localtime   the hardware clock is kept in local time
      --directisa   access the ISA bus directly instead of /dev/rtc
      --badyear     ignore rtc's year because the bios is broken
      --date        specifies the time to which to set the hardware clock
      --epoch=year  specifies the year which is the beginning of the
                    hardware clock's epoch value
      --noadjfile   do not access /etc/adjtime. Requires the use of
                    either --utc or --localtime

    # hwclock --show
    Fri 06 Jul 2007 12:27:17 AM BST -0.968931 seconds通过hwclock --show命令我们可以查看机器上的硬件时间(always in local time zone), 我们可以看到它和系统时间还是有一定的误差的, 那么我们就需要把他们同步
    # hwclock –hctosys  把硬件时间设置成系统时间

    # hwclock –systohc  把系统时间设置成硬件时间

    # hwclock --set --date="mm/dd/yy hh:mm:ss"   设置硬件时间我们可以开机的时候在BIOS里设定.也可以用hwclock命令

    # date -s "dd/mm/yyyy hh:mm:ss" 修改系统时间用date命令就最简单了

    现在我们知道了如何设置系统和硬件的时间. 但问题是如果这两个时间都不准确了怎么办? 那么我们就需要在互联网上找到一个可以提供我们准确时间的服务器然后通过一种协议来同步我们的系统时间,那么这个协议就是NTP了. 接下去我们所要说的同步就都是指系统时间和网络服务器之间的同步了

    4. 设置NTP Server前的准备
    其实这个标题应该改为设置"NTP Relay Server"前的准备更加合适. 因为不论我们的计算机配置多好运行时间久了都会产生误差,所以不足以给互联网上的其他服务器做NTP Server. 真正能够精确地测算时间的还是原子钟. 但由于原子钟十分的昂贵,只有少部分组织拥有, 他们连接到计算机之后就成了一台真正的NTP Server. 而我们所要做的就是连接到这些服务器上同步我们系统的时间,然后把我们自己的服务器做成NTP Relay Server再给互联网或者是局域网内的用户提供同步服务.

    1). 架设一个NTP Relay Server其实非常简单,我们先把需要的RPM包装上

    # rpm -ivh ntp-4.2.2p1-5.el5.rpm

    2).找到在互联网上给我们提供同步服务的NTP Server ,http://www.pool.ntp.org是NTP的官方网站,在这上面我们可以找到离我们城市最近的NTP Server. NTP建议我们为了保障时间的准确性,最少找两个个NTP Server
    那么比如在英国的话就可以选择下面两个服务器
    0.uk.pool.ntp.org
    1.uk.pool.ntp.org
    它的一般格式都是number.country.pool.ntp.org

    中国的ntp服务器地址:

    server 133.100.11.8 prefer
    server 210.72.145.44
    server 203.117.180.36
    server 131.107.1.10
    server time.asia.apple.com
    server 64.236.96.53
    server 130.149.17.21
    server 66.92.68.246
    server www.freebsd.org
    server 18.145.0.30
    server clock.via.net
    server 137.92.140.80
    server 133.100.9.2
    server 128.118.46.3
    server ntp.nasa.gov
    server 129.7.1.66
    server ntp-sop.inria.fr

    server (国家授时中心服务器IP地址)

    3).在打开NTP服务器之前先和这些服务器做一个同步,使得我们机器的时间尽量接近标准时间. 这里我们可以用ntpdate命令

    # ntpdate 0.uk.pool.ntp.org
    6 Jul 01:21:49 ntpdate[4528]: step time server 213.222.193.35 offset -38908.575181 sec
    # ntpdate 0.pool.ntp.org
    6 Jul 01:21:56 ntpdate[4530]: adjust time server 213.222.193.35 offset -0.000065 sec

    假如你的时间差的很离谱的话第一次会看到调整的幅度比较大,所以保险起见可以运行两次. 那么为什么在打开NTP服务之前先要手动运行同步呢?
    1. 因为根据NTP的设置,如果你的系统时间比正确时间要快的话那么NTP是不会帮你调整的,所以要么你把时间设置回去,要么先做一个手动同步
    2. 当你的时间设置和NTP服务器的时间相差很大的时候,NTP会花上较长一段时间进行调整.所以手动同步可以减少这段时间

    5. 配置和运行NTP Server
    现在我们就来创建NTP的配置文件了, 它就是/etc/ntp.conf. 我们只需要加入上面的NTP Server和一个driftfile就可以了

    # vi /etc/ntp.conf
    server 0.uk.pool.ntp.org
    server 1.uk.pool.ntp.org
    driftfile /var/lib/ntp/ntp.drift

    非常的简单. 接下来我们就启动NTP Server,并且设置其在开机后自动运行

    # /etc/init.d/ntpd start
    # chkconfig --level 35 ntpd on

    6. 查看NTP服务的运行状况 
    现在我们已经启动了NTP的服务,但是我们的系统时间到底和服务器同步了没有呢? 为此NTP提供了一个很好的查看工具: ntpq (NTP query)
    我建议大家在打开NTP服务器后就可以运行ntpq命令来监测服务器的运行.这里我们可以使用watch命令来查看一段时间内服务器各项数值的变化

    # watch ntpq -p
    Every 2.0s: ntpq -p                                  Sat Jul 7 00:41:45 2007
         remote           refid      st t when poll reach   delay   offset jitter
    ==============================================================================
    +193.60.199.75   193.62.22.98     2 u   52   64 377    8.578   10.203 289.032
    *mozart.musicbox 192.5.41.41      2 u   54   64 377   19.301 -60.218 292.411

    现在我就来解释一下其中的含义
    remote: 它指的就是本地机器所连接的远程NTP服务器
    refid: 它指的是给远程服务器(e.g. 193.60.199.75)提供时间同步的服务器
    st: 远程服务器的级别. 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16. 为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的.
    t: 这个.....我也不知道啥意思^_^
    when: 我个人把它理解为一个计时器用来告诉我们还有多久本地机器就需要和远程服务器进行一次时间同步
    poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小
    reach: 这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
    delay: 从本地机发送同步要求到服务器的round trip time
    offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近
    jitter: 这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小我们和服务器的时间就越精确
    那么大家细心的话就会发现两个问题: 第一我们连接的是0.uk.pool.ntp.org为什么和remote server不一样? 第二那个最前面的+和*都是什么意思呢?
    第一个问题不难理解,因为NTP提供给我们的是一个cluster server所以每次连接的得到的服务器都有可能是不一样.同样这也告诉我们了在指定NTP Server的时候应该使用hostname而不是IP
    第二个问题和第一个相关,既然有这么多的服务器就是为了在发生问题的时候其他的服务器还可以正常地给我们提供服务.那么如何知道这些服务器的状态呢? 这就是第一个记号会告诉我们的信息
    *
    它告诉我们远端的服务器已经被确认为我们的主NTP Server,我们系统的时间将由这台机器所提供
    +
    它将作为辅助的NTP Server和带有*号的服务器一起为我们提供同步服务. 当*号服务器不可用时它就可以接管
    -
    远程服务器被clustering algorithm认为是不合格的NTP Server
    x
    远程服务器不可用
    了解这些之后我们就可以实时监测我们系统的时间同步状况了

    7. NTP安全设置
    运行一个NTP Server不需要占用很多的系统资源,所以也不用专门配置独立的服务器,就可以给许多client提供时间同步服务, 但是一些基本的安全设置还是很有必要的
    那么这里一个很简单的思路就是第一我们只允许局域网内一部分的用户连接到我们的服务器. 第二个就是这些client不能修改我们服务器上的时间
    在/etc/ntp.conf文件中我们可以用restrict关键字来配置上面的要求
    首先我们对于默认的client拒绝所有的操作

    restrict default kod nomodify notrap nopeer noquery
    然后允许本机地址一切的操作

    restrict 127.0.0.1
    最后我们允许局域网内所有client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间

    restrict 192.168.1.0 mask 255.255.255.0 nomodify
    把这三条加入到/etc/ntp.conf中就完成了我们的简单配置. NTP还可以用key来做authenticaiton,这里就不详细介绍了

    8. NTP client的设置
    做到这里我们已经有了一台自己的Relay Server.如果我们想让局域网内的其他client都进行时间同步的话那么我们就都应该照样再搭建一台Relay Server,然后把所有的client都指向这两台服务器(注意不要把所有的client都指向Internet上的服务器). 只要在client的ntp.conf加上这你自己的服务器就可以了

    代码:
    server ntp1.leonard.com
    server ntp2.leonard.com
    9. 一些补充和拾遗
    1. 配置文件中的driftfile是什么?
    我们每一个system clock的频率都有小小的误差,这个就是为什么机器运行一段时间后会不精确. NTP会自动来监测我们时钟的误差值并予以调整.但问题是这是一个冗长的过程,所以它会把记录下来的误差先写入driftfile.这样即使你重新开机以后之前的计算结果也就不会丢失了
    2. 如何同步硬件时钟?
    NTP一般只会同步system clock. 但是如果我们也要同步RTC的话那么只需要把下面的选项打开就可以了

    可以通过ps –ef |grep ntp或者使用pgrep –lf ntp查看一下你的ntp服务是否启动了。然后可以通过snoop命令进行ntp的检测。
    Snoop |grep –i ntp进行检测。
    在建立好ntp服务以后,可以用2个工具命令对ntp服务进行管理。
    一个是ntpq是一个交互式应用命令,在它的下面有很多的子命令可以供大家使用.使用peers可以查看同步进程。如果还需要其他的命令可以输入help 进行查看。还有一个工具命令是ntpdate这个命令一般用于ntp的客户端使用。可以在/var/adm/messages中看到ntp的同步信息的情况。如果需要更加详细的ntpq和ntpdate的信息可以使用man帮助进行查询。


    展开全文
  • 虽然NTPD已经不再是CentOS缺省的时间同步软件,由于其长时间占据这个地位,还是将其作为网络时间同步搭建的工具之一来进行介绍。

    在这里插入图片描述
    虽然NTPD已经不再是CentOS缺省的时间同步软件,由于其长时间占据这个地位,还是将其作为网络时间同步搭建的工具之一来进行介绍。

    NTP基础知识

    基础知识请参看如下文章,此处不再赘述。

    事前准备

    用途IPOS版本
    NTP服务器192.168.163.131CentOS7.6
    NTP客户端192.168.163.132CentOS7.6
    [root@host131 ~]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core) 
    [root@host131 ~]#
    

    安装准备

    安装命令:yum install -y ntp
    注:包含了ntp和ntpdate,在本文的示例中客户端和服务器端均采用同样的安装包

    [root@host131 ~]# rpm -qa |grep ntp
    ntp-4.2.6p5-28.el7.centos.x86_64
    ntpdate-4.2.6p5-28.el7.centos.x86_64
    [root@host131 ~]# ntpd --version
    ntpd 4.2.6p5
    
    exit 0
    [root@host131 ~]# 
    

    端口开放:如果有防火墙的话,需要注意ntpd的服务是使用UDP方式在123端口进行服务。要么关闭,要么加入规则对端口放行。
    firewall设定:
    firewall-cmd --add-service=ntp --permanent
    firewall-cmd --reload

    安装设定

    设定文件:/etc/ntp.conf

    设定文件ntp.conf是ntpd服务的重中之重,设定格式如下所示:

    设定格式:
    设定指令 指令参数

    设定指令:server

    使用介绍:
    使用 server ip或者server hostname方式进行设定
    设定例:server 192.168.163.131
    设定例:server host131

    参数介绍:prefer
    perfer参数用于设置优先使用的NTP服务器
    设定例:
    server 192.168.163.131 prefer
    server 192.168.163.132
    设定说明:默认使用192.168.163.131进行同步,192.168.163.132为备用NTP服务器

    参数介绍:burst
    当NTP服务器可用时,向其发送一些列并发包进行检测
    设定例:server 192.168.163.131 burst

    参数介绍:iburst
    当NTP服务器不可用时,向其发送一些列并发包进行检测
    设定例:server 192.168.163.131 iburst

    设定指令:fudge

    说明:fudge英文含义具有“欺骗”的意思。这条指令必须紧跟server指令,为server指令提供附加信息。
    使用示例:
    server 127.127.1.0
    fudge 127.127.1.0 stratum 5
    场景说明:指定本地时钟的层为5,在无法取到外部服务的时候使用本地时钟,在无法连接外网的局域网环境中运用较多。此时一般将其他的server设定全部删除或注释即可。

    设定指令:logfile

    参数介绍:日志的FULL PATH
    说明:默认情况下,NTP服务器的日志保存在/var/log/messages中,但也可自行指定
    使用例:logfile /var/log/ntpd.log

    设定指令:driftfile

    参数说明:/var/lib/ntp/drift
    说明:根据实际时间计算出服务器增减时间的比率,通过指定文件进行记录,调整时间时会根据此文件进行补偿。此指令一般无需修改

    设定指令:restrict

    使用介绍
    restrict [地址] mask [子网掩码] [参数]

    参数说明:ignore
    说明: 拒绝所有类型的NTP连接

    参数说明:nomodify
    说明: 客户端无法修改服务器端时间

    参数说明:noquery
    说明: 客户端无法查询服务器端时间

    参数说明:notrap
    说明: 不提供远程日志功能

    参数说明:notrust
    说明: 不允许接入没有认证的客户端

    参数说明:nopeer
    说明: 不允许和同一层的其他服务器进行时间同步

    使用示例:
    restrict 192.168.163.131 mask 255.255.255.0 nomodify notrap
    说明:这也是缺省的ntp.conf被注释的使用例,允许192.168.163.*的机器进行连接,但是不允许修改主机时间,不提供远程日志功能

    设定文件:/etc/ntp/step-tickers

    用于记录使用ntpdate同步时间时用到的NTP服务器信息

    [root@host131 ~]# cat /etc/ntp/step-tickers
    # List of NTP servers used by the ntpdate service.
    
    0.centos.pool.ntp.org
    [root@host131 ~]# 
    

    设定示例(服务器侧)

    在本文中,进行最小的修改启动ntpd,场景为无法连接外网的NTP服务器和NTP客户端。承担NTP服务器的host131通过server和fudge指令进行设定。内容的修改仅限于如下三点:

    • restrict的IP修改
    • 外网的NTP源注释掉
    • 加入支持本地时钟的server与fudge
    [root@host131 ~]# cp /etc/ntp.conf /etc/ntp.conf.org
    [root@host131 ~]# vi /etc/ntp.conf
    [root@host131 ~]# diff /etc/ntp.conf /etc/ntp.conf.org 
    17c17
    < restrict 192.168.163.0 mask 255.255.255.0 nomodify notrap
    ---
    > #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    21,27c21,24
    < #server 0.centos.pool.ntp.org iburst
    < #server 1.centos.pool.ntp.org iburst
    < #server 2.centos.pool.ntp.org iburst
    < #server 3.centos.pool.ntp.org iburst
    < 
    < server 127.127.1.0
    < fudge  127.127.1.0 stratum 5
    ---
    > server 0.centos.pool.ntp.org iburst
    > server 1.centos.pool.ntp.org iburst
    > server 2.centos.pool.ntp.org iburst
    > server 3.centos.pool.ntp.org iburst
    [root@host131 ~]# 
    

    启动ntpd服务

    [root@host131 ~]# systemctl start ntpd
    [root@host131 ~]# 
    

    结果确认

    [root@host131 ~]# systemctl status ntpd
    ● ntpd.service - Network Time Service
       Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
       Active: active (running) since Thu 2019-02-14 22:59:15 EST; 10s ago
      Process: 11775 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
     Main PID: 11776 (ntpd)
       CGroup: /system.slice/ntpd.service
               └─11776 /usr/sbin/ntpd -u ntp:ntp -g
    
    Feb 14 22:59:15 host131 ntpd[11776]: Listen and drop on 1 v6wildcard :: UDP 123
    Feb 14 22:59:15 host131 ntpd[11776]: Listen normally on 2 lo 127.0.0.1 UDP 123
    Feb 14 22:59:15 host131 ntpd[11776]: Listen normally on 3 enp0s3 192.168.163.131 UDP 123
    Feb 14 22:59:15 host131 ntpd[11776]: Listen normally on 4 lo ::1 UDP 123
    Feb 14 22:59:15 host131 ntpd[11776]: Listen normally on 5 enp0s3 fe80::853e:84d1:5e1:6303 UDP 123
    Feb 14 22:59:15 host131 ntpd[11776]: Listening on routing socket on fd #22 for interface updates
    Feb 14 22:59:15 host131 ntpd[11776]: 0.0.0.0 c016 06 restart
    Feb 14 22:59:15 host131 ntpd[11776]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
    Feb 14 22:59:15 host131 ntpd[11776]: 0.0.0.0 c011 01 freq_not_set
    Feb 14 22:59:16 host131 ntpd[11776]: 0.0.0.0 c514 04 freq_mode
    [root@host131 ~]#
    

    添加到自启动列表

    [root@host131 ~]# systemctl enable ntpd
    Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
    [root@host131 ~]#
    

    结果确认

    使用ntpq进行结果确认,可以看到确实是本地同步(LOCAL),同时stratum也被设定为5。 因为是本地,所以offset也都是0。

    [root@host131 ~]# ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    *LOCAL(0)        .LOCL.           5 l   41   64    7    0.000    0.000   0.000
    [root@host131 ~]#
    

    设定示例(客户端)

    客户端的时间同步一般来说有两种方式:
    *方式1: 结合crontab的定时任务,使用ntpdate连接NTP服务器进行时间同步
    *方式2: 设定ntpd,将server设定为内网的NTP服务器,可自动同步

    此处采用方式2进行设定。

    事前准备

    安装命令:yum install -y ntp
    注:包含了ntp和ntpdate,在本文的示例中客户端和服务器端均采用同样的安装包

    [root@host131 ~]# rpm -qa |grep ntp
    ntp-4.2.6p5-28.el7.centos.x86_64
    ntpdate-4.2.6p5-28.el7.centos.x86_64
    [root@host131 ~]# ntpd --version
    ntpd 4.2.6p5
    
    exit 0
    [root@host131 ~]# 
    

    设定文件修改

    修改内容如下:

    [root@host132 ~]# cp /etc/ntp.conf /etc/ntp.conf.org
    [root@host132 ~]# vi /etc/ntp.conf
    [root@host132 ~]# diff /etc/ntp.conf /etc/ntp.conf.org 
    21,25c21,24
    < #server 0.centos.pool.ntp.org iburst
    < #server 1.centos.pool.ntp.org iburst
    < #server 2.centos.pool.ntp.org iburst
    < #server 3.centos.pool.ntp.org iburst
    < server 192.168.163.131
    ---
    > server 0.centos.pool.ntp.org iburst
    > server 1.centos.pool.ntp.org iburst
    > server 2.centos.pool.ntp.org iburst
    > server 3.centos.pool.ntp.org iburst
    [root@host132 ~]#
    

    启动并确认ntpd服务

    [root@host132 ~]# systemctl start ntpd
    [root@host132 ~]# systemctl status ntpd
    ● ntpd.service - Network Time Service
       Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
       Active: active (running) since Thu 2019-02-14 23:15:13 EST; 5s ago
      Process: 11592 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
     Main PID: 11593 (ntpd)
       CGroup: /system.slice/ntpd.service
               └─11593 /usr/sbin/ntpd -u ntp:ntp -g
    
    Feb 14 23:15:13 host132 ntpd[11593]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
    Feb 14 23:15:13 host132 ntpd[11593]: Listen and drop on 1 v6wildcard :: UDP 123
    Feb 14 23:15:13 host132 ntpd[11593]: Listen normally on 2 lo 127.0.0.1 UDP 123
    Feb 14 23:15:13 host132 ntpd[11593]: Listen normally on 3 enp0s3 192.168.163.132 UDP 123
    Feb 14 23:15:13 host132 ntpd[11593]: Listen normally on 4 lo ::1 UDP 123
    Feb 14 23:15:13 host132 ntpd[11593]: Listen normally on 5 enp0s3 fe80::310b:d919:625d:a6f4 UDP 123
    Feb 14 23:15:13 host132 ntpd[11593]: Listening on routing socket on fd #22 for interface updates
    Feb 14 23:15:13 host132 ntpd[11593]: 0.0.0.0 c016 06 restart
    Feb 14 23:15:13 host132 ntpd[11593]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
    Feb 14 23:15:13 host132 ntpd[11593]: 0.0.0.0 c011 01 freq_not_set
    [root@host132 ~]#
    

    确认同步信息

    使用ntpq命令,可以看到连接的NTP服务器为192.168.163.131

    [root@host132 ~]# ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
     host131         .INIT.          16 u    -   64    0    0.000    0.000   0.000
    [root@host132 ~]# 
    

    但是继续确认,发现其实时间并未同步, 原因在于本机时间比host131更新。按照ntp的机制,这种情况是不会同步的。

    [root@host132 ~]# date; ssh host131 date
    Thu Feb 14 23:20:04 EST 2019
    Thu Feb 14 23:19:36 EST 2019
    [root@host132 ~]#
    

    手动使用ntpdate进行时间同步,收到如下错误提示:

    [root@host132 ~]# ntpdate host131
    14 Feb 23:21:39 ntpdate[11723]: the NTP socket is in use, exiting
    [root@host132 ~]#
    

    这也是相较于chrony被诟病的原因之一,这里先停下服务,然后再进行手动时间同步。

    [root@host132 ~]# systemctl stop ntpd
    [root@host132 ~]# ntpdate host131
    14 Feb 23:26:05 ntpdate[11804]: step time server 192.168.163.131 offset -28.203650 sec
    [root@host132 ~]#
    

    再次重启,然后使用ntpd进行确认

    [root@host132 ~]# ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
     host131         LOCAL(0)         6 u   13   64    1    0.384   -0.006   0.000
    [root@host132 ~]#
    

    注意:offset是显示时间同步效果的重要标尺,单位为毫秒,需要多多观测。

    再次确认两台机器的时间信息,发现同步的比较不错

    [root@host132 ~]# date; ssh host131 date
    Thu Feb 14 23:36:37 EST 2019
    Thu Feb 14 23:36:37 EST 2019
    [root@host132 ~]# 
    

    常见问题

    现象: no server suitable for synchronization found
    可能原因:检查NTP服务器和NTP客户端两侧的firewalld是否正确设定,只是验证原因的情况下可以先systemctl stop firewalld将其关闭。

    参考文章

    http://doc.ntp.org/

    展开全文
  • 一、文档说明 系统为麒麟v10sp1-arm-0711(源自open...左边使用systemctl status ntpd,查看ntpd状态;右边使用 systemctl status chronyd,查看chronyd状态。 2.2 查看服务配置 使用systemctl status ntpd查看,ntp
  • 详解NTPD工作原理

    千次阅读 2019-01-31 12:48:19
    ntpd 是一个操作系统Daemon进程,用于校正本地系统与Internet标准时钟源之间的时间。ntpd 完整的实现了 NTP 协议版本v4,但是同时兼容版本v3(RFC-1305)、版本v1与v2(分别由RFC-1059, RFC-1119定义)。ntpd ...
  • 要注意的是,ntpd有一个自我保护设置: 如果本机与上源时间相差太大, ntpd不运行. 所以新设置的时间服务器一定要先ntpdate从上源取得时间初值, 然后启动ntpd服务。ntpd服务运行后, 先是每64秒与上源服务器同步一...
  • /etc/sysconfig/ntpd /etc/sysconfig/ ntpd.bak cp /etc/sysconfig/ntpdate /etc/sysconfig/ ntpdate.bak 4 .卸载旧的NTPD yum erase ntp ntpdate 5.创建/var/lib/ ntp目录 install -v -m710 -o ntp -g ntp -...
  • CentOS_时间同步,ntpd、ntpdate

    千次阅读 2019-05-15 13:57:53
    要注意的是,ntpd有一个自我保护设置: 如果本机与上源时间相差太大, ntpd不运行. 所以新设置的时间服务器一定要先ntpdate从上源取得时间初值, 然后启动ntpd服务。ntpd服务运行后, 先是每64秒与上源服务器同步一次, ...
  • ntpd服务状态及日志查询方式 1.检查服务器时间同步运行状态和ntpd服务运行情况 ntpd服务监听upd 123端口 netstat -anp | grep udp 1-2.检查服务器NTP状态 ntpstat 1-3、检查端口监听正常后,继续查询ntpd的运行日志...
  • 配置ntpd时钟同步服务

    千次阅读 2017-03-03 19:44:57
    ntpd时钟同步服务目录参考:CentOS配置时间同步NTP: http://www.crsay.com/wiki/wiki.php/server/centos/ntp-set解决ntp的错误 no server suitable for synchronization found: ...
  • ntpd 和ntpdate的区别 以及系统时间 硬件时间 及时间同步 crontab –e 1.首先crontab 命令 介绍 1.crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令 2.该命令从标准输入设备读取指令,并...
  • 38646/ntpd udp 0 0 172.16.141.22:123 0.0.0.0:* 38646/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 38646/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 38646/ntpd udp6 0 0 fe80::5e25:a384:b8c:123 :::* 38646/ntpd udp6 0 0 ...
  • [root@master04 ~]# systemctl status ntpd -l ● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled) Active: active (running) ...
  • CVE-2016-7434 ntpd DOS攻击 Ntpd具有空指针引用,该引用可能触发崩溃的应用程序。 根据NTP.org的说法,“如果将ntpd配置为允许来自发送精心制作的恶意数据包的服务器的mrulist查询请求,则ntpd会在收到该精心制作...
  • 要注意的是,ntpd有一个自我保护设置: 如果本机与上源时间相差太大, ntpd不运行. 所以新设置的时间服务器一定要先ntpdate从上源取得时间初值, 然后启动ntpd服务。ntpd服务运行后, 先是每64秒与上源服务器同步一次, ...
  • busybox-ntpd启动方式busybox-ntpd简单介绍参数含义 busybox-ntpd简单介绍 最近在学习中需要在Linux上启动ntpd服务来实行时间同步,ntpd 是一个操作系统Daemon进程,用于校正本地系统与Internet标准时钟源之间的时间...
  • 该方式首先在局域网内建立一个内部的时钟同步服务器,所有其它服务器作为ntpd客户端向这台时钟同步服务器做同步,然后再由这台时钟同步服务器向客户提供的时钟源服务器以ntpd方式做同步。 这样有两个好处:一是减小...
  • busybox 中的ntpd使用 一、时区 1. 查看当前时区 date -R 2. 修改设置时区,从asia.pool.ntp.org获取时间 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ntpd -p asia.pool.ntp.org -qNn hwclock –w...
  • 如何在CENTOS 7上安装NTPD

    千次阅读 2020-01-06 12:52:22
    NTPd是一个守护程序,用于与其他NTP服务器同步维护系统时间。这样可以防止漂移,因为漂移是计算机内部时钟上缓慢的时间不一致。对于系统日志,复制和应用程序而言,保持系统时间准确度尤其重要。 安装NTPD 首先...
  • [root@hadoop102 lizhi]# systemctl status ntpdntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled) Active: inactive (dead) ...
  • Centos7给ntpd服务指定日志文件

    千次阅读 2018-06-04 18:38:30
    Centos7给ntpd服务指定日志文件 有一次服务器的上ntpd服务莫名关闭,为了弄清楚原因,我查看了ntpd服务的日志。但是ntpd服务默认没有专用的日志文件,而是直接写入系统日志文件/var/log/messages。这样我查看起来很...
  • # chkconfig ntpd on 5)启动或停止时间服务 # service ntpd start # service ntpd stop # service ntpd restart 6)验证ntp服务已经运行 # pgrep ntpd ---------------------------------...
  • ntpd - Network Time Protocol (NTP) daemon

    千次阅读 2018-05-14 15:31:38
    ntpd [ -aAbdgLmNPqx ] [ -c  conffile  ] [ -f  driftfile  ] [ -g ] [ -k  keyfile  ] [ -l  logfile  ] [ -N high ] [ -p  pidfile  ] [ -r  broadcastdelay  ] [ -s  statsdir  ] [ -t  key  ] ...
  • 发掘和利用ntpd漏洞

    2018-03-08 10:54:26
    cssembly · 2015/01/05 9:030x00 背景这是发表在Project Zero中的一篇文章,讲述了CVE-2014-9295 ntpd漏洞的发掘与利用原文链接如下:...作者Stephen Röttger, Time Lord。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,682
精华内容 7,472
关键字:

ntpd