时间服务器的应用场景通常不是很复杂,一般都为局域网内部做同步时间使用,安装起来也比较简便。
一、安装:
1
| # yum install -y ntpd #其他的安装方式就不列出了,基于RPM包的方式就可以满足使用需要了。
|
二、配置:
1、当主机作为客户端仅同步时间时的配置方式:
默认的配置文件中设置的是不允许其他客户端来同步时间的,由下面的设置决定:
1
2
| restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
|
而客户端是可以向上级的时间服务器请求同步时间的,在配置文件中默认提供的上游服务器为:
1
2
3
4
| server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
|
所以作为客户端的时间服务器的配置很简单,在安装完ntpd之后,直接启动就可以了,不过前提条件是这台主机要能联网,因为在配置文件中定义的上级服务器都是互联网上的时间服务器,所以需要和这些时间服务器通信就需要联网,然后启动ntpd服务就可以了。不过通常情况下我们的内网客户端很可能有些是不能直接联网的,所以这个时候我们需要为其提供内网的一台时间服务器,这台时间服务器可以联网,而我们的客户端主机的配置文件中添加语句指向我们的内网服务器即可,比如,我们的内网服务器IP地址为172.16.103.100,那么在配置文件中的server列表中添加如下内容:
当然前面定义的默认时间服务器就可以注释掉了。然后启动ntpd服务:
# service ntpd start #启动服务
# chkconfig ntpd on #设置为开机自动启动服务,免去手动启动服务的麻烦。(建议使用这种方式)
这样同步时间的好处是可以逐步的缩短与服务器之间的时间差,而不是直接同步时间与服务器完全一致,那样的话,在这台客户端的时间记录中有一段空白。如果确实需要快速的同步时间与服务器一致的话,可以使用:
# ntpdate 172.16.103.100 #直接同步时间与服务器时间一致,这种方式也可以,也可以设置成周期性任务计划的方式同步时间。例如:
1
2
| # crontab -e
*/5 * * * * /usr/sbin/ntpdate 172.16.103.100 &> /dev/null #每隔5分钟同步自动同步时间。
|
2、作为时间服务器时的配置:
如果当前主机要作为内网的时间服务器使用,提供其他主机同步时间使用,那么就需要修改配置文件中的默认设置:
1
2
| restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
|
其设定是不允许其他的客户端查询,我们需要设定为下面的两种方式,任意一种都可以,具体的设定看使用的需要:
1
2
| restrict default nomodify #允许任意客户端主机来同步时间,但不允许修改服务器端参数
restrict 172.16.0.0 mask 255.255.0.0 nomodify #仅允许172.16网段的主机来同步时间,但不允许修改服务器端的参数。
|
另外在配置文件中默认就已经定义了几个Linux推荐使用的服务器,Server关键字后面带上服务器的名称的字段就是,这几个服务器默认就是启用的:
如果当前的主机可以联网,那么直接启动ntpd服务,就可以自动的同步时间了,并且为内网的其他主机提供时间同步服务了。不过建议设置一些离我们比较近的服务器,那样同步时间效率要高,比如:
1
2
3
4
| restrict 210.72.145.44 #授权国家授时中心服务器访问本地NTP
restrict 133.100.11.8 #授权133.100.11.8访问本地NTP
server 210.72.145.44 prefer #指定上级更新时间服务器,优先使用这个地址
server 133.100.11.8
|
如果不设置这些服务器,使用默认的服务器,只设定允许客户端来查询是没有任何问题的,只是当启动ntpd服务以后,这台时间服务器需要与上级的服务器通信并同步时间,这是需要一定时间的,大约需要5分钟左右的时间才能同步完成,而指定的默认服务器很可能同步需要的时间更长,而这期间客户端连接该服务器同步时会提示,而我们的服务器设置是没有问题的,不要误判为服务器有问题:
1
| no server suitable for synchronization found
|
在配置文件中有一些参数,具体的含义如下,供大家参考:
restrict <IP 地址><子网掩码>|<网段> <子网掩码> [ ignore|nomodify|noquery|notrap|notrust|nokod ]: 指定可以进行NTP通信的IP地址或网段 1
2
3
4
5
6
7
| ignore:关闭所有NTP服务
nomodify :表示客户端不能更改NTP服务器的时间参数,但可以通过NTP服务器进行时间校对
noquery: 不提供NTP服务
notrap:不提供trap远程事件登录的功能
notrust: 聚聚没有通过认证的客户端
kod:kod技术可以组织“Kiss of Death”包(一种DOS攻击)对服务器的破坏,使用此参数将开启该功能
nopeer:不与其他同一层的NTP服务器进行时间同步
|
如果没有指定选项,那就表示指定的客户端在访问NTP服务器时没有任何限制 在查询时间同步信息时使用的命令:
1
2
3
4
5
6
| [iyunv@server ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
dns.sjtu.edu.cn .STEP. 16 u - 1024 0 0.000 0.000 0.000
+news.neu.edu.cn 236.43.203.76 2 u 136 256 353 93.562 -4.175 11.871
*dns1.synet.edu. 223.255.185.2 2 u 162 256 377 92.719 -2.292 1.655
|
下面对这个命令显示的结果部分参数进行说明: 1
2
3
4
5
6
7
| remote: 本地主机所连接的上层NTP服务器
st:NTP服务器优先级
when:上次与NTP服务器同步的时间(单位:s)
poll:下次与NTP服务器同步的时间(单位:s)
delay:从本地发出时间同步命令给远程时间服务器开始,到整个时间同步完成所需时间(单位:10^-6s)
offset:本地主机与时间服务器的时间差(同步后将自动纠正)
jitter:一个offset的分布统计值,该值越小,表示时间越精确
|
|