gpt4 book ai didi

virtualization - 什么是 MAC 地址的独特、持久的替代方案?

转载 作者:行者123 更新时间:2023-12-04 02:10:20 25 4
gpt4 key购买 nike

我需要能够重复地、非随机地、唯一地标识一个服务器主机,它可以被任意虚拟化并且我无法控制。

  • MAC 地址不起作用,因为在某些虚拟化环境中,网络接口(interface)没有硬件地址。
  • 生成状态文件并将其保存到磁盘不起作用,因为可能会克隆虚拟机,从而复制文件。
  • 服务器的 SSH 主机 key 可能是候选者。它们可以像状态文件一样被克隆,但实际上它们通常不会被克隆,因为这是一个不常犯的安全问题。
  • 还有/var/lib/dbus/machine-id,但这取决于 dbus。 (感谢 Preetam)。
  • 有一个 cpuid 但显然已弃用。 (感谢 Twitter 上的 Bruno Aguirre)。
  • 主机名值得考虑。像 Chef 这样的许多系统已经需要唯一的主机名。 (感谢 Alfie John)

  • 我希望该解决方案能够持续很长时间,并且肯定会在服务器重新启动和软件重新启动时持续存在。最终,我也知道我的软件的用户会弃用主机并希望将其替换为另一个主机,但要保持与之关联的数据的连续性,因此从长远来看,UUID 可能被认为是可变的,但我不这样做'不特别希望主机开始认为自己是未知的并无缘无故地重新注册自己。

    主机是否有任何替代的持久唯一标识符?

    最佳答案

    这实际上取决于“持久”的含义。例如,两个 VM 不能分别为您打开相同的网络套接字,因此即使它们是彼此的位级克隆,也可以将它们区分开来。

    因此,所需要的只是足够的信息来区分机器的持久性持续时间。

  • 如果持久性的持续时间是网络连接的长度,那么您根本不需要任何标识符——套接字本身是唯一的。
  • 如果需要更长的持久性(例如,对于引导的长度),那么您可以在系统引导时重新生成 UUID。 (请注意,克隆的 VM 仍然需要重新启动,除非您正在热复制它。)
  • 如果它需要更长的时间——比如无限期——那么你可以在启动时生成一个 UUID 标识符并将其保存到磁盘上,但只能将其用作机器识别信息的一部分。如果虚拟机随后被克隆,您将知道这一点,因为您将有两台机器报告来自不同来源的相同 ID - 例如,两个不同的网络套接字、不同的启动时间等。由于您可以区分它们,因此您有足够的信息来区分两台克隆的机器,这意味着您可以采取后续行动来强制进一步区分,例如指示每台机器重新生成其状态文件。

  • 最终,如果一台机器被完美克隆, 那么根据定义,你不能以 开头的那个是“真正的”。 ,只是现在有两台可区分的机器。

    暗示您可以区分“真实的”和“克隆的”之间的差异意味着您可以使用某种状态来记录两者之间的差异,例如虚拟机本身创建时的时间戳,其中情况下,您可以将其合并到状态记录中。

    关于virtualization - 什么是 MAC 地址的独特、持久的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18316483/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com