静·夜

zido

69 篇文章

zido的个人博客

前后端全栈分享,java/js/golang

先上解决方案

在被克隆的机器上编辑 /etc/netplan/00-installer-config.yaml 文件。

network:
  ethernets:
    ens33:
      dhcp4: true
      dhcp-identifier: mac # 加上这一行。
  version: 2

这样每次从这台机器进行的克隆都会有唯一的 ip 地址。

简单说明

如果是 clone centos 会发现不会出现这一情况,而 clone ubuntu 的时候会发生,那么可以简单的猜测,可能是因为网络策略的不同。

经过一番查询发现:

  • Ubuntu 网络组件使用 systemd-networkd
  • Centos 网络组件使用 dhclient

这就是他们默认策略不同的原因, systemd-networkd 默认使用 /etc/machine-id 来识别,当虚拟机克隆的时候,他们都有一样的 /etc/machine-idDHCP server,因此返回的都是同一个 ip 了。

而 Centos 所使用的 dhclient 组件,采用默认策略就是使用链路层地址,虽然虚拟机进行了文件克隆,但是他们的链路层地址是由虚拟机进行分配的所以并不一样。

参考