Linux 环境下NTP 服务搭建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 环境下NTP 服务搭建相关的知识,希望对你有一定的参考价值。
##################################################################################
实验环境:Red Hat 6.8
vmware workstation 12.5
NTP Server Name:ocbsap01
NTP client Name: ocbsweb01
实验目的:架设一台ntp服务器,使用internet中的ntp服务器进行网络校时,
并允许子网192.168.10.0/24中的客户机通过该服务器进行网络校时
实验外网NTP地址: cn.pool.ntp.org
###################################################################################
NTP服务器Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
协议使用的UDP 123端口
#####################Server 端操作#####################################
1、检查ntp软件是否安装,这里安装的是系统自带版本ntp-4.2.6p5-10.el6.x86_64
[[email protected] /]# rpm -qa | grep ntp- ntp-4.2.6p5-10.el6.x86_64 ntpdate-4.2.6p5-10.el6.x86_64
2、编辑NTP配置文件/etc/ntp.conf,先备份一下,然后echo > /etc/ntp.conf清空文件复制如下配置
restrict 参数解释:
restrict 控制相关权限。
语法为: restrict IP地址 mask 子网掩码 参数
其中IP地址也可以是default ,default 就是指所有的IP、
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器
notrap : 不提供trap远端登陆:拒绝为匹配的主机提供模式,控制消息陷阱服务。陷阱服务是ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。
nopeer : 用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟
kod : 访问违规时发送 KoD 包。
restrict -6 表示IPV6地址的权限设置。
注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
2.1 配置文件内容如下:
driftfile /var/lib/ntp/drift #默认是拒绝所有的的服务器 restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery #添加同步ntp clent的网段,这里允许 192.168.10.0 网段的客户机进行时间同步 restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap restrict 127.0.0.1 restrict -6 ::1 #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 #添加外网同步地址,也就是上一级服务器 server cn.pool.ntp.org minpoll 4 maxpoll 4 perfer #server 127.127.1.0 fudge 127.127.1.0 stratum 10 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys #指定日志文件位置 logfile /var/log/ntp logconfig all statistics clockstats cryptostats loopstats peerstats
3、启动ntp服务
[[email protected] etc]# service ntpd start
正在启动 ntpd: [确定]
4、查看ntp Server状态
[[email protected] ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*time6.aliyun.co 10.137.38.86 2 u 5 16 1 48.348 43.397 0.000
相关参数解释:
remote: 指最先响应这个请求的NTP服务器的名称
refid: 指给本地NTP服务器提供时间同步的上级NTP服务器源。
st: 该值用来表示上级NTP服务器源的层级别。由于NTP是层型结构,有顶端的服务器,多层的NTP服务器源,再到客户端。所以服务器从高到低级别可以设定为1-16。为了减缓负荷和网络堵塞,原则上应该避免直接连接到层级别为1的服务器上。
t: 该值用来表示远程服务器的类型,有如下类型:u代表单播或多播的客户端,b代表广播或组播服务器,l代表本地(参考时钟),s代表同级NTP服务器, A代表多播服务器,B代表广播服务器,M代表组播服务器
when: 该值为自上次接收到数据包的时间距离当前的时间值
poll: 该值为本地NTP服务器和上级NTP服务器源的轮询间隔,即双方每过多久同步一次(单位为秒)。在NTP刚开始运行时,poll值会比较小,此时和上级NTP服务器源同步的频率就会增加,因此可以尽快调整到正确的时间范围内。之后poll值就会逐渐增大,同步的频率也就会相应减小。
reach:这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加
delay:该值为本地NTP服务器和上级NTP服务器源的NTP报文的往返时延。
offset:该值为本地NTP服务器和上级NTP服务器源的时间差值。该值越接近0,我们和上级NTP服务器源的时间就越准确。(日常关注这条)
jitter:该值是用来统计在特定个连续的连接数里面offset(时间差值)的分布情况。该数值的绝对值越小,我们和上级NTP服务器源的时间就越准确。
#####################Client 端操作#####################################
1、使用ntpdate命令,检查命令是否安装如果没有安装rpm安装一下
[[email protected] ~]# rpm -qa | grep ntpdate ntpdate-4.2.6p5-10.el6.x86_64
测试修改目前clent端的时间。
[[email protected] ~]# date -s 2014/05/05
2014年 05月 05日 星期一 00:00:00 CST
[[email protected] ~]# date
2014年 05月 05日 星期一 00:00:01 CST
2、client端从server端同步时间
[[email protected] ~]# ntpdate 192.168.10.128 12 Jan 11:17:37 ntpdate[6694]: adjust time server 192.168.10.128 offset 0.004131 sec
备注:注意防火墙关闭,ntpd启动后客户机要等几分钟再与其进行时间同步,否则会提示“no server suitable for synchronization found”错误。
3、client 自动同步时间,编辑/etc/ntp.conf,chkconfig ntpd --level 35 on
注销如下行
#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
添加server 192.168.10.128 minpoll 4 maxpoll 4 perfer 或主机名即可 即可
#########################Client端验证操作#############################
1、查看ntp服务器有无和上层ntp连通,这里能看到NTP Server的IP,如下显示说明clent和ntp server之前通讯没有问题
[[email protected] ~]# ntpstat synchronised to NTP server (192.168.10.128) at stratum 4 time correct to within 333 ms polling server every 16 s
2、使用ntpdate -d 192.168.10.128 进行时间服务验证,并查看同步详细信息
[[email protected] ~]# ntpdate -d 192.168.10.128 12 Jan 11:27:51 ntpdate[6722]: ntpdate [email protected] Tue Jan 26 13:50:53 UTC 2016 (1) Looking for host 192.168.10.128 and service ntp host found : ocbsap01 transmit(192.168.10.128) receive(192.168.10.128) transmit(192.168.10.128) receive(192.168.10.128) transmit(192.168.10.128) receive(192.168.10.128) transmit(192.168.10.128) receive(192.168.10.128) server 192.168.10.128, port 123 stratum 3, precision -24, leap 00, trust 000 refid [192.168.10.128], delay 0.02585, dispersion 0.00017 transmitted 4, in filter 4 reference time: de02a7b8.6b274a2a Fri, Jan 12 2018 11:19:20.418 originate timestamp: de02a9b7.417bb6cb Fri, Jan 12 2018 11:27:51.255 transmit timestamp: de02a9b7.40d639fc Fri, Jan 12 2018 11:27:51.253 filter delay: 0.02629 0.02661 0.02585 0.02655 0.00000 0.00000 0.00000 0.00000 filter offset: 0.001500 0.001742 0.001690 0.001996 0.000000 0.000000 0.000000 0.000000 delay 0.02585, dispersion 0.00017 offset 0.001690 12 Jan 11:27:51 ntpdate[6722]: adjust time server 192.168.10.128 offset 0.001690 sec
####################################常见报错#####################################################
1、当用ntpdate -d 来查询时会发现导致 no server suitable for synchronization found
错误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同步上。
以下的定义是让NTP Server和其自身保持同步,如果在/ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。
server 127.127.1.0
fudge 127.127.1.0 stratum 8
在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,
这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。
那么如何知道何时ntp server完成了和自身同步的过程呢?
错误2.Server dropped: no data
从客户端执行netdate -d时有错误信息如下:
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
transmit(192.168.30.22)
192.168.30.22: Server dropped: no data
server 192.168.30.22, port 123
.....
28 Jul 17:42:24 ntpdate[14148]: no server suitable for synchronization found
出现这个问题的原因可能是:
检查ntp的版本,如果你使用的是ntp4.2(包括4.2)之后的版本,在restrict的定义中使用了notrust的话,会导致以上错误。
使用以下命令检查ntp的版本:
# ntpq -c version
下面是来自ntp官方网站的说明:
The behavior of notrust changed between versions 4.1 and 4.2.
In 4.1 (and earlier) notrust meant "Don't trust this host/subnet for time".
In 4.2 (and later) notrust means "Ignore all NTP packets that are not cryptographically authenticated." This forces remote time servers to authenticate themselves to your (client) ntpd
解决:
把notrust去掉。
以上是关于Linux 环境下NTP 服务搭建的主要内容,如果未能解决你的问题,请参考以下文章