暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

警惕!ntpd 服务意外删除 VIP 接口的潜在风险

原创 锁钥 2025-07-03
139

ntpd 时间同步导致 VIP 接口丢失:原因与修复指南

时间同步服务 ntpd 的潜在风险

服务器之间,特别是在数据库集群环境对时钟一致性要求较高,对此引入 ntpd 时间同步服务来做服务器之间的时钟一致性同步

ntpd(Network Time Protocol Daemon),是 NTP(网络时间协议)的守护进程实现,主要用于在计算机网络中同步计算机的系统时钟,除此还会监听网络接口,对不可用的接口进行 Deleting 删除操作,如下是其删除浮动VIP的OS信息:

Jun 10 15:51:11 db01 systemd: Started LSB: Bring up/down networking. Jun 10 15:51:13 db01 ntpd[1515]: Deleting interface #7 ens21f0:1, 10.110.10.100#123, interface stats: received=0, sent=0, dropped=0, active_time=364164 secs Jun 10 15:51:13 db01 ntpd[1515]: Deleting interface #5 ens21f0, ef80::b5ec:bf50:3538:8d86#123, interface stats: received=0, sent=0, dropped=0, active_time=364172 secs

接着查询OS之前的信息可以发现网络故障导致网卡状态停用 deactivating,ntpd检测到接口不可用进而触发删除操作

Jun 10 15:51:11 db01 systemd: Stopping LSB: Bring up/down networking... Jun 10 15:51:11 db01 NetworkManager[1486]: <info> [1749541871.1306] device (ens21f0): state change: activated -> deactivating (reason 'user-requested', sys-iface-state: 'managed') Jun 10 15:51:11 db01 NetworkManager[1486]: <info> [1749541871.1314] manager: NetworkManager state is now CONNECTED_LOCAL Jun 10 15:51:11 db01 NetworkManager[1486]: <info> [1749541871.1315] audit: op="device-disconnect" interface="ens21f0" ifindex=2 pid=36092 uid=0 result="success" Jun 10 15:51:11 db01 dbus[1476]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' Jun 10 15:51:11 db01 NetworkManager[1486]: <info> [1749541871.1318] device (ens21f0): state change: deactivating -> disconnected (reason 'user-requested', sys-iface-state: 'managed') Jun 10 15:51:11 db01 systemd: Starting Network Manager Script Dispatcher Service... Jun 10 15:51:11 db01 avahi-daemon[1463]: Withdrawing address record for ef80::b5ec:bf50:3538:8d86 on ens21f0. Jun 10 15:51:11 db01 dbus[1476]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' Jun 10 15:51:11 db01 systemd: Started Network Manager Script Dispatcher Service. Jun 10 15:51:11 db01 nm-dispatcher: req:1 'connectivity-change': new request (4 scripts) Jun 10 15:51:11 db01 nm-dispatcher: req:1 'connectivity-change': start running ordered scripts... Jun 10 15:51:11 db01 avahi-daemon[1463]: Withdrawing address record for 10.110.10.1 on ens21f0. Jun 10 15:51:11 db01 avahi-daemon[1463]: Leaving mDNS multicast group on interface ens21f0.IPv4 with address 10.110.10.1. Jun 10 15:51:11 db01 avahi-daemon[1463]: Joining mDNS multicast group on interface ens21f0.IPv4 with address 10.110.10.100. Jun 10 15:51:11 db01 avahi-daemon[1463]: Withdrawing address record for 10.110.10.100 on ens21f0. Jun 10 15:51:11 db01 avahi-daemon[1463]: Leaving mDNS multicast group on interface ens21f0.IPv4 with address 10.110.10.100. Jun 10 15:51:11 db01 avahi-daemon[1463]: Interface ens21f0.IPv4 no longer relevant for mDNS. Jun 10 15:51:11 db01 network: 正在关闭接口 ens21f0: 成功断开设备 'ens21f0'。 Jun 10 15:51:11 db01 nm-dispatcher: req:2 'down' [ens21f0]: new request (4 scripts) Jun 10 15:51:11 db01 network: [ 确定 ] Jun 10 15:51:11 db01 nm-dispatcher: req:2 'down' [ens21f0]: start running ordered scripts... Jun 10 15:51:11 db01 network: 正在关闭接口 ens21f1: [ 确定 ] Jun 10 15:51:11 db01 network: 正在关闭接口 ens21f2: [ 确定 ] Jun 10 15:51:11 db01 network: 正在关闭接口 ens21f3: [ 确定 ] Jun 10 15:51:11 db01 network: 正在关闭接口 ens27f0: [ 确定 ] Jun 10 15:51:11 db01 network: 正在关闭接口 ens27f1: [ 确定 ] Jun 10 15:51:11 db01 network: 正在关闭环回接口: [ 确定 ] Jun 10 15:51:11 db01 systemd: Starting LSB: Bring up/down networking...

风险处理方案

时间同步服务 ntpd 的风险规避

编辑 NTP 配置文件,添加或修改 interface 指令,以指定 ntpd 应该监听的接口

vi /etc/ntp.conf interface ignore wildcard interface listen xxxx
  • interface ignore wildcard:告诉 ntpd 不要自动监听所有接口
  • interface listen xxxx:明确指定要监听的接口(网卡名,例如 ens21f0),* 表示监听所有接口

重启 ntpd 服务生效:

systemctl restart ntpd

查看日志或验证 ntpd 是否按预期运行:

systemctl status ntpd journactl -u ntpd ntpq -p ntpstat

禁用 ntpd 服务改用 chronyd 服务

Chrony是一个网络时间协议(NTP)客户端和服务器,主要用于时间同步,其核心功能是调整系统时钟以与时间服务器保持同步,不涉及网络接口的管理或删除操作。

ntpd服务删除接口的行为通常与网络配置变化、接口状态改变或IP地址变化相关,而Chrony的设计目的和工作原理与ntpd有所不同,它更专注于时间同步的效率和准确性,不会因为网络接口的变化而删除接口。

禁用 ntpd 服务:

systemctl disable ntpd systemctl stop ntpd

安装chronyd服务:

yum install -y chrony

⚠️注意⚠️:CentOS/RedHat等系统环境下,chronyd与ntpd服务存在冲突,因此chronyd、ntpd两种时间同步方式只能二选一。当使用chronyd服务时,也需要禁用ntpd服务。

方式一:
若已经存在chronyd时间服务器,假如为10.110.10.110,可以配置所有节点指向该服务器时间。编辑每个节点的/etc/chrony.conf文件:

echo "server 10.110.10.110 prefer" >> /etc/chrony.conf

方式二:
若没有外部的时间服务器,可以选择集群中的某个节点作为时间服务器。
1)选择一个节点为chronyd服务器(以主节点10.110.10.1为例),配置/etc/chrony.conf文件:

allow all local stratum 10

2)编辑其他节点的/etc/chrony.conf文件:

server 10.110.10.1 prefer

启动检查:
以上两种方式按需选择,最后启动chronyd服务:

systemctl start chronyd systemctl enable chronyd systemctl status chronyd

检查各节点时间是否同步(等候5分钟,Normal为正常):

chronyc tracking

时间同步后,将系统时间写入硬件时间:

hwclock –w
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论