두 개의 가상 머신이 동일한 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이 설정을 활성화하세요.
  • 그러면 ifconfigIP의 변화를 확인할 수 있습니다.

이것이 귀하의 문제를 해결하기를 바랍니다.

관련 정보