Linux服务.NO2——ntp服务器

2. ntp

2.1.ntp概念

NTP(Network Time Protocol网络时间协议)是用来使计算机时间同步化的一种协议,可以使计算机对自己的时钟源做同步化,可以提供高精度的时间校准。ntp服务器的精度十分高,在局域网内可达0.1ms,在网络中基本上也可以达到1-50ms
ntp的网络结构是类似于倒置的树状的结构,最上层的是时间源,然后按照实际距离将外部时间源的远近将所有服务器归入不同的层中,stratum-0(第0层)就是时钟源,然后stratum-1(第一层)的服务器就从时间源获取时间,再straum-2的服务器就从stratum-1中获取时间,以此类推,但是最多不超过15层。
在使用ntp服务器进行时间同步时,客户端发出时间同步请求,与服务器交换时间,交换的结果时,客户机计算自己时间的差值,然后调整自身与服务器同步,一般在最开始的5~10分钟会进行6次交换,时间同步之后,每十分钟与服务器进行一次同步。

2.2.ntp工作模式

主/被动对称模式:采用一对一连接,双方均可同步对方或者被对方同步,先发出申请的工作在主动模式(相当于客户端),另一方工作在被动模式(相当于服务器)。
客户/服务器模式:一对一连接,只能是客户端被服务端所同步,服务端不能被客户端同步。
广播模式:一对多连接,服务器不管客户机在哪种模式,主动发出时间信息,收到消息的客户机自行调整时间。
这三种模式的数据包都是通过UDP协议来传输同步的数据包,客户端会根据数据包中的数据通过过滤算法计算出时间参考值,并且客户机会同时获得多个服务器提供的时间,在多个时间参考值中找出相对可靠的时间来源,来校准自己的时间。

2.3.ntp的安装与管理

安装使用命令yum -y install ntp*
管理使用systemctl命令,服务进程是ntpd.
ntp服务使用的端口是123端口,使用服务前应该先打开该端口

chrony是ntp的客户端软件
安装yum -y install chrony (一般都是自带的)
管理使用systemctl相关命令,服务进程是ntpd

2.4.配置文件ntp

driftfile /var/lib/ntp/drift这行表明了一个文件(该文件应该保证服务进程有权写入),该文件保存了本地客户端校准服务器时间时候记录的差值,有了这个数据,即使重启电脑,客户端也可以再根据该文件中的内容校准时间。
配置文件包含了三类参数:restrict,server,fudge
restrict就是用来赋予访问权限的,restrict像个命令,格式为:
restrict [ip] mask [mask] [par]
par: ignore 忽略所有类型的NTP请求
nomodify限制客户端不能修改服务器端的时间
noquery不提供ntp网络校时服务
notrap不接受远程登录请求
notrust不接受没有经过认证的客户端请求
nopeer用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟;
#restrict default nomodify notrap nopeer noquery默认拒绝任何来源的访问,应该注释或修改掉
restrict 127.0.0.1 ntpd需要有loopback的参与,所以这行保留,表示开放本机的任何访问
#hosts on local network are less restricted说明了此处该表明允许内网访问其他机器同步时间的范围,并给出了格式
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap(开放这一网段主机的访问权限)
还可以多写一条权限:
restrict 172.16.0.1 nomodify notrap noquery设置允许上层服务器主动修改本地时间(IP是上层服务器的IP之一)
下面的server表示指明时间源来源,也就是选择上层服务器,需要多个,server也有格式:
server [ip or hostname] [perfer]
如默认的0.centos.pool.ntp.org iburst
还有其他的server ntp1.aliyun.com
也有自定义server 172.16.0.1等。总之要多写几个,时间才能准确
当外部时间服务器不可用时:
server 127.127.1.0 //以本地时间作为时间服务
可以看到最后一个参数是可以不写的,最后参数如果写成perfer,那么客户端就会主要以该server的时间为准
fudge的作用是设置时间服务器的层级,格式是:
fudge [ip] [startnum int]
fudge必须和server一起用,而且必须是在server的下一行,表示对上一行的server设置层级,如:
fudge 127.127.1.0 startnum 0,写在以本地时间作为时间服务后面的一行,表示将本地时间服务设置为最高层。

2.5.监控ntp

配置完成并启动服务之后,使用命令ntpq -p可以查看ntp服务器的各项数据(表格):
remote:响应这个请求的ntp服务器
refid:上一级ntp服务器名称
st:远程服务器的层级
t:可选的类型,有l,u,m,b,-=netaddr 五种情况,分别表示本地,单播,组播,广播,网络地址。
when:上一次请求成功到现在的时间(秒)
poll:本地服务器与上层服务器做时间同步的时间间隔
reach:用于测试是否能和服务器相连接,每成功一次就增加一次
delay:从本地发送同步请求到服务器的延时时间
offset:主机通过ntp时钟同步与时钟源的时间偏移量,该值越小,说明时间越接近服务器(毫秒)
jitter:统计了特定的连接数里offset的分布情况,该值绝对值越小,主机时间越精准。

2.6.配置文件chrony

最上面是上层服务器,如果是在内网环境需要注释掉
allow 192.168.0.0/24设置允许访问的网段

2.7.客户端使用ntp

windows:控制面板日期和时间设置日期和时间更改设置输入ntp服务器地址即可。
ntp和chrony就在配置文件中加入上层服务器ip然后打开服务,即可使用,Linux中只要配置好了就会自动更新UTC,待系统时间稳定了之后再使用命令hwclock -u用UTC时间更新硬件时间,再使用命令hwclock -s用硬件时间更新系统时间。
如果用chrony同步了时间,可以使用命令timedatectl可以查看同步结果

2.8.真实服务器搭建日志(2018.12.15)

1.服务器ntp

1.阿里云ESC云主机,centos7,Linux内核3.10.0,64位系统
2安装相关软件包 yum -y install ntp*
3进入配置文件 vim /etc/ntp.conf
4.修改默认权限restrict default nomodify notrap nopeer noquery
改为restrict default nomodify notrap
5.添加主要上层服务器server cn.pool.ntp.org
6.保存退出,启动服务systemctl start ntpd
7.查询结果ntpq -p查看上层服务器状态,完成服务器配置
8.打开防火墙:
firewall-cmd --zone=public --add-port=123/udp --permanent
firewall-cmd --reload
5.打开服务systemctl start chronyd
6.命令chronyc sourcestats -v查看上层服务器

2.客户端chrony

centos7本地虚拟机
1.打开配置文件vim /etc/chrony.conf
2.添加上层服务器server 39.xxx.xxx.xxx(我服务器的IP)
3.打开服务systemctl start chrony

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值