База знаний VMmanager

Как изменить шаблон генерации MAC-адресов для ВМ

Если ВМ расположены в разных кластерах, которые физически являются одним сегментом сети, могут возникнуть коллизии MAC-адресов. Это происходит, поскольку машинам присвоен один MAC-адрес, но разные IP-адреса.

Чтобы избежать коллизий, укажите шаблон генерации MAC-адресов для машин в кластере.

Решение

Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.

Перед внесением изменений в БД создайте резервную копию платформы. 

Чтобы поменять шаблон генерации MAC-адресов для ВМ, отредактируйте значение параметра mgr_reserve_mac_bytes в базе данных в таблице vm_settings. Для этого:

  1. Подключитесь к серверу с платформой по SSH.
  2. Сгенерируйте случайное значение параметра mgr_reserve_mac_bytes командой:

    printf '%02X\n' $[RANDOM%256] 
  3. Подключитесь к БД:

    В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:

    • VMmanager Hosting — MySQL;
    • VMmanager Infrastructure:
      • для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
      • в остальных случаях — MySQL.

    Чтобы определить тип СУБД, выполните на сервере с платформой команду: 

    docker ps --filter name=pgsql
    Пример ответа
    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS      NAMES
    3213c5dc94d0   postgres:12   "docker-entrypoint.s…"   5 days ago   Up 4 days   5432/tcp   pgsql

    Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.

    MySQL
    docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"
    PostgreSQL
    docker exec -it pgsql bash -c "psql -d isp"
  4. Проверьте текущее значение параметра mgr_reserve_mac_bytes в таблице vm_settings:

    select value from vm_settings where name='mgr_reserve_mac_bytes';
    Пример вывода
    value: A4
    1 row in set (0.00 sec)

    В указанном примере значение параметра mgr_reserve_mac_bytes = A4.

  5. Замените значение параметра mgr_reserve_mac_bytes в таблице vm_settings:

    update vm_settings set value='<новое_значение>' where name='mgr_reserve_mac_bytes';
    Пояснения
  6. Выйдите из консоли СУБД:

    \quit

После этого ВМ будут присваиваться MAC-адреса по новому шаблону. Чтобы проверить присвоение MAC-адресов, создайте тестовую ВМ.