怎么搭建NTP时间服务器
Linux中怎么搭建NTP服务器
说明:本次实验采用两台加载CentOS7.7版本的镜像文件的虚拟机,要求一台配置好时间服务之后,由另一台进行同步。
说在前面:ntp和ntpdate区别
- 两个服务都是centos自带的(centos7中不自带ntp)。ntp的安装包名是ntp;ntpdate的安装包是ntpdate。他们并非由一个安装包提供。
- ntp守护进程为ntpd,配置文件是/etc/ntp.conf
- ntpdate用于客户端的时间矫正,非NTP服务器可以不启动NTP。
我们先讲一下时间服务器的搭建:
首先先说一下我们常用的Windows系统的时间是怎样的,我们通过控制面板打开日期和时间,然后选择Internet时间,点击更改设置就可以知道当前的服务器是怎样与时间同步的了。
这里要求时间服务器要能上网(为了保证精度),它从外部同步时间,最后给内部主机提供同步。
先讲几条基础命令
功能 | 命令 |
---|---|
查看时间 | date |
查看硬件时间 | hwclock -r |
查看系统所在时区 | date -R |
查看所有时区 | ls /usr/share/zoneinfo/ 或者是:timedatectl list-timezones |
查看其它时区的当前时间 | zdump Hongkong |
修改系统时间 | date -s “20190408 17:41:00” |
修改时区① | tzselect(之后按数字进行选择) vim .bash_profile TZ=‘Asia/hanghai’; export TZ(粘贴在末尾)source ~/.bash_profile |
修改时区② | timedatectl set-timezone Europe/Lisbon |
保存时间修改 | clock -w |
NTP服务的命令、配置
1、有关ntp的命令
其他命令 | 功能 |
---|---|
ntpq -p | 查询网络中的NTP服务器,同时显示客户端和每个服务器的连接状态 |
ntpdate -q 192.168.0.35 | 查看上层服务器状态 |
ntpdate 192.168.0.35 | 更新时间 |
watch ntpdate 192.168.0.35 | 这条命令为客户端使用,每2秒会发生一次变化 |
2、有关ntpq -p的注解
remote | 远程主机的主机名或IP |
---|---|
* | 目前正在使用的上层NTP |
+ | 已连线,可提供时间更新的候补服务器 |
- | 远程服务器被clustering algorithm认为是不合格的NTP Server |
x | 远程服务器不可用 |
其它 | 注解 |
---|---|
refid | 上级NTP的时间基准服务器 |
st | 就是stratum 上层NTP的层级,层级0-15 |
when | 几秒钟前曾做过时间同步更新 |
poll | 下一次更新在几秒后,逐步增大 |
reach | 八进制数,已经向上层服务器要求更新的次数 |
delay | 网络传输过程中的延迟时间 |
offset | 本地和服务器之间的时间差别,越接近0,说明和服务器的时间越接近 |
jitter linux | 系统时间与bios硬件时钟之间的差异 |
3、/etc/ntp.conf ntp的配置文件介绍
#系统时间和硬件时间的偏差记录 |
parameter的参数 | 注解 |
---|---|
ignore | 拒绝所有类型的ntp连接 |
nomodify | 客户端不能使用ntpc与ntpq两支程式来修改服务器的时间参数 |
noquery | 客户端不能使用ntpq、ntpc等指令来查询服务器时间,等于不提供ntp的网络校时 |
notrap | 不提供trap这个远程时间登录的功能 |
notrust | 拒绝没有认证的客户端 |
nopeer | 不与其他同一层的ntp服务器进行时间同步 |
搭建NTP服务
关闭防火墙
systemctl stop firewalld.service |
安装ntp包
yum install ntp -y |
编辑配置文件
vim /etc/ntp.conf |
可以将中间的几行默认上层时间的服务器注释掉,也可以不注释掉。注释掉之后我们这台时间服务器就没法向外部服务器同步了,我是为了方便演示,后面加上图中的指令:表示使用本地时间作为ntp服务器提供给ntp客户端。
restrict 192.168.0.0 mask 255.255.255.0 modify notrap |
我们可以使用 netstat -nlutp | grep ntp
可以查看与ntp服务有关联的进程。
如果客户机上安装有ntp,在客户端需要修改/etc/ntp.conf
,添加以下内容
server 192.168.0.1 #指名上层NTP服务器 |
修改保存后使用ntpq -p
命令查看
[root@centos]# ntpq -p |
未安装ntp可使用ntpdate定时同步
设置计划任务,编辑配置文件之后,让它实现一开机就自动同步。
vim /etc/crontab |
linux shell中"2>&1"
含义
命令 | 注解 |
---|---|
> | 重定向 |
/dev/null | 代表空设备 |
2 stderr | 标准错误 |
& | 表示等同于 |
2>1&1 | 将标准错误重定向到标准输出 |
windows搭建NTP时钟服务器
配置 NTP
修改注册表项
在搜索框中打开注册表,使用命令: regedit
,进入注册表项HKEY_LOCAL_MACHINE—>SYSTEM—>CurrentControlSet—>Services—>W32Time—>TimeProviders—>NtpServer
把Enabled
值设置为 1打开NTP,(系统默认0)。
进入注册表项HKEY_LOCAL_MACHINE—>SYSTEM—>CurrentControlSet—>Services—>W32Time—>Config
把AnnounceFlags
值设置为 5 (系统默认 10)。该设定强制主机将它自身宣布为可靠的时间源,从而使用内置的互补金属氧化物半导体(CMOS) 时钟。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
的「enable」设定为0 以防止作为客户端自动同步外界的时间服务。
启动时间服务
找到Windows time服务,使用命令:services.msc
将Windows time服务设置为自动启动,点击应用和确定,重新启动电脑或者主机,所有配置生效。
NTP时钟搭建完毕,此时只需其他设备将本电脑IP填入时钟同步,点击更新即可同步改时钟
打开客户机控制面板,日期和时间,修改 Internet 时间中地址。
域控中配置组策略
运行输入gpedit.msc
,计算机配置–>管理模板–>系统–>Windows时间服务–>时间提供程序–>右单击“配置Window NTP客户端”,选择属性。
- 选择“已启用”
- 在Ntp Server对应栏位输入时间同步服务器的地址。
- Tpye栏位选择NTP。
- SpecialPollInterval栏位输入需要同步的时间周期,单位:秒,如:每10分钟同步一次,输入600。
计算机配置–>管理模板–>系统–>Windows时间服务–>时间提供程序–>右单击“启用Window NTP客户端”,选择“已启用”
计算机配置–>管理模板–>系统–>Windows时间服务–>时间提供程序–>右单击“启用Window NTP服务端”,选择“已禁用”
时间和日期属性中,填入时间同步服务器地址,方便必要时进行手动同步。
时间同步服务间隔时间太长
由于Windows时间同步服务距上次同步时间较长,造成时间显示不正常。
解决方法:打开注册表编辑器(在运行对话框输入“regedit”),定位到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\W32Time\TimeProviders\NtpClient
然后找到为SpecialPolllnterval
的键,将键值的基数改为“十进制”接着把键值数据改为“1800”(30分钟)默认是“604800”(7天),(根据自己的需求填入,记住单位是秒),按F5刷新一下,就可以了。
时间同步地址注册表快速更改
Windows Registry Editor Version 5.00 |
另存为NTP.reg文件,双击导入