安装 NTP 是否意味着我正在安装 NTP 服务器?

Koe*_*nDG 6 virtualization linux virtual-machines ntp

阅读本文:在虚拟机中运行 NTP 服务器有哪些限制?(2010)

这是:https: //github.com/geerlingguy/ansible-role-ntp

我不确定我到底要安装什么。特别是当我在虚拟机内安装时。

我读到虚拟机可以从主机系统同步时钟......但我以前从未听说过这一点,并且不知道在哪里可以找到相应的配置。我个人的经验仅限于 VirtualBox。

如果我在虚拟机服务器上安装 NTP,比如说 Ubuntu 服务器,据我所知,我只是安装一个能够与外部 NTP 服务器同步的工具,以防止其时间漂移太远。

这就是正在发生的事情,还是正在发生更多的事情?我是否安装了一个 NTP 服务器,然后...没有人同步?因为所有虚拟机都只会安装它,并且不会将任何虚拟机配置为查看特定服务器。

如果我想要的只是:

  1. 设置时区
  2. 进行设置以使时间漂移最小化
  3. 在虚拟机或物理机上

我需要知道什么以及我需要做什么?

因为过去我只是在 VirtualBox/ Proxmox / VMware中运行的虚拟机上安装 NTP ,并且运行良好多年。我记得很多时候检查不同虚拟机上的时间,但从来没有遇到过在查看本地时钟时我在虚拟机上看到的内容没有意义的情况。

Pau*_*ear 16

简短回答:通常,如果您正在安装 NTP 守护程序,您将安装同步本地时钟并通过网络向客户端提供时间的功能。然而,这有一些微妙之处,你还问了一些问题,我也会尽力回答。

(以下信息假设 VM 来宾基于 Linux;相同的建议可能不适用于 Windows 来宾。)

  1. 首先,您所链接的问题及其所有答案今天都是完全错误的。这是 13 年前提出的问题,最近的答案是 10 年前的。根据我在这里的回答,现代 VM 解决方案在那段时间大大提高了其功能,并且 VM 通常是完全可以接受的 NTP 客户端和服务器,在平均硬件上实现了低于 1 毫秒的精度。(我的建议是否决这个问题,所有的答案都说虚拟机中的时间同步不起作用,但这可能不会阻止它出现在搜索结果中,不幸的是。我可能会写一个新的答案完成这里后回答这个问题。)如果您想了解更多有关虚拟机中时间同步中断的神话,请查看我的博客文章
  2. 虚拟机确实可以通过虚拟机管理程序特定的机制将其时钟与其主机系统同步,而最初提供这一点是因为虚拟机中的时间同步很差。然而,它不再是必要的,并且通常会比使用 NTP 获得更差的结果。在VMware和Hyper-V上应该关闭此功能;我相信 KVM 和 Xen 上没有提供(至少默认情况下);我不确定 VirtualBox 的情况。
  3. 如果您在 VM 服务器上安装 NTP,假设一台提供 KVM 管理程序的 Ubuntu 服务器,您将将该服务器的时钟与外部源同步(前提是它们可访问)。您应该至少包含 4 个远程源,如果您安装chronyntp,则这是默认设置,并且通过安装这些软件包之一,您可以通过针对这些外部源进行持续校正来保持该主机的系统时间。
  4. 您的虚拟机将使用其主机的系统时间作为其系统时间的种子,但由于它们运行自己单独的内核,因此它们也有自己单独的(虚拟化)系统时钟,这也必须受到约束。
  5. 时区完全独立于您的时间同步服务。内核和NTP使用UTC;时区是用户空间问题。
  6. 默认情况下,Ubuntu 不使用chronyor ntpbut systemd-timesyncd,它只是一个 SNTP 客户端,不能作为 NTP 服务器。默认情况下,chrony忽略所有网络请求,因此仅充当 NTP 客户端,但可以使用简短指令配置为服务器(见下文)。默认配置ntp略有不同,将允许远程客户端通过网络同步时间,但不允许查询任何服务器详细信息。

总而言之,独立 VM 服务器和在其上运行的 VM 的合理设置可能是让所有服务器单独使用 NTP,并且让 VM 使用主机作为附加时间源。如果主机很好地跟踪池源,那么大多数客户端可能会在大部分时间与服务器同步(因为到达服务器的网络延迟较低),但会将池服务器作为主机的质量检查NTP 服务。

假设 Ubuntu 和 chrony,服务器的配置可以从默认值开始:

# Default chrony.conf on Ubuntu, sans comments and blank lines
confdir /etc/chrony/conf.d
pool ntp.ubuntu.com        iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburst maxsources 1
pool 1.ubuntu.pool.ntp.org iburst maxsources 1
pool 2.ubuntu.pool.ntp.org iburst maxsources 2
sourcedir /run/chrony-dhcp
sourcedir /etc/chrony/sources.d
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
ntsdumpdir /var/lib/chrony
logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3
leapsectz right/UTC
Run Code Online (Sandbox Code Playgroud)

然后添加这些行以允许来自本地子网的来宾,假设它使用192.0.2.0/242001:db8:0:2::/64作为其 IPv4 和 IPv6 地址:

allow 192.0.2.0/24
allow 2001:db8:0:2::/64
Run Code Online (Sandbox Code Playgroud)

同样,虚拟机将以相同的默认配置启动,并添加此行以将服务器作为源包含在内,假设服务器可由 DNS 解析为vmhost.local

server vmhost.local iburst
Run Code Online (Sandbox Code Playgroud)

或者,如果您在本地 DHCP 服务器中提供 NTP 服务器,则在给定默认配置的情况下,使用 chrony 的虚拟机应自动选择该服务器。

  • “虚拟机确实可以通过虚拟机管理程序特定的机制将其时钟与主机系统同步,这最初是因为虚拟机中的时间同步很差而提供的。”您可能夸大了“VM Goodnow 中的 NTP”断言。至少追溯到 2008 年,微软的官方建议是使用 NTP 或与 AD 同步。硬件时间同步在虚拟机管理程序或硬件平台上并不能可靠地工作,并且关闭硬件同步并切换到另一个源至少在 Windows 上一直是一个长期存在的问题。 (2认同)
  • “至少要追溯到 2008 年”——伙计,2008 年已经这么老了,已经到了喝酒的年龄了。这确实在 WINDOWS SERVER 2016 中得到了修复。它已经有 8 年历史了,而且有点落后——实际上有 2 个商业版本。 (2认同)
  • @KoenDG:如果你在Ubuntu上安装chrony或ntp,它会自动删除systemd-timesyncd。 (2认同)