ntpd 使用错误的服务器

ntpd 使用错误的服务器

我最近将我的主要时间服务器移到了另一个系统,例如old.fqdnnew.fqdn所有下属 ntpd 守护进程都使用ntp.fqdn作为服务器,该服务器现在是一个指向的 CNAME new.fqdn,即host ntp.fqdn在该系统上产生:

ntp.fqdn is an alias for new.fqdn.
new.fqdn has address xxx.xxx.xxx.xxx

然而ntpq -p结果是:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
    old.fqdn     .INIT.          16 u    - 1024    0    0.000    0.000   0.000

这是一致的,因为old.fqdn已被关闭。但为什么它会坚持使用那台服务器呢?这是/etc/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
server ntp.fqdn iburst
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

当然,ntpd在 DNS 更改后已经重新启动。还ntpdate -s ntp.fqdn能够同步,网络上使用完全相同配置的其他系统可以完美运行。唯一明显的区别是这些系统old.fqdn以前从未使用过。还有其他地方ntpd可以保存其父服务器的记录吗?

系统是当前的 Debian Jessie:ntp 1:4.2.6.p5+dfsg-7+deb8u2,amd64

更新:apt-get --purge remove ntp && apt-get install ntp我开始在工作站上重新安装 ntp ( )。重新安装后,相同的配置按预期工作。

解决方案:原因是 ntpd 不是用 启动的/etc/ntp.conf,而是用 启动的/var/lib/ntp/ntp.conf.dhcp。后者的 IP 是old.fqdn硬编码的。是的,过去系统是通过 DHCP 配置的,但现在不是了。

Debian 启动脚本/etc/init.d/ntp会检查该文件是否存在,并将其用于配置。因此,解决问题的方法是删除/var/lib/ntp/ntp.conf.dhcp。不知道为什么我没有ps aux早点检查。

答案1

使用该指令时,NTP 不会自动重试 DNS 查找server。切换serverpool并重新启动 NTP 以获取此行为。

答案2

我认为,ntpd将第一个 PTR 记录作为服务器名称返回,并且它是old.fqdn。如果您删除此记录,您将获得new.fqdn与时间服务器相同的 ip 地址的第二个 PTR 记录。Ntpd 使用 ip 地址,它在启动时将域名解析为 ip。

你可以在工作站上通过命令查看这个IP地址:

ntpq -p -n localhost

相关内容