Гид по технологиям

Как установить KVM и libvirt на CentOS 6.2 с мостовой сетью

5 min read Виртуализация Обновлено 26 Nov 2025
Установка KVM и libvirt на CentOS 6.2
Установка KVM и libvirt на CentOS 6.2

Быстрое содержание

  • Кому предназначено: системным администраторам и инженерам виртуализации.
  • Результат: работающий KVM/libvirt на CentOS 6.2 с мостовой сетью (br0).
  • Ключевые шаги: проверка CPU, установка пакетов, настройка прав, создание бриджа, настройки iptables и sysctl.

Введение

В этом руководстве описано, как установить гипервизор KVM и библиотеку управления libvirt на CentOS 6.2 и как настроить мостовую сеть, чтобы гостьные ОС были доступны в локальной сети так же, как физические машины. Руководство сохраняет команды и примеры вывода для наглядности.

Что такое KVM и libvirt (в двух строках)

KVM — это полнофункциональный гипервизор на базе ядра Linux, использующий аппаратную виртуализацию (Intel VT/AMD-V).
libvirt — это библиотека и набор инструментов для управления виртуальными машинами через единый API и утилиты (virsh, virt-manager).

Требования

  • Аппаратно: процессор с поддержкой Intel-VT или AMD-V.
  • Память: достаточно для хостовой ОС и нескольких гостей.
  • Сеть: подключение к LAN.
  • Софт: CentOS 6.2 с современным ядром и доступом к зеркалу/репозиторию.

Пример сведений хоста, использованных в этом руководстве:

$ uname -r
2.6.32-220.2.1.el6.x86_64
$ lsb_release -a
LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch  
Distributor ID: CentOS  
Description: CentOS release 6.2 (Final)  
Release: 6.2  
Codename: Final

Проверка поддержки виртуализации (Intel VT / AMD-V)

Войдите под пользователем с sudo-привилегиями (например, bozz) и выполните:

$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo

В выводе должно присутствовать vmx (Intel) или svm (AMD). Пример вывода из хоста:

flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid

Если вывод пуст — CPU не поддерживает аппаратную виртуализацию, или она отключена в BIOS/UEFI.

Шаги установки

1) Установка пакетов

Установите kvm и libvirt:

$ sudo yum install kvm libvirt

Обновите пакеты до доступной версии:

$ sudo yum update libvirt kvm

Проверка версий (пример вывода):

$ yum info libvirt
Installed Packages  
Name        : libvirt  
Arch        : x86_64  
Version     : 0.9.4  
Release     : 23.el6_2.4
$ yum info qemu-kvm
Installed Packages  
Name        : qemu-kvm  
Arch        : x86_64  
Epoch       : 2  
Version     : 0.12.1.2  
Release     : 2.209.el6_2.1

2) Перезапуск демона libvirtd

$ sudo service libvirtd restart

3) Проверка загрузки модулей KVM

Убедитесь, что загружены модули kvm и kvm_intel/kvm_amd:

$ lsmod | grep kvm
kvm_intel              50380  0
kvm                    305113  1 kvm_intel

4) Проверка доступа через virsh (локально)

$ sudo virsh sysinfo

Пример обрезанного вывода:

5) Доступ для небезопасных пользователей (не root)

По умолчанию доступ к гипервизору требует root. Чтобы позволить небезопасным пользователям управлять KVM, выполните следующие шаги.

  • Проверьте, создана ли группа kvm:
$ cat /etc/group | grep kvm
kvm:x:36:qemu
  • Добавьте пользователя bozz в группу kvm и выйдите/войдите снова:
$ sudo usermod -a -G kvm bozz
$ logout
  • Проверьте членство и права устройства /dev/kvm:
$ id
uid=500(bozz) gid=500(bozz) groups=500(bozz),10(wheel),36(kvm) context=...
$ ls -l /dev/kvm
crw-rw-rw-. 1 root kvm 10, 232 Jan 17 14:50 /dev/kvm

На системах с udev добавьте правило, чтобы устройство автоматически получало группу kvm:

$ cat /etc/udev/rules.d/80-kvm.rules
KERNEL=="kvm", GROUP="kvm", MODE="0666"

6) PolicyKit для управления libvirt без root

Создайте группу libvirt, добавьте в неё пользователя и создайте локальное правило PolicyKit:

$ sudo groupadd libvirt
$ sudo usermod -a -G libvirt bozz
$ logout

Затем создайте файл:

$ sudo nano /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla

Содержимое файла:

[libvirt Management Access]
# For allowing access to specific user only:
#Identity=unix-user:bozz
# For allowing access to a group (like this guide):
Identity=unix-group:libvirt
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Перезапустите libvirtd:

$ sudo service libvirtd restart

Проверьте локальный доступ:

$ virsh -c qemu:///system sysinfo

И удалённый доступ через SSH (с клиента):

Для Ubuntu клиента:

$ sudo apt-get install libvirt-bin

Для CentOS клиента:

$ sudo yum install libvirt

Подключение:

$ virsh -c qemu+ssh://bozz@SERVER/system sysinfo

7) Разрешения для каталога образов

Измените владельца и права каталога по умолчанию для образов виртуальных машин:

$ sudo chown root:libvirt /var/lib/libvirt/images
$ sudo chmod g+rw /var/lib/libvirt/images

8) Файлы конфигурации при запуске libvirtd как небезопасный пользователь

Если libvirtd (>= 0.9.3) запускается не от root, он попытается читать ~/.libvirt/libvirtd.conf. Создайте файл, чтобы избежать ошибок:

