Вопрос или проблема
Может кто-то подскажет, как настроить IP-адрес клонов ВМ с UTM?
Когда я создаю новую ВМ UTM, IP-адрес отличается. Это нормально.
Когда я клонирую существующую ВМ UTM, IP-адрес такой же, как у клона.
Мой вопрос: с чего начать, чтобы клону был назначен собственный IP?
Примечание – я использую共享ную сеть. И я использую Ubuntu.
Выключите ВМ и перейдите в её настройки>сеть, нажмите на Случайный в MAC-адресе, включите ВМ, и вы увидите, что у неё должен быть новый IP
Если вы хотите клонировать виртуальные машины с помощью скрипта, вы можете использовать интерфейс UTM AppleScript, чтобы установить новый случайный MAC-адрес. Вот пример Bash-скрипта:
#!/bin/bash
VM_NAME="my_virtual_machine"
# Создайте клон ВМ
utmctl clone "${VM_NAME}" --name "${VM_NAME}-clone"
# Случайный MAC-адрес
# (установка пустой строки говорит UTM сгенерировать случайный MAC)
osascript <<END
tell application "UTM"
set vm to virtual machine named "${VM_NAME}-clone"
set config to configuration of vm
set item 1 of network interfaces of config to {address:""}
update configuration of vm with config
end tell
END
Часть AppleScript работает только если одному ВМ назначен один сетевой интерфейс.
Смотрите https://docs.getutm.app/scripting/cheat-sheet/#configuration как справочный материал.
Спасибо за ответы, как решение через интерфейс, так и скрипт работают для получения другого IP. Я использовал этот подход в нашем плагине UTM Vagrant, чтобы убедиться, что ВМ, запущенные из одной и той же коробки vagrant, будут иметь разные IP.
Однако я хочу предупредить вас о Apple-скрипте от @IngoMeyer.
Скрипт обновит всю конфигурацию сетевого интерфейса.
Пример: если элемент 1 сетевых интерфейсов это ‘Эмулируемый VLAN’, он превратится в новый интерфейс ‘Общая сеть’, который является значением по умолчанию, если режим не указан при создании интерфейса.
Передача пустой строки для обновления просто обновит его как пустую строку в конфигурации UTM и приведет к ошибке qemu при запуске ВМ.
Поэтому я в конечном итоге написал функцию для генерации случайного MAC-адреса (похожую на то, что делает кнопка ‘Случайный’ в UTM) и затем передал его в мой AppleScript.
set_mac_address.applescript
# Этот скрипт устанавливает MAC-адрес сетевого интерфейса в определенной виртуальной машине UTM.
# Использование: osascript set_mac_address.applescript <VM_UUID> <NIC_INDEX> <MAC_ADDRESS>
# Пример: osascript set_mac_address.applescript A123 1 XX:XX:XX:XX:XX:XX
on run argv
set vmID to item 1 of argv
set nicIndex to item 2 of argv
set macAddress to item 3 of argv
tell application "UTM"
set vm to virtual machine id vmID
set config to configuration of vm
set networkInterfaces to network interfaces of config
repeat with anInterface in networkInterfaces
if nicIndex as integer is index of anInterface then
-- Установите предоставленный MAC-адрес
set address of anInterface to macAddress
end if
end repeat
-- Обновите конфигурацию ВМ
update configuration of vm with config
end tell
end run
Использование:
osascript set_mac_address.applescript DF1241A1-102A-41DD-AE2A-BD51F8749A00 0 46:ED:B9:1F:55:A4
Если вы хотите управлять ВМ UTM с помощью Vagrant, посмотрите плагин https://naveenrajm7.github.io/vagrant_utm/
Ответ или решение
Клонирование виртуальной машины UTM — настройка IP-адреса
Клонирование виртуальной машины (ВМ) является важной частью управления виртуализацией, и корректная настройка IP-адреса клона — это ключевое условие для избежания конфликтов в сети. ВИЧ (виртуальные машины) UTM могут вести себя иначе, чем физические устройства, когда дело касается сетевой конфигурации. Если вы создаете новый экземпляр ВМ, то ему автоматически будет присвоен новый IP-адрес, что не вызывает вопросов. Однако при клонировании существующей ВМ IP-адрес может остаться прежним, что может вызвать конфликты в вашей сети.
Шаги для настройки уникального IP-адреса клонированной ВМ
-
Выключите клонированную ВМ: Этот процесс важен для изменения конфигурации сети, чтобы избежать сбоев.
-
Настройте сетевой интерфейс:
- Откройте настройки клонированной ВМ.
- Перейдите в раздел «Сеть» и выберите опцию изменения MAC-адреса на случайный. Это создаст уникальный MAC-адрес для вашего клона, что является залогом получения нового IP-адреса.
-
Использование AppleScript: Если вам требуется автоматизировать процесс клонирования и изменения конфигурации сети, вы можете использовать команду
osascript
:- Ниже приведен пример скрипта на Bash, который выполняет клонирование и устанавливает новый случайный MAC-адрес для сетевого интерфейса:
#!/bin/bash VM_NAME="my_virtual_machine" # Клонирование ВМ utmctl clone "${VM_NAME}" --name "${VM_NAME}-clone" # Случайный MAC-адрес osascript <<END tell application "UTM" set vm to virtual machine named "${VM_NAME}-clone" set config to configuration of vm set item 1 of network interfaces of config to {address:""} update configuration of vm with config end tell END
-
Проверка конфигурации сети: Убедитесь, что интерфейсы вашей операционной системы (в данном случае Ubuntu) настроены на получение IP-адреса автоматически (по DHCP). Это можно проверить с помощью команды:
sudo nano /etc/netplan/01-netcfg.yaml
Убедитесь, что ваши интерфейсы настроены на получение адресов через DHCP. Вот пример конфигурации:
network: version: 2 renderer: NetworkManager ethernets: eth0: dhcp4: true
После изменения файла конфигурации выполните следующую команду для применения настроек:
sudo netplan apply
-
Начало работы новой ВМ: После настройки MAC-адреса и конфигурации сетевых интерфейсов вы можете запустить клонированную ВМ. Она должна получить уникальный IP-адрес от вашего DHCP-сервера.
Заключение
Важно помнить, что правильная настройка сетевых конфигураций при клонировании виртуальных машин критична для стабильной работы вашей сети. Клонирование виртуальных машин и дальнейшая настройка сетевых параметров позволяют значительно упростить управление ИТ-инфраструктурой. Используйте представленные рекомендации и сценарии для безупречной работы виртуальных машин UTM.