为什么我的两个虚拟机获得相同的 IP 地址?

为什么我的两个虚拟机获得相同的 IP 地址?

我有两个虚拟机都在 Linux 主机 (Fedora 16) 上运行。我将两个适配器设置为附加到 NAT。当我启动它们时,它们的默认网关都设置为10.0.2.2.它们还具有相同的 IP 地址(10.0.2.15)。它们都位于同一适配器(适配器 1)上。我不知道为什么它们被分配相同的 IP 地址,并且默认网关不应该是,10.0.2.1因为子网地址是10.0.2.0255.255.255.0,网络掩码是 255.255.255.0。我是否缺少某些东西,以前有人发生过这种情况吗?如何让 VirtualBox DHCP 正常工作?

答案1

VirtualBox DHCP 工作正常。

让所有计算机在 NAT 配置中获得相同的地址并没有什么问题。所有虚拟机都相互隔离,因此不存在冲突风险。它们也不在同一个适配器上。每个虚拟机都有自己的虚拟化硬件,包括网卡。

默认网关也不必是 10.0.2.1。尽管通常的做法是将其设置为较低的 IP 地址,但它可以是子网范围内的任何 IP。

另外,没有“真正的”dhcp 服务,所有内容都硬编码在 VirtualBox 代码中,尽管如果您对默认 IP 地址不满意,您可以微调 NAT 引擎

答案2

在 VirtualBox 控制面板中,转到文件 -> 首选项 -> 网络

选择 NAT 网络选项卡,通过单击侧面的 + 按钮创建一个新的“NatNetwork”,然后按确定。

现在选择每个虚拟机,转到“设置”->“网络”

在附加到:选项中选择 NAT 网络并选择“NatNetwork”,然后按确定。

重新启动所有虚拟机。

现在虚拟机有不同的网络地址。

答案3

只要虚拟机具有相同的以太网 MAC 地址(硬件地址,像指纹一样唯一,由网络设备的硬件制造商设置),它们就会从任何 DHCP 服务获得相同的 IP 地址。

由于您正在运行虚拟机,因此它们具有虚拟硬件,因此它们“伪造”了 MAC 地址。您必须确保没有两台机器具有相同的以太网硬件地址。

您可以在 VirtualBox 的硬件网络部分中设置虚拟机的以太网 MAC 地址(如下所示:3c:08:51:05:24:8a)

您可以在正在运行的虚拟机中检查它:

sudo ifconfig

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=2b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4>
    ether 3c:08:51:05:24:8a 
    media: autoselect (none)
    status: inactive

答案4

我在KVM上也遇到了同样的问题。两台虚拟机IP地址相同,其中一台无法访问外网。

问题出在 DHCP 服务上。基本上有两种解决方案:

  1. 使用 dhcp 显式配置 IP 地址,该地址将dhclient enp1s0在虚拟机中运行(enp1s0 是接口)。然后你会发现IP地址已更改并且配置正确。

  2. 第二种解决方案是为虚拟机分配固定IP地址,如下所示:

  • 转至 /etc/netplan(对于 Ubuntu)
  • 编辑目录中的 .yaml 文件(该目录中应该只有一个文件,您可能需要先备份它)
  • 给它一个固定的IP地址(在本例中我将其设置为192.168.122.3)。整个文件是这样的
network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
      addresses: [192.168.122.3/24]
      gateway4: 192.168.122.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
  • netplan apply激活该设置。
  • 然后就可以ifconfig看到ip的变化了。

希望这能解决您的问题。

相关内容