NTP网络时间协议,是一个用于同步计算机网络时钟的协议。
NTP要想提供一个准确的时间,首先需要一个准确的UTC时间来源。NTP获取UTC的时间来源可以是原子钟、天文台、卫星,也可以使internet等。时间按照NTP服务器的等级进行传播,根据离外部UTC源的远近将所有服务器划入不同的层(stratum)。stratum-1在顶层由外部UTC接入,而stratum-2则由stratum-1获取时间,stratum-3从stratum-2获取时间,一次类推。stratum的总数在15,超过15则认为不可用。如下图所示:
中国本地时间比UTC时间快了8个小时,记作UTC+8。
在C/S架构的时间服务器中,NTP服务器从上层的NTP服务器获取时间,并提供给下层的用户。采用的端口是123端口,协议是UDP
2.NTP服务的安装默认情况下NTP服务都已经安装过了,可以用如下执行查看:
rpm –qa |grep ntp
如果没有安装的话,可以使用如下指令安装:
yum install –y ntp
删除NTP:
yum remove –y ntp
或
rpm –e ntp
3.NTP服务配置配置文件的位置:/etc/ntp.conf
3.1服务的启动
/etc/init.d/ntpd start 启动NTP
/etc/init.d/ntpd stop 停止NTP
/etc/init.d/ntpd restart 重新启动NTP
/etc/init.d/ntpd status 查看NTP服务器的状态
设置开机自动启动:
chkconfig ntpd --level 35 on
3.2配置文件说明
在配置文件中,以#开头的表示注释。
2restrict:指定可以进行NTP通信的IP地址或网段。格式如下:
restrict ip地址或网段 mask 子网掩码参数
ip地址或网段:
如:restrict 192.168.1.1 mask 255.255.255.255
restrict 192.168.1.0 mask255.255.255.0
restrict default :default表示的是所有的主机。
参数如下:
ignore:关闭所有的NTP联机。
nomodify:表示客户端不能修改NTP服务器的时间参数,但是客户端可以进行时间同步。
noquery:不对客户端提供时间查询功能。
notrap:不提供trap远程时间记录功能。
notrust:拒绝没有通过认证的客户端
kod:开启kod功能。kod是kiss ofdeath(一种dos攻击),开启kod功能,可以防止对服务器的破坏。
nopeer:不与其他同一层上的NTP服务器进行时间同步。
2server ip|FQDN [prefer]
指定该服务器上层NTP服务器的IP地址或者是FQDN,为本地提供时间服务。在指定多个上层NTP服务器时,使用prefer参数的服务器的优先级更高,将优先使用。如果没有指定prefer的话,则按照顺序从上往下,由高到低。
2fudg:修改NTP服务器的相关参数,如stratum。
2driftfile 文件名:记录本地时间和上层NTP服务器之间的时间差值,该文件对于ntp用户来说要有w的权限。一般不需要修改
2logfile:指定ntp服务器的日志文件。
以本地时间为标准时间的设置:
server 127.127.1.0
3.3与NTP服务有关的文件
/usr/share/zoneinfo/:在该目录下的文件主要定义了各个时区的时间配置文件。如亚洲/上海的时间配置文件就是:/usr/share/zoneinfo/Asia/Shanghai
/etc/sysconfig/clock:告诉系统应该使用/usr/share/zoneinfo/目录下的哪个时区的时间配置文件。
/etc/localtime:系统通过/etc/sysconfig/clock将/usr/share/zoneinfo/指定的时区的时间配置文件复制为/etc/localtim。
修改时区的步骤:
1.查询/usr/share/zoneinfo/目录下要修改的时区的名称
2.将该名称写入到/etc/sysconfig/clock文件中
3.复制/usr/share/zoneinof/目录下的时区的时间配置文件为/etc/localtime
4.重启系统。
为每一个用户进行单独的时区设置:
修改用户的环境配置文件~/.bashrc,增加如下内容:
export TZ=”/usr/share/zoneinfo/<timezone_directory>/<timezone_file>”
如:export TZ=”/usr/share/zoneinfo/Asia/Shanghai”
然后重新执行该文件:
source ~/.bashrc
3.4配置实例
1)基本配置
#限制可以查询的客户端
restrict 172.17.100.0 mask255.255.255.0 nomodify notrap kod
#指定上层NTP服务器地址并限制上层服务器不能同本地时间服务器进行查询功能
restrict x.x.x.x mask x.x.x.xnomodify noquery notrap
server x.x.x.x prefer
#指定本地服务器为NTP服务器
server 127.127.1.0
#设置本地服务器为stratum 1
fudge 127.127.1.0 stratum 1
2)修改/etc/ntp/step-tickers文件,将上层NTP服务器的地址或FQDN添加到这个文件中。作用是当NTP服务在启动时,会自动的与该文件中记录的时间服务器进行时间同步。
127.127.1.0
3)同步硬件时间
编辑文件:vim /etc/sysconfig/ntpd
设置:SYNC_HWCLOCK=yes
如果不修改这个文件的话,也可以通过hwclock –w手动的进行系统时间与BIOS时间同步。
使用hwclock –r读取bios时间。
3.5ntpq –p
如果系统启动了防火墙的话,要记得放行udp的123端口:
iptables -I INPUT -i eth0 -s172.17.100.0/24 -d 172.17.100.253 -p udp --dport 123 -j ACCEPT
启动服务:/etc/init.d/ntpd restart
红色标注的地方是NTP 服务在启动的时候会主动的与/etc/ntp/step-tickers里面所配置的上层NTP服务器进行时间同步的结果。
使用ntpq –p观察本机与上层NTP服务器的通信情况。
remote:表示的是上层NTP服务器的地址
refid:为上层NTP服务器提供时间同步的NTP服务器的地址。
st:表示的是当前NTP服务器所处的stratum
when:上一次与上层NTP服务器进行时间校对的时间。
poll:下一次本地主机与上层NTP服务器进行时间校对的时间。刚开始时该时间比较小,以后会慢慢增大。
reach:一个八进制值,记录了成功与上次NTP服务器进行时间校对的时间。
delay:从本地主机发送时间同步请求到上层服务器的往返时间差。单位为10-6S
offset:时间补偿值。越小越好。
在时间同步以后,首选的时间服务器的前面会有一个*,备用的前面会有一个+。
4.客户端的设置4.1 Linux 客户端
对于Linux客户端可以用ntpdate进行时间同步。
格式为:
ntpdate x.x.x.x
如果有需要可以创建一个计划任务。
4.2Windows客户端
默认情况下,windows客户端是每隔7天与服务器进行时间同步,如果要修改这个时间间隔,需要修改注册表。
windows打开注册表:regedit
找到如下部分:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time
TimeProvides\NtpClient\SpecialPollInterval,在”数值数据”,中显示的就是时间同步间隔,单位为秒,修改以后,需要重启系统。
本文出自 “Frame” 博客,请务必保留此出处http://hezhang.blog.51cto.com/1347601/1351896