То, что я хотел бы сделать, это установить конфигурацию сети гостей (IP-адрес, подсеть, шлюз, широковещательный адрес) из хост-системы. Используемая настройка сети находится в bridge
режиме. Как я могу настроить сеть с хоста, а не настраивать сам клиент на статическую конфигурацию сети?
Если я выполню:
virsh edit vm1
там также есть <network>
блок, и я попытался настроить сетевой интерфейс оттуда, но, к сожалению, гостевая виртуальная машина, похоже, не использует его и поэтому не подключена к сети (поскольку использует только автоматическую настройку сети) ... Гость Виртуальные машины работают как на Linux, так и на Windows. Любая помощь будет высоко оценен.
Ответы:
Если вы не хотите выполнять какие-либо настройки в гостевой системе, тогда единственным вариантом является DHCP-сервер, который раздает статические IP-адреса. Если вы используете
bridge
режим, это, вероятно, будет внешний DHCP-сервер. Обратитесь к его руководству, чтобы узнать, как обслуживать статический лизинг.Но, по крайней мере, в режиме пересылки
nat
илиroute
, вы можете использовать встроенный в libvirtdnsmasqd
(более поздние версии libvirtd поддерживают опцию dnsmasq «dhcp-hostsfile»). Вот как:Сначала выясните MAC-адреса виртуальных машин, которым вы хотите назначить статические IP-адреса:
Затем отредактируйте сеть
Найдите
<dhcp>
раздел, ограничьте динамический диапазон и добавьте записи хоста для ваших виртуальных машин.Затем перезагрузите виртуальную машину (или перезапустите ее DHCP-клиент, например
ifdown eth0; ifup eth0
)Обновление: я вижу, что есть сообщения, что изменение может не вступить в силу после "virsh net-edit". В этом случае попробуйте это после редактирования:
... и перезапустите DHCP-клиент виртуальной машины.
Если это все еще не работает, вам, возможно, придется
Примечание. Хост KVM не может заставить виртуальную машину с неизвестной ОС и неизвестной конфигурацией использовать определенную конфигурацию сети. Но если вы знаете, что виртуальная машина использует определенный сетевой протокол конфигурации - скажем, DHCP - вы можете использовать это. Это то, что предполагает этот пост.
Некоторые ОС (например, некоторые дистрибутивы Linux) также позволяют передавать параметры конфигурации сети в гостевую систему, например, через командную строку ядра. Но это очень специфично для ОС, и я не вижу никаких преимуществ по сравнению с методом DHCP.
источник
virsh net-update
хорошая команда для вас (вам не нужно перезапускать / разрушать вашу сеть и т. д.),см .: https://www.redhat.com/archives/libvir-list/2012-September/msg01380.html
источник
Мне удалось
dnsmasq
«увидеть» недавно добавленное сопоставление IP-MAC, просто отправив-HUP
сигналdnsmasq
процессу. После этого перезагрузки нового гостя было достаточно, чтобы ему был назначен правильный IP-адрес, без необходимости перезапускаlibvirtd
и самой сети.В официальной документации libvirt ( http://wiki.libvirt.org/page/Networking#Applying_modifications_to_the_network ) упоминается этот неофициальный сценарий Perl, который автоматизирует весь процесс: https://gist.github.com/bendiken/032ea1bddb9ffafe98b4
Я не пробовал этот скрипт сам, потому что я понял, что файл hosts уже обновлен, и достаточно было просто отправить сигнал -HUP.
На хосте установлен Debian 7.8, а версии пакетов:
источник