ntp配置手册

ntp配置手册

1.时间服务器

1.1 ntp服务

系统对时采用ntp服务。系统的计时方式,即软件时钟是由1970年1月1日开始计算总秒数,使用命令date +%s可以看到当前时间到1970.1.1的总秒数。计算机在硬件上也有时钟,我们在主板上可以看到一块小电池,这个是在关机的状态下,系统硬件bios也能继续计时。但是由于bios内部芯片的原因,时间长了会导致硬件时间与实际时间有差异,这时候就需要进行时间同步了。

ntp服务通过下面的步骤进行客户端和服务端的同步对时:

  1. 首先,服务端启动这个ntp daemon,等待客户端消息;
  2. 客户端会向ntp server发送出对时信息;
  3. 然后ntp server会把当前的标准时间返回给客户端;
  4. 客户端收到了来自ntp server的时间后,会调整自己的时间,就达成了网络对时;

1.2 安装ntp服务

1.2.1 安装ntp服务端,ntpdate客户端,客户端和服务端不能在同一台机器上工作

​ 安装服务端:# yum -y install ntp

​ 安装客户端:# yum -y install ntpdate

1.2.2 服务的启动和关闭

​ 服务端安装玩ntp后,默认是开启的状态,可根据需求设置开机自启

# systemctl start/restart/stop/enable ntpd 
# 更改完配置文件的时候,记得执行下面命令
# systemctl daemon-reload
1.2.3 配置文件

​ 服务端ntp的相关配置文件有:

	* /etc/ntp.conf  #主配置文件
	* /usr/share/zoneinfo  #由tzdata软件所提供,为各时区的时间格式对应文件。例如当前时区格式对应文件放在/usr/share/zoneinfo/Asia/Shanghai
	* /etc/adjtime  #设定时区与是否使用UTC时间的配置文件,默认设置local,使用的是CST时间
	* /etc/localtime  #本地端的时间配置文件/usr/share/zoneinfo/Asia/Shanghai,此时系统就会将shanghai那一行复制一份成为/etc/localtime

1.3 配置说明

​ ntp服务采用阶层服务架构来处理时间的同步,假设我们的主机和网络上的主机阶层一对时,那我们的主机就是阶层二,另外通过我们这台主机对时的机器就是阶层三。在/etc/ntp.conf文件中,文件配置项如下:

1.3.1 使用driftfile记录时间差异

​ 格式为:driftfile [可以被ntpd写入的目录与文件]

​ 因为预设的NTP Server本身的时间计算是依据BIOS的芯片震荡周期频率来计算的,但是这个数值与上层Time Server不见得一致。所以NTP daemon (ntpd)会自动的去计自己主机的频率与上层Time server的频率,并且将两个频率的误差记录下来,记录下来的文件就是在driftfile后面接的完整文件名当中。关于文件名,要知道:

​ driftfile后面接的文件需要使用完整路径文件名;

​ 该文件不能是链接文件;

​ 该文件需要设定成ntpd这个daemon可以写入的权限;

​ 该文件所记录的数值单位为:百万分之一秒 (ppm)。

1.3.2 使用statsdir和filegen开启日志统计分析

​ 格式为:

statsdir directory_path

filegen name file filename [type type] [link | nolink] [enable | disable]

​ 当打开统计分析时,ntp会在directory_path目录下产生filegen中所设定的统计文件。

1.3.3 使用restrict管理权限控制

​ 格式为:restrict [address] mask [mask] [parameter] 例如:restrict 192.168.1.0 mask 255.255.255.0 [patameter]

​ ignore:拒绝所有类型的NTP联机;

​ nomodify:客户端不能使用ntpc与ntpq这两支程序来修改服务器的时间参数,但客户端仍可透过这部主机来进行网络校时的;

​ noquery:客户端不能够使用ntpq,ntpc等指令来查询时间服务器,等于不提供NTP的网络校时;

​ notrap:不提供trap这个远程事件登录(remote event logging)的功能。

​ notrust:拒绝没有认证的客户端。

​ 如果你没有在parameter的地方加上任何参数的话,这表示“该IP或网段不受任何限制”。一般来说,我们可以先关闭NTP的权限,然后再一个一个的启用允许登入的网段。

1.3.4 使用server设定上层NTP服务器

​ 格式为:server [address] [options…]

​ 在server后面填写服务器地址(可以是IP或主机名),之后是命令参数主要包括autokey,brust,ibrust,key,minpoll,maxpoll,mode option,noselect,preempy,prefer,true,ttl,version,xleave。这里最常使用的prefer,表示优先使用的服务器。

1.4 使用示例

1.4.1 服务器端设置

例1:在局域网内设置主机A(IP地址172.16.10.130)作为对时标准服务器。

修改/etc/ntp.conf文件,指定上一级服务器。

#外网环境,指定网关对时或者国家授时中心IP,将其他[0/1/2]pool的网址注释。(或者指定为主机A的IP地址,将本机A作为局域网的对时服务器。)
server 210.72.145.44 prefer       
#让NTP Server和其自身保持同步,如果在/etc/ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端
server 127.127.1.0
fudge 127.127.1.0 stratum 5

修改/etc/ntp.conf文件,设置允许哪些客户端进行对时。

