基于CentOS配置NTP
2019-07-10北京赵琳
■ 北京 赵琳
编者按:时间同步是数据产生价值的基础保障和技术支撑。本文将介绍在CentOS下如何配置NTP时间服务器的具体方法。
NTP简介
N T P(Network Time Protocol,网络时间协议),是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可利用加密确认的方式来防止恶毒的协议攻击。
NTP是基于UDP报文进行传输的,使用的UDP端口号为123。
使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。
对于运行NTP的本地系统,既可以接收来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。
NTP有两种不同类型的报文,一种是时钟同步报文,另一种是控制报文。
NTP的工作模式,一般有客户端/服务器模式、对等体模式、广播模式等。
NTP作用
1.大数据产生与处理系统是各种计算设备集群的,计算设备将统一、同步的标准时间用于记录各种事件发生时序,如E-MAIL信息、文件创建和访问时间、数据库处理时间等。
2.大数据系统内不同计算设备之间控制、计算、处理、应用等数据或操作都具有时序性,若计算机时间不同步,这些应用或操作或将无法正常进行。
3.大数据系统是对时间敏感的计算处理系统,时间同步是大数据能够得到正确处理的基础保障,是大数据得以发挥作用的技术支撑。
4.大数据时代,整个处理计算系统内的大数据通信都是通过网络进行。
5.时间同步也是如此,利用大数据的互联网络传送标准时间信息,实现大数据系统内时间同步。
CentOS系统NTP服务端配置
1.确认是否已安装NTP服务(linux系统一般自带NTP4.2)
命令:rpm -qa | grep ntp
若只有ntpdate而未见ntp,则需删除原有ntpdate。如:
ntpdate-4.2.6p5-22.el7_0.x86_64
2.删除已安装NTP服务
命令:yum -y remove ntpdate-4.2.6p5-22.el7.x86_64
3.重新安装NTP服务
命令:yum -y install ntp
4.NTP服务端配置文件编辑
命 令:vim /etc/ntp.conf
内容:在server部分添加以下部分,设置允许访问此时间服务器的时间服务的IP地址。
restrict 192.168.6.0 mask 255.255.255.0 nomodify notrap
//允许内网中相应网段的其他计算机可以与NTP时间服务器进行时间同步。
restrict 127.0.0.1
//允许本机地址一切的操作。
备注:如果需要限制向从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
如果需要设置允许任何主机跟NTP时间服务器进行时间同步,采用如下命令:
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap
小知识:使用restrict控制相关权限。
语法为:restrict IP地址mask 子网掩码 参数,IP地址和子网掩码指定了对网络中哪些范围的计算机进行控制,如果使用default关键字,则表示对所有的计算机进行控制,参数指定了具体的限制内容。参数有以下几个:
ignore:关闭所有的 NTP联机服务。
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust:客户端除非通过认证,否则该客户端来源将被视为不信任子网。
noquery:不提供客户端的时间查询,用户端不能使用ntpq、ntpc等命令来查询NTP时间服务器。
notrap:不提供trap远程登录功能,trap服务是一种远程时间日志服务。
nopeer:提供时间服务,但不作为对等体。
kod:向不安全的访问者发送Kiss-Of-Death报文
restrict -6:表 示 IPV6地址的权限设置。
内容:在server部分添加如下语句,设置是允许IPV4和IPV6查询,且拒绝修改。
restrict -4 default kod notrap nomodify
restrict -6 default kod notrap nomodify
备注:如果需要拒绝IPV4或者是IPV6的用户,添加如下语句:
restrict default kod nomodify notrap nopeer noquery
//拒绝IPV4的用户
restrict -6 default kod nomodify notrap nopeer noquery
//拒绝IPV6的用户
内容:在server部分添加以下部分,改动-注释掉上级时间服务器地址。
server 203.107.6.88 prefer
//设置此服务器同上层服务器做时间同步的 IP地 址,prefer表示首选IP地址,203.107.6.88是阿里云NTP服务器。
server 0.centos.pool.ntp.org iburst
图1 正常结果
图2 客户端与每个服务器关系
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
内容:在server部分添加以下部分,改动-注释掉上级时间服务器地址。
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 10
//指定阶层编号为10,降低其优先度。当外部时间服务器不可用时,以本地时间作为时间服务。
内容:在server部分添加如下语句,设置NTP时间服务器日志的path。
statsdir /var/log/ntp/
内容:在server部分添加如下语句,设置NTP时间服务器日志文件。
logfile /var/log/ntp/ntp.log
内容:在server部分添加如下语句,设置记录上次的NTP时间服务器与上层NTP时间服务器联接所花费的时间。
driftfile /etc/ntp/drift
内容:在server部分添加如下语句,设置允许上层时间服务器主动修改本机时间。
restrict 203.107.6.88 nomodify notrap noquery
CentOS系统NTP时间服务器运维
1.启动或停止NTP时间服务器
命 令:service ntpd start
命 令:service ntpd stop
命 令:service ntpd restart
2.设置NTP时间服务器开机自动启动
命令:chkconfig ntpd on
3.查看NTP时间服务器运行
命令:ntpstat
备注:查看NTP状态时,可能会出现如下所示情况:
①unsynchronised time server re-starting polling server every 8 s
②unsynchronised polling server every 8 s
这种情况属于正常,NTP时间服务器配置完毕后,一般需要等待5-10分钟才能与/etc/ntp.conf中配置的标准时间服务器进行同步。等一段时间之后,再次使用ntpstat命令查看状态,就会变成如图1所示的正常结果。
4.查看网络中的NTP时间服务器,同时显示客户端和每个服务器的关系。
命令:ntpq -p,具体如图2所示。
remote:响应这个请求的NTP时间服务器的名称,“+”表示优先响应这个查询请求的NTP服务器,“*”表示次优先。
refid:NTP时 间服务器使用的更高一级服务器的名称。
st:正在响应请求的NTP时间服务器的级别(stratum阶层)。
when:上一次成功请求之后到现在的秒数。
poll:本地和远程服务器多少时间进行一次同步,单位秒,在一开始运行NTP的时候这个poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小。
reach:用来测试能否和服务器连接,是一个八进制值,每成功连接一次它的值就会增加。
delay:从本地机发送同步要求到NTP时间服务器的往返时间。
offset:主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和NTP时间服务器的时间越接近。
jitter:统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确。
图3 时间同步情况
5.查看时间同步状况,如图3所示。
命令:ntpq -p
终止:按 Ctrl+C 停止查看进程。
第一列中的字符指示源的质量。星号 ( * ) 表示该源是当前引用。
remote:列出源的IP地址或主机名。
when:指出从轮询源开始已过去的时间(秒)。
poll:指出轮询间隔时间。该值会根据本地时钟的精度相应增加。
reach:是一个八进制数字,指出源的可存取性。值377 表示源已应答了前八个连续轮询。
offset:是源时钟与本地时钟的时间差(毫秒)。
6.更新NTP时间服务器的时间
命 令:ntpdate -u 203.107.6.88
备注:需要先关闭NTP时间服务。
7.运行ntpdate更新时间时,不能开启NTP服务,否则会提示端口被占用;此时,可以利用crontab让NTP时间服务器定时更新时间。
crontab文件简要配置如下:
命令格式的前一部分是对时间的设定,后面一部分是要执行的命令。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:
分钟(0-59)小時(0-23)日期(1-31)月份(1-12)星期 (0-6,0代表星期日)
除了数字还有几个个特殊的符号就是“*”、“/”和“-”、“,”,其中“*”代表所有的取值范围内的数字,“/”代表每的意思,“-”代表从某个数字到某个数字,“,”分开几个离散的数字。下面举几个例子说明问题:
每天早上6点:0 6 * ** command
每两个小时:0 */2 * ** command
晚上11点到早上8点之间每两个小时,早上八点:0 23-7/2,8 * * * command
每个月的4号和每个星期的星期一到星期三的早 上 11 点 :0 11 4 * 1-3 command
1月1日早上4点:0 4 1 1 * command
8.用来追踪某台时间服务器的时间对应关系
命令:ntptrace
9.配置iptable规则允许客户端访问内网NTP时间服务器
命 令:vim /etc/sysconfig/iptables
增加一行(NTP时间服务器使用UDP 123端口)
-A INPUT -m state--state NEW -m udp -p udp--dport 123 -j ACCEPT
重启iptables服务
命令:service iptables restart
Linux系统NTP客户端配置
1.检查安装NTP服务有没有安装,如果未安装的话,请安装。
2.NTP客户端配置文件编辑
命 令:vim /etc/ntp.conf
内容:在server部分添加以下部分,设置时间服务器名或者是IP地址。
server ntp1.ceshi.com
3.向NTP时间服务器同步时间。
命 令:ntpdate 192.168.1.3
4.将系统时间设置为硬件时间
命令:hwclock -systohc
小知识:hwclock命令的作用是查看Linux中的硬件时间,也就是主板上BIOS的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间
Hwclock:查看硬件时间。
hwclock -s:将当前的硬件时间设置为系统时间。
hwclock -w:将当前的系统时间设置为硬件时间(允许BIOS与系统时间同步)。
5.设置通过NTP服务同时同步硬件时间
命 令:vim /etc/sysconfig/ntpd
添 加“SYNC_HWCLOCK=yes”,可实现硬件时间与系统时间一起同步。
备注:NTP服务,默认只会同步系统时间。
6.如果想定时进行时间校准,可以使用crond服务来定时执行。
命令:vim /etc/crontab
加入内容:30 8 * * *root /usr/sbin/ntpdate 192.168.1.3; /sbin/hwclock -w
//192.168.1.3是NTP时间服务器的IP地址。
命 令:service crond restart
//重启crond服务
这样,每天8:30 Linux系统就会自动的进行网络时间校准。
Windows系统NTP客户端配置
1.通过组策略开启NTP服务
①点击“开始”——“运行”,输入“gpedit.msc”,弹出组策略窗口。
②选择“计算机配置”——“管理模板”——“系统”——“Windows时间服务”,在右边选择“全局配置设置”,双击鼠标左键,在弹出窗口上选择“已启用”后,点击“确定”。
③选择“计算机配置”——“管理模板”——“系 统” ——“Windows时间服务”——
“时间提供程序”,在右边选择“配置 Windows NTP客 户 端”,双击鼠标左键,在弹出窗口 上 选 择“已 启 用”;在Ntp Server对应栏位输入时间同步服务器的地址;在类型项选择“NTP”后;SpecialPollInterval栏位输入需要同步的时间周期,单位:秒,如:每10分钟同步一次,输入600;设置完成后点击“确定”按钮。
2.点 击“开 始” ——“运行”,输入“gpupdate /force”,强制刷新策略。
3.双击日期和时间,选择internet时间,输入NTP时间服务器IP地址,点击“立即更新”,完成同步。
网络设备NTP客户端配置
1.H3C及华为系列网络设备
命 令:ntp-service unicast-server 192.168.1.3
2.思科及锐捷系列网络设备
命 令:ntp server 192.168.1.3