通过 virtualbox 克隆的 Ubuntu 18.04 来宾在 NAT 网络中具有相同的 ip 但不同的 mac 地址

M0d*_*ate 4 virtualbox networking dhcp clone

我尝试在Virtualbox中构建一组虚拟机,并通过NAT网络将它们连接起来。主要信息如下:

The Virtualbox version: 6.0.12
The Ubuntu guest version: ubuntu-18.04.2
The NAT network info:
     NetworkName:    natnet22
     IP:             192.168.13.1
     Network:        192.168.13.0/24
     IPv6 Enabled:   No
     IPv6 Prefix:    fd17:625c:f037:2::/64
     DHCP Enabled:   Yes
     Enabled:        Yes
     loopback mappings (ipv4)
             127.0.0.1=2
Run Code Online (Sandbox Code Playgroud)

当我完成创建 Ubuntu 机器时,DHCP 服务器可能会192.168.13.4为其分配 IP。但是当我克隆机器时,我更改了克隆机器的 MAC 地址。DHCP服务器仍然192.168.13.4为克隆的IP分配IP。

为什么克隆的 Ubuntu 与源的 IP 相同?我需要它们在 NAT 网络中有不同的 ip 来控制它们。请帮我解决问题。

小智 7

在较新的 Ubuntu 版本中,netplan 用于配置网络。默认情况下,文件 /etc/machine-id 用于创建 DHCP 标识符,而不是使用 NIC 的 MAC 地址。

当克隆 Ubuntu 系统时,克隆过程可能会更改 NIC 的 MAC 地址,但通常不会自动更改 /etc/machine-id。

在您的两个系统上,您可以比较 /etc/machine-id 的内容,它们可能是相同的。

您有两个选择:

  1. 更改至少一台服务器上的machine-id(黄君坡的回答)

    user@host:~$ cat /etc/machine-id
    d8dcd93cd8bffce0f7ed73875eb5be3a
    
    user@host:~$ sudo rm /etc/machine-id
    user@host:~$ sudo systemd-machine-id-setup
    Initializing machine ID from random generator.
    
    user@host:~$ cat /etc/machine-id
    4b603489b08541ce9127791047081f46
    
    Run Code Online (Sandbox Code Playgroud)
  2. dhcp-identifier: mac如果使用 netplan,请通过添加到 .netplan 中的 netplan 配置文件来更改 netplan 构造 DHCP 客户端标识符以使用 MAC 地址的方式/etc/netplan。将其添加到您需要的任何界面下,并注意 yaml 文件中的缩进。(参见netplan.io - 示例

    user@host:~$ cat /etc/netplan/00-installer-config.yaml
    # This is the network config written by 'subiquity'
    network:
      ethernets:
        enp3s0:
          dhcp4: true
          dhcp-identifier: mac
      version: 2
    
    Run Code Online (Sandbox Code Playgroud)

进行此编辑后,您必须应用它才能生效。

sudo netplan apply
Run Code Online (Sandbox Code Playgroud)

请注意,它/var/lib/dbus/machine-id链接到/etc/machine-id.

user@host:~$ ls -l /var/lib/dbus/machine-id
lrwxrwxrwx 1 root root 15 May  8 20:30 /var/lib/dbus/machine-id -> /etc/machine-id
Run Code Online (Sandbox Code Playgroud)