第一种配置:允许任何IP的客户机都可以进行时间同步
#restrict -4  default kod nomodify notrap nopeer noquery(默认拒绝所有IP的时间同步,将默认的注释)
#restrict -6 default kod nomodify notrap nopeer noquery
restrict default modify notrap
第二种配置:只允许222.79.19.0/24网段的机器进行实践同步
restrict 222.79.19.0 mask 255.255.255.0 nomodify notrap

最后可以把不需要的配置项注释或者删除,服务器端的ntp.conf文件如下:

driftfile /var/lib/ntp/ntp.drift
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
restrict default modify notrap
restrict 127.0.0.1
restrict ::1 
server 210.72.145.44 prefer
server 127.127.1.0
fudge 127.127.1.0 stratum 5

重启ntp服务,查看ntp的端口和状态。

# netstat -ntulp | grep 123
udp        0      0 192.168.132.159:123     0.0.0.0:*                           5067/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           5067/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           5067/ntpd
udp6       0      0 fe80::4627:c7f:ae0d:123 :::*                                5067/ntpd
udp6       0      0 ::1:123                 :::*                                5067/ntpd
udp6       0      0 :::123                  :::*                                5067/ntpd

关于ntpq该命令列出的选项有以下几种:

  • remote:是NTP主机的IP或主机名,注意最左边的符号:

  • 如果有“*”代表目前正在作用当中的上层NTP;

  • 如果是“+”代表也有连上线,而且可作为下一个提供时间更新的候选者。

  • refid:参考的上一层NTP主机的地址。

  • st:就是stratum阶层。

  • when:几秒钟前曾经做过时间同步化更新的动作。

  • poll:下一次更新在几秒钟之后。

  • reach:已经向上层NTP服务器要求更新的次数。

  • delay:网络传输过程当中延迟的时间,单位为10^(-6)秒。

  • offset:时间补偿的结果,单位与10^(-3)秒。

  • jitter:系统时间与BIOS硬件时间的差异时间,单位为 10^(-6)秒。

从上述的ntpstat以及ntpq -p的输出结果中,我们的NTP服务器必须要能够连结上层NTP才行,否则你的客户端将无法对你的NTP服务器进行同步。另外,我们的NTP服务器时间不可与上层差异太多,例如相差一年。

1.4.2 客户端设置

例2:其他主机以主机A(192.168.100.237)作为时间服务器对时。

1)第一种方法:使用ntp服务的客户端命令ntpdate。

ntpdate [-dv] [NTP IP/hostname]

选项说明:

-d :进入除错模式 (debug) ,可以显示出更多的有效信息。

-v :有较多信息的显示。

#ntpdate 192.168.100.237

15 May 14:17:37 ntpdate[6330]: adjust time server 192.168.100.237 offset 0.008860 sec

上面这种对时,客户端不需要启动ntp服务,如果启动了,ntpdate命令会报冲突错误。

如果希望能够定时循环对时,可以将ntpdate 192.168.100.237命令写到定时任务配置文件中,例如每5分钟执行一下这条对时命令。

#crontab -e
*/5 * * * * root ntpdate 192.168.100.237

2)第二种方法:如果有很多客户端,且希望能够自动对时,我们也可以修改/etc/ntp.conf文件。然后重启ntp服务,等待15分钟左右。

driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enabl
restrict 172.16.10.130
restrict 127.0.0.1
restrict ::1
server 172.16.10.130 prefer
server 127.127.1.0
fudge 127.127.1.0 stratum 5
1.4.3 其他常见的时间相关命令

例3:常用的时间相关命令。

# date #获取当前系统时间
# date -s "20210812 19:37" #改时间
# hwclock -r #获取当前bios时间
# hwclock -w #将当前系统时间写入到bios

1.5 常见问题

1.5.1 no server suitable for synchronization found

原因:NTP server还没有和其自身或者它的server同步上。在ntp server上重新启动ntp服务后,ntp server自身或者与其server的同步的需要一个时间段,这个过程可能是5分钟,在这个时间之内在客户端运行ntpdate命令时会产生no server suitable for synchronization found的错误。

处理:等待几分钟后,重试一般解决。

1.5.2 inappropriate address 172.16.10.130 for the fudge command, line ignored

将fudge改成Fudge。

1.5.3 receive: KoD packet from 172.16.10.130 has inconsistent xmt/org/rec timestamps. Ignoring.

检查restrict设置,一般报这个问题这个不影响对时,等5-15分钟即可。

1.6 总结

  • linux系统有两种时间,一种是Linux以1970/01/01开始计数的系统时间,一种则是BIOS记载的硬件时间。
  • linux系统可以通过网络对时,最常见的网络校时为使用NTP服务器,这个服务启动在udp port 123。
  • 时区文件主要放置于/usr/share/zoneinfo/目录下,而本地时区则参考/etc/localtime。
  • NTP服务器为一种阶层式的服务,所以NTP服务器本来就会与上层时间服务器作时间的同步化, 因此nptd与客户端软件ntpdate两个指令不可同时使用。
  • NTP服务器的联机状态可以使用ntpstat及ntpq -p来查询。
  • 在linux系统下想要手动处理时间时,需以date设定时间后,以 hwclock -w来写入BIOS所记录的时间。
  • NTP服务器之间的时间误差不可超过1000秒,否则NTP服务会自动关闭。
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河 静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值