Как узнать IP-адрес новой виртуальной машины с помощью libvirt 0.10. 0+ (маршрутизируемая сеть)

Моя цель - узнать IP-адрес новой виртуальной машины, используя только libvirt api (> = 0.10). В настоящее время я использую команду net-update libvirt: перед запуском новой машины я устанавливаю для нее статическую запись dhcp и загружаю vm с известным адресом.

Она почти нормально работает даже со старыми версиями libvirt, но имеет одну ошибку. Когда я «принудительно выключаю» машину, она не отправляет запрос «освободить» на DHCP-сервер (libvirt / dnsmasq), и этот ip остается в файле аренды. Если я создам новую машину с тем же IP-адресом до истечения времени ожидания аренды dhcp, она не получит IP-адрес из статической записи, поскольку dhcp-сервер считает, что этот IP-адрес уже используется (на основе информации в файле аренды).

Существуют ли более надежные решения для получения IP-адреса машины или установки его перед запуском без доступа оболочки к целевому серверу или статической сетевой конфигурации внутри виртуальной машины ?

0
задан 18 January 2017 в 19:13
1 ответ

В libvirt> = 1.2.14 можно запросить libvirt, чтобы запросить IP-адреса, которые были назначены гостевой сетевой карте, избегая необходимости устанавливать статические IP-адреса. например

# virsh domifaddr f25kubdev
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet1      52:54:00:b4:fc:f2    ipv4         192.168.122.13/24

Я не уверен, что вам это пригодится, поскольку вы упомянули libvirt 0.10.0

Если у вас> = 1.2.10, есть менее прямой способ получить информацию, запросив базу данных аренды DHCP

# virsh net-dhcp-leases default
 Expiry Time          MAC address        Protocol  IP address                Hostname        Client ID or DUID
-------------------------------------------------------------------------------------------------------------------
 2017-01-19 12:01:01  52:54:00:b4:fc:f2  ipv4      192.168.122.13/24         f25kubdev       ff:00:b4:fc:f2:00:04:52:fb:4b:29:01:5e:44:c8:b6:57:85:dd:f2:7a:98:73

вам необходимо вручную сопоставить MAC-адрес с интересующим вас доменом - команда 'domifaddr' просто делает это сопоставление за вас.

До 1.2.10 не было возможности получить эту информацию через API libvirt вообще - вам придется копаться в файле аренды dnsmasq напрямую.

1
ответ дан 4 December 2019 в 16:22

Теги

Похожие вопросы