$ mkdir -p ~/.libvirt
$ touch ~/.libvirt/libvirtd.conf

Проверка:

$ virsh list
 Id Name                 State
----------------------------------

Настройка мостовой сети (br0)

Создайте файл конфигурации для моста:

$ sudo nano /etc/sysconfig/network-scripts/ifcfg-br0

Пример содержимого (подставьте свои IP/шлюз/маску):

DEVICE="br0"
TYPE=Bridge
DELAY=0
ONBOOT="yes"
BOOTPROTO=static
IPADDR=192.168.11.12
NETMASK=255.255.255.0
NETWORK=192.168.11.0
GATEWAY=192.168.11.1
DNS1=192.168.11.2
PEERDNS="yes"
NM_CONTROLLED=no

Отредактируйте конфигурацию физического интерфейса (пример eth0):

$ sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="00:2C:C2:85:29:A3"
ONBOOT="yes"
BRIDGE=br0
NM_CONTROLLED=no

Перезапустите сеть:

$ sudo service network restart

Проверьте состояние бриджа:

$ brctl show

Пример вывода:

bridge name bridge id STP enabled interfaces
br0 8000.002cc28529a3 no eth0
...

Настройка iptables и sysctl для пропуска трафика через бридж

Разрешите пересылку для бриджа:

$ sudo iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
$ sudo service iptables save
$ sudo service iptables restart

Чтобы бридж-движок не проходил трафик через iptables (увеличивает производительность), добавьте в /etc/sysctl.conf:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Примените настройки:

$ sudo sysctl -p /etc/sysctl.conf

Перезапустите libvirtd или перезагрузите его конфигурацию:

$ sudo service libvirtd reload

Критерии приёмки

  • virsh показывает информацию о гипервизоре для пользователя bozz: virsh -c qemu:///system sysinfo возвращает данные.
  • Бридж br0 поднят и содержит физический интерфейс: brctl show показывает br0 с интерфейсом eth0.
  • Гости получают IP из LAN (при статике или DHCP) и доступны с других хостов в сети.

Тесты и случаи проверки

  • Проверить, что гостевая ОС пингуется с другого хоста в сети.
  • Создать и запустить простую VM через virt-manager или virt-install.
  • Убедиться, что iptables не блокируют бриджированный трафик.

Типичные ошибки и способы устранения

  1. Модуль kvm не загружен: проверьте BIOS/UEFI (включите Intel VT/AMD-V), затем lsmod | grep kvm.
  2. /dev/kvm имеет неправильные права: настройте udev правило 80-kvm.rules и перезагрузите udev.
  3. Пользователь не видит qemu:///system: проверьте членство в группах kvm/libvirt и файл PolicyKit.
  4. Бридж не поднимается: проверьте синтаксис ifcfg-br0 и ifcfg-eth0, перезапустите сеть и используйте brctl show.
  5. Трафик проходит через iptables и замедляет бридж: проверьте sysctl параметры bridge-nf-call-* и iptables FORWARD.

Альтернативные подходы

  • NAT-сеть при помощи libvirt (virbr0) — проще для изолированных тестовых сред, но гостьные ОС не видны в LAN напрямую.
  • Использование отдельных VLAN и привязка виртуальных интерфейсов к trunk-портам — полезно в инфраструктурах с VLAN.
  • Использовать Open vSwitch для более сложных сетевых сценариев и политик.

Роли и чек-листы

Для системного администратора:

  • Проверить поддержку VT/AMD-V.
  • Установить и обновить kvm/libvirt/qemu.
  • Настроить PolicyKit и права каталога образов.

Для девопса/сетевого инженера:

  • План IP/маршрутизации для бриджа.
  • Обеспечить правила фаервола и производительность бриджа.

Для пользователя рабочего стола (virt-manager):

  • Установить клиент libvirt/virt-manager.
  • Подключиться к qemu+ssh://user@SERVER/system и управлять VM.

Факты и числа (фактически приведённые примеры)

  • Пример kernel: 2.6.32-220.2.1.el6.x86_64.
  • Пример релиза libvirt: 0.9.4.
  • Пример qemu-kvm: 0.12.1.2.

Безопасность и рекомендации

  • По возможности не предоставляйте доступ qemu:///system посторонним пользователям без контроля.
  • Для удалённого управления используйте SSH с ключами и ограничьте доступ на уровне PolicyKit.
  • Логи libvirt и systemd (если применимо) помогают расследовать сбои.

Краткая методология (mini-methodology)

  1. Проверить аппаратные возможности.
  2. Установить и обновить пакеты.
  3. Настроить группы и PolicyKit.
  4. Создать мост и корректно настроить физический интерфейс.
  5. Обновить правила брандмауэра и sysctl.
  6. Перезапустить службы и тестировать.

Когда этот подход не годится

  • Если вы не хотите, чтобы гостевые машины имели прямой доступ к LAN — используйте NAT-сеть libvirt.
  • В облачных или контейнерных средах, где управление сетью централизовано, лучше применять сетевые плагины или SDN (Open vSwitch).

Краткое резюме

Вы установили KVM и libvirt на CentOS 6.2, настроили доступ для небезопасных пользователей через группы и PolicyKit, создали мост br0 и сконфигурировали iptables/sysctl для корректной работы бриджа. После этого виртуальные машины могут получать адреса и быть доступными в вашей LAN так же, как физические хосты.

Важно: подставляйте собственные IP/MAС и внимательно проверяйте конфигурацию сети перед перезапуском сервисов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро