Как изменить machine-id в Linux для сброса привязки в DHCP

Заметил любопытную особенность в работе DHCP с которой раньше не был знаком. Когда клонировал виртуальные машины, заметил, что они получают одни и те же IP адреса, хотя я менял у сетевых интерфейсов MAC адреса. Я всегда был уверен, что выдача IP зависит от мака. Оказывается, что не только.

В качестве DHCP сервера выступал Mikrotik. Несмотря на изменение маков, он выдавал один и тот же IP адрес разным виртуальным машинам. Я выяснил, что выдача у него привязана к Client ID. Пока не изменить его, адрес не изменится.

В Linux этот ID указан в файле /etc/machine-id. Для того, чтобы его изменить, надо его удалить и сгенерировать заново:

# rm -f /etc/machine-id

# dbus-uuidgen --ensure=/etc/machine-id

Таким образом, после клонирования виртуальной машины нужно:

    1. Изменить MAC адрес сетевого интерфейса.
    2. Изменить hostname:

# hostnamectl set-hostname server-clone

  1. Отредактировать файл /etc/hosts, изменив там имя сервера.
  2. Сгенерировать новый machine-id.

Machine-id в Linux

Вроде всё. Может ещё что-то забыл? Мне не так часто приходится этим заниматься. Даже если и приходится делать клон вируталки, то обычно для тестов и запускается всё это в изолированной сети. А так, чтобы делать клон и запускать его тут же, я не практикую.