我们有 2 个 VLAN,每个 VLAN 都有一个服务器,为其相应的 VLAN 提供 DHCP、DNS 和 NTP。这 3 个服务器从本地 NTP 服务器获取时间。以下是每个 VLAN 上 NTP 客户端和服务器的配置以及每个设置的问题:
VLAN 1:
NTP服务器(科学Linux 7.3)
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
logfile /var/log/ntp.log
driftfile /var/lib/ntp/drift
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
restrict 127.0.0.1
restrict xx.xx.xx.xx mask XX.XX.XX.XX nomodify notrap
NTP客户端(科学Linux 7.3)
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
server yy.yy.yy.yy # added by /sbin/dhclient-script
尽管时区正确,该服务器始终向前漂移 3 小时。
VLAN 2:
NTP服务器(科学Linux 6.4)
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
logfile /var/log/ntp.log
server 127.1.1.0 # local clock
fudge 127.127.1.0
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict xx.xx.xx.xx mask XX.XX.XX.XX nomodify notrap
NTP客户端(科学Linux 6.4)
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
server yy.yy.yy.yy # added by /sbin/dhclient-script
在这里我无法更改时区。它应该是,但尽管有链接值,EET
但它总是如此。EEST
/etc/localtime
我已经确定:
- 没有防火墙规则 (
iptables -F
) ntpd
守护进程正在运行并启用 (chckonfig on
)- CentOS 7.x 使用另一个名为
chronyd
“阻止ntpd
启动”的时间服务。所以我禁用了它(丢失了这个源:()。
设置这些服务后,我们将它们与本地 NTP 同步一次。通过我们在每台服务器上的 DHCP 配置,option ntp-servers xx.xx.xx.xx;
NTP 信息通过 DHCP 进行分发。我尝试将本地 NTP 服务器的地址添加到服务器的地址/etc/ntp.conf
,但问题仍然存在。
请注意,所有服务器都是通过 VMWare ESXi 虚拟化的。
答案1
如果您/etc/localtime
指向/usr/share/zoneinfo/EET
,该时区定义包括欧洲夏令时间 (= 欧洲 DST),并且在 3 月最后一个星期日到 10 月最后一个星期日之间,该时区将被列为 EEST,而不是 EET。截至撰写本文时,转换日就在昨天......
你应该阅读Linux VM 的 VMware 计时最佳实践。简而言之:
- 确保 VMware 主机使用正确的时间和时区。
- 如果你在访客上使用 NTP:
- 确保 VMware Tools 时间同步已禁用
- 添加
tinker panic 0
为第一的/etc/ntp.conf 行 server 127.127.1.0
如果有像这样的本地时钟定义ntp.conf
,注释掉它。- 将 NTP 服务器的主机名或 IP 地址也放入该
/etc/ntp/step-tickers
文件中,以便在网络接口激活且数据库等时间敏感的内容尚未启动时,系统在启动时将时钟跳到正确的时间。
我遇到过的一些陷阱:
/etc/adjtime
指定预期使用的硬件时钟:UTC 或 LOCAL。仅更改 in 的变量/etc/sysconfig/clock
不一定能达到您想要的效果。为了安全起见,请确保两个地方都一致。- 确保您的 NTP 服务器正在服务正确的世界标准时间时间。
- 当系统时间与准确的小时数相差时,首先用于
date -u
验证系统的 UTC 时间概念是否正确。 NTP 只处理 UTC;任何与当地时间的转换错误都是时区设置的错误。
答案2
因此,经过与这些服务器的斗争,问题已经解决。详细信息如下:
- 对于CentOS 7.X服务器,我在客户端维护时禁用
ntpd
并使用。从 CentOS 7.X 开始,这似乎将成为受支持的 NTP 守护进程。配置仅需要并且在chronyd
ntpd
chronyd
chronyd
server xx.xx.xx.xx prefer iburst
allow yy.yy.yy.yy/ZZ
/etc/chrony.conf
- 对于 CentOS 6.4 服务器,我必须安装新版本
tzdata
这里然后链接/etc/localtime
到相应的时区,就我而言Asia/Amman
我遇到的一些陷阱:
no server suitable for synchronization found
CentOS 6.4 客户端上的噩梦错误通过停止ntpd
、运行ntpdate
然后启动得到解决ntpd
。- 由于某种原因我不记得了,在 CentOS 6.4 中我不得不更改
restrict 127.0.0.1
为restrict localhost