在CentOS中设置NTP授时服务器和ntp客户端方法汇总
本文详细举例了多个cntos系统下NTP授时服务器和ntp客户端的配置步骤,希望对用到这些配置的朋友有帮助。Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
NTP如何工作
NTP 提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratun(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。
计算机主机一般同多个时间服务器连接, 利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。
为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。
网络校时协议(NTP)的实现
时间服务器可以利用以下三种方式与其他服务器对时:
broadcast/multicast
client/server
symmetric
broadcast/multicast方式主要适用于局域网的环境,时间服务器周期性的以广播的方式,将时间信息传送给其他网路中的时间服务器,其时间仅会有少许的延迟,而且配置非常的简单。但是此方式的精确度并不高,对时间精确度要求不是很高的情况下可以采用。
symmetric的方式得一台服务器可以从远端时间服务器获取时钟,如果需要也可提供时间信息给远端的时间服务器。此一方式适用于配置冗余的时间服务器,可以提供更高的精确度给主机。
client/server方式与symmetric方式比较相似,只是不提供给其他时间服务器时间信息,此方式适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层的用户。
上述三种方式,时间信息的传输都使用UDP协议。每一个时间包内包含最近一次的事件的时间信息、包括上次事件的发送与接收时间、传递现在事件的当地时间、及此包的接收时间。在收到上述包后即可计算出时间的偏差量与传递资料的时间延迟。时间服务器利用一个过滤演算法,及先前八个校时资料计算出时间参考值,判断后续校时包的精确性,一个相对较高的离散程度,表示一个对时资料的可信度比较低。仅从一个时间服务器获得校时信息,不能校正通讯过程所造成的时间偏差,而同时与许多时间服务器通信校时,就可利用过滤算法找出相对较可靠的时间来源,然后采用它的时间来校时。
NTP:Network Time Protocol
网络时间协议(NTP)是一种通过因特网服务于计算机时钟的同步时间协议。它提供了一种同步时间机制,能在庞大而复杂多样因特网中用光速调整时间分配。它使用的是可返回时间设计方案,其特点是:时间服务器是一种分布式子网,能自我组织操作、分层管理配置,经过有线或无线方式同步逻辑时钟达到国家标准时间。此外,通过本地路由选择运算法则及时间后台程序,服务器可以重新分配标准时间。
NTP 的设计带来了三种产品 — 时钟偏移、时间延迟及差量,所有这三种与**参考时钟都是相关联的。时钟偏移表示调整本地时钟与参考时钟相一致而产生的偏差数;时间延迟表示在**时间内发送消息与参考时钟间的延时时间;差量表示了相对于参考时钟本地时钟的最大偏差错误。因为大多数主机时间服务器通过其它对等时间服务器达到同步,所以这三种产品中的每一种都有两个组成部分:其一是由对等决定的部分,这部分是相对于原始标准时间的参考来源而言;其二是由主机衡量的部分,这部分是相对于对等而言。每一部分在协议中都是独立维持的,从而可以使错误控制和子网本身的管理操作变得容易。它们不仅提供了偏移和延迟的精密测量,而且提供了明确的最大错误范围,这样用户接口不但可以决定时间,而且可以决定时间的准确度。
NTP 源于时间协议和 ICMP 时间标志消息,但其设计更强调精确度和充足性两个方面,即使是用于网络路径上包括多路网关、延迟差量及不可靠网络。当前使用的最新版是 NTPv3,它與以前的版本兼容。
协议结构
258162432bit
LIVNModeStratumPollPrecision
Root Delay
Root Dispersion
Reference Identifier
Reference timestamp(64)
Originate Timestamp(64)
Receive Timestamp(64)
Transmit Timestamp(64)
Key Identifier(optional)(32)
Message digest(optional)(128)
在公司环境中,如果他们不想为 NTP 传输打开防火墙,就有必要设置一个内部 NTP 服务器,然后让员工使用内部服务器而不是公共 NTP 服务器。在这个指南中,我们会介绍如何将一个 CentOS 系统配置为 NTP 服务器。在介绍详细内容之前,让我们先来简单了解一下 NTP 的概念。
为什么我们需要 NTP?
由于制造工艺多种多样,所有的(非原子)时钟并不按照完全一致的速度行走。有一些时钟走的比较快而有一些走的比较慢。因此经过很长一段时间以后,一个时钟的时间慢慢的和其它的发生偏移,这就是常说的 “时钟漂移” 或 “时间漂移”。为了将时钟漂移的影响最小化,使用 NTP 的主机应该周期性地和**的 NTP 服务器交互以保持它们的时钟同步。
在不同的主机之间进行时间同步对于计划备份、入侵检测记录、分布式任务调度或者事务订单管理来说是很重要的事情。它甚至应该作为日常任务的一部分。
NTP 的层次结构
NTP 时钟以层次模型组织。层级中的每层被称为一个 stratum(阶层)。stratum 的概念说明了一台机器到授权的时间源有多少 NTP 跳。
Stratum 0 由没有时间漂移的时钟组成,例如原子时钟。这种时钟不能在网络上直接使用。Stratum N (N > 1) 层服务器从 Stratum N-1 层服务器同步时间。Stratum N 时钟能通过网络和彼此互联。
NTP 支持多达 15 个 stratum 的层级。Stratum 16 被认为是未同步的,不能使用的。
准备 CentOS 服务器
现在让我们来开始在 CentOS 上设置 NTP 服务器。
首先,我们需要保证正确设置了服务器的时区。在 CentOS 7 中,我们可以使用 timedatectl 命令查看和更改服务器的时区(比如,"Australia/Adelaide",LCTT 译注:中国可设置为 Asia/Shanghai )
1.# timedatectl list-timezones | grep Australia
2.# timedatectl set-timezone Australia/Adelaide
3.# timedatectl
继续并使用 yum 安装需要的软件
1.# yum install ntp
然后我们会添加全球 NTP 服务器用于同步时间。
1.# vim /etc/ntp.conf
1.server 0.oceania.pool.ntp.org
2.server 1.oceania.pool.ntp.org
3.server 2.oceania.pool.ntp.org
4.server 3.oceania.pool.ntp.org
默认情况下,NTP 服务器的日志保存在 /var/log/messages。如果你希望使用自定义的日志文件,那也可以**。
1.logfile /var/log/ntpd.log
如果你选择自定义日志文件,确保更改了它的属主和 SELinux 环境。
1.# chown ntp:ntp /var/log/ntpd.log
2.# chcon -t ntpd_log_t /var/log/ntpd.log
现在初始化 NTP 服务并确保把它添加到了开机启动。
1.# systemctl restart ntp
2.# systemctl enable ntp
验证 NTP Server 时钟
我们可以使用 ntpq 命令来检查本地服务器的时钟如何通过 NTP 同步。
下面的表格解释了输出列。
remote源在 ntp.conf 中定义。‘*’ 表示当前使用的,也是最好的源;‘+’ 表示这些源可作为 NTP 源;‘-’ 标记的源是不可用的。
refid用于和本地时钟同步的远程服务器的 IP 地址。
stStratum(阶层)
t类型。 'u' 表示单播(unicast)。其它值包括本地(local)、多播(multicast)、广播(broadcast)。
when自从上次和服务器交互后经过的时间(以秒数计)。
poll和服务器的轮询间隔,以秒数计。
reach表示和服务器交互是否有任何错误的八进制数。值 337 表示 100% 成功(即十进制的255)。
delay服务器和远程服务器来回的时间。
offset我们服务器和远程服务器的时间差异,以毫秒数计。
jitter两次取样之间平均时差,以毫秒数计。
控制到 NTP 服务器的访问
默认情况下,NTP 服务器允许来自所有主机的查询。如果你想过滤进来的 NTP 同步连接,你可以在你的防火墙中添加规则过滤流量。
1.# iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 123 -j ACCEPT
2.# iptables -A INPUT -p udp --dport 123 -j DROP
该规则允许从 192.168.1.0/24 来的 NTP 流量(端口 UDP/123),任何其它网络的流量会被丢弃。你可以根据需要更改规则。
配置 NTP 客户端
1. Linux
NTP 客户端主机需要 ntpupdate 软件包来和服务器同步时间。可以轻松地使用 yum 或 apt-get 安装这个软件包。安装完软件包之后,用服务器的 IP 地址运行下面的命令。
1.# ntpdate <server-IP-address>
基于 RHEL 和 Debian 的系统命令都相同。
2. Windows
如果你正在使用 Windows,在日期和时间设置(Date and Time settings)下查找网络时间(Internet Time)。
3. Cisco 设备
如果你想要同步 Cisco 设备的时间,你可以在全局配置模式下使用下面的命令。
1.# ntp server <server-IP-address>
来自其它厂家的支持 NTP 的设备有自己的用于网络时间的参数。如果你想将设备和 NTP服务器同步时间,请查看设备的说明文档。
CentOS服务器时间同步的2种方法
由于硬件的原因,机器或多或少的根标准时间对不上,一个月的误差几秒到几分钟不等。对于服务器来说时间不准,会有很多麻烦。例如,支付的时候,无法下单,游戏无法登录等。自己用的PC就无所谓了,手动改一下就行了。
一,用ntpdate从时间服务器更新时间
如果你的linux系统根本没有ntpdate这个命令
yum install ntp
安装完了之后,你不要做什么配置,也不需要,直接测试一下
[root@localhost ~]# ntpdate time.nist.gov
22 Oct 21:11:43 ntpdate[5014]: adjust time server 207.200.81.113 offset -0.018788 sec
如果出去上面的内容说明,同步成功了。然后在crontab里面加上以下内容。
1.
*/10 * * * * ntpdate time.nist.gov #域名或IP
2.
每隔十分钟同步一次。推荐几个时间服务器。
time.nist.gov
time.nuri.net
asia.pool.ntp.org
asia.pool.ntp.org
asia.pool.ntp.org
asia.pool.ntp.org
二,用ntp搭建自己的时间服务器
上面我们是利用别人的时间服务器来同步时间,这些时间服务器都是比较权威的。当我们自己搭建时间服务器就不用crontab来定时去跑。
1,安装时间服务器ntp
yum install ntp
2,配置ntp
查看复制打印?
[root@localhost ~]# cat /etc/ntp.conf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'
restrict default ignore //默认不允许修改或者查询ntp,并且不接收特殊封包
restrict 127.0.0.1 //给于本机所有权限
restrict 192.168.1.0 mask 255.255.255.0 notrap nomodify //给于局域网机的机器有同步时间的权限
server time.nist.gov prefer //设置时间服务器,加prefer表示优先
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
3,启动 ntp
1.
[root@localhost ~]# /etc/init.d/ntpd start
2.
4,查看并测试
[root@localhost ~]# netstat -upnl |grep ntpd //查看时程
[root@localhost ~]# ntpq -pn //查看同步的服务器IP
remote refid st t when poll reach delay offset jitter
==============================================================================
50.77.217.185 .INIT. 16 u - 64 0 0.000 0.000 0.000
202.90.158.4 .INIT. 16 u - 64 0 0.000 0.000 0.000
202.71.100.89 .INIT. 16 u - 64 0 0.000 0.000 0.000
202.134.1.10 .INIT. 16 u - 64 0 0.000 0.000 0.000
*127.127.1.0 .LOCL. 10 l 18 64 377 0.000 0.000 0.001
[root@localhost ~]# ntpstat //同步的结果
synchronised to local net at stratum 11
time correct to within 12 ms
polling server every 512 s
remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由“+”则代表目前正在作用钟的上层NTP,如果是“*”则表示也有连上线,不过是作为次要联机的NTP主机。
refid:参考的上一层NTP主机的地址
st:即stratum阶层
when:几秒前曾做过时间同步更新的操作
poll:下次更新在几秒之后
reach:已经向上层NTP服务器要求更新的次数
delay:网络传输过程钟延迟的时间
offset:时间补偿的结果
jitter:Linux系统时间与BIOS硬件时间的差异时间
推荐第一种方法,虽然搭建个时间服务器,还是比较简单的,但是我觉得没有这个必要。如果用别人的时间服务器,每隔10分钟同步一次,可以精确到毫秒。
作者:海底苍鹰
NTP时间同步服务器配置实例(CISCO 7200)
本文主要讲述了对于路由器NTP服务器如何进行配置,本文主要以思科7200为例,详细的介绍了配置过程和操作步骤,下面文章将会使你受益匪浅。
出于网管的目的,我们架设了netflow,来监控流量,同时也可以获取内网用户访问Internet的详细访问记录,这种记录可以精确到秒,但前提是被监控的路由器或交换机等网络设备的时间,必须与监控日志所在服务器(可以是win,也可以是solaris系统)的时间保持绝对同步.
win系统的时间同步,我们可以通过单击右下角的时间,选择Internet时间,设置时间同步服务器来实现,win2000与2003的同步方法稍微复杂一些,下面会有详细过程的描述.
cisco路由器或交换机的同步,也非常简单,只需对NTP稍作了解即可:
NTP : Network Time Protocol 网络时间协议
由于部分思科设备不带有时钟,一旦重启后时钟会被重置为初始时间,这正是我们使用NTP的原因.通过使用NTP可以与互联网上的一级、二级时钟源同步。我们可以查询
http://www.eecis.udel.edu/~mills/ntp/clock1a.html来查找与自已位置最近的时钟源。
配置方法:
// router 7206
conf t
ntp source FastEthernet0/1 //**更新源地址,覆盖ntp server中的配置
ntp update-calendar//设备如带有硬件时钟,同时更新硬件时钟
ntp server 202.155.248.218 source FastEthernet0/1 //**更新目的地址,香港,并**更新源接口为f0/1.
int f0/1
ntp enable
这时你应该已经获得了时间,但是注意,时区是否正确,默认为格林威治时间,如想改为北京时间,下面这步是必不可少的。
clock timezone BeiJing 8 //最后这个数字8,代表+8时区。
一旦成功建立关联,我们还可以将win日志监控服务器的时钟与CISCO路由器同步,这样就保证了时钟的绝对同步,保证我们的网络访问日志可以精确到以秒为单位的程度.
5 Centos系统的ntp的安装和配置
(注意:防火墙的udp 123要打開,不然会不能用)
5.1 客户端同步时间的方法
方法一:使用 ntpdate
ntpdate [IP_Address]
看下面的例子,其中192.168.1.5是在内网搭建的ntp服务器
[root@zy180 ~]# date
Thu Sep 25 13:04:17 CST 2008
[root@zy180 ~]# ntpdate 192.168.1.5
25 Sep 14:33:13 ntpdate[10302]: step time server 192.168.1.5 offset 5327.700798 sec
[root@zy180 ~]# date
Thu Sep 25 14:33:18 CST 2008
ntpdate 的特点:
1,ntpdate只运行一次就结束,即只同步一次。所以要使用ntpdate同步时间的话要将该命令写入cron中。
vi /etc/crontab
* * * * * root ntpdate 192.168.1.5 &&hwclock -w
2,ntpdate同步时间是跳跃的,如上面的显示,时间立即就同步了,这将可能导致文件时间标记、监控数据的紊乱(慎用)。
方法二:使用ntpd服务
step1:/etc/ntpd.conf 写入 server [IP_Address]
step2:chkconfigntpd on
step3:servicentpd start
大概过一刻钟开始起作用。
FAQ:系统报错 - Sep 25 11:59:39 localhost kernel: set_rtc_mmss: can't update from 7 to 59
if (abs(real_minutes - cmos_minutes) < 30) { update_cmos() } else { printk("set_rtc_mmss: can't update from %d to %d\n", cmos_minutes, real_minutes); }
bios时间与系统时间差异超过30分钟,就会报上述错误,只要修改bios时间或系统时间即可。
ntpd 的特点:
1,ntpd服务始终运行,定期同步时间。
2,ntpd服务是慢慢改变时间直至标准时间。
1, 如果系统时间与bios时间差异超过30分钟,ntpd就会报错。
总结:
1,推荐使用 ntpd 服务。
2,ntpd开启后,无法使用ntpdate,看如下例子:
[root@zy180 ~]# servicentpd start
Starting ntpd: [ OK ]
[root@zy180 ~]# ntpdate 192.168.1.5
25 Sep 15:25:22 ntpdate[12334]: the NTP socket is in use, exiting
1 cisco设备的NTP客户端设置
在Cisco网络系统中,常见的NTP配置需要用到的命令及定义如下:
1. ntp access-group: 该全局命令用于路由器N T P服务的访问控制。
2. ntp authenticate: 是一个全局命令,它启用N T P身份验证。
3. ntp authentication-key: 该全局命令用于定义N T P身份验证的键值。
4. ntp broadcast: 是一个接口命令,用于**一特定接口来发送N T P广播包。
5. ntp broadcast client: 是一个接口命令,使路由器通过特定接口来接收N T P广播包。
6. ntp broadcast delay: 是一个全局命令,它用于设定数据包在路由器和N T P服务器之间一个回程所需时间的估计值。
7. ntp clock-period: 这条全局命令不必输入,当使用N T P进行系统时钟同步时,路由器将自动产生这条命令。
8. ntp disable: 这条接口命令使特定接口不接收N T P包。
9. ntp master: 这条全局命令用来配置路由器为N T P主时钟,只有当没有可用的外部N T P源或者为测试用途才使用该命令。
10. ntp peer: 该全局命令使路由器的系统时钟与其对等体的时钟同步(或对对等体的时钟进行同步)。
11. ntp server: 该全局命令使路由器的系统时钟由时间服务器进行同步。
12. ntp source: 该全局命令强制路由器在其N T P包中使用特定的源地址。
13. ntp trusted-key: 该全局命令用于确认路由器的特定身份验证键值。
14. ntp update-calendar: 该全局命令使N T P周期性地更新Cisco 7XXX 系列路由器的日历。
15. show ntp status: 是一执行模式命令,用于显示路由器的N T P信息,它可以表明该路由器是通过N T P对等体进行时钟同步还是通过N T P服务器进行同步。
16. show ntp association[detail]: 这条执行模式命令显示与N T P有关的信息,如轮询周期等。
根据实际情况,具体配置命令如下:
2 cisco 3550 交换机 NTP 客户端的配置:
config t
service timestamps debug datetimelocaltime;配置系统debug记录时间格式
service timestamps log datetimelocaltime;配置系统日志记录时间格式
clock timezone GMT 8;配置时区
ntp peer 10.161.195.222
调试命令:
sh clock detail
shntpsta
shntp ass
shntp ass detail
3 cisco 3560 交换机 NTP 客户端的配置:
service timestamps debug datetimelocaltime;配置系统debug记录时间格式
service timestamps log datetimelocaltime;配置系统日志记录时间格式
clock timezone GMT 8;配置时区
ntp peer 10.161.195.222
调试命令:
sh clock detail
shntpsta
shntp ass
shntp ass detail
4 cisco 6509 交换机 NTP 客户端的配置:
service timestamps debug datetimelocaltime;配置系统debug记录时间格式
service timestamps log datetimelocaltime;配置系统日志记录时间格式
clock timezone GMT 8;配置时区
ntp peer 10.161.195.222
ntp calendar-update; 允许NTP定期更新calendar
调试命令:
sh clock detail
shntpsta
shntp ass
shntp ass detail
注意:6509本身有硬件时钟,可保存时间。
5 Cisco 6509 配置NTP
(1)本地时钟设置:
clock timezone Peking +8;定义时区
clock calendar-valid;允许使用硬件calendar作为时钟源
clock set hh:mm:ss<day of month>; month year ;如clock set
14:02:30 10 December 2003
clock update-calendar;更新硬件时钟。
(2)ntp server
ntp calendar-update ;允许NTP定期更新calendar;
ntp master 3 ;允许本机作为NTP协议的主时钟,精度级别3,供其它对等体同步用。
ntp source intvlan 7 ;设置ntp时钟原的端口或IP地址
(3)常用的调试命令有:
showntp status
showntp associations
SYN2132型NTP网络时间服务器是由西安同步电子科技有限公司精心设计、自行研发生产的一款基于NTP/SNTP协议的时间服务器,接收GPS卫星信号,从GPS地球同步卫星上获取标准时钟信号信息,将这些信息通过TCP/IP网络传输,为网络设备(用户)提供精确、标准、安全、可靠和多功能的时间服务,同时产生IRIG-B码信息,1PPS(秒信号)同步脉冲信号及串口时间信息,前面板显示年月日时分秒等信息,是一款实现时间同步的实用时钟设备。
NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。时间按NTP服务器的等级传播。按照离外部UTC源的远近把所有服务器归入不同的Stratum(层)中。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)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。