文章目录
1 NTP简介
1.1 NTP,网络时间协议(Network Time Protocol)
-
用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC(Universal Time Coordinated,世界协调时),其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
-
NTP 只考虑 UTC 时间,不考虑时区,不考虑夏令时等。
NTP使用UDP,端口123。 -
分层架构
NTP使用一种树状的,半分层的时间源系统。每一层叫做stratum
。每个 stratum 都有一个编号,从0开始,最大到15,16被用来标记设备未同步。
一般情况下,第 n+1 层 stratum 从第 n 层同步时间。 -
所以NTP服务,一般是设置为类似中继的服务,从上级时间服务器同步时间,再作为向它同步时间的时间源
-
ntpdate使用的时候一定要先停止 ntpd.service 服务,它们不兼容
1.2 linux系统时间简介
- linux系统有两个时钟
- 硬件时钟:RTC,Real Time Clock
- 软件时钟:System Clock
两个时间独立运行,会产生相对误差
- 使用ntpdate同步时间,是同步系统时间,将
/etc/sysconfig/ntpd
中的参数SYNC_HWCLOCK=yes
改为yes,那么在同步系统时间的时候,硬件时间也会更新 - 查看系统时间:date
- 查看硬件时间:hwclock --show 或者 hwclock -r
将系统时间设为硬件时间:
hwclock --systohc
或者
hwclock -w
将硬件时间设为系统时间:
hwclock --hctosys
或者
hwclock -s
手动修改系统时间:
date -s "年/月/日 时:分:秒"
2 NTP安装,部署
2.1 安装NTP
#先检查有没有安装ntpdate命令
rpm -qa | grep ntp
#若有,需要卸载
#使用yum安装ntp
yum -y install ntp
#安装ntp会自动安装ntpdate命令
2.2 配置详解
- 配置文件参数详解:vim /etc/ntp.conf
#该文件记录每次时间同步的误差,并根据时间误差来调整时间,若不开启此参数,误差数据在服务重启会丢失
driftfile /var/lib/ntp/drift
#restrict是配置连接本机ntp服务的主机有什么权限
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict 192.168.200.0 mask 255.255.255.0 nomodify
#server代表本机ntp服务同步的上级时间服务器,也就是时间源
server ntp1.aliyun.com
server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 10
#下面几行不作解释
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
- restricit参数详解:
ntp的配置文件,默认从上至下读取配置,restrict参数可以设置各种权限:
格式:restrict IP mask **** [权限参数]
权限参数:
noquery:不提供ntp服务
notrap:不提供trap远程事件登录的功能
nomodify:客户端可时间同步,但是不能更改本机ntp服务的时间
notrust:拒绝没有通过认证的客户端
nokod:kod技术可以组织一种dos攻击,在ntp服务被违规访问时发动攻击
ignore:关闭所有ntp服务,不向任何客户端提供时间本地服务
以上面几行为例进行解释
- restrict default nomodify notrap nopeer noquery
默认禁止所有客户端来同步时间,也不能修改本机ntp服务时间- restrict 127.0.0.1
允许本地对ntp服务进行任何操作- restrict 192.168.200.0 mask 255.255.255.0 nomodify
允许192.168.200.0这个网段的客户端来同步时间,但不能修改本地ntp服务时间
- server参数详解:
server后面接上级时间服务器的地址,可以设置多个,ntp服务会自动检测误差最小的作为默认时间源
格式:server IP/URL perfer
就拿上面几行来解释:
- server ntp1.aliyun.com
添加上级时间服务器为阿里的时间服务器,中国国家授时中心地址为210.72.145.8
- server 127.127.1.0 prefer
设置本机ntp服务的上级时间服务器为本机,这个时候的IP固定为127.127.1.0,而不是127.0.0.1
若只想把本地时间当做最高级服务器,不做中继,则只需要添加这个server
当设置多个上级时间服务器时,加prefer参数的server就会被设置默认,不加就自动测试误差自动选择- fudge 127.127.1.0 stratum 10
时间服务器是分层的,此参数代表把本机ntp服务设置为第10层,那本机默认就不会向10层以后的时间服务器去同步时间,所以层级不要设置太高(从0到15以此降低)
- NTP服务的启停:
systemctl start ntpd
systemctl stop ntpd
2.3 ntp其他相关命令
- ntpq -p
ntpq -p 或者 ntpq -4p(ipv4的方式)
获取上级时间服务器的状态信息,测试本地ntp服务与上级的连接情况
若获取太慢可以用-4p,或者ntpq -p IP 指定上级时间服务器的IP来测试连接,应该也可以指定主机名或者说域名,没有进行测试
获取到的数据分为以下几列
remote:有“ * ”的代表默认的上层ntp时间源,“ + ”代表上层ntp服务器候选
refied:上层ntp服务器对应的IP
st:stratum级别
-
ntpstat
查看当前ntp服务上次的时间同步情况 -
ntpdate -d IP
-d 参数是默认时间同步,在客户端可以用它来进行测试,不会改变客户端时间,不加-d则是指定IP为源同步时间