IP-адрес не назначен гостевой виртуальной машине KVM после ее клонирования из другой гостевой машины.

Вопрос или проблема

Я настроил гостевую машину на kvm на ubuntu 18.04 (гость также ubuntu 18.04). Я смог подключиться к ней через ssh и вижу, что ей присвоен IP-адрес, когда я набираю virsh domifaddr vm1, я вижу следующий вывод:

 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:64:10:51    ipv4         192.168.122.246/24

Однако, когда я клонирую ее с помощью

virt-clone --connect qemu:///system --original vm1 --name vm2 --auto-clone

и запускаю машину, virsh domifaddr vm2 показывает следующий вывод:

 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------

Так что IP-адреса нет, и я даже не знаю, как к нему подключиться, хотя сам гость отображается как “running”:

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     vm1                            running
 2     vm2                            running

Я проверил файлы конфигурации xml для обеих гостевых машин — единственная разница заключается в MAC-адресах и названиях машин и подключенных дисков. Я даже добавил этот MAC-адрес и назначил статический IP в virsh net-edit default:

  1 <network>
  2   <name>default</name>
  3   <uuid>9a270817-c5bc-4571-877a-43b97a5a3e48</uuid>
  4   <forward mode="nat"/>
  5   <bridge name="virbr0" stp='on' delay='0'/>
  6   <mac address="52:54:00:8a:fe:4f"/>
  7   <ip address="192.168.122.1" netmask='255.255.255.0'>
  8     <dhcp>
  9       <range start="192.168.122.2" end='192.168.122.254'/>
 10       <host mac="52:54:00:64:10:51" name="vm1" ip='192.168.122.246'/>
 11       <host mac="52:54:00:f0:38:6e" name="vm2" ip='192.168.122.247'/>
 12     </dhcp>
 13   </ip>
 14 </network>

затем перезапустил все. Не помогло. Что еще я должен сделать, чтобы гостевой машине был назначен IP-адрес?

И для справки, секция интерфейс-сети xml конфигурации для каждого гостя:

vm1

 45     <interface type="network">
 46       <mac address="52:54:00:64:10:51"/>
 47       <source network='default'/>
 48       <model type="virtio"/>
 49       <address type="pci" domain='0x0000' bus="0x00" slot="0x03" function='0x0'/>
 50     </interface>


vm2

 45     <interface type="network">
 46       <mac address="52:54:00:f0:38:6e"/>
 47       <source network='default'/>
 48       <model type="virtio"/>
 49       <address type="pci" domain='0x0000' bus="0x00" slot="0x03" function='0x0'/>
 50     </interface>

Я также смог подключиться к vm2 с помощью virsh console vm2 и ifconfig внутри нее дает мне:

~$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2184  bytes 191249 (191.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2184  bytes 191249 (191.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Обновление: я также сгенерировал новый machine id в /etc/machine-id /var/lib/dbus/machine-id, изменил ключи ssh и запустил virt-sysprep -d vm2. Затем перезагрузил все. Это тоже не помогло.

Обновление 2: запуск ip a на хосте дает это:

5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:64:10:51 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe64:1051/64 scope link 
       valid_lft forever preferred_lft forever
6: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:f0:38:6e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fef0:386e/64 scope link 
       valid_lft forever preferred_lft forever

что соответствует MAC-адресам обеих ВМ.

Что в итоге решило проблему — это выполнение dhclient ens3 на гостевой машине.

Сейчас работаю над присвоением статического IP-адреса гостевой машине, позже обновлю ответ.

Обновление.
Чтобы назначить статический IP на Ubuntu 18.04, необходимо отредактировать /etc/netplan/[файл, который там есть], чтобы он выглядел примерно так:

network:
    version: 2
    ethernets:
        ens3:
            dhcp4: no
            addresses: [192.168.122.245/24]
            gateway4: 192.168.122.1
            nameservers:
              addresses: [8.8.8.8,8.8.4.4]

Я определенно могу присвоить статический адрес, но почему DHCP не работает.

Это даже более странно для меня,

когда я проверяю на гостевой vm1 и vm2, обе имеют IP-адреса, но IP-адреса одинаковы, что вызывает конфликт, хотя MAC-адреса различаются в обеих ВМ,

когда я проверяю с помощью virsh domifaddr, vm2 имеет IP-адрес, но не vm1,

Ответ или решение

Когда виртуальная машина (VM) на KVM клонируется из другой виртуальной машины, зачастую возникает проблема с получением IP-адреса клонированной машины. Давайте разберем возможные причины и способы их устранения, учитывая конкретную ситуацию, детально описанную вами.

Фон Проблемы

Вы создали виртуальную машину "vm1" на KVM в Ubuntu 18.04, и при использовании команды virsh domifaddr vm1 вы видите корректно назначенный IP-адрес. Однако после клонирования этой машины с помощью virt-clone --connect qemu:///system --original vm1 --name vm2 --auto-clone, новая виртуальная машина "vm2" не получает IP-адрес, что подтверждено выводом команды virsh domifaddr vm2.

Анализ Проблемы

Основные причины отсутствия IP-адреса:

  1. Настройки сетевого адаптера:

    • После клонирования виртуальная машина может использовать тот же MAC-адрес, что и оригинальная, что приведет к конфликту при назначении IP.
    • Проверьте, чтобы в xml конфигурации virsh для "vm2" MAC-адрес был уникален и не совпадал с MAC "vm1".
  2. Конфигурация DHCP:

    • Проверьте конфигурацию файла сети через virsh net-edit default, особенно уделите внимание правилам назначения адресов DHCP и соблюдению уникальности адреса для каждого MAC.
    • Как вы уже сделали, убедитесь, что для "vm2" имеется запись с уникальным MAC и IP.
  3. DHCP-клиент на гостевой машине:

    • Несмотря на правильные настройки на хосте, иногда гостевая ОС не запускает DHCP-клиент автоматически.
    • Ручной запуск dhclient ens3 решил проблему, указав на то, что DHCP-клиент автоматически не просил адрес.
  4. Кеши и Идентификаторы:

    • Выполненные вами шаги по перегенерации machine-id были правильными, так как это предотвращает конфликты связанных с кешем идентификаторов.

Решение Проблемы

  1. Проверка настроек xml: Проверьте и, при необходимости, скорректируйте xml файл для "vm2", чтобы убедиться в уникальности MAC-адреса.

  2. Настройка DHCP и статического IP:

    • Для обеспечения корректной работы DHCP, убедитесь, что схема назначения адресации не перекрывается и DHCP-сервер корректно функционирует.
    • Чтобы настроить статический IP, отредактируйте /etc/netplan файл на гостевой машине, как вы уже указали. Это поможет избежать проблем с назначением IP через DHCP.
  3. Проверка конфигурации гостевой машины:

    • Убедитесь в целостности конфигурационных файлов сети на "vm2", проверив /etc/netplan, и соблюдении корректных маршрутов и DNS-серверов.

Заключение

Несмотря на кажущуюся простоту, проблемы сетевых настроек в клонированных виртуальных машинах могут оказаться сложными и требовать комплексного подхода. Простое выполнение команд, таких как dhclient, указало на неполадки в процессе автоматического получения IP-адреса. Для гарантированной бесперебойной работы необходимо уделить внимание и другим элементам конфигурации сети, включая правильное распределение статических IP при необходимости.

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

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

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

Капча загружается...