Гайд по развёртыванию и настройке стека виртуализации QEMU + KVM + libvirt в Astra Linux

Технический Гайд по развёртыванию и настройке стека виртуализации QEMU + KVM + libvirt в Astra Linu: установка, сеть, ВМ, безопасность

2026.04.02                  


Гайд по развёртыванию и настройке стека виртуализации QEMU + KVM + libvirt в Astra LinuxГайд по развёртыванию и настройке стека виртуализации QEMU + KVM + libvirt в Astra Linux Подробный технический гайд по развёртыванию и настройке стека виртуализации QEMU + KVM + libvirt в Astra Linux. Материал изложен в строгом формате без декоративных элементов, с учётом особенностей редакций Common Edition (CE) и Special Edition (SE).

Шаг 0. Предварительные проверки

1. Проверка поддержки аппаратной виртуализации:

egrep -c '(vmx|svm)' /proc/cpuinfo

Значение больше 0 указывает на поддержку. Если результат 0 — необходимо включить Intel VT-x или AMD-V в настройках BIOS/UEFI.

2. Установка утилит проверки:

sudo apt update
sudo apt install cpu-checker
kvm-ok

Ожидаемый результат: сообщение "INFO: /dev/kvm exists" и "KVM acceleration can be used".

Шаг 1. Установка пакетов

Astra Linux базируется на Debian, поэтому используется штатный менеджер пакетов:

sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients \
                 bridge-utils virt-manager virtinst cpu-checker \
                 dnsmasq-base ovmf swtpm

Назначение ключевых пакетов:

  • ovmf — поддержка UEFI-загрузки гостевых систем
  • swtpm — эмуляция TPM 2.0 (требуется для Windows 11 и современных дистрибутивов)
  • virt-manager — графический интерфейс управления (опционально)

Шаг 2. Активация служб и проверка модулей ядра

Запуск и включение автозагрузки libvirtd:

sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd

Проверка загрузки модулей ядра:

lsmod | grep kvm

Должны отображаться модули: kvm, kvm_intel (для процессоров Intel) или kvm_amd (для AMD).

При отсутствии модулей загрузите их вручную:

sudo modprobe kvm
sudo modprobe kvm_intel  # или kvm_amd

Шаг 3. Настройка прав доступа

Добавление текущего пользователя в группы libvirt и kvm:

sudo usermod -aG libvirt,kvm $USER

Важно: изменения вступят в силу только после полного выхода из сессии и повторного входа в систему. Альтернативно можно использовать команду newgrp libvirt без перезахода.

Проверка прав:

virsh list --all

Команда должна вернуть пустой список виртуальных машин без ошибок доступа.

Шаг 4. Настройка сети

Вариант А: NAT (по умолчанию, рекомендуется для рабочих станций)

Libvirt автоматически создаёт виртуальную сеть default. Проверка и активация:

virsh net-list --all
virsh net-start default
virsh net-autostart default

Гостевые ВМ получат адреса из диапазона 192.168.122.0/24. Доступ из внешней сети ограничен механизмом NAT.

Вариант Б: Bridge (рекомендуется для серверов и прямого доступа)

Настройка моста через NetworkManager (предпочтительнее ручного редактирования конфигурационных файлов):

1. Определение имени физического интерфейса:

nmcli device status

2. Создание bridge-интерфейса:

sudo nmcli connection add type bridge con-name br0 ifname br0

3. Добавление физического интерфейса в мост:

sudo nmcli connection add type bridge-slave con-name br0-slave \
    ifname <имя_физического_интерфейса> master br0

4. Настройка IP-адресации:

# DHCP
sudo nmcli connection modify br0 ipv4.method auto

# Статический адрес (пример)
sudo nmcli connection modify br0 ipv4.addresses 192.168.1.100/24 \
   ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 ipv4.method manual

5. Активация моста:

sudo nmcli connection up br0

6. Регистрация моста в libvirt:

virsh net-define /dev/stdin <<EOF
<network>
  <name>br0-net</name>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>
EOF
virsh net-start br0-net
virsh net-autostart br0-net

Шаг 5. Создание виртуальной машины

