我在 LAN 中创建 VirtualBox 客户机,其中 IP 地址由 DHCP 分配。
如果我创建close
VirtualBox 客户机,然后选择Save the machine state
,VirtualBox 客户机桥接适配器IP 地址不会释放回 DHCP(这样,如果我稍后启动 VirtualBox 客户机,它将有一个 IP 地址)。
我的问题是:如果我remove
(删除)VirtualBox 客户机,IP 地址会被释放吗,还是会丢失到 DHCP 池中?
编辑1:
我收到的评论迫使我补充一点,当 VirtualBox 客户机在保存状态下关闭时,IP 地址会保留在 VirtualBox 生态系统中的某个地方。
然后,如果在 DHCP 撤销租约后打开 VirtualBox 客户机,那么 LAN 上就会有两台机器,相同的IP地址,令所有局域网用户欣喜不已。
编辑2:
从回复中,我了解到大家的共识是,一旦 DHCP 租约时间过去,无论是否有客人仍“持有”该 IP 地址 - 该 IP 地址都将被释放。
感谢所有花时间回复的人。
答案1
这取决于 DHCP 服务器租约设置。分配给它的地址将不可用,直到 DHCP 租约到期,或者您在 DHCP 服务器上手动清除它。
编辑:
如果虚拟机离线时间超过 DHCP 租约,则不会出现问题。当虚拟机上线时,应该将系统时间更新为当前时间。此时,虚拟机将看到租约已过期,并向 DHCP 服务器发出新的请求。
如果要保持机器的 IP 地址不变,请使用静态 IP 分配,或使用 DHCP 保留。
答案2
当 VirtualBox 客户机在保存状态下关闭时,IP 地址将保存在 VirtualBox 生态系统中的某个位置
这种说法是错误的。
有可能(很可能)客户操作系统将被冻结在一种状态下,认为它对分配给其接口的 IP 地址具有有效租约,并且该状态将被记录在转储的虚拟机内存中。
但是,VirtualBox 无法控制或固有了解虚拟接口上的 IP 地址 - 它提供的是虚拟硬件,而不是整个以太网/IP 堆栈。如果 VirtualBox 接口能够报告与特定接口关联的 IP 地址,那么这只是因为客户机正在运行支持此功能的服务。
如果客户操作系统在租约到期后恢复/解冻,那么(如果 DHCP 客户端编写正确)它将意识到租约已过期……尽管这里可能会有延迟,因为客户机可能不知道冻结期间的时间流逝……如果客户端使用错误的时钟(例如:与Linux 上的CLOCK_REALTIME
时钟相比CLOCK_MONOTONIC
)作为租约到期依据,那么可能是客户操作系统和另一台主机尝试使用相同 IP 的窗口。
一旦解冻,它应该立即向 DHCP 服务器发出新请求...DHCP 请求可能包括“请问我可以再次获得这个 IP 吗?“类型的请求,但不能保证它会获得相同的IP,这完全取决于DHCP服务器保留的时间长短,以及在此期间是否有另一个系统已经占用了该地址。
答案3
您的编辑不会改变问题的答案。如果您将机器休眠并重新联机,则不会获得重复的 IP。当机器联机时,它始终遵循 DHCP 中的某些步骤来确定需要做什么。如果机器从睡眠状态唤醒,它会检查当前时间与其租约的到期时间。如果租约未到期,它可以继续使用相同的 IP 地址。如果机器从头开始启动或没有现有租约,它总是会请求 DHCP。