一、什么是NTP ? NTP
Network Time Protocol 网络时间协议
它属于应用层协议,传输层采用UDP,用于同步设备之间的时间。提供时间规范的的设备为服务器,接收时间服务的设备为客户端。NTP的时间来源是国际标准时间UTC(Universial Time Coordinated)
ntpd
NTP守护进程
它是操作系统守护进程,提供完整的NTP应用服务。为了追求最高精度(可以达到约232皮秒),ntpd会完成复杂的计算。ntpd启动时,从配置文件ntp.conf中读取同步数据来源以及相关设置。使用ntpq命令可以查看当前连接的时间服务器状态。
二、为什么要用NTP ?
对于计算机集群,计算机设备要使用统一的标准时间,来记录各种事件的发生时序,若计算机时间不同步,很多依赖时序运行的应用就会逻辑混乱,出现问题。
配置再好,性能再高的计算机,运行久了也会有时钟误差。只有原子钟能够持续提供高精度的时间,但其费用昂贵,只有少数计算机可以连接原子钟,作为公共NTP服务器。
NTP主要应用于要求网络中全部设备时钟保持一致的场景,比如从计算机集群中获取日志,多终端的计费系统计时,重启网络中所有设备等。
三、如何配置NTP服务器 ? Ubuntu
要把一台主机用作NTP服务器,首先要保证其能通外网。
它先与外部时间服务器同步,然后给内部各主机提供同步服务。
第一步:安装ntp软件包
第二步:修改配置文件
第三步:启动ntpd进程
第四步:监视时间同步情况
第五步:退出ntpd进程
1.安装ntp
~$ sudo apt install ntp
2.编辑配置文件
安装ntpd后,Ubuntu下默认的配置文件绝对路径是 /etc/ntp.conf
~$ sudo vim /etc/ntp.conf
具体编辑如下:
设置本机为NTP服务器
继续添加语句
# set local as server
server 127.127.1.0
fudge 127.127.1.0 stratum 10
设置层级为10,可根据具体情况修改。
层级低的向层级高的获取时间,对于封闭集群,建议stratum设置为0添加限制访问权限
只允许规定网段的主机访问本服务器,于是在
restrict 127.0.0.1
restrict ::1
这两句下面添加语句(请使用ifconfig命令查询你的IP所在网段,mask掩码根据具体情况设置)
restrict 172.16.166.0 mask 255.255.255.0 nomodify notrap
nomodify 限制客户端不能使用ntpc和ntpq来修改服务器的时间参数
notrap 不提供trap这个远程时间登录的功能
另外还提供的参数有:
ignore 拒绝所有类型的NTP连接
noquery 禁止客户端查询服务器时间
notrust 拒绝没有认证的客户端
nopeer 不与同一层级的NTP服务器同步保存退出
Esc,:wq,Enter,休息一下,泡杯咖啡。 3.启动ntpd进程
~$ sudo service ntp start
查看是否开启成功:
~$ sudo service ntp status
4.监视时间同步情况
启动ntpd进程之后,服务器信息是不会打印出来的,需要用监视工具进行查看和监视,一般用到这两个:ntpstat 和 ntpq
项表示
remote
*上级响应中最精准的NTP服务器 +响应请求的NTP服务器
refid
NTP响应服务器的更高级的时间基准服务器
st
响应的NTP服务器对应的stratum层级(stratum意义:低层级向高层级获取时间)
辅助信息
when
多久前做过时间同步更新(秒)
poll
下次更新在多久之后(秒)
reach
已向上层服务器要求更新次数
delay
网络传输中的延迟时间
offset
本地与服务器时间的差距,数值越接近0,时间差越小
jitter
系统时间与硬件时间的差异
5.退出ntpd进程
~$ sudo service ntp stop 即可
Windows
windows上配置NTP服务器的方法较简单,分为以下几步
第一步:关闭默认的时间提供程序
第二步:修改相应注册表项
第三步:剩下的交给命令行
1.关闭默认的时间提供程序 2.修改相应注册表项 3.命令行运行 四、客户端如何使用NTP服务? Ubuntu
客户端和服务端只是在配置文件上有所不同
第一步:安装ntp软件包,以及ntpstat工具
第二步:修改配置文件
第三步:启动ntpd进程
第四步:监视时间同步情况
第五步:退出ntpd进程
第六步:添加定时自动同步功能
1.安装ntp和ntpstat
~$ sudo apt install ntp
~$ sudo apt install ntpstat
2.修改配置文件
~$ sudo vim /etc/ntp.conf
具体修改如下:
3.启动ntpd进程
请先确保您的NTP服务器已经开启ntp服务进程
~$ sudo service ntp start
查看是否开启成功:
~$ sudo service ntp status
4.监视时间同步情况
~$ sudo ntpstat
或者
~$ sudo watch ntpq -p(持续监视)
5.退出ntpd进程
~$ sudo service ntp stop
6.添加定时自动同步功能
现在我设置每隔2小时进行一次时间同步,可以作以下编辑:
0 */2 * * * root service ntp start; sleep 20; service ntp stop;
中间sleep20秒是为了ntpd有足够时间去获取同步,如果使用ntpdate(不推荐)则不需要此操作
Windows
如果您使用的是windows系统,那么需要
第一步:以管理员身份运行Windows命令行终端
第二步:用Windows自带的w32tm服务完成同步
第三步:其它相关操作
1. 运行Windows命令行终端
Windows菜单搜索“命令行提示符”
右键点击并选择“以管理员身份运行”,弹出终端
2. 用w32tm服务完成同步 3. 其它相关操作
五、*其它 为什么用ntpd不用ntpdate? 系统时间、硬件时间以及它们的同步 用tzselect工具手动修改时区
You can make this change permanent for yourself by appending the line
TZ=‘Asia/Shanghai’; export TZ
to the file ‘.profile’ in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai
六、参考资料
国内常用NTP服务器地址
Linux时间同步
ntp服务的细节全解析
Linux配置ntp时间服务器
Linux中怎么搭建NTP服务器
Linux配置自动时间同步
Windows 时间服务技术参考