Через графический интерфейс (virt-manager)

  1. Запуск: virt-manager
  2. Файл -> Создать ВМ -> Локальный установочный носитель (указать путь к ISO)
  3. Выделение ресурсов (CPU, RAM), выбор сетевого интерфейса
  4. Для современных ОС рекомендуется опция "Customize configuration before install" с выбором Firmware: UEFI x86_64

Через командную строку (virt-install)

Пример создания ВМ с Ubuntu 22.04:

virt-install \
  --name ubuntu-test \
  --vcpus 2 \
  --memory 4096 \
  --os-variant ubuntu22.04 \
  --cdrom /path/to/ubuntu-22.04-live-server-amd64.iso \
  --network network=default \
  --disk path=/var/lib/libvirt/images/ubuntu-test.qcow2,size=30,format=qcow2 \
  --graphics vnc,listen=0.0.0.0,port=5900 \
  --noautoconsole

Основные команды управления:

virsh start ubuntu-test                    # запуск
virsh console ubuntu-test                  # подключение к консоли (требует настройки serial в гостевой ОС)
virsh shutdown ubuntu-test                 # корректное завершение работы
virsh destroy ubuntu-test                  # принудительное выключение
virsh undefine ubuntu-test --remove-all-storage  # удаление ВМ и дисков

Шаг 6. Особенности Astra Linux Special Edition (SE)

В редакции SE активен мандатный контроль доступа (Parsec/PDP), который может ограничивать создание сетевых мостов, доступ к /dev/kvm или запуск служб виртуализации.

Рекомендации по настройке:

1. Уровни целостности и конфиденциальности:

pdp-user -m user   # перевод пользователя в немаркированный режим (для тестирования)
chpdpl -l low      # понижение уровня доступа (требует соответствующих полномочий)

2. Разрешение модулей ядра:

  • В SE может действовать контроль загрузки модулей. Убедитесь, что модули kvm, kvm_intel/amd, vhost_net разрешены в активной политике безопасности.

3. Использование сертифицированных компонентов:

  • Для промышленных внедрений используйте только пакеты из официальных репозиториев astra-se и руководствуйтесь документацией "Виртуализация в Astra Linux SE", доступной через личный кабинет технической поддержки.

4. Временное отключение мандатного контроля (только для изолированных тестовых сред):

sudo fly-admin-mac-level --disable

После завершения настройки рекомендуется восстановить исходный режим защиты.

Шаг 7. Диагностика и устранение типовых проблем

Проблема Решение
Permission denied при доступе к /dev/kvm Добавить пользователя в группу kvm: sudo usermod -aG kvm $USER, выполнить перелогин
network 'default' not found Активировать сеть: virsh net-start default && virsh net-autostart default
ВМ не запускается, ошибка "KVM disabled by BIOS" Включить виртуализацию в BIOS/UEFI, проверить результат через kvm-ok
Ошибка "Could not open '/dev/vhost-net'" Загрузить модуль: sudo modprobe vhost_net, проверить членство в группе kvm
libvirtd не запускается в SE Изучить логи: journalctl -u libvirtd -e, сверить настройки с политиками PDP
VNC недоступен извне По умолчанию VNC слушает 127.0.0.1. Используйте параметр listen=0.0.0.0 и настройте правила файрвола или SSH-туннель

Полезные команды для диагностики:

virsh dominfo <имя_вм>
virsh edit <имя_вм>                    # редактирование XML-конфигурации
virsh snapshot-create-as <имя_вм> snap1
journalctl -u libvirtd -f
dmesg | grep -iE 'kvm|libvirt'

Рекомендации по безопасности и эксплуатации

  1. Не публикуйте интерфейсы VNC/SPICE в открытый доступ без шифрования. Используйте virt-viewer или SSH-туннели для безопасного подключения.
  2. Регулярно обновляйте систему: sudo apt update && sudo apt upgrade
  3. Для производственных сред используйте формат дисков qcow2 с поддержкой снапшотов. При необходимости применяйте шифрование: qemu-img convert -f qcow2 -O qcow2 --encrypt ...
  4. В Astra Linux SE все изменения, связанные с виртуализацией, должны согласовываться с ответственными за информационную безопасность.