起因
公司内网里有多台服务器,由于是局域网下,所以时间无法与Internet进行时间同步,故想通过搭建NTP服务器,NTP服务器与Internet进行时间同步,而局域网中的其他服务器与该NTP服务器进行时间同步。
NTP介绍
网络时间协议(Network Time Protocol),用于时间同步。计算机时间在某些情况下会出现时间不准确的问题,此时就可以通过NTP进行时间调节。
NTP安装与配置
测试环境为Red Hat 6.4
1. 检测安装包
rpm -qa | grep ntp
# 若显示如下信息,则代表已安装ntp服务
# ntpdate-4.2.4p8-3.el6.x86_64
# fontpackages-filesystem-1.41-1.1.el6.noarch
# ntp-4.2.4p8-3.el6.x86_64
# 若未安装 ntp ,则使用 yum 进行安装
yum install ntp
2. NTP配置
NTP配置文件位于 /etc/ntp.conf ,其中设置方法如下:
① restrict 用于权限管理
ntp.conf 文件内可以通过restrict进行NTP服务器连接控制。
简单的说,就是对能够连接本 NTP 服务器的客户端进行限制。
# 格式
restrict [IP] mask [netwask_IP] [parameter]
# 其中 IP 为你需要设置的IP
# mask 为网关信息
# parameter 可设置不同的参数
# - ignore:拒绝所有类型的 NTP 连接
# - nomodify:客户端不能使用 ntpc 与 ntpq 这两个程序来修改服务器的时间参数,但是客户端仍可以通过这部主机来进行网络校时
# - noquery:客户端不能够使用 ntpq、ntpc 等命令来查询时间服务器,等于不提供 NTP 的网络校时
# - notrap:不提供 trap 这个远程事件登录的功能
# - notrust:拒绝没有认证的客户端
# - nopeer:用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟
# - kod:访问违规时发送 KoD 包
# restrict -6 表示IPV6地址的权限设置
例如:
restrict 192.168.1.127 nomodify notrap notrust # 允许192.168.1.127进行校时
restrict 192.168.1.0 mask 255.255.255.0 nomodify # 允许 192.168.1.0 网段下的所有主机进行校时
② 利用 server 设置上层的 NTP 服务器
在 ntp.conf 文件中可以通过 server 参数设置其与哪个NTP服务器进行同步时间
# 格式
server [IP or hostname] [perfer]
# server 后面可以跟具体的 NTP 服务器 IP 或主机名称
# perfer 表示是否优先连接该服务器
例如:
server 192.168.1.127 perfer # 以127做为优先服务器
server 192.168.1.128
③ 通过 driftile 记录时间差异
可以指定某个文件用于记录当前主机BIOS的芯片振荡周期频率与上层的Time Server的误差。
# 格式
driftfile [可以被 ntpd 写入的目录与文件]
# 注意:该文件路径必须能够被ntpd读写,否则会报错
④ 通过 keys 来设置秘钥进行限制客户端连接
3. 启动NTP服务
NTP服务通过 udp协议 与 123端口 进行通信。
service ntpd status # 查看NTP服务状态
service ntpd start # 启动NTP服务
netstat -tlunp | grep ntp # 观察NTP服务是否已启动监听
ntpstat # 查看ntp服务器连接信息
ntpq -p # 打印出已连接的上层 NTP Server 信息
例如:
[root@localhost Desktop]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*120.25.115.20 10.137.53.7 2 u 572 1024 377 36.830 -1.902 4.811
+electrode.felix 56.1.129.236 3 u 233 1024 377 212.645 -2.799 1.346
ntp.wdc1.us.lea 130.133.1.10 2 u 11h 1024 0 215.177 -2.970 0.000
+undefined.hostn 127.67.113.92 2 u 239 1024 377 160.769 3.244 10.146
- remote:远程连接的NTP主机名或IP,“*”代表正在作用的上层NTP,“+”代表次级候选NTP服务器
- refid:参考的上一层NTP主机的地址
- st:就是stratum阶层,当前NTP主机的层级信息
- when:几分钟前层走过同步化更新
- poll:下次更新在几秒钟后
- reach:已经向上层NTP服务器要求更新的次数
- delay:网络传输过程中延迟的时间,单位为10^-6秒
- offset:时间补偿的结果,单位为10^-3秒
- jitter:Linux系统时间与BIOS硬件时间的差异时间,单位为10^-6秒
注意
- 完成NTP服务器后,还需要检查防火墙的状态,确保防火墙开放了123端口。
- NTP服务器之间的时间差必须小于1000s,否则会出现服务器连接关闭,无法进行时间校验
- 若 NTP Server 本身未连接外网,则需要在 ntp.conf 文件中Server部分添加如下设置信息:
# 在其他服务器都无法同步成功时,同步本地服务器
server 127.127.1.0
fudge 127.127.1.0 stratum 10
Windows 10下如何连接NTP服务器
- 右键右下角时间,选择“调节日期/时间”,打开时间配置界面
- 点击“添加不同时区使用”,打开日期/时间配置界面
- 在Internet标签栏页面中,点击“更改设置”,打开Internet时间设置,手动修改服务器主机名或IP即可。
完成上述配置后,即可完成Windows连接NTP服务器配置
Windows 下如何修改同步时间的间隔
- win + r 打开 “运行” 窗口,输入 “regedit” 回车,打开注册表窗口
- 在注册表窗口中,按如下目录查找键值 [ HKEY_LOCAL_MACHINE – SYSTEM – CurrentControlSet – Services – W32Time – TimeProviders – NtpClient ] 找到 “SpecialPollInterval”
- 双击该键值,切换到十进制模式下,该数值即为Windows同步时间的间隔,单位为秒,可按自己需要进行修改,如我将其改为 “86400” (60x60x24,即一天)
- 完成上述修改后,关闭注册表窗口,统一使用 win + r 打开 “运行” 窗口,输入 “services.msc”,打开 “服务” 窗口,找到 “Windows Time” 服务,右键重启该服务即可完成时间间隔修改设置。