Jak vyřešit problém s duplicitní IP adresou při klonování virtuálního serveru s DHCP a Ubuntu

Jak vyřešit problém s duplicitní IP adresou při klonování virtuálního serveru s DHCP a Ubuntu

V tomto článku dozvíte proč DHCP server přiděluje klonu virtuálního serveru IP adresu identickou se zdrojovým serverem, přestože klon a zdrojový server mají různé MAC adresy. Dozvíte se jak tento problém vyřešit.

Typická situace

Používáte Proxmox / Qemu / VMWare, vytvořili jste dokonale nakonfigurovaný virtuální server s Ubuntu a vyrobili jste jeho klon. Přestože jste následovali rady dokumentace, a ujistili jste se, že MAC adresy obou serverů jsou různé, jak zdroj tak klonovaný server dostávají od DHCP serveru přidělenu stejnou IP adresu!

Obvykle se s tímto problémem setkáte při klonování serverů s OS Ubuntu Server 18.04, Ubuntu 19.10, Ubuntu 20.04 a novějších. Příčinou vašeho problému jsou moznosti DHCPv4 (RFC 3942) a standardní nastavení Linux OS používající pro konfiguraci sítě /etc/netplan s konfigurovaným explicitním rendererem systemd-networkd. Standardní konfigurace systemd-networkd totiž využívá pro generování unikátního DHCP Client identifikátoru právě machine-id, které je při klonování zkopírováno.

Rychlá oprava

Na mnoha místech Internetu najdete jako řešení vašeho problému rychlou opravu / workaround v podobě vymazání machine-id.

Zde je jeden způsob jak toho dosáhnout:

  1. Přihlásit se jako root
  2. Vynulovát machine-id
    echo -n > /etc/machine-id
    rm /var/lib/dbus/machine-id
    ln -s /etc/machine-id /var/lib/dbus/machine-id
  3. Restartovat klonovaný server

Pozn: pokud klonujete ze šablony, pak doporučuji tyto kroky provézt již při tvorbě šablony, tj. bez 3.kroku, machine-id tak bude vygenerováno při prvním startu klonovaného serveru!

Alternativní postup:

  1. Přihlásit se jako root
  2. Vynulovát machine-id
    echo -n > /etc/machine-id
    systemd-machine-id-setup
  3. Obnovit konfiguraci sítě
    netplan apply

Alternativní řešení

Jako další možnost se nabízí upravit konfiguraci systemd-networkd tak, aby využil pro vytváření DHCP Client Identifikátoru MAC adresu síťová karty. Dosáhneme toho přidáním dhcp-identifier: mac do konfiguračního souboru netplan ve složce /etc/netplan (viz netplan.io – příklady)

$ 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

Zmeny se projevi po re-konfiguraci sítě nebo po restartu.

sudo netplan apply

Elegance na závěr

Případě že vaším zdrojem pro klonování je claud-image, který jste předtím sami vytvořili, můžete elegantně problému předejít jednoduchou změnou ve vašem výrobním postupu. Stačí zařadit vynulováním /etc/system-id po spuštění virt-sysprep.

...
virt-sysprep -a /tmp/my-cloud-image.img
virt-customize -a /tmp/my-cloud-image.img --truncate /etc/machine-id
...

Další zdroje

Tags: , , , , ,

Leave a Reply to %s

Your email address will not be published. Required information is marked *

en_USEnglish