Вопрос или проблема
Я настроил гостевую машину на 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-адреса:
-
Настройки сетевого адаптера:
- После клонирования виртуальная машина может использовать тот же MAC-адрес, что и оригинальная, что приведет к конфликту при назначении IP.
- Проверьте, чтобы в
xml
конфигурацииvirsh
для "vm2" MAC-адрес был уникален и не совпадал с MAC "vm1".
-
Конфигурация DHCP:
- Проверьте конфигурацию файла сети через
virsh net-edit default
, особенно уделите внимание правилам назначения адресов DHCP и соблюдению уникальности адреса для каждого MAC. - Как вы уже сделали, убедитесь, что для "vm2" имеется запись с уникальным MAC и IP.
- Проверьте конфигурацию файла сети через
-
DHCP-клиент на гостевой машине:
- Несмотря на правильные настройки на хосте, иногда гостевая ОС не запускает DHCP-клиент автоматически.
- Ручной запуск
dhclient ens3
решил проблему, указав на то, что DHCP-клиент автоматически не просил адрес.
-
Кеши и Идентификаторы:
- Выполненные вами шаги по перегенерации machine-id были правильными, так как это предотвращает конфликты связанных с кешем идентификаторов.
Решение Проблемы
-
Проверка настроек x
ml
: Проверьте и, при необходимости, скорректируйтеxml
файл для "vm2", чтобы убедиться в уникальности MAC-адреса. -
Настройка DHCP и статического IP:
- Для обеспечения корректной работы DHCP, убедитесь, что схема назначения адресации не перекрывается и DHCP-сервер корректно функционирует.
- Чтобы настроить статический IP, отредактируйте
/etc/netplan
файл на гостевой машине, как вы уже указали. Это поможет избежать проблем с назначением IP через DHCP.
-
Проверка конфигурации гостевой машины:
- Убедитесь в целостности конфигурационных файлов сети на "vm2", проверив
/etc/netplan
, и соблюдении корректных маршрутов и DNS-серверов.
- Убедитесь в целостности конфигурационных файлов сети на "vm2", проверив
Заключение
Несмотря на кажущуюся простоту, проблемы сетевых настроек в клонированных виртуальных машинах могут оказаться сложными и требовать комплексного подхода. Простое выполнение команд, таких как dhclient
, указало на неполадки в процессе автоматического получения IP-адреса. Для гарантированной бесперебойной работы необходимо уделить внимание и другим элементам конфигурации сети, включая правильное распределение статических IP при необходимости.
В будущем, для предотвращения подобных проблем, рекомендуется тщательно документировать все изменения в конфигурациях виртуальных машин и сетевых подключений как на уровне гипервизора, так и гостевой ОС.
Оптимизируя ваши ключевые слова в текстах или инструкциях, вы обеспечите лучшую индексацию и доступность информации, что повысит поисковую видимость и уровень профессиональности вашего подхода.