Как генерируются MAC адреса для виртуальных машин ESXI
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов Pyatilistnik.org. В прошлый раз мы с вами разобрали методы позволяющие производить подключение к удаленному рабочему столу, они сейчас очень востребованы на самоизоляции. В сегодняшней теме я бы вновь хотел коснуться темы гипервизоров, и разобрать такой вопрос "Как генерируются MAC адреса для виртуальных машин ESXI". Просто интересно самому было в этом разобраться и решил себе сохранить на память.
Процесс генерации MAC адреса в виртуальных машинах ESXI
Ранее мы с вами уже касались вопроса смены mac-адреса на виртуальных машинах, разбирали задачи связанные с этим. Задумывались ли вы, как vCenter назначает MAC-адреса виртуальным машинам, и знаете ли вы для чего вам эти знания.
Давайте для начала напомню что из себя представляет MAC-адрес, если по простому, то это шести байтное (48 битное) число, вида 54-27-1E-0D-28-47. Его можно представить вот таким образом:
Mac адрес несет в себе информацию о производителе, которая зашита в первых символах этого номерка. По сути каждый мак адрес уникален и его производитель, получает данные номера пачками в специальной конторе IEEE Registration Authority. У каждого сетевого интерфейса есть уникальный Organizationally Unique Identifier (OUI), который из себя представляет трех байтный (24 битный) префикс, использующийся для генерации уникальных MAC адресов. VMware-у присвоено несколько Organizationally Unique Identifier (OUI)-ов, и таким образом за VMware-ом резервируется блок производных идентификаторов, таких как MAC адреса.
vSphere 5.5 и более поздние версии предоставляют несколько схем для автоматического распределения MAC-адресов в vCenter Server. Вы можете выбрать схему, которая наилучшим образом соответствует вашим требованиям для дублирования MAC-адресов, требованиям OUI для локального или универсального администрирования адресов.
В vCenter Server доступны следующие схемы генерации MAC-адресов:
- Распределение OUI VMware, распределение по умолчанию
- Распределение на основе префиксов (Prefix-based allocation)
- Распределение на основе диапазона (Range-based allocation)
После создания MAC-адреса он не изменится, если только MAC-адрес виртуальной машины не конфликтует с MAC-адресом другой зарегистрированной виртуальной машины. MAC-адрес сохраняется в файле конфигурации виртуальной машины. При выделении организационного уникального идентификатора (OUI) VMware назначаются MAC-адреса на основе стандартного OUI VMware 00:50:56 и идентификатора vCenter Server.
4- й октет виртуального MAC-адреса рассчитывается следующим образом
MAC-адрес виртуальной машины конфликтует или имеет двойной MAC-адрес при создании виртуальной машины
В виртуальной инфраструктуре бывает ситуация, что две виртуальные машины конфликтуют из-за MAC-адреса, тут нужно помнить:
- Каждая система vCenter Server имеет идентификатор экземпляра vCenter Server (Organizationally Unique Identifier (OUI)). Этот идентификатор представляет собой число от 0 до 63, которое генерируется случайным образом во время установки, но может быть перенастроено после установки.
- vCenter Server использует идентификатор экземпляра для создания MAC-адресов и UUID для виртуальных машин. Если две системы vCenter Server имеют одинаковый идентификатор экземпляра vCenter Server, они могут генерировать идентичные MAC-адреса (дублированные MAC-адреса) для виртуальных машин. Это может вызвать конфликты, если виртуальные машины находятся в одной сети, что приведет к потере пакетов и другим проблемам.
- При создании новой виртуальной машины MAC-адрес дублируется
- Виртуальные машины включаются и работают нормально, но разделяют MAC-адрес с другой виртуальной машиной.
- Эта проблема может возникнуть, если количество развертываемых виртуальных машин превысило пул MAC-адресов по умолчанию. Это приводит к тому, что vCenter Server начинает повторно использовать уже назначенные MAC-адреса.
Чтобы решить дублирование MAC-адресов, необходимо при развертывании виртуальных машин из нескольких систем vCenter Server в одной сети необходимо убедиться, что эти vCenter имеют уникальные идентификаторы экземпляров. При изменении уникального идентификатора сервера vCenter автоматически сгенерированные MAC-адреса будут другими.
Как найти vCenter Instance ID
Чтобы просмотреть или изменить идентификатор экземпляра vCenter Server вам необходимо авторизоваться в web-интерфейсе. Далее вы переходите в раздел "Hosts & Clusters". Нажимаете кнопку "Actions - Settings".
Далее открываете в разделе "Configure" пункт "General - Runtime settings". В моем примере мой vCenter Server inique ID равен "13".
Если вы хотите поменять vCenter Server inique ID, то вам нужно в правом верхнем углу нажать кнопку "Edit". Далее идете в раздел "Running settings" и в строке vCenter Server unique ID меняете значение. Если вы изменили идентификатор экземпляра vCenter Server, вы должны перезапустить vCenter Server, чтобы изменения вступили в силу и это значение может быть любым числом от 0 до 63.
Как видите в моем примере vCenter Server unique ID равно 13, давайте рассчитаем выдаваемые MAC_адреса, точнее первые 8 символов.
Первые три октета будут 00:50:56, это константа. Далее 4- й октет MAC = (128 + 13)=141. Теперь, если вы преобразуете 141 в шестнадцатеричное значение, оно преобразуется в "8D". Теперь проверим любую из моих виртуальных машин, а именно 4-й актет. Как видно из свойств сетевого интерфейса, это "8D".
Генерация MAC адреса для виртуальных машин ESXI без vCenter
Если у вас гипервизор не управляется через vCenter сервер, то за генерацию MAC-адресов отвечает сам хост ESXi, он следит чтобы не было конфликтов на виртуальных машинах. Первые три актета будут "00:0C:29", 4-й актет генерируется на основании правил:
- VMware Organizationally Unique Identifier (OUI)
- SMBIOS UUID ESXi хоста
- Хэш основанный на имени объекта для которого для которого данный MAC адрес генерируется
Простой пример, вы выключаете виртуальную машину, ее MAC-адрес запоминается хостом ESXI. Если при ее включении, такой мак-адрес уже есть, то у включаемой виртуальной машины он будет заменен, если конфликта нет, то сервер получит прежние MAC-адреса. Еще момент, если вы данный хост отдадите под управление vCenter, то прежние виртуальные машины так же сохранят свои старые MAC-адреса с первыми 3-ми актетами "00:0C:29", а вот новые будут получать "00:50:56".