Systemd

為什麼我複製的 linux 虛擬機在爭奪同一個 IP

  • May 16, 2019

我從 Ubuntu 17.10 模板中複製了兩個 vSphere VM。啟動後,它們都聲稱相同的 IP 並為之而戰(ssh 連接隨著 IP 切換而中斷)。

兩台機器的主機名和 MAC 地址不同。dhclient正確聲明了兩個獨立的 IP,但使用的解析器是systemd-networkd.

網路計劃配置呢?有一個選項dhcp-configuration可以按如下方式使用(摘自netplan 範例):

network:
 version: 2
 ethernets:
   enp3s0:
     dhcp4: yes
     dhcp-identifier: mac

預設情況下,它使用機器 ID,但通過更改此功能,我們可以“強制”不使用它。

摘自manpages / netplan,提供更多見解:

      dhcp-identifier (scalar)
             When  set  to `mac'; pass that setting over to systemd-networkd to use the device's
             MAC address as a unique identifier rather than a RFC4361-compliant Client ID.  This
             has no effect when NetworkManager is used as a renderer.

systemd-networkd使用不同的方法來生成 DUID,而不是dhclient. 預設情況下使用鏈路dhclient 層地址,而systemd-networkd使用. 由於虛擬機是複製的,它們具有相同的 IP,並且 DHCP 伺服器為兩者返回相同的 IP。/etc/machine-idmachine-id

要修復,請替換其中一個或兩個的內容/etc/machine-id。這可以是任何東西,但刪除文件並執行systemd-machine-id-setup會以與機器設置相同的方式創建一個隨機數machine-id

引用自:https://unix.stackexchange.com/questions/419321