Якщо ви не хочете робити будь-яку конфігурацію всередині гостя, то єдиний варіант - сервер DHCP, який роздає статичні IP-адреси. Якщо ви використовуєте bridge
режим, можливо, це буде якийсь зовнішній сервер DHCP. Зверніться до його посібника, щоб дізнатися, як обслуговувати статичну оренду.
Але принаймні в режимах прямого перегляду nat
або route
ви можете використовувати вбудований libvirt dnsmasqd
(Більш новітні версії libvirtd підтримують опцію dnsmasq "dhcp-hostsfile"). Ось як:
Спочатку з’ясуйте MAC-адреси VM, яким ви хочете призначити статичні IP-адреси:
virsh dumpxml $VM_NAME | grep 'mac address'
Потім відредагуйте мережу
virsh net-list
virsh net-edit $NETWORK_NAME # Probably "default"
Знайдіть <dhcp>
розділ, обмежте динамічний діапазон і додайте записи хостів для своїх віртуальних машин
<dhcp>
<range start='192.168.122.100' end='192.168.122.254'/>
<host mac='52:54:00:6c:3c:01' name='vm1' ip='192.168.122.11'/>
<host mac='52:54:00:6c:3c:02' name='vm2' ip='192.168.122.12'/>
<host mac='52:54:00:6c:3c:03' name='vm3' ip='192.168.122.12'/>
</dhcp>
Потім перезавантажте свій VM (або перезавантажте його клієнт DHCP, наприклад ifdown eth0; ifup eth0
)
Оновлення: я бачу повідомлення про те, що зміни можуть не набути чинності після "virsh net-edit". У цьому випадку спробуйте це після редагування:
virsh net-destroy $NETWORK_NAME
virsh net-start $NETWORK_NAME
... та перезапустіть DHCP-клієнт VM.
Якщо це все ще не працює, можливо, доведеться
- припиніть послугу libvirtd
- вбивати будь-які процеси dnsmasq, які ще живі
- запустити сервіс libvirtd
Примітка: Ні в якому разі хост KVM не може змусити VM з невідомою ОС та невідомим конфігурацією використовувати певну мережеву конфігурацію. Але якщо ви знаєте, що VM використовує певний протокол конфігурації мережі - скажімо, DHCP - ви можете використовувати це. Ось що передбачає ця публікація.
Деякі ОС (наприклад, деякі дистрибутиви Linux) також дозволяють передавати параметри мережевої конфігурації в гостьові, наприклад, через командний рядок ядра. Але це дуже специфічно для ОС, і я не бачу переваги перед методом DHCP.