Оглавление |
---|
См. также:
- Перенос ВМ из VMware Workstation в локальную виртуализацию QEMU/KVM на ПК СВ "Брест";
- Установка Windows в виртуальной машине на диск virtio в QEMU/KVM;
- Установка виртуализации QEMU/KVM в Astra Linux Special Edition 1.6 (без GUI - без ПК СВ "Брест")
- Установка виртуализации QEMU/KVM в Astra Linux Common Edition 2.12;
- "Горячее" резервное копирование виртуальных машин в локальной виртуализации QEMU/KVM
Информация | ||
---|---|---|
| ||
|
Аппаратная поддержка виртуализации
Предупреждение | ||||
---|---|---|---|---|
|
Установка виртуализации QEMU/KVM
Предупреждение |
---|
При использовании виртуализации QEMU/KVM в Astra Linux Special Edition с включенным МКЦ и МРД для обеспечения работы с виртуальными машинами, поддерживающими ненулевые метки безопасности, все пулы данных должны находиться на файловых системах, поддерживающих работу с мандатными атрибутами (Ext4, cepfs, ocfs2, hfs). |
Предупреждение | ||
---|---|---|
При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически будет установлена и настроена система управления сетевым трафиком firewalld. Если в системе используется система управления сетевым трафиком ufw, то перед установкой виртуализации следует сохранить настройки и удалить ufw:
Установка firewalld приведет к ограничению работы сетевых служб. См. раздел Настройка межсетевого экрана после установки KVM. |
Установка виртуализации QEMU/KVM при установке операционной системы
См.:
- Установка виртуализации в Astra Linux Special Edition (без GUI - без ПК СВ "Брест");
- Установка виртуализации QEMU/KVM в Astra Linux Common Edition 2.12.
Установка виртуализации QEMU/KVM после установки ОС
Astra Linux Special Edition x.7 и Astra Linux Common Edition 2.12
Для автоматизированной установки системы виртуализации QEMU/KVM в дистрибутивы Astra Linux
Установка KVM в ОС ОН Орёл 2.12
Для автоматизированной установки пакета Virt-manager (KVM) в дистрибутив ОС ОН Орёл 2.12 включен пакет astra-kvm.
Пакет может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:
Command |
---|
sudo apt install astra-kvm |
При установке этого пакета будет автоматически установлен сам Virt-manager графический инструмент управления виртуальными машинами virt-manager и выполнены все действия, необходимые для установки и запуска системы виртуализации. Дополнительно для работы в сети будет установлен пакет ebtables.
Установка KVM в предыдущих версиях Astra Linux
Для работы с virt-manager
(kvm
) Орел current:
Для процессоров Intel:
Command |
---|
grep vmx /proc/cpuinfo |
Для процессоров AMD:
Command |
---|
grep svm /proc/cpuinfo |
Проверить наличие загруженных модулей ядра kvm и kvm_intel командой
Command | ||
---|---|---|
| ||
kvm_intel 258048 0 kvm 659456 1 kvm_int |
При установке пакетов текущий пользователь будет автоматически добавлен в группы:
- kvm;
- libvirt;
- libvirt-qemu;
Кроме указанных групп в Astra Linux Special Edition используются группы:
Группа libvirt-admin. Пользователи-участники этой группы могут без использования sudo работать с с виртуальными машинами, виртуальными сетями и хранилищами данных. До установки обновления БЮЛЛЕТЕНЬ № 2023-1023SE17 (оперативное обновление 1.7.5) используется только в Astra Linux Special Edition с включенным МРД (включен по умолчанию в Усиленном и Максимальном режимах защищенности Astra Linux x.7). После установки обновления БЮЛЛЕТЕНЬ № 2023-1023SE17 (оперативное обновление 1.7.5) необходима также и при выключенном МРД. Команда для добавления пользователя в группу libvirt-admin:
Command sudo usermod -a -G libvirt-admin $USER - Специальные группы (доступны начиная с обновления БЮЛЛЕТЕНЬ № 2023-0426SE17 (оперативное обновление 1.7.4):
- libvirt-dev;
- libvirt-admvm.
Если предполагается работа с гостевой файловой системой libguestfs с использованием sudo, то требуется включить в указанные выше группы пользователя root:
Command |
---|
sudo usermod -a -G kvm,libvirt,libvirt-qemu,libvirt-admin root |
Раскрыть | ||
---|---|---|
| ||
Назначение ролей специальным группам пользователей определяются в конфигурационном файле /etc/libvirt/libvirtd.conf. Не рекомендуется изменять заданные по умолчанию значения:
Права, предоставляемые ролям, определяются в файлах /etc/libvirt/parsec_roledb.conf и /usr/share/polkit-1/actions/org.libvirt.api.policy. |
Других пользователей, которые должны работать с виртуализацией, следует добавить в указанные группы вручную (кроме группы libvirt-admin в Astra Linux Common Edition):
Command |
---|
sudo usermod -a -G kvm,libvirt,libvirt-qemu,libvirt-admin <имя_пользователя> |
Для того, чтобы добавление в группы вступило в силу, нужно перезапустить пользовательскую сессию. В целях тестирования для того, чтобы добавление в группы вступило в силу, можно выполнить следующую команду (потребуется ввести пароль пользователя):
Command |
---|
exec su - $USER |
Для хранения образов виртуальных машин при первом запуске графической оболочки управления виртуализацией virtmanager автоматически создается пул данных. По умолчанию этот пул данных располагается в каталоге /var/lib/libvirt/images. Дополнительные пулы данных могут быть созданы по мере необходимости.
Права доступа к управлению виртуализацией
При установке системы виртуализации в каталоге /usr/share/polkit-1/actions/ создаются два правила Polkit, предоставленные разработчиками системы виртуализации:
- файл org.libvirt.unix.policy — описывает два глобальных разрешения по доступу к виртуальной инфраструктуре:
- org.libvirt.unix.monitor — позволяет выполнять мониторинг виртуальной инфраструктуры;
- org.libvirt.unix.manage — позволяет выполнять управление виртуальной инфраструктурой;
- файл org.libvirt.api.policy — содержит список операций (например, создание ВМ, удаление виртуальной сети и т.д.), которые становятся доступны пользователям, если проверка по правилу org.libvirt.unix.policy пройдена.
Ролевой контроль прав доступа к управлению виртуализацией
Информация |
---|
Настоящий раздел применим для Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7) с установленным обновлением БЮЛЛЕТЕНЬ № 2022-1221SE17MD (срочное оперативное обновление 1.7.3.UU.1). |
Начиная с обновления БЮЛЛЕТЕНЬ № 2022-1221SE17MD (срочное оперативное обновление 1.7.3.UU.1) в Astra Linux реализован механизм ролевого управления доступом, базирующийся на применении драйвера доступа Polkit и обеспечивающий разграничение возможностей выполнения привилегированных операций со средствами виртуализации. Реализация ролевого метода управления доступом обеспечивает следующее разграничение доступа по ролям:
- разработчик виртуальной машины;
- администратор безопасности средства виртуализации;
- администратор средства виртуализации;
- администратор виртуальной машины.
Назначение ролей и полномочий осуществляется администратором средства виртуализации.
Для реализации ролевого контроля:
Установить пакет astra-kvm-secure:
Command sudo apt install astra-kvm-secure При установке пакета создаются служебные группы libvirt-adm, libvirt-dev и правила, реализующие разрешения для этих групп:
- Правило /var/lib/polkit-1/localauthority/10-vendor.d/60-libvirt.pkla, позволяющее пользователям групп libvirt-dev, libvirt-adm и libvirt осуществлять доступ к операциям по управлению виртуальной инфраструктурой;
- Правила /var/lib/polkit-1/localauthority/15-libvirtd.d/.org.libvirt.api.*.pkla, определяющие конкретные разрешения для ролей.
После установки пакета для включения ролевого контроля:
В конфигурационном файле системы виртуализации /etc/libvirt/libvirtd.conf параметру access_drivers присвоить значение [ "polkit", "parsec" ]:
Блок кода access_drivers = ["polkit", "parsec" ]
Перезапустить службу libvirtd, выполнив команды:
Command sudo systemctl restart libvirtd firewalld
Для редактирования правил возможно использование графического инструмента fly-polkit-viewer.
Для настройки ролей:
- Пользователей, реализующих роль разработчика виртуальных машин, включить в группу libvirt-dev и libvirt-admin;
- Пользователей, реализующих роль администратора безопасности:
- Включить в группу libvirt-sec;
- Исключить из групп libvirt, libvirt-qemu, kvm
- Пользователей, реализующих роль администратора средства виртуализации:
- Включить в группы libvirt-adm, libvirt-admin и astra-admin;
- назначить возможность работы под высоким уровнем целостности (63)
- Пользователей, реализующих роль администратора виртуальной машины включить в группу libvirt.
Для того, чтобы пользователи - участники группы могли выполнять команды без применения sudo создать для групп файлы в каталоге /etc/sudoers.d создать файл с разрешениями для групп, например:
Блок кода |
---|
%libvirt-sec ALL=(ALL:ALL) ALL
%libvirt-adm ALL=(ALL:ALL) ALL |
Имя файла может быть произвольным.
Дополнительно, для разрешения доступа пользователей группы libvirt к виртуальным машинам, в графической консоли ВМ перейти в свойства ВМ и в разделе «Безопасность» задать права доступа к виртуальной машине для пользователей:
Установка виртуализации в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6), РУСБ.10015-16 исп. 1
Для работы с системой виртуализации QEMU/KVM в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6), РУСБ.10015-16 исп. 1 необходимо установить следующие пакеты:
- libvirt-daemon-system;
- libvirt0;
- qemu-kvm.
Команда для установки:
Command |
---|
sudo apt install libvirt-daemon-system libvirt0 qemu-kvm |
При установке пакетов в Astra Linux Special Edition будет создан каталог /var/lib/libvirt/images (принятый по умолчанию каталог пула данных) которому будут назначены мандатные атрибуты, достаточные для размещения в нем данных с ненулевыми мандатными метками:
Command | ||
---|---|---|
| ||
drwx--x--xm-- 2 root root Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr /var/lib/libvirt/images |
Всех пользователей, которые должны работать с виртуализацией (включая текущего пользователя-администратора) следует добавить в
Установить пакеты:
Command |
---|
sudo apt install qemu-kvm bridge-utils virt-manager libvirt-daemon libvirt-daemon-system firewalld |
Запустить firewalld и включить его перезапуск после перезагрузки:
Command |
---|
sudo systemctl enable --now firewalld |
virt-manager
(kvm
) в следущие группы:- kvm;
- libvirt;
- libvirt-admin (Внимание! этой группы нет в Astra Linux Common Edition);
- libvirt-qemu.
Для текущего пользователя это можно сделать следющей командойКоманда для добавления пользователя в группы:
Command |
---|
sudo usermod -a -aG G kvm,libvirt,libvirt-admin,libvirt-qemu ,kvm $USER<имя_пользователя> |
Якорь #firewalld #firewalld
Настройка межсетевого экрана после установки KVM
#firewalld | |
#firewalld |
При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически выполняется настройка правил маршрутизации для работы с виртуальными машинами. Для этого используется пакет firewalld. При его установке будет включен межсетевой экран, побочным эффектом чего является ограничение работы сетевых служб.
Дополнительно можно указать путь подключения, который будет использоваться по умолчанию командой virsh:
Проверить разрешенные межсетевым экраном службы и порты можно командой:
Command |
---|
sudo firewall-cmd --list-all |
Получить список известных межсетевому экрану служб можно командой:
Command |
---|
sudo firewall-cmd --get-services |
Информация |
---|
Для внесения временных изменений (например, в целях тестирования) можно использовать указанные ниже команды без опции --permanent. Такие изменения будут сохраняться до перезагрузки. |
Разрешить доступ к известной службе можно командой:
Command |
---|
sudo firewall-cmd --permanent --add-port=<имя_службы> |
Например, для службы RDP:
Command |
---|
sudo firewall-cmd --permanent --add-service=rdp |
Разрешить доступ к дополнительному порту (не используя имена известных служб) можно командой:
Command |
---|
sudo firewall-cmd --permanent --add-port=<номер_порта>/<название_протокол> |
Например, для службы RDP:
Command |
---|
sudo firewall-cmd --permanent --add-port=3389/tcp |
После внесения изменений перезагрузить конфигурацию межсетевого экрана:
Command |
---|
sudo firewall-cmd --reload |
Более подробную справку по работе с межсетевым экраном см.:
Command |
---|
man firewalld |
Работа с QEMU/KVM
Создание виртуальных машин
Command |
---|
export LIBVIRT_DEFAULT_URI="qemu:///system" |
Информация |
---|
При работе рекомендуется контролировать содержимое /var/lib/libvirt/images и своевремнно удалять неиспользуемые диски. |
Сброс настроек
своевременно удалять неиспользуемые диски. |
Для создания виртуальных машин в Astra Linux Special Edition x.7 и Astra Linux Common Edition 2.12 можно использовать графический менеджер виртуальных машин virt-manager. Для Astra Linux Special Edition РУСБ.10152-02 Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) см. статью Создание виртуальных машин средствами XML в Astra Linux Special Edition (применима также и для х.7 и 2.12).
Создание собственных пулов для пользователей
Предупреждение |
---|
При работе с Astra Linux Special Edition образы дисков виртуальных машин (в том числе загрузочные образы для установки ОС на виртуальных машинах) регистрируются в системе виртуализации как файловые объекты с высоким уровнем конфиденциальности. При этом все вышележащие каталоги в файловой системе также автоматически получают высокий уровень конфиденциальности. В связи с этим не рекомендуется размещать образы дисков в домашних каталогах пользователей, так как присвоение высокого уровня конфиденциальности домашнему каталогу существенно затруднит работу пользователя - владельца этого каталога. |
Для создания собственного пула пользователя следует создать каталог, доступный этому пользователю, например:
Command |
---|
sudo mkdir -p /vrt/pool1 |
Для запрета добавления новых образов ВМ в пул пользователю необходимо ограничить доступ к директории правами на чтение (r-x).
Дальнейшие действия выполнять от имени пользователя - владельца пула.
Создать пул в ранее созданных каталогах можно следующими командами:
Command |
---|
virsh -c qemu:///system pool-define-as pool1 --type dir --target /vrt/pool1 virsh -c qemu:///system pool-build pool1 virsh -c qemu:///system pool-start pool1 virsh -c qemu:///system pool-autostart pool1 virsh -c qemu:///system pool-list --all |
Образец диалога с выводом команд:
Раскрыть |
---|
$ virsh -c qemu:///system pool-define-as pool1 --type dir --target /vrt/pool1 Pool pool1 defined $ virsh -c qemu:///system pool-build pool1 Pool pool1 built $ virsh -c qemu:///system pool-start pool1 Pool pool1 started $ virsh -c qemu:///system pool-autostart pool1 Pool pool1 marked as autostarted $ virsh -c qemu:///system pool-list --all Name State Autostart ------------------------------------------- pool1 active yes |
При работе в Astra Linux Special Edition при создании пула необходимые мандатные атрибуты будут присвоены ему автоматически (при условии, что на ОС установлено обновление безопасности БЮЛЛЕТЕНЬ № 20190222SE16 (оперативное обновление 2)). Проверить мандатные атрибуты пула можно командой:
Command |
---|
pdp-ls -Md /vrt/pool1 |
Образец диалога:
Раскрыть |
---|
$ pdp-ls -Md /vrt/pool1 drwxr-xr-xm-- 2 vrtadmin vrtadmin Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:CCNRA /vrt/pool1 |
Создать и запустить виртуальную машину с образом диска, расположенным в ранее созданном пуле командой:
Command |
---|
virsh -c qemu:///system define vm1.xml |
Образец диалога:
Раскрыть |
---|
|
Проверить статус ВМ:
Command |
---|
virsh -c qemu:///system list --all |
Образец диалога:
Раскрыть |
---|
$ virsh -c qemu:///system list --all Id Name State ---------------------------------------------------- 3 vm1 running |
Проверить параметры подключения к ВМ
Command |
---|
$ virsh -c qemu:///system domdisplay vm1 |
Образец диалога:
Раскрыть |
---|
virsh -c qemu:///system domdisplay vm1 spice://127.0.0.1:5900 |
Подключиться к виртуальному монитору ВМ
Command |
---|
spicy -h 127.0.0.1 -p 5900 |
Сброс пользовательских настроек
Для сброса старых пользовательских Для сброса старых пользовательсктх настроек virt-manager удалить файл .config/dconf/user
Устранение ошибок
При появлении ошибки custom процессора нужно поставить в настройках пункт "использовать архитектуру процессора хоста".
При ошибке network 'default' not active выполнть выполнить следующие команды:
Command | ||||
---|---|---|---|---|
| ||||
sudo virsh net-start default sudo virsh net-autostart default |
После выполнения этих команд после перезагрузки сеть network 'default' будет запускаться автоматически.
Настройка фиксированных IP-адресов
Для привязки фиксированных IP-адресов к виртуальным машинам выполнить команду:
Command | ||||
---|---|---|---|---|
| ||||
sudo virsh net-edit default |
и после строки:
Блок кода |
---|
<range start='192.168.122.2' end='192.168.122.254'/> |
вставить строки с мак-адресами виртуальных адаптеров, например, как указано ниже:
Блок кода |
---|
<host mac='52:54:00:a2:99:c2' name='host1' ip='192.168.122.133'/> <host mac='52:54:00:de:2e:58' name='host2' ip='192.168.122.134'/> |
После сохранения изменений перезапустить виртуальную сеть:
Command | ||||
---|---|---|---|---|
| ||||
sudo virsh net-destroy default sudo virsh net-start default |
Примеры команд работы с виртуальными машинами
Получить список машин:
Command | ||||
---|---|---|---|---|
| ||||
sudo virsh list --all sudo virsh start <имя виртуальной машины> |
Включить автоматический запуск виртуальной машины при загрузке:
Command | ||||
---|---|---|---|---|
| ||||
echo "#!/bin/bash" | sudo tee /etc/rc.local echo "virsh start <имя виртуальной машины>" | sudo tee -a /etc/rc.local sudo chmod +x /etc/rc.local |
Решение возможных проблем с фильтрацией пакетов при работе с сетью
Создать в каталоге /etc/sysctl.d/ файл с любым именем и расширением .conf. Например:
Command | ||||
---|---|---|---|---|
| ||||
cat << EOF | sudo tee -a /etc/sysctl.d/net_bridge.conf net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 net.ipv4.ip_forward=1 EOF |