Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Предупреждение
  • Для корректной работы системы виртуализации в BIOS должна быть включена виртуализация (Intel VT или аналог для используемой процессорной архитектуры);
  • См. также:

    Виртуализация должна поддерживаться использующимися процессорами. Проверить наличие виртуализации можно командами:

    Для процессоров Intel:

    Command

    lscpu | grep vmx --color=always

    Для процессоров AMD:

    Commandgrep svm /proc/cpuinfo


    Информация
    titleДанная статья применима к:
    • 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

    Аппаратная поддержка виртуализации

    Предупреждение
    1. Для корректной работы системы виртуализации на физических машинах в BIOS должна быть включена виртуализация (технология Intel VT или её аналог для используемой процессорной архитектуры);
    2. Виртуализация должна поддерживаться использующимися процессорами. Проверить наличие поддержки виртуализации можно командами:
      1. Для процессоров Intel:

        Command

        lscpu | grep vmx --color=always


      2. Для процессоров AMD:

        Command
        grep svm /proc/cpuinfo



    Установка виртуализации QEMU/KVM

    Предупреждение
    При использовании виртуализации QEMU/KVM в Astra Linux Special Edition с включенным МКЦ и МРД для обеспечения работы с виртуальными машинами, поддерживающими ненулевые метки безопасности, все пулы данных должны находиться на файловых системах, поддерживающих работу с мандатными атрибутами (Ext4, cepfs, ocfs2, hfs).


    Предупреждение

    При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически будет установлена и настроена система управления сетевым трафиком firewalld.

    Если в системе используется система управления сетевым трафиком ufw, то перед установкой виртуализации следует сохранить настройки и удалить ufw:

    Блок кода
    sudo apt remove ufw
    sudo systemctl stop ufw

    Установка firewalld приведет к ограничению работы сетевых служб. См. раздел Настройка межсетевого экрана после установки KVM.


    Установка виртуализации QEMU/KVM при установке операционной системы

    См.:

    Установка виртуализации QEMU/KVM после установки

    операционной системы

    ОС

    Astra Linux Special Edition

    РУСБ.10015-01 (очередное обновление

    x.7

    )

    и Astra Linux Common Edition 2.12

    Предупреждение
    В Astra Linux Special Edition для работы с виртуализацией от имени непривилегированного пользователя этот пользователь должен быть включен в группу libvirt-admin (не путать с группой astra-admin). Инструкцию по включению пользователя в группу см. далее.

    Для автоматизированной установки системы виртуализации QEMU/KVM в дистрибутивы Astra Linux включен пакет astra-kvm. Пакет может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:

    Command
    sudo apt install astra-kvm

    При установке этого пакета будет автоматически установлен сам Virtграфический инструмент управления виртуальными машинами virt-manager  и выполнены все действия, необходимые для установки и запуска системы виртуализации.

    При установке пакетов текущий пользователь будет автоматически добавлен в группы:

    • kvm;
    • libvirt;
    • libvirt-qemu.;

    Только Кроме указанных групп в Astra Linux Special Edition если предполагается, что текущий пользователь будет работать с системой виртуализации без использования sudo, то добавить его используются группы:


    Если предполагается работа с гостевой файловой системой libguestfs с использованием sudo, то требуется включить в указанные выше группы пользователя root:
    Command
    sudo usermod -a -G kvm,libvirt,libvirt-qemu,libvirt-admin root


    Раскрыть
    titleСпециальные группы пользователей. Нажмите, чтобы раскрыть...

    Назначение ролей специальным группам пользователей определяются в конфигурационном файле /etc/libvirt/libvirtd.conf. Не рекомендуется изменять заданные по умолчанию значения:

    Блок кода
    admin_group = "libvirt-admin"
    devel_group = "libvirt-dev"
    admvm_group = "libvirt-admvm

    Права, предоставляемые ролям, определяются в файлах /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, предоставленные разработчиками системы виртуализации:

    1. файл org.libvirt.unix.policy — описывает два глобальных разрешения по доступу к виртуальной инфраструктуре:
      • org.libvirt.unix.monitor — позволяет выполнять мониторинг виртуальной инфраструктуры;
      • org.libvirt.unix.manage — позволяет выполнять управление виртуальной инфраструктурой;
    2. файл 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 и обеспечивающий разграничение возможностей выполнения привилегированных операций со средствами виртуализации. Реализация ролевого метода управления доступом обеспечивает следующее разграничение доступа по ролям:

    • разработчик виртуальной машины;
    • администратор безопасности средства виртуализации;
    • администратор средства виртуализации;
    • администратор виртуальной машины.

    Назначение ролей и полномочий осуществляется администратором средства виртуализации.

    Для реализации ролевого контроля:

    1. Установить пакет astra-kvm-secure:

      Command
      sudo apt install astra-kvm-secure

      При установке пакета создаются служебные группы libvirt-adm, libvirt-dev и правила, реализующие разрешения для этих групп:

      1. Правило /var/lib/polkit-1/localauthority/10-vendor.d/60-libvirt.pkla, позволяющее пользователям групп libvirt-dev, libvirt-adm и libvirt осуществлять доступ к операциям по управлению виртуальной инфраструктурой;
      2. Правила /var/lib/polkit-1/localauthority/15-libvirtd.d/.org.libvirt.api.*.pkla, определяющие конкретные разрешения для ролей.


    2. После установки пакета для включения ролевого контроля:

      1. В конфигурационном файле системы виртуализации /etc/libvirt/libvirtd.conf параметру access_drivers присвоить значение [ "polkit", "parsec" ]:

        Блок кода
        access_drivers = ["polkit", "parsec" ]


      2. Перезапустить службу libvirtd, выполнив команды:

        Command
        sudo systemctl restart libvirtd firewalld


    Для редактирования правил возможно использование графического инструмента fly-polkit-viewer.

    Для настройки ролей:

    1. Пользователей, реализующих роль разработчика виртуальных машин, включить в группу libvirt-dev и libvirt-admin.
    2. Пользователей, реализующих роль администратора безопасности:
      1. Включить в группу libvirt-sec.
      2. Исключить из групп libvirt, libvirt-qemu, kvm.
    3. Пользователей, реализующих роль администратора средства виртуализации:
      1. Включить в группы libvirt-adm, libvirt-admin и astra-admin.
      2. назначить возможность работы под высоким уровнем целостности (63).
    4. Пользователей, реализующих роль администратора виртуальной машины включить в группу libvirt.

    Для того, чтобы пользователи — участники группы могли выполнять команды без применения sudo создать в каталоге /etc/sudoers.d файл с разрешениями для групп, например:

    Блок кода
    %libvirt-sec ALL=(ALL:ALL) ALL
    %libvirt-adm ALL=(ALL:ALL) ALL

    Имя файла может быть произвольным.

    Дополнительно, для разрешения доступа пользователей группы libvirt к виртуальным машинам, в графической консоли ВМ перейти в свойства ВМ и в разделе «Безопасность» задать права доступа к виртуальной машине для пользователей:
    Image Added

    Установка виртуализации в 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
    Titlesudo pdp-ls -lMd /var/lib/libvirt/images

    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.

    Команда для добавления пользователя в группы:

    Command
    sudo usermod -a -G kvm,libvirt,libvirt-admin,libvirt-qemu <имя_пользователя>
    Для того, чтобы добавление пользователей в группы вступило в силу, нужно перезапустить пользовательскую сессию.

    Якорь
    #firewalld
    #firewalld
    Настройка межсетевого экрана после установки KVM

    При установке виртуализации QEMU/KVM в Astra Linux Special Edition автоматически выполняется настройка правил маршрутизации для работы с виртуальными машинами. Для этого используется пакет firewalld. При его установке будет включен межсетевой экран, побочным эффектом чего является ограничение работы сетевых служб. Проверить разрешенные межсетевым экраном службы и порты можно командой:

    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
    man firewall-cmd

    Работа с QEMU/KVM

    Создание виртуальных машин

    Информация
    При работе рекомендуется контролировать содержимое /var/lib/libvirt/images и своевременно удалять неиспользуемые диски.
    Создание виртуальных машин

    Для создания виртуальных машин в Astra Linux Special Edition x.7 и Astra Linux Common Edition Орел 2Edition 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
    sudo chmod 750 /vrt/pool1
    sudo chown <имя_пользователя> /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
    virsh -c qemu:///system start vm1

    Образец диалога:

    Раскрыть

    $ virsh -c qemu:///system define vm1.xml
    Domain vm1 defined from vm1.xml

    $ virsh -c qemu:///system start vm1
    Domain vm1 started

    Проверить статус ВМ:

    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
    borderColor#c2e6ff
    bgColor#e2f3ff
    sudo virsh net-start default
    sudo virsh net-autostart default

    После выполнения этих команд после перезагрузки сеть network 'default' будет запускаться автоматически.

    Настройка фиксированных IP-адресов

    Для привязки фиксированных IP-адресов к виртуальным машинам выполнить команду:

    Command
    borderColor#c2e6ff
    bgColor#e2f3ff
    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
    borderColor#c2e6ff
    bgColor#e2f3ff
    sudo virsh net-destroy default
    sudo virsh net-start default

    Настройка "мягкого" выключения виртуальных машин в QEMU/KVM 

    Информация
    "Мягкое" выключение (Shutdown) — отсылка гипервизором сообщения стандарта ACPI для выключения виртуальной машине. Может не работать при критических состояниях ОС.

    Для включения "мягкого" выключения на виртуальных машинах под управлением Astra Linux:

    1. На хост-машине в настройках виртуальной машины добавить устройство — канал org.qemu.guest_agent.0, если это устройство не было добавлено ранее. Это можно сделать используя графический редактор менеджера виртуальных машин или используя редактор описания машин:
      Command
      virsh edit <имя_виртуальной_машины>
      Добавляемая настройка:
      Блок кода
      <channel type='unix'>
      <source mode='bind'/> <target type='virtio' name='org.qemu.guest_agent.0'/>
      </channel>
    2. В самой виртуальной машине:
      1. Установить пакет qemu-guest-agent:
        Command
        sudo apt-get install qemu-guest-agent
      2. Запустить службу qemu-guest-agent, если она не была запущена автоматически при установке пакета:
        Command
        sudo systemctl start qemu-guest-agent

    Примеры команд работы с виртуальными машинами

    Получить список машин:

    Command
    borderColor#c2e6ff
    bgColor#e2f3ff
    sudo virsh list --all
    sudo virsh start <имя виртуальной машины>

    Включить автоматический запуск виртуальной машины при загрузке:

    Command
    borderColor#c2e6ff
    bgColor#e2f3ff
    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
    borderColor#c2e6ff
    bgColor#e2f3ff
    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