我有两个虚拟机都在 Linux 主机 (Fedora 16) 上运行。我将两个适配器设置为附加到 NAT。当我启动它们时,它们的默认网关都设置为10.0.2.2
.它们还具有相同的 IP 地址(10.0.2.15)
。它们都位于同一适配器(适配器 1)上。我不知道为什么它们被分配相同的 IP 地址,并且默认网关不应该是,10.0.2.1
因为子网地址是10.0.2.0
255.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 服务上。基本上有两种解决方案:
使用 dhcp 显式配置 IP 地址,该地址将
dhclient enp1s0
在虚拟机中运行(enp1s0 是接口)。然后你会发现IP地址已更改并且配置正确。第二种解决方案是为虚拟机分配固定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的变化了。
希望这能解决您的问题。