ntp服务器简单部署

本文涉及的产品
云防火墙,500元 1000GB
简介:

本文大纲
一、简介
二、环境说明及配置
三、测试
四、常见问题解决
###############
一、简介
        NTP 服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精 准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
1、特性
        NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上 获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratum(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取 时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相 互连接,而Stratum-1的时间服务器是整个系统的基础。
        计算机主机一般同多个时间服务器连接, 利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。
       为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。
2、网络校对
    时间服务器可以利用以下三种方式与其他服务器对时:
    broadcast/multicast
    client/server
    symmetric
        broadcast/multicast 方式主要适用于局域网的环境,时间服务器周期性的以广播的方式,将时间信息传送给其他网路中的时间服务器,其时间仅会有少许的延迟,而且配置非常的简单。 但是此方式的精确度并不高,对时间精确度要求不是很高的情况下可以采用。
        symmetric的方式得一台服务器可以从远端时间服务器获取时钟,如果需要也可提供时间信息给远端的时间服务器。此一方式适用于配置冗余的时间服务器,可以提供更高的精确度给主机。
        client/server方式与symmetric方式比较相似,只是不提供给其他时间服务器时间信息,此方式适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层的用户。
        上 述三种方式,时间信息的传输都使用UDP协议。每一个时间包内包含最近一次的事件的时间信息、包括上次事件的发送与接收时间、传递现在事件的当地时间、及 此包的接收时间。在收到上述包后即可计算出时间的偏差量与传递资料的时间延迟。时间服务器利用一个过滤演算法,及先前八个校时资料计算出时间参考值,判断 后续校时包的精确性,一个相对较高的离散程度,表示一个对时资料的可信度比较低。仅从一个时间服务器获得校时信息,不能校正通讯过程所造成的时间偏差,而 同时与许多时间服务器通信校时,就可利用过滤算法找出相对较可靠的时间来源,然后采用它的时间来校时。
注:以上简介来自于百科。

二、环境说明及配置
    1、本地服务器环境

1
2
3
4
5
6
7
8
9
10
11
[root@essun ~] # cat /etc/redhat-release 
CentOS release 6.5 (Final) 
#kernel version  
[root@essun ~] # uname -r
2.6.32-431.el6.x86_64
#memory
[root@essun ~] # free -m
              total       used        free      shared    buffers     cached
Mem:         15940      10857       5082          0        481       8615
-/+ buffers /cache :       1760      14179
Swap:         2047          0       2047

 2、安装ntp服务

1
2
3
4
5
6
7
8
9
10
11
12
[root@essun ~] # yum install -y ntp   
[root@essun ~] # rpm -ql ntp |grep ntp |head -10
/etc/dhcp/dhclient .d /ntp .sh
/etc/ntp .conf    #ntp配置文件
/etc/ntp/crypto 
/etc/ntp/crypto/pw
/etc/rc .d /init .d /ntpd   #ntp服务启动文件
/etc/sysconfig/ntpd     #ntp参数配置文件
/usr/bin/ntpstat        #查看ntp服务状态文件
/usr/sbin/ntp-keygen
/usr/sbin/ntpd
/usr/sbin/ntpdc

3、配置ntp服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@essun ~] # vim /etc/ntp.conf 
#这里有默认的配置文件模板及各项参数简要说明,可以自行选择使用或自己编写。
#以下是我的配置文件内容
ftfile  /var/lib/ntp/driftrestrict 
default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery #针对ipv6设置
  
# 允许本地所有操作
restrict 127.0.0.1
restrict -6 ::1
  
# 允许172.16.0.0网段
restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap
  
#服务器列表
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
  
#加密及key文件
includefile  /etc/ntp/crypto/pw
keys  /etc/ntp/keys
  
# 如果无法与上层ntp server通信以本地时间为标准时间
server 127.127.1.0
fudge 127.127.1.0 stratum 8

参数说明:
        1)、 driftfile(ftfile) 文件名 
            侦测BIOS时钟与Linux系统时间的差异写入次文件,记录在driftfile参数后面的文件内。
        注意:  driftfile 后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd守护进程可以写入。
        2)、权限的设定主要以 restrict 这个参数来设定,主要的语法为:
            restrict IP地址 mask 子网掩码 参数
            其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
            参数有以下几个:
                ignore :关闭所有的 NTP 联机服务
                nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
                notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
                noquery :不提供客户端的时间查询 
                notrap:  不提供trap远程事件登录的功能
                kod:kod技术可以组织一种dos攻击
        3)、用server这个参数设定上级时间服务器,语法为:
            server  IP地址或域名 [prefer]
            IP地址或域名就是我们指定的上级时间服务器,如果 Server 参数最后加上 prefer,表示我们的 NTP 服务器主要以该部主机时间进行校准。

