我尝试在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
当我完成创建 Ubuntu 机器时,DHCP 服务器可能会192.168.13.4
为其分配 IP。但是当我克隆机器并更改克隆机器的 MAC 地址时。DHCP 服务器仍然192.168.13.4
为克隆机器分配 IP。
为什么克隆的 Ubuntu 会获得与源相同的 IP?我需要它们在 NAT 网络中具有不同的 IP 来控制它们。请帮我解决这个问题。
答案1
在较新的 Ubuntu 版本中,netplan 用于配置网络。默认情况下,文件 /etc/machine-id 用于创建 DHCP 标识符,而不是使用 NIC 的 MAC 地址。
当克隆 Ubuntu 系统时,克隆过程可能会更改 NIC 的 MAC 地址,但通常不会自动更改 /etc/machine-id。
在您的两个系统上,您可以比较 /etc/machine-id 的内容,它们可能相同。
您有两个选择:
至少在一台服务器上更改机器ID(huangjunpo的回答)
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
dhcp-identifier: mac
如果使用 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
进行此编辑后,您必须应用它才能使其生效。
sudo netplan apply
请注意/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
答案2
在克隆的虚拟机上尝试以下命令:
sudo ip address flush scope global
sudo dhclient -v
答案3
在 bash shell 中运行以下命令。使用机器的 id 作为标识符。
sudo rm /etc/machine-id
sudo systemd-machine-id-setup