См. также:
- Перенос ВМ из 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
Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1
- Astra Linux Common Edition 2.12
Аппаратная поддержка виртуализации
- Для корректной работы системы виртуализации на физических машинах в BIOS должна быть включена виртуализация (технология Intel VT или её аналог для используемой процессорной архитектуры);
- Виртуализация должна поддерживаться использующимися процессорами. Проверить наличие поддержки виртуализации можно командами:
Для процессоров Intel:
lscpu | grep vmx --color=alwaysДля процессоров AMD:
grep svm /proc/cpuinfo
Установка виртуализации QEMU/KVM
При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически будет установлена и настроена система управления сетевым трафиком firewalld.
Если в системе используется система управления сетевым трафиком ufw, то перед установкой виртуализации следует сохранить настройки и удалить ufw:
sudo apt remove ufw sudo systemctl stop 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 включен пакет astra-kvm. Пакет может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:
При установке пакетов текущий пользователь будет автоматически добавлен в группы:
- 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:
sudo usermod -a -G libvirt-admin $USER- Специальные группы (доступны начиная с обновления БЮЛЛЕТЕНЬ № 2023-0426SE17 (оперативное обновление 1.7.4):
- libvirt-dev;
- libvirt-admvm.
Если предполагается работа с гостевой файловой системой libguestfs с использованием sudo, то требуется включить в указанные выше группы пользователя root:
Других пользователей, которые должны работать с виртуализацией, следует добавить в указанные группы вручную (кроме группы libvirt-admin в Astra Linux Common Edition):
Права доступа к управлению виртуализацией
При установке системы виртуализации в каталоге /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 пройдена.
Ролевой контроль прав доступа к управлению виртуализацией
Начиная с обновления БЮЛЛЕТЕНЬ № 2022-1221SE17MD (срочное оперативное обновление 1.7.3.UU.1) в Astra Linux реализован механизм ролевого управления доступом, базирующийся на применении драйвера доступа Polkit и обеспечивающий разграничение возможностей выполнения привилегированных операций со средствами виртуализации. Реализация ролевого метода управления доступом обеспечивает следующее разграничение доступа по ролям:
- разработчик виртуальной машины;
- администратор безопасности средства виртуализации;
- администратор средства виртуализации;
- администратор виртуальной машины.
Назначение ролей и полномочий осуществляется администратором средства виртуализации.
Для реализации ролевого контроля:
Установить пакет astra-kvm-secure:
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, выполнив команды:
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.
Команда для установки:
drwx--x--xm-- 2 root root Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr /var/lib/libvirt/images
Всех пользователей, которые должны работать с виртуализацией (включая текущего пользователя-администратора) следует добавить в группы:
- kvm;
- libvirt;
- libvirt-admin (Внимание! этой группы нет в Astra Linux Common Edition);
- libvirt-qemu.
Команда для добавления пользователя в группы:
Настройка межсетевого экрана после установки KVM
При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически выполняется настройка правил маршрутизации для работы с виртуальными машинами. Для этого используется пакет firewalld. При его установке будет включен межсетевой экран, побочным эффектом чего является ограничение работы сетевых служб. Проверить разрешенные межсетевым экраном службы и порты можно командой:
Разрешить доступ к известной службе можно командой:
Например, для службы RDP:
После внесения изменений перезагрузить конфигурацию межсетевого экрана:
man firewall-cmd
Работа с QEMU/KVM
Создание виртуальных машин
Для создания виртуальных машин в 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 образы дисков виртуальных машин (в том числе загрузочные образы для установки ОС на виртуальных машинах) регистрируются в системе виртуализации как файловые объекты с высоким уровнем конфиденциальности. При этом все вышележащие каталоги в файловой системе также автоматически получают высокий уровень конфиденциальности. В связи с этим не рекомендуется размещать образы дисков в домашних каталогах пользователей, так как присвоение высокого уровня конфиденциальности домашнему каталогу существенно затруднит работу пользователя - владельца этого каталога.
Для создания собственного пула пользователя следует создать каталог, доступный этому пользователю, например:
sudo chmod 750 /vrt/pool1
sudo chown <имя_пользователя> /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
При работе в Astra Linux Special Edition при создании пула необходимые мандатные атрибуты будут присвоены ему автоматически (при условии, что на ОС установлено обновление безопасности БЮЛЛЕТЕНЬ № 20190222SE16 (оперативное обновление 2)). Проверить мандатные атрибуты пула можно командой:
Создать и запустить виртуальную машину с образом диска, расположенным в ранее созданном пуле командой:
virsh -c qemu:///system start vm1
Проверить статус ВМ:
Образец диалога:
Проверить параметры подключения к ВМ
Подключиться к виртуальному монитору ВМ
Для сброса старых пользовательских настроек virt-manager удалить файл .config/dconf/user
Устранение ошибок
При появлении ошибки custom процессора нужно поставить в настройках пункт "использовать архитектуру процессора хоста".
При ошибке network 'default' not active выполнить следующие команды:
sudo virsh net-start default
sudo virsh net-autostart default
Настройка фиксированных IP-адресов
Для привязки фиксированных IP-адресов к виртуальным машинам выполнить команду:
<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'/>
После сохранения изменений перезапустить виртуальную сеть:
sudo virsh net-destroy default
sudo virsh net-start default
Настройка "мягкого" выключения виртуальных машин в QEMU/KVM
Для включения "мягкого" выключения на виртуальных машинах под управлением Astra Linux:
- На хост-машине в настройках виртуальной машины добавить устройство — канал org.qemu.guest_agent.0, если это устройство не было добавлено ранее. Это можно сделать используя графический редактор менеджера виртуальных машин или используя редактор описания машин:virsh edit <имя_виртуальной_машины>Добавляемая настройка:
<channel type='unix'> <source mode='bind'/> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel>
- В самой виртуальной машине:
- Установить пакет qemu-guest-agent:sudo apt-get install qemu-guest-agent
- Запустить службу qemu-guest-agent, если она не была запущена автоматически при установке пакета:sudo systemctl start qemu-guest-agent
- Установить пакет qemu-guest-agent:
Примеры команд работы с виртуальными машинами
Получить список машин:
sudo virsh list --all
sudo virsh start <имя виртуальной машины>
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. Например:
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