大家好,又见面了,我是你们的朋友全栈君。
NTP协议简介
目前在计算机上同步时间采用的NTP协议,我们可以在局域网中搭建NTP服务器来同步时间。NTP(Network Time Protocol)是用来是计算机时间同步化的一种协议,他可以使计算机对其服务器或时钟源(如石英钟、GPS)做同步化,可以提供高精准度的时间校正。
NTP可以通过原子钟、天文台、卫星等渠道获得精准时间,然后再按照NTP服务器等级进行传播。NTP的网络结构是分层管理的类树形结构,Stratum-0是外部时钟源,Stratum-1层从Stratum-0层获取时间,Stratum-2层从Stratum-1层获取时时间,以此类推,但Stratum层的总数必须限制在15层以内。
NTP网络体系如下图,图画的很难看,莫见怪哈~
NTP网络协议体系
在使用时间服务器进行时间同步时,NTP客户端首先发出时间同步请求,与时间服务器交换时间,交换的结果是,客户端计算出时间的延迟,调整与时间服务器同步。要查看详细的NTP报文协议,请点击这里NTP协议分析。
NTP工作模式
以上是NTP协议的简要信息,接下来说说NTP的3种工作模式。
主/被动对称工作模式:这种模式采用一对一连接,双方均可同步对方或被对方同步,先发出申请建立连接的在主动工作模式下,另一方在被动工作模式下。
客户/服务器模式:这种模式也是一对一连接,与主/被动模式同的是,客户端按照服务器的时间进行同步,而服务器不会与客户端同步。
广播模式:一对多的连接,服务器不论客户端工作在那种模式下,主动发出时间信息。
上述的3种工作模式都是采用UDP协议来发送时间信息的,客户端在收到数据包后计算出时间的偏差量与传递资料的时间延迟。
安装和配置NTP服务器
安装NTP服务
安装命令如下:
sudo apt-get installl ntp
这样就在安装好了NTP服务。下面进行NTP的配置。
配置NTP服务
NTP常用配置选项:
server
通过server选项可设置上级NTP服务器的IP地址,具体格式为:
server ip或域名
restrict
restric 主要用来设置NTP的权限,格式为
restric ip地址 mask 子网掩码 参数
参数可以为以下几项:
ignore:关闭所有的NTP联机服务
nomodify:客户端只能通过服务器进行网络校时,但客户端不能更改服务器端的时间参数
notrust:客户端除非通过认证,负责客户端来源将被视为不信任子网
noquery:不提供客户端的时间查询
driftfile
driftfile用来指定一个文件,给文件记录与上级NTP服务器所联系时花费的时间,格式为:
driftfile 文件名
下面是NTP服务器的配置实例。
NTP配置实例
NTP主要配置文件在 /etc/ntp.conf中,我们可以通过修改来配置NTP服务器的参数。
编辑ntp.conf 文件内容如下:
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# Specify one or more NTP servers.
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org
# Use Ubuntu’s ntp server as a fallback.
server ntp.ubuntu.com
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page
# might also be helpful.
#
# Note that “restrict” applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don’t allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
restrict 10.12.8.196 mask 255.255.255.0 nomodify
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient
配置完成后,需要重新启动NTP服务。
sudo service ntp restart
这样我们就配置好了NTP服务器,下面教大家如何通过客户端来同步时间。
同步时间
在ubuntu 下使用ntp同步时间:
lixinxing@Ideapad-Flex:~$ sudo ntpdate -u 10.12.8.196
19 Apr 13:54:17 ntpdate[6148]: adjust time server 10.12.8.196 offset -0.003172 sec
在windows下同步时间
首先打开控制面板中的时间与日期设置,选择Internet时间,点击更改设置
在服务器中输入10.12.8.196,这里10.12.8.196是你搭建的NTP服务器的地址,然后单击立即更新,可以看到时间已经同步完成的信息,接下来会每隔一周时间自动与服务器同步时间。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126162.html原文链接:https://javaforall.cn