一、server端配置
安装时间同步服务器,没有特别要求,不用改配置。服务端ip:192.168.91.159
[root@www zoneinfo]# yum -y install ntp
[root@www zoneinfo]# systemctl start ntpd
#更改配置文件,加入如下两条
[root@www ntp]# vi /etc/ntp.conf
# 如果无法与上层ntp server通信以本地时间为标准时间
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
#日志文件
logfile /var/log/ntp.log
[root@www ntp]# systemctl restart ntpd
注:服务端安装完成
查看是否和上层的时间同步服务器进行自己的时间同步
[root@www zoneinfo]# ntpstat <==是否和上层的时间同步服务器进行自己的时间同步
synchronised to NTP server (185.209.85.222) at stratum 3
time correct to within 209 ms <==矫正 109 * 10^(-3)
polling server every 64 s <==每64秒校准一次
ntpq -p 可以列出目前我们的 NTP 与相关的上层 NTP 的状态
[root@www zoneinfo]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+119.28.183.184 100.122.36.4 2 u 20 64 137 48.450 -48.957 17.425
-time.cloudflare 10.4.3.52 3 u 12 64 373 177.269 -18.407 23.787
*stratum2-1.ntp. 195.91.239.8 2 u 12 64 373 133.322 -38.504 25.433
+ntp7.flashdance 192.36.143.150 2 u 15 64 107 302.819 -27.658 27.421
- remote:亦即是 NTP 主机的 IP 或主机名,注意最左边的符号
- 如果有『 * 』代表目前正在作用当中的上层 NTP
- 如果是『 + 』代表也有连上线,而且可作为下一个提供时间更新的候选者。 - refid:参考的上一层 NTP 主机的地址
- st:就是 stratum 阶层
- when:几秒钟前曾经做过时间同步化更新的动作;
- poll:下一次更新在几秒钟之后;
- reach:已经向上层 NTP 服务器要求更新的次数
- delay:网络传输过程当中延迟的时间,单位为 10^(-6) 秒
- offset:时间补偿的结果,单位与 10^(-3) 秒
- jitter:Linux 系统时间与 BIOS 硬件时间的差异时间, 单位为 10^(-6) 秒。
二、client端配置
[root@master ~]# yum -y install ntpdate
[root@master ~]# ntpdate 192.168.91.159
20 Jan 11:04:41 ntpdate[1323]: no server suitable for synchronization found <==这是因为服务端还没有上层同步完成
[root@master ~]# ntpdate 192.168.91.159
20 Jan 11:07:17 ntpdate[1324]: step time server 192.168.91.159 offset -0.560287 sec <==同步成功
注:ntpdate写入计划任务,然后定时同步即可。也可以使用另外一种方式,就是在client安装时间同步服务,使192.168.91.159为他的上层时间同步服务器,即在配置文件中加入:
server 192.168.91.159 prefer <==有限使用这台时间同步服务
三、ntp服务器软件结构
软件相关
- ntp: 就是 NTP 服务器的主要软件啦,包括配置文件以及执行档等等。
- tzdata: 软件名称为『 Time Zone data 』的缩写,提供各时区对应的显示格式。
配置相关
- /etc/ntp.conf: 就是 NTP 服务器的主要配置文件,也是唯一的一个;
- /usr/share/zoneinfo/:由 tzdata 所提供,为各时区的时间格式对应档。
- /etc/sysconfig/clock:设定时区与是否使用 UTC 时间钟的配置文件。每次开机后 Linux 会自动的读取这个档案来设定自己系统所默认要显示的时间说!举个例子来说, 在我们*地区的本地时间设定中,这个档案内应该会出现一行『ZONE=“Asia/Taipei”』的字样, 这表示我们的时间配置文件案『要取用/usr/share/zoneinfo/Asia/Taipei 那个档案』的意思!
- /etc/localtime: 这个档案就是『本地端的时间配置文件』
案例:你要去美国了,如何更改时间
[root@www ntp]# date
2022年 01月 20日 星期四 11:43:27 CST <==CST是时区
#1、更改/etc/sysconfig/clock里面为美国时区,现在都不用这个文件,直接做下一步就可以
[root@www ntp]# vi /etc/sysconfig/clock
ZONE="America/New_York" <==改的是这里
2、更改/etc/localtime本地时间
[root@www zoneinfo]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 7月 20 2021 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
[root@www zoneinfo]# rm -f /etc/localtime
[root@www zoneinfo]# ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
[root@www zoneinfo]# date
2022年 01月 19日 星期三 21:05:51 EST
四、配置文件解释
1、利用 restrict 来管理权限控制
restrict IP或者IP段 mask [parameter]
parameter的参数
- ignore: 拒绝所有类型的 NTP 联机;
- nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时
- noquery: 客户端不能够使用 ntpq, ntpc 等指令来查询时间服务器,等于不提供 NTP 的网络校时
- notrap: 不提供 trap 这个远程事件登录 (remote event logging) 的功能。
- notrust: 拒绝没有认证的客户端。
restrict default kod nomodify notrap nopeer noquery <==拒绝 IPv4 的用户
restrict -6 default kod nomodify notrap nopeer noquery <==拒绝 IPv6 的用户
restrict 192.168.91.177 <==对192.168.91.177没有任何限制。
restrict 127.0.0.1 <==底下两个是默认值,放行本机来源
restrict -6 ::1
restrict 192.168.100.0 mask 255.255.255.0 nomodify <==放行区网来源
2、利用 server 设定上层 NTP 服务器
server [IP or hostname] [prefer]
- perfer 表示『优先使用』的服务器
server 220.130.158.71 prefer <==以这部主机为最优先
server 59.124.196.83
# 如果无法与上层ntp server通信以本地时间为标准时间
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
3、以 driftfile 记录时间差异
driftfile 文件绝对路径
- driftfile 后面接的档案需要使用完整路径文件名;
- 该档案不能是连结文件;
- 该档案需要设定成 ntpd 这个 daemon 可以写入的权限。
- 该档案所记录的数值单位为:百万分之一秒 (ppm)。
4、keys [key_file]
除了以 restrict 来限制客户端的联机之外,我们也可以透过密钥系统来给客户端
认证,如此一来可以让主机端更放心了。不过在这个章节里面我们暂不讨论这个部分,
有兴趣的朋友可以参考 ntp-keygen 这个指令的相关说明。