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

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

В качестве 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
  3. Отредактировать файл /etc/hosts, изменив там имя сервера.
  4. Сгенерировать новый machine-id.

Machine-id в Linux

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

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

3 комментария

  1. Если DHCP-сервер на RouterOS, то можно еще использовать идентификатор клиента так: в Linux в файле /etc/dhcp/dhclient.conf параметр send dhcp-client-identifier = "какое_то_название"; или send dhcp-client-identifier = hardware;, в Windows через правку реестра. Тогда на DHCP-сервере в Leases в поле Active Client ID будет написано значение в НЕХ формате. Если (в Linux) передать параметр в кавычках - то параметр будет просто конвертирован в НЕХ формат, а если передать параметр hardware - то будет запись вида 1: (где 1 - номер сетевой карты системы).

    • Что-то знаки неравенства не отобразились в комментарии...
      а если передать параметр hardware - то будет запись вида 1: МАС-адрес (где 1 - номер сетевой карты системы).

    • Спасибо за полезную информацию.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar