Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Прокси-серверы

1. SPICE-прокси

1.1. Общие сведения о SPICE-прокси

SPICE-прокси – это инструмент, используемый для подключения клиентов SPICE к виртуальным машинам, когда клиенты SPICE находятся вне сети, соединяющей гипервизоры. Настройка SPICE-прокси заключается в установке Squid на машину и настройке межсетевого экрана на пропускание прокси-трафика. Включение SPICE-прокси заключается в использовании engine-config в Менеджере управления для установки ключа SpiceProxyDefault в значение, состоящее из имени и порта прокси-сервера. Выключение SPICE-прокси заключается в использовании engine-config в Менеджере управления для удаления значения, в которое был установлен ключ SpiceProxyDefault.

SPICE-прокси можно использовать только в сочетании с автономным клиентом SPICE и нельзя использовать для подключения к виртуальным машинам с помощью noVNC.

1.2. Настройка машины со SPICE-прокси

В этой процедуре описано, как настроить машину в качестве SPICE-прокси. SPICE-прокси позволяет подключаться к сети zVirt извне. В этой процедуре используется Squid для предоставления прокси-служб.

Порядок действий:
  1. Установите Squid на машине с прокси:

    dnf install squid
  2. Откройте /etc/squid/squid.conf. Измените:

    http_access deny CONNECT !SSL_ports

    на:

    http_access deny CONNECT !Safe_ports
  3. Запустите службу squid и включите для нее автоматический запуск после перезагрузки:

    systemctl enable squid.service --now
  4. Добавьте постоянное правило, разрешающее входящие запросы к службе squid в зоне firewalld по умолчанию:

    firewall-cmd --permanent --add-service=squid
  5. Перезагрузите правила:

    firewall-cmd --reload
  6. Убедитесь, что служба squid отображается в списке служб межсетевого экрана:

    firewall-cmd --list-services
    ssh dhcpv6-client squid

Теперь машина настроена в качестве SPICE-прокси. Перед подключением к сети zVirt извне этой сети активируйте SPICE-прокси.

1.3. Включение SPICE-прокси

Далее описано, как активировать (включить) SPICE-прокси.

Порядок действий:
  1. Чтобы настроить прокси-сервер глобально, в Менеджере управления используйте инструмент engine-config:

    engine-config -s SpiceProxyDefault=someProxy

    Адрес прокси-сервера должен иметь следующий вид:

    protocol://[host]:[port]

    Например:

    engine-config -s SpiceProxyDefault=http://172.25.1.43:3128
    Старые версии клиента SPICE поддерживают только HTTP. Если для клиентов более ранних версий указан HTTPS, клиент проигнорирует настройку прокси-сервера и попытается подключиться к хосту напрямую.
  2. Перезапустите службу ovirt-engine:

    systemctl restart ovirt-engine.service
  3. Перейдите в Ресурсы  Виртуальные машины.

  4. Выделите нужную ВМ.

  5. Нажмите рядом с Консоль, а затем Параметры консоли.

  6. Активируйте консоль SPICE и опцию Включить SPICE прокси

spice proxy activate

Теперь SPICE-прокси активирован (включен). Можно подключиться к сети zVirt через SPICE-прокси.

1.4. Выключение SPICE-прокси

Далее описано, как выключить (деактивироваать) SPICE-прокси.

Порядок действий:
  1. Авторизуйтесь в Менеджере управления:

    $ ssh root@_[IP of {engine-name}]_
  2. Чтобы очистить SPICE-прокси, запустите следующую команду:

    engine-config -s SpiceProxyDefault=""
  3. Перезапустите Менеджер управления:

    systemctl restart ovirt-engine.service

Теперь SPICE-прокси деактивирован (выключен). Больше нельзя подключиться к сети zVirt через SPICE-прокси.

2. Squid-прокси

2.1. Установка и настройка Squid-прокси

В этом разделе описано, как устанавливать и настраивать Squid-прокси на Пользовательском портале. Squid-прокси используется для ускорения доставки контента. Он кэширует часто просматриваемый контент, снижая расход полосы пропускания и ускоряя отклик.

