我想配置一个具有所有附加功能的机器映像,然后能够在 VirtualBox 中启动它的多个实例。但是,它只允许我启动每个 VM 的一个实例。我尝试克隆 VM(并选择重新初始化 MAC 地址)并启动克隆,但是,克隆没有获得 IP 地址。因此,原始网络配置如下:
>ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:92:0a:ec
inet addr:192.168.103.49 Bcast:192.168.255.255 Mask:255.255.0.0
inet6 addr: fe80::a00:27ff:fe92:aec/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5317 errors:0 dropped:0 overruns:0 frame:0
TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:516671 (516.6 KB) TX bytes:10492 (10.4 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:337 (337.0 B) TX bytes:337 (337.0 B)
而克隆版没有eth0
,只有lo
,我无法 ssh 进入它。
答案1
更新
我能够完全重现您的问题。我发现最简单的解决方案就是删除内容/etc/udev/rules.d/70-persistent-net.rules
并重新启动。重新启动时会自动生成此文件,它会将 eth0 重置为当前分配的 MAC。
原始答案
当您克隆虚拟机并重新初始化 mac 时,操作系统会认为新的 mac 是新的网络设备。它通常会将新的 mac 地址分配给 eth1。如果 eth1 未正确配置,您将无法进行任何网络连接,也无法通过 ssh 登录。
您可以清除 udev 网络规则以强制操作系统忘记以前的 MAC 并将新的 MAC 分配给 eth0,或者您可以将 eth1 配置为主要网络接口。
这里很好地解释了为什么 udev 规则很重要并且适用于您的情况:“例如,在一台拥有英特尔和 Realtek 制造的两块网卡的计算机上,英特尔制造的网卡可能变为 eth0,而 Realtek 网卡变为 eth1。在某些情况下,重新启动后,卡会以相反的方式重新编号。为了避免这种情况,请创建 Udev 规则,根据网卡的 MAC 地址或总线位置为网卡分配稳定的名称。”
另一个可能的问题是 IP 地址是否在网络配置中静态设置。如果您有一台应该分发 IP 地址的 DHCP 服务器,那么请确保网络配置设置为 DHCP。