通常情况下内网服务器实现时间同步有两种常用方法:ntp和chrony。
但最近在查找一些其他资料时,偶然发现利用xinetd守护进程中的time-dgram和time-stream可以实现一种更简便的时间同步方法。
下面介绍一下实现过程:
内网测试服务端系统:CentOS7
内网测试服务端地址:192.168.10.5
内网测试服务端系统:CentOS7
内网测试客户端地址:192.168.10.6
一、服务端
这里定义的服务端我们可以设置为一台虚拟机,该虚拟机可以作为客户端连接外网将外网时间同步到本机,同时另外一个网口连接内网作为服务端为其他内网客户端提供时间同步服务,内网的其他主机作为客户端将该服务端的时间同步到客户端本地。
服务端配置:
yum install ntpdate #
安装ntpdate
which ntpdate #查找到ntpdate的命令路径,用于crontab定时任务编写
echo “*/10 * * * * /usr/sbin/ntpdate time.windows.com” >> /var/spool/run/root #每十分钟定时同步网络时间到该内网时间服务器端
注意:
1、如果同步的不是外网ip地址,则事先需要在/etc/resolv.conf中添加可用的外网DNS地址
2、外网时间服务器可随意选择一个稳定的服务器。
安装xinetd守护进程管理服务并开始配置time-dgram和time-stream
yum install xinetd
cd /etc/xinetd.d/
此时可以看到该目录下有time-dgram和time-stream两个文件,将这两个文件中的disable=yes改为no,然后重启xinetd守护进程服务
systemctl restart xinetd.service
systemctl enable xinetd.service #开机启动xinetd服务
现在使用ss –tunlp命令可查看到37端口在监听,请确定防火墙已开放此端口
此时客户端就可以开始做同步配置了
二、客户端
客户端安装rdate并设置定时同步
yum install rdate
which rdate #查找rdate路径,用于crontab的定时同步
echo “*/10 * * * * /usr/bin/rdate -s 192.168.10.5”>> /var/spool/cron/root #每十分钟从内网时间服务器同步时间到本地
注意:
此种方法同步时间并不会显示矫正的差值。
rdate命令参数释义:
-p Print the time returned by the remote machine.
显示所指向的时间服务器具体时间信息
-s Set the system time to the returned time.一般仅使用用此参数即可
-u Use UDP instead of TCP as the transport.使用UDP
-l Use syslog to output errors (cron.warning) and output (cron.info).使用系统日志输出错误日志
-t Set timeout in seconds for every attempt to retrieve date.同步重试时间间隔
三、总结
此种方法可用于,如本服务器有其他服务占用本地123端口,但又需要使用时间同步,可采用此方法。
此种方法比较简单,可作为一个临时解决方案作为参考和知识储备扩展,相比来说更推荐使用ntp。
网友留言: