Linux常用工具服务——NTP时间同步服务

本文详细介绍了时间同步的重要性,特别是在对时间敏感的系统中。深入探讨了UTC时间标准,时区转换,以及NTP服务的工作原理。此外,还提供了在Linux环境下搭建NTP服务器的步骤,包括配置权限、时间源、层次以及漂移文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间同步介绍

(1) 计算机时钟用于记录事件的时间信息,如E-MAIL信息、文件创建和访问时间、数据库处理时间等
(2) 对时间敏感的计算机系统,如金融业界服务器、EDI、大型分布式商业数据库、航天航空控制计算机等,更需要高精度的时间信息
(3) 在集群以及需要集中记录服务器日志的环境中,时间同步非常重要

时间来源

现在的标准时间是由原子钟报时的国际标准时间UTC(Universal Time Coordinated,世界协调时),所以NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取

北京时区是东八区,领先UTC 8个小时
UTC + 时区差=本地时间
CST(Central Standard Time 國家標準時間)
CST同时代表了下面4个时区:
CST:Central Standard Time (USA) 中部标准时间(美国) UTC -6:00
CST:Central Standard Time (Australia) 中部标准时间(澳大利亚) UTC 9:30
CST:China Standard Time 中国标准时间(北京时间) UTC 8:00
CST: Cuba Standard Time 古巴标准时间 UTC -4:00

系统时间和硬件时间

系统时间(System Time):由内核维护的时间 date
硬件时间(Hardware Time):由BIOS提供的时间
hwclock -w 将系统时间写入硬件时间

搭建NTP服务器

(1) 安装NTP服务程序 yum install -y ntp
(2) 设置NTP服务器

设置说明

【权限的设定】
主要以restrict这个参数来设定,格式如下:
restrict IP地址 mask 子网掩码 参数
其中IP可以是IP地址,也可以是default,default就是指所有的IP
参数如下:
ignore:关闭所有的NTP联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时
notrust:客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery:不提供客户端的时间查询
notrap:拒绝特殊的ntpdq捕获消息
如果参数没有设定,那就表示该IP(或子网)没有任何限制
#例如,只允许客户端192.168.213.0/24网段客户机进行时间校对
restrict 192.168.213.0 mask 255.255.255.0 nomodify notrap

【时间源的设定】
server IP地址或域名 [prefer]
IP地址或域名就是我们指定的上级时间服务器,如果Server参数最后加上prefer,表示我们的 NTP 服务器主要以该部主机时间进行校准
#如果要使用本地时间,将上面的server注释,添加下面两行
server 127.127.1.0 # local clock

【时间服务器的层次设定】
fudge 127.127.1.0 stratum 10
为0则为顶级,如果要向别的NTP服务器更新时间,请不要把它设为0

【driftfile设定】
driftfile 文件名
在与上级时间服务器联系时所花费的时间,记录在driftfile参数后面的文件内
driftfile后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成ntpd守护进程可以写入
cp /etc/ntp.conf{,.bak}
#vim /etc/ntp.conf
设定权限
restrict 192.168.213.0 mask 255.255.255.0 nomodify notrap
修改时间源
server 0.cn.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 127.0.0.1
设定本机的时间服务层次
fudge 127.0.0.1 stratum 10

启动服务端 systemctl start ntpd
(3) 设置客户端

cp /etc/ntp.conf{,.bak}
#vim /etc/ntp.conf
修改时间源
server 192.168.213.129

NTP客户端同步

在服务器端使用ntpstat命令检测和上游服务器同步情况

[root@nfs01 ~]# ntpstat
synchronised to NTP server (162.159.200.123) at stratum 4
   time correct to within 1008 ms
   polling server every 64 s

ntpq –p 查看ntp服务器状态

[root@nfs01 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*time.cloudflare 10.23.12.51      3 u   51   64   17   52.100    1.063   1.542
 ns.al-abrarcom. .INIT.          16 u    -   64    0    0.000    0.000   0.000
 ns5.datautama.n 131.188.3.220    2 u  112   64    2  251.618   70.680   0.000
 localhost       .INIT.          16 l    -   64    0    0.000    0.000   0.000

remote:上层NTP服务器的IP或者主机名。主要最左边的*
*:代表目前正在使用中的上层FTP
+:已经连接成功,且可以作为下一个提供时间服务的候选人
refid:它指的是给远程服务器提供时间同步的服务器,本机上级的上级NTP服务器
st:就是stratum层级,最多有15层,减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器
when:几秒之前通不过时间
poll:在过多长时间去同步时间
reach:已经同步时间的次数
delay:网络传输过程中的延迟,单位是10的-6次方秒
offset:时间修正值,本地机和服务器之间的时间差别,单位是10的-3次方
jitter:linux系统时间(软件时间)与BIOS硬件时间的差异时间,单位是10的-6次方秒

客户端同步测试

[root@web01 ~]# ntpdate 192.168.213.129
14 Feb 16:55:31 ntpdate[1808]: step time server 192.168.213.129 offset -28740.633408 sec

常见错误提示

(1) no server suitable for synchronization found
由于每次重启NTP服务器之后大约要3-5分钟客户端才能与server建立正常的通讯连接,当此时用户端连接服务器时会报这样错误
(2) 使用ntpdate命令同步时间总是不变,原因可能是时区不对,查看下是否是Asia/shanghai时区
(3) 检查防火墙配置:NTP服务器上使用UDP 123端口,防火墙需要打开该端口

### 配置NTP服务以实现在Linux内网环境中两台服务器间的时间同步 #### 安装NTP服务 对于基于Debian的系统,可以使用`apt-get`工具来更新软件源并安装ntp服务。执行以下命令完成操作: ```bash sudo apt-get update && sudo apt-get install ntp ``` 这将确保ntp被正确部署到目标机器上[^2]。 #### 查看已有NTP服务状态 如果不确定当前操作系统是否已经预装了ntp服务,可通过查询已安装包列表的方式确认是否存在该服务。具体方法取决于所使用的发行版;例如,在Red Hat系发行版中可运行如下指令: ```bash rpm -qa | grep ntp ``` 上述命令用于检索所有名称中含有“ntp”的已安装程序包[^3]。 #### 修改NTP配置文件 为了使一台服务器作为另一台或几台其他设备的时间源,需编辑/etc/ntp.conf配置文档。假设A机为时间提供者,则应在B机上的此文件里指定指向A机IP地址的服务端点,并允许其向A请求时间校准数据。通常情况下只需添加一行类似于下面的内容至客户端(即接收方)的配置文件中: ```plaintext server A_MACHINE_IP prefer iburst ``` 这里的`prefer`关键字表示当存在多个可用时间源时优先选用本条目定义的那个;而`iburst`参数则有助于加速初次建立联系的过程[^1]。 #### 启动与重启NTP服务 每次修改完配置之后都应记得重新加载或重起ntp进程以便应用更改。大多数现代Linux发行版支持通过systemctl管理守护进程生命周期,因此可以用下列任一方式激活新设定: ```bash sudo systemctl restart ntp.service # 或者 sudo service ntp restart ``` 另外,还可以利用`ntpq -p`命令即时监控正在运作中的peer关系及其质量状况,以及借助`ntpstat`检查本地节点同上级time server之间的同步进度——后者可能需要等待几分钟才能建立起稳定可靠的连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值