ubuntu下搭建ntp服务器的过程
NTP协议全称网络时间协议(Network Time Procotol),它的目的是在国际互联网上传递统一、标准的时间。具体的实现方案是在网络上指定若干时钟源网站,为用户提供授时服务,并且这些网站间应该能够相互比对,提高准确度。
NTP是一个跨越广域网或局域网的复杂的同步时间协议,它通常可获得毫秒级的精度。RFC2030描述了SNTP(Simple Network Time Protocol),目的是为了那些不需要完整NTP实现复杂性的主机,它是NTP的一个子集。通常让局域网上的若干台主机通过因特网与其它的NTP主机同步时钟,接着再向局域网内其他客户端提供时间同步服务。
NTP协议是OSI参考模型的高层协议,符合UDP传输协议格式,拥有专用端口123.
随着时间的推移,计算机的时钟会倾向于漂移。网络时间协议(NTP)是一种确保您的时钟保持准确的方法。它为路由器、交换机、工作站和服务器之间提供了一种时间同步的机制。所以NTP Server经常应用于一些有时间同步要求的IT系统环境中。
服务器配置
安装
配置文件位置
sudo /etc/ntp.conf
配置方法
利用server设定上层NTP服务器,上层NTP服务器的设定方式为:
参数说明:
ip or hostname :上层ntp服务器的IP地址或者域名
prefer : 表示优先使用的主机
driftfile :记录时间差异。因为预设的NTP Server本身的时间计算是依据BIOS的晶片震荡周期频率来计算的,但是这个数值与上层Time Server有误差。所以NTP这个daemon会自动的去计算主机的频率与上层TimeServer的频率,并且将两个频率的误差记录下来,记录下来的档案就是在driftfile后面接的完整文件名中了
注意:
建议server使用hostname,因为可能存在局域网内机房迁移导致ip地址变化的情况
常见的时间服务器
http://www.pool.ntp.org/zone/cn
重启ntp服务器
查看ntp运行状态
参数解释
ntp参数含义
服务器状态参数
NTP安全设置
安全需求
运行一个NTP Server不需要占用很多的系统资源,所以也不用专门配置独立的服务器,就可以给很多client提供时间同步服务,但是一些基本的安全设置还是很有必要的,提供一种思路:
只允许局域网内一部分的用户连接到我们的服务器
这些client不能修改我们服务器上的时间
安全设置
在/etc/ntp.conf文件中我们可以用restrict关键字来配置上面的要求 :
[restrict]参数设定方式:
restrict [your ip] mask [netmask_ip] [parameter]
其中parameter的参数主要有:
参考配置
对于默认的client拒绝所有的操作
restrict default kod nomodify notrap nopeer noquery
然后允许本机地址一切的操作
最后允许局域网内指定的client连接到这台服务器同步时间,但是拒绝他们修改服务器时间
注意:
默认的配置就是禁止所有client修改server的时间,因此我认为默认的配置足够了
NTP时间服务器client配置
同步方法
做到这里我们已经有一台自己的relay ntp server。如果我们想让局域网内的所有client都进行时间同步的话,我们就都应该按照上述方式再搭建relay server,然后所有的client都指向那一台server服务器。
注意:
由于ntpd的server/client之间的时间误差不允许超过1000秒,因此需要先手动进行时间同步,然后再设定ntp.conf
ntpdate
ntpdate [-dv] [NTP IP/HOSTNAME]
参数含义:
-d : 进入除错模式(debug),可以显示出更多的有效资讯
-v : 有较多讯息的显示
ntpdate和ntpd的区别
ntpd不仅仅是时间同步服务器,他还可以做客户端与标准服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中应慎用ntpdate。
由于ntpdate是立即同步,在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,就会产生时钟的跃变。
用ntpdate调整时间的方式,问题:
1、不安全
2、不够精确
3、不够优雅