Recentemente ho avuto a che fare con uno strano problema legato a conflitti di indirizzi IP. Una VM Linux presentava problemi di raggiungibilità, le sessioni cadevano di continuo.
La VM non aveva un indirizzo IP statico ma utilizzava il DHCP per ottenerne uno. Da una prima analisi è emerso un conflitto di indirizzi IP, un’altra VM utilizzava lo stesso indirizzo. Fino a qua nulla di strano, capita spesso che vengano utilizzati come statici indirizzi riservati a pool dinamici di un DHCP server.
Non è questo il caso, l’altra VM utilizzava anch’essa il DHCP come metodo di assegnazione dell’indirizzo IP. Le due VM erano dei cloni identici.
Ho pensato ad un conflitto dovuto allo stesso MAC address della virtual NIC ma modificato l’indirizzo il problema persisteva.
Altra cosa strana era che il server DHCP continuava a rilasciare lo stesso indirizzo ad entrambe le VM, questo nonostante avessero due MAC address diversi. Naturalmente ho riavviato il server DHCP e cancellato più volte l’assegnazione dell’IP, nulla da fare.
Le VM in questione erano basate su Photon OS e per il clone avevo utilizzato le solite best practices : cancellazione delle chiavi SSH, pulizia dei log e history, rimozione delle configurazioni post installazione, etc.
Cercando in rete ho trovato altri utenti che segnalavano le stesso problema ma nulla di utile a risolverlo. Il sospetto era che qualcosa rimanesse sporco con la clonazione, una configurazione o un qualche valore. Affinando la ricerca ho trovato informazioni su un parametro utilizzato dai client DHCP per ottenere un indirizzo : il DHCP unique identifier (DUID). In un primo momento non l’ho preso in considerazione perché sembrava riguardare solo i metodi di assegnazione del DHCPv6.
Le VM utilizzavano solo IPv4 quindi ho pensato di essere fuori strada. Non trovando altro che mi potesse aiutare ho voluto approfondire l’argomento e ho cercato DHCP unique identifier associato a Photon OS … Beccato!
il primo risultato è un link alla documentazione ufficiale di Photon OS :
Clearing the Machine ID of a Cloned Instance for DHCP
Photon OS utilizza un UUID, creato durante l’installazione, come valore del DUID inserito nelle richieste DHCP. Il valore è memorizzato all’interno del file /etc/machine-id.
Questo valore va per tanto azzerato nel caso di clonazione, systemd lo rigenera in automatico.
Mal di testa passato e nuova best practice da aggiungere alle altre in caso di clonazione di VM Linux.
scanda