Файл /etc/libvirt/libvirtd.conf#
libvirtd.conf - это конфигурационный файл демона libvirtd (подробнее см. в «Утилита libvirtd») по умолчанию, если он не переопределен. Содержит настройки и значения по умолчанию для виртуальных машин и методы переопределения их стандартных параметров. Строки, начинающиеся с #, являются комментариями и игнорируются.
Примеры записей#
Управление сетевым подключением#
Настройка прослушивания защищенных TLS-соединений на общедоступном TCP/IP-порте:
для включения прослушивания сокетов с помощью демона
libvirtdпримените опцию--listenв командной строке демона;это не требуется при использовании
virtproxyd(компонент серверного демона системы управления виртуализациейlibvirt);этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;перед использованием этой возможности настройте центр сертификации и выдайте сертификаты сервера;
включено по умолчанию, запись для отключения:
listen_tls = 0
Прослушивание незашифрованных TCP-соединений на общедоступном TCP/IP-порте:
для включения прослушивания сокетов с помощью демона
libvirtdпримените опцию--listenв командной строке демона;это не требуется при использовании
virtproxyd;этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;для использования сокета TCP по умолчанию требуется аутентификация SASL; разрешены только механизмы SASL, поддерживающие шифрование данных; это DIGEST_MD5 и GSSAPI (Kerberos5);
по умолчанию эта функция отключена, запись для включения:
listen_tcp = 1
Переопределение порта для приема защищенных соединений по протоколу TLS:
это может быть номер порта или название службы;
этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;пример записи:
tls_port = "16514"
Переопределение порта для приема небезопасных TCP-соединений:
это может быть номер порта или название службы;
этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;пример записи:
tcp_port = "16509"
Переопределение конфигурации по умолчанию, привязанной ко всем сетевым интерфейсам:
это может быть числовой адрес IPv4/6 или имя хоста;
этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;если
libvirtdзапускается параллельно с запуском сети, то привязка к адресам, отличным от подстановочных знаков (0.0.0.0/::), может быть еще недоступна;пример записи:
listen_addr = "hh.hh.hh.hh"Где
hh.hh.hh.hh– IP-адрес.
Средства управления доступом к сокетам UNIX#
Настройка групп-владельцев доменных сокетов UNIX - может быть использовано для предоставления доверенному набору пользователей доступа к возможностям управления без получения статуса
root:этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;по умолчанию параметр ограничен значением
root;пример записи:
unix_sock_group = "libvirt"
Установка разрешений сокета UNIX для сокета «read-only» - используется для мониторинга состояния виртуальной машины:
этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;по умолчанию разрешен для любого пользователя; если настраиваются группы-владельцы, то может быть ограничен;
пример записи:
unix_sock_ro_perms = "0777"
Установка разрешений сокета UNIX для сокета «read-write» - используется для полного управления виртуальными машинами:
этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;по умолчанию разрешен только
root; если в сокете включенPolicyKit(средство, позволяющее непривилегированным пользователям выполнять операции, доступные администратору), то значение по умолчанию изменится на «разрешить всем» (например,0777);если
PolicyKitне используется и группы-владельцы не установлены для контроля доступа, возможно ослабление этого ограничения;пример записи:
unix_sock_rw_perms = "0770"
Установка разрешений сокета UNIX для сокета интерфейса администратора:
этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;по умолчанию он разрешен только владельцу (
root), не меняйте его, если не уверены в том, кому предоставляете доступ;пример записи:
unix_sock_admin_perms = "0700"
Указание директории для поиска/создания сокетов:
этот параметр не требуется и не соблюдается при использовании активации сокета
systemd;пример записи:
unix_sock_dir = "/run/libvirt"
Аутентификация#
Доступны следующие варианты:
none- не выполнять проверку подлинности - может использоваться, если существуют ограничения на подключение к сокету (например, разрешения на использование сокета UNIX) или если в сети есть более низкий уровень аутентификации (например, сертификаты TLS/x509);sasl- использовать инфраструктуру SASL; в этом случае актуальная схема аутентификации регулируется в файле/etc/sasl2/libvirt.conf; для сокета TCP будут использоваться только механизмы GSSAPI и DIGEST-MD5; для сокетов, отличных от TCP или TLS, разрешена любая схема;polkit- использоватьPolicyKitдля аутентификации; подходит только для использования в сокетах UNIX; по умолчанию доступ разрешен только для чтения («read-only»), для получения полного доступа на чтение и запись («read-write») необходимо введение пароля.Установка схемы аутентификации для сокетов UNIX «read-only»:
по умолчанию разрешения сокетов позволяют подключаться любому пользователю;
если
libvirtбыл скомпилирован без поддержкиpolkit, то проверки контроля доступа не выполняются, ноlibvirtпо-прежнему разрешает выполнение только API, не изменяющих состояние;если
libvirtбыл скомпилирован с поддержкойpolkit, то сокетlibvirtвыполнит проверку с помощьюpolkitпосле подключения; по умолчанию по-прежнему разрешен доступ любому локальному пользователю;для ограничения мониторинга доменов можете либо включить
sasl, либо изменить определение политикиpolkit;пример записи:
auth_unix_ro = "polkit"
Установка схемы аутентификации для сокетов UNIX «read-write»:
если
libvirtбыл скомпилирован без поддержкиpolkit, то файлы сокетаsystemdпо умолчанию будут использоватьSocketMode=0600, что позволит подключаться только пользователюroot, аauth_unix_rwпо умолчанию будет иметь значениеnone;если
libvirtбыл скомпилирован с поддержкойpolkit, то файлы сокетаsystemdбудут использоватьSocketMode=0666, что позволяет любому пользователю подключаться, аauth_unix_rwпо умолчанию будет иметь значениеpolkit; если использованиеpolkitздесь отключено, то необходимо изменить параметрsystemdSocket Modeобратно на0600, чтобы избежать небезопасной конфигурации;пример записи:
auth_unix_rw = "polkit"
Изменение схемы аутентификации для сокетов TCP:
если SASL не включен, то весь трафик TCP будет отображаться в виде открытого текста;
не используйте данный параметр вне сценария разработки/тестирования; для использования в реальных условиях всегда включайте SASL и используйте механизм GSSAPI или DIGEST-MD5 в
/etc/sasl2/libvirt.conf;пример записи:
auth_tcp = "sasl"
Изменение схемы аутентификации для сокетов TLS:
сокеты TLS уже имеют шифрование, обеспечиваемое уровнем TLS, а ограниченная аутентификация выполняется с помощью сертификатов;
также можно использовать любой механизм аутентификации SASL, используя для этого параметр
sasl;пример записи:
auth_tls = "none"
Установка минимального значения SSF для TCP-сокетов:
на данный момент минимальное значение по умолчанию равно
56(single-DES), в будущем будет увеличено до112;данный параметр можно использовать для установки значений выше
112;пример записи:
tcp_min_ssf = 112
Изменение схемы управления доступом к API:
по умолчанию аутентифицированному пользователю разрешен доступ ко всем API; при помощи драйверов доступа можно устанавливать ограничения; по умолчанию драйвер
nopвключен, что означает, что после аутентификации клиента с помощьюlibvirtdпроверки контроля доступа не выполняются;пример записи:
access_drivers = [ "polkit" ]
Конфигурация сертификата TLS x509#
Для использования TLS требуется выдача сертификатов x509. Расположение файлов сертификатов по умолчанию:
/etc/pki/CA/cacert.pem- мастер сертификат CA (центра сертификации);/etc/pki/libvirt/servercert.pem- сертификат сервера, подписанныйcacert.pem;/etc/pki/libvirt/private/serverkey.pem- закрытый ключ сервера.
Для переопределения местоположения по умолчанию задайте соответствующие значения key_file, cert_file и ca_file.
Пример переопределения пути к файлу ключа сервера по умолчанию:
key_file = "/etc/pki/libvirt/private/serverkey.pem"Пример переопределения пути к файлу сертификата сервера по умолчанию:
cert_file = "/etc/pki/libvirt/servercert.pem"Пример переопределения пути к сертификату CA по умолчанию:
ca_file = "/etc/pki/CA/cacert.pem"Пример указания списка отзываемых сертификатов - по умолчанию CURL не используется:
crl_file = "/etc/pki/CA/crl.pem"
Управление авторизацией#
Настройка отключения проверки сертификатов собственного сервера:
при запуске
libvirtdвыполняет проверки работоспособности собственных сертификатов;по умолчанию всегда выполняется проверка работоспособности;
пример записи, отключающей проверку работоспособности (не рекомендуется к использованию):
tls_no_sanity_certificate = 1
Настройка отключения проверки клиентских сертификатов:
проверка клиентских сертификатов является основным механизмом аутентификации;
клиент, не предоставивший сертификат, подписанный CA, будет отклонен;
по умолчанию проверка выполняется всегда;
пример записи, отключающей проверку:
tls_no_verify_certificate = 1
Список разрешенных для управления доступом отличительных имен (DN) x509:
может содержать подстановочные знаки;
формат DN для конкретного сертификата можно запросить с помощью:
virt-pki-query-dn clientcert.pemесли список пуст, то ни один клиент не сможет подключиться - не используйте пустой список для отключения проверок;
по умолчанию DN не проверяются;
пример записи:
tls_allowed_dn_list = ["DN1", "DN2"]
Переопределение строки приоритета TLS по умолчанию во время компиляции:
значение по умолчанию
NORMAL, если не переопределено во время сборки;данный параметр устанавливается только в случае, если требуется, чтобы
libvirtотклонялся от глобальных настроек по умолчанию;пример записи:
tls_priority="NORMAL"
Список разрешенных пользователей SASL для контроля доступа:
формат имени пользователя зависит от механизма аутентификации SASL; имя пользователя в Kerberos выглядит как
username@REALM;список может содержать подстановочные знаки, такие как
*@EXAMPLE.COM;если список пуст, то ни один клиент не сможет подключиться - не используйте пустой список для отключения проверок;
по умолчанию имена пользователей не проверяются;
пример записи:
sasl_allowed_username_list = ["name1@EXAMPLE.COM", "name2@EXAMPLE.COM" ]
Управление обработкой данных#
Максимальное количество одновременных клиентских подключений, разрешенное для всех сокетов вместе взятых; пример записи:
max_clients = 5000Максимальная длина очереди подключений, ожидающих приема демоном; некоторые протоколы, поддерживающие повторную передачу, могут выполнять это требование, чтобы последующая попытка подключения была успешной; пример записи:
max_queued_clients = 1000Максимальная длина очереди из принятых, но не прошедших проверку подлинности клиентов; значение по умолчанию -
20; для отключения данной функции установите значение0; пример записи:max_anonymous_clients = 20Минимальный лимит устанавливает количество воркеров (рабочих модулей), которые должны быть запущены изначально:
если количество активных клиентов превышает данное значение, то запускается больше потоков, вплоть до лимита
max_workers;обычно значение
max_workersравно максимально допустимому количеству клиентов;пример записей:
min_workers = 5 max_workers = 20
Количество приоритетных воркеров; если все воркеры из вышеприведенного пула «stuck», некоторые вызовы, помеченные как высокоприоритетные (в частности,
domainDestroy), могут быть выполнены в этом пуле; пример записи:prio_workers = 5Лимит одновременных запросов от одного клиентского соединения:
чтобы избежать монополизации сервера одним клиентом, данный параметр должен составлять небольшую часть параметра
max_workers;слишком низкое значение может привести к тайм-аутам в режиме ожидания;
пример записи:
max_client_requests = 5
Параметры, аналогичные вышеуказанным, для интерфейса администратора; пример записей:
admin_min_workers = 1 admin_max_workers = 5 admin_max_clients = 5 admin_max_queued_clients = 5 admin_max_client_requests = 5
Управление ведением журнала#
Уровни ведения журнала:
4- ошибки;3- предупреждения;2- информация;1- отладка (регистрируется все допустимые события).
Пример записи:
log_level = 3Внимание
Использование данного параметра не рекомендуется, поскольку он выводит слишком много информации, которую практически невозможно прочитать. Используйте параметр
log_filters.Фильтры ведения журнала:
фильтр позволяет выбрать другой уровень ведения для выбранной категории журналов; формат фильтра:
level:matchГде:
match- строка, соответствующая категории, указанной в VIR_LOG_INIT() в верхней части каждого исходного файлаlibvirt, например,remote,qemuилиutil.json;level- минимальный уровень, на котором должны регистрироваться совпадающие сообщения
один фильтр может включать несколько фильтров, разделенных пробелами;
libvirtвыполняет «первое» сопоставление, т.е. при наличии параллельных фильтров будет применен первый из них по порядку;обычно требуется получить информацию из драйвера гипервизора, точек входа в общедоступный API и некоторого служебного кода; Некоторые служебные коды являются нежелательными; пример записи для гипервизора QEMU - в строке фильтра для отладки может быть отключение объектов, json и ведения журнала событий, но включение остального кода
util:log_filters="1:qemu 1:libvirt 4:object 4:json 4:event 1:util"
Выходные данные ведения журнала это одно из мест для сохранения информации журнала:
формат:
level:stderr- выходные данные преобразуются вstderr;level:syslog:name- системный журнал используется для вывода, в качестве идентификатора - заданное имя;level:file:file_path- вывод в файл с заданным путем;level:journald- вывод в систему ведения журнала.
во всех случаях
levelимеет минимальный приоритет и действует как фильтр;могут быть заданы несколько выходных данных, разделенных пробелами;
пример записи всех предупреждений и ошибок в системный журнал под идентификатором
libvirtd:log_outputs="3:syslog:libvirtd"
Аудит#
Данный параметр позволяет изменить использование подсистемы аудита, значения:
0- отключить весь аудит;1- включить аудит, если он включен на хосте (по умолчанию);2- включить аудит и выйти, если он отключен на хосте.
Пример записи:
audit_level = 2Если данный параметр равен
1, то сообщения аудита также будут отправляться через инфраструктуру ведения журналаlibvirt; по умолчанию0; пример записи:audit_logging = 1
UUID хоста#
UUID хоста считывается из одного из источников, указанных в параметре
host_uuid_source.Источники:
smbios- извлечение UUID изdmidecode -s system-uuid;machine-id- извлечение UUID из/etc/machine-id.
Значение
host_uuid_sourceпо умолчанию -smbios; еслиdmidecodeне предоставляет допустимый UUID, то будет сгенерирован временный UUID.Другой вариант - указать UUID хоста в
host_uuid.Пример записей с UUID, в котором
0- условное обозначение - замените его на вывод командыuuidgen:host_uuid = "00000000-0000-0000-0000-000000000000" host_uuid_source = "smbios"
Протокол поддержания работоспособности#
Позволяет libvirtd обнаружить нарушенные клиентские соединения или даже «мертвые» клиенты. Сообщение keepalive отправляется клиенту после нескольких секунд бездействия keepalive_interval, чтобы проверить, продолжает ли клиент отвечать; keepalive_count - это максимальное количество сообщений keepalive, которые разрешено отправлять клиенту без получения ответа, прежде чем соединение будет считаться разорванным.
Таким образом, соединение автоматически закрывается примерно через keepalive_interval * (keepalive_count + 1) секунд с момента получения последнего сообщения от клиента. Если значение keepalive_interval равно -1, то libvirtd не будет отправлять запросы keepalive; однако клиенты все равно могут их отправлять, и демон будет отправлять ответы.
Если значение keepalive_count равно 0, то соединения будут автоматически закрываться после нескольких секунд бездействия keepalive_interval без отправки каких-либо сообщений keepalive.
Пример записей:
keepalive_interval = 5
keepalive_count = 5
Пример аналогичных параметров для интерфейса администратора:
admin_keepalive_interval = 5
admin_keepalive_count = 5
Открытие vSwitch#
Позволяет указать время ожидания для вызовов openvswitch, выполняемых libvirt. Для настройки используется ovs-vsctl, ее параметр времени ожидания по умолчанию установлен на 5 секунд, чтобы избежать возможного бесконечного ожидания, блокирующего libvirt. Пример записи:
admin_keepalive_interval = 5
admin_keepalive_count = 5