三、测试
    1、启动服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@essun ~] # service ntpd start
[root@essun ~] # /usr/bin/ntpstat 
synchronised to NTP server (202.112.29.82) at stratum 3    
time  correct to within 37 ms   
polling server every 1024 s
[root@essun ~] # netstat -an |grep 123
udp        0      0 172.16.5.100:123            0.0.0.0:*                               
udp        0      0 114.112.175.211: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:*
#查看何时ntp server完成了和自身同步的过程
[root@essun ~] # watch ntpq -p 
Every 2.0s: ntpq -p                                     Sat Oct 25 17:52:31 2014
  
      remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+dns2.synet.edu. 202.118.1.46     2 u   92 1024  377   82.340    2.289   0.318
  dns.sjtu.edu.cn .INIT.          16 u    - 1024    0    0.000    0.000   0.000
*dns1.synet.edu. 223.255.185.2    2 u  375 1024  377   83.362    2.974   0.184
  LOCAL(0)        .LOCL.           8 l   12   64  377    0.000    0.000   0.000

 注意LOCAL的这个就是与自身同步的ntp server。
注意reach这个值,在启动ntp server服务后,这个值就从0开始不断增加,当增加到17的时候,从0到17是5次的变更,每一次是poll的值的秒数,是64秒*5=320秒的时间。
如果之后从ntp客户端同步ntp server还失败的话,用ntpdate –d来查询详细错误信息,再做判断。
    2、客户端同步
      启动服务之后要等几分钟或者十几分钟后就可以实现时间同步了。
      客户端同步命令       

1
2
[root@essun ~] # ntpdate 172.16.5.100
25 Oct 17:59:55 ntpdate[30434]: adjust  time  server 172.16.5.100 offset -0.001452 sec

四、常见问题解决
    1、Server dropped: Strata too high    
        在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。
        在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。
这是因为NTP server还没有和其自身或者它的server同步上,在服务端运行watch ntpd -p即可以查看到自身的同步情况,等同步完成后,客户再同步就可以了。
    2、Server dropped: no data
     从客户端执行netdate –d时有错误信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@essun ~] # ntpdate -d 172.16.5.100                                         25 Oct 18:48:25 ntpdate[2214]: ntpdate 4.2.6p5@1.2349-o Sat Nov 23 18:21:48 UTC 2013 (1)
Looking  for  host 172.16.5.100 and service ntp
host found : bogon
transmit(172.16.5.100)
transmit(172.16.5.100)
transmit(172.16.5.100)
transmit(172.16.5.100)
transmit(172.16.5.100)
172.16.5.100: Server dropped: no data
server 172.16.5.100, port 123
stratum 0, precision 0, leap 00, trust 000
refid [172.16.5.100], delay 0.00000, dispersion 64.00000
transmitted 4,  in  filter 4
reference  time :    00000000.00000000  Mon, Jan  1 1900  8:05:57.000
originate timestamp: 00000000.00000000  Mon, Jan  1 1900  8:05:57.000
transmit timestamp:  d7f5fe7d.038d2774  Sat, Oct 25 2014 18:48:29.013
filter delay:  0.00000  0.00000  0.00000  0.00000 
          0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
          0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
 
25 Oct 18:48:30 ntpdate[2214]: no server suitable  for  synchronization 
found

出现这个问题的原因可能有两个:
    a、检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。
使用以下命令检查ntp的版本:

1
2
[root@essun ~] # ntpq -v 
ntpq - standard NTP query program - Ver. 4.2.4p8

   解决办法:
            把notrust去掉
    b、检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口或是由于跨网段导致网络不通
     解决办法:
        如果是防火墙是原因,可以将防火墙暂时关闭,再次尝试同步时间,如果成功,修改防火墙规则即可。    
        如果由于不在同一网段,那么只要添加默认的路由即可。    










本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1567948,如需转载请自行联系原作者
目录
相关文章
|
21天前
|
弹性计算 监控 负载均衡
|
1月前
|
监控 安全 Linux
RHEL 环境下 Subversion 服务器部署与配置
【10月更文挑战第18天】在RHEL环境下部署Subversion服务器需依次完成安装Subversion、创建版本库、配置服务器、启动服务、客户端连接及备份维护等步骤。确保遵循安全最佳实践,保障数据安全。
|
15天前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
125 60
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
223 62
|
22天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
1月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
268 3
|
1月前
|
NoSQL Linux PHP
|
1月前
|
弹性计算 数据库连接 Nacos
阿里云ECS服务器在docker中部署nacos
docker pull nacos 失败,docker部署nacos遇到的问题,nacos数据库连接,nacos端口映射
105 1
|
1月前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
65 1
下一篇
无影云桌面