Порядок действий:
  1. Получите пару ключей и сертификат для порта HTTPS Squid-прокси. Эту пару ключей можно получить таким же способом, как и пару ключей для другой службы SSL/TLS. Пара ключей имеет вид двух файлов PEM, содержащих закрытый ключ и подписанный сертификат. В данном случае предположим, что они имеют имена proxy.key и proxy.cer.

    Эту пару ключей и сертификат можно также сгенерировать с помощью центра сертификации engine. Если у вас уже есть закрытый ключ и сертификат для прокси-сервера и вы не хотите генерировать их с помощью центра сертификации engine, перейдите к следующему шагу.
  2. Выберите имя хоста для прокси-сервера. Затем выберите другие компоненты отличительного имени сертификата для прокси-сервера.

    Рекомендуется использовать те же названия страны и организации, что и в самом engine. Чтобы найти эту информацию, авторизуйтесь на машине, на которой установлен Менеджер управления, и выполните следующую команду:

    openssl x509 -in /etc/pki/ovirt-engine/ca.pem -noout -text | grep DirName

    Эта команда выведет примерно следующее:

    subject= /C=US/O=Example Inc./CN=_engine.example.com_.81108

    Важный фрагмент здесь: /C=US/O=Example Inc.. Используйте его, чтобы создать полное отличительное имя сертификата для прокси-сервера:

    /C=US/O=Example Inc./CN=_proxy.example.com_
  3. Авторизуйтесь на машине с прокси-сервером и сгенерируйте запрос на подписание сертификата:

    openssl req -newkey rsa:2048 -subj '/C=US/O=Example Inc./CN=_proxy.example.com_' -nodes -keyout proxy.key -out proxy.req
    Отличительное имя сертификата нужно поставить в кавычки. Параметр -nodes гарантирует, что закрытый ключ не шифруется, а значит, пароль для запуска прокси-сервера вводить не нужно.

    Команда генерирует два файла: proxy.key и proxy.req. proxy.key – это закрытый ключ. Храните его в надежном месте. proxy.req – это запрос на подписание сертификата. Он не требует специальной защиты.

  4. Чтобы сгенерировать подписанный сертификат, скопируйте файл запроса на подписание сертификата с прокси-машины на машину с Менеджером управления:

    scp proxy.req _engine.example.com_:/etc/pki/ovirt-engine/requests/.
  5. Авторизуйтесь на машине с Менеджером управления и подпишите сертификат.

    /usr/share/ovirt-engine/bin/pki-enroll-request.sh \
        --name=proxy \
        --days=3650 \
        --subject='/C=US/O=Example Inc./CN=_proxy.example.com_'

    Эта команда подписывает сертификат и делает его действительным в течение 10 лет (3650 дней). При желании можно установить более короткий срок действия сертификата.

  6. Сгенерированный файл сертификата доступен в каталоге /etc/pki/ovirt-engine/certs и должен иметь имя proxy.cer. На прокси-машине скопируйте этот файл с машины с Менеджером управления в текущий каталог:

    scp _engine.example.com_:/etc/pki/ovirt-engine/certs/proxy.cer .
  7. Убедитесь, что и proxy.key, и proxy.cer присутствуют на прокси-машине:

    ls -l proxy.key proxy.cer
  8. Установите пакет Squid на прокси-машину:

    dnf install squid
  9. Переместите закрытый ключ и подписанный сертификат в место, где прокси-сервер может получить к ним доступ, например, в каталог /etc/squid:

    cp proxy.key proxy.cer /etc/squid/.
  10. Задайте разрешения так, чтобы пользователь squid мог читать эти файлы:

    chgrp squid /etc/squid/proxy.*
    chmod 640 /etc/squid/proxy.*
  11. Squid-прокси должен проверить сертификат, который использует engine. Скопируйте сертификат Менеджера управления на прокси-машину. В этом примере используется путь к файлу /etc/squid:

    scp engine.example.com:/etc/pki/ovirt-engine/ca.pem /etc/squid/.
    Сертификат Центра сертификации по умолчанию находится в /etc/pki/ovirt-engine/ca.pem на машине с Менеджером управления.
  12. Задайте разрешения так, чтобы пользователь squid мог читать файл сертификата:

    chgrp squid /etc/squid/ca.pem
    chmod 640 /etc/squid/ca.pem
  13. Если SELinux работает в режиме "принудительный" (enforcing mode), измените контекст порта 443 инструментом semanage, чтобы разрешить Squid использование порта 443:

    dnf install policycoreutils-python
    semanage port -m -p tcp -t http_cache_port_t 443
  14. Замените существующий файл конфигурации Squid следующим:

    https_port 443 key=/etc/squid/proxy.key cert=/etc/squid/proxy.cer ssl-bump defaultsite=_engine.example.com_
    cache_peer _engine.example.com_ parent 443 0 no-query originserver ssl sslcafile=/etc/squid/ca.pem name=engine login=PASSTHRU
    cache_peer_access engine allow all
    ssl_bump allow all
    http_access allow all
  15. Перезапустите Squid-прокси:

    systemctl restart squid.service
Squid-прокси в конфигурации по умолчанию разорвет соединение после 15 минут отсутствия активности. Чтобы увеличить время неактивности, по истечении которого Squid-прокси разорвет соединение, настройте параметр read_timeout в squid.conf (например, read_timeout 10 hours).

3. Websocket-прокси

3.1. Общие сведения о Websocket-прокси

Websocket-прокси позволяет пользователям подключаться к виртуальным машинам через консоль noVNC.

Websocket-прокси можно установить и настроить на машине с Менеджером управления во время первоначальной настройки (см. Настройка Менеджера управления).