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,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
中间件 Java 应用服务中间件
Windows部署web应用服务器Jboss中间件
如何在Windows系统上部署JBoss 7.1作为Web应用服务器,包括配置环境变量、自动部署WAR包、访问JBoss控制台、设置管理员账户以及修改端口和绑定地址等操作。
68 1
|
1月前
|
JavaScript 前端开发 应用服务中间件
【Vue面试题三十】、vue项目本地开发完成后部署到服务器后报404是什么原因呢?
这篇文章分析了Vue项目在服务器部署后出现404错误的原因,主要是由于history路由模式下服务器缺少对单页应用的支持,并提供了通过修改nginx配置使用`try_files`指令重定向所有请求到`index.html`的解决方案。
【Vue面试题三十】、vue项目本地开发完成后部署到服务器后报404是什么原因呢?
|
1月前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
65 0
|
25天前
|
网络协议 网络安全
基于bind软件部署DNS服务器
关于如何使用bind软件部署DNS服务器的教程,包括DNS服务器的类型、基于bind软件的部署步骤、验证DNS服务器可用性的指导,以及如何进行DNS正向解析的实现。
25 2
基于bind软件部署DNS服务器
|
8天前
|
监控 JavaScript Java
部署应用程序到服务器
部署应用程序到服务器
23 3
|
26天前
|
存储 关系型数据库 MySQL
使用Docker快速部署Mysql服务器
本文介绍了如何使用Docker快速部署MySQL服务器,包括下载官方MySQL镜像、启动容器、设置密码、连接MySQL服务器以及注意事项。
127 18
|
16天前
|
网络安全
构建 NTP 时间服务器
构建 NTP 时间服务器
39 2
|
1月前
|
应用服务中间件 Docker 容器
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
这篇文章介绍了在Docker中安装Tomcat的过程,包括搜索Tomcat镜像、拉取镜像、目录挂载的准备、创建并挂载容器,以及如何进入容器和进行测试。文中还说明了如何将WAR包部署到Tomcat服务器并访问部署的应用。
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
|
1天前
|
JavaScript Linux 开发工具
如何将nodejs项目程序部署到阿里云服务器上
该文章详细描述了将Node.js项目部署到阿里云服务器的步骤,包括服务器环境配置、项目上传及使用PM2进行服务管理的过程。
|
8天前
|
Ubuntu 开发工具 git
在Ubuntu上部署BOA服务器的步骤
部署BOA服务器是一个涉及多个步骤的过程,包括系统更新、安装依赖、下载和编译源代码、配置服务器以及启动和验证。遵循上述步骤,可以在Ubuntu系统上成功部署BOA服务器,为开发和测试提供一个轻量级的Web服务器环境。
12 0

热门文章

最新文章