Прокси

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

Обзор SPICE Proxy

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

Примечание — Утилиту SPICE Proxy можно использовать только в сочетании с одиночным клиентом SPICE и нельзя использовать для подключения к ВМ, использующим noVNC.

Настройка машины SPICE Proxy

В следующей последовательности действий описывается как настроить машину в качестве SPICE Proxy. SPICE Proxy делает возможным подключение извне к сети системы виртуализации ROSA Virtualization. Для предоставления служб прокси используется Squid.

Для установка прокси-сервера Squid:

  1. Установите Squid на машине прокси, выполнив команду:
yum install squid
  1. В конфигурационном файле /etc/squid/squid.conf в строке http_access deny CONNECT замените значение "!SSL_ports" на значение "!Safe_ports".
  2. Запустите службу squid и включите автоматический запуск этой службы в процессе загрузки системы:
systemctl enable squid.service --now
  1. Разрешите исходящие запросы на службу squid в зоне по умолчанию межсетевого экрана firewalld:
firewall-cmd --permanent --add-service=squid
  1. Для применения изменений в конфигурации перезапустите службу межсетевого экрана firewalld:
firewall-cmd --reload

В результате данная машина будет настроена для протокола SPICE в качестве прокси.

Активируйте (включите) прокси перед тем, как подключаться извне к сетям системы виртуализации ROSA Virtualization.

Включение SPICE Proxy

В следующей последовательности действий описывается, как активировать (включить) прокси для протокола SPICE.

Для активации SPICE Proxy:

  1. На машине виртуализированного ЦУ выполните следующую команду с применением утилиты engine-config для настройки прокси:
engine-config -s SpiceProxyDefault=someProxy
  1. Перезапустите службу ovirt-engine:
systemctl restart ovirt-engine.service

В результате SPICE Proxy будет активирован (включён), предоставляя возможность подключения извне к сетям системы виртуализации ROSA Virtualization через прокси-сервер для протокола SPICE.

Запись прокси должна быть в формате:

protocol://[host]:[port].

Примечание — Поддержка прокси HTTPS доступна только для клиентов SPICE, поставляемых в составе системы виртуализации ROSA Virtualization. Клиенты в более ранних версиях ОС поддерживают только HTTP. Если указать HTTPS для клиентов более ранних версий, клиент проигнорирует настройку прокси и будет пробовать прямое подключение к хосту.

Выключение SPICE Proxy

В следующей последовательности действий описывается, как выключить (деактивировать) прокси для протокола SPICE.

Для выключения SPICE Proxy:

  1. На машине виртуализированного ЦУ выполните следующую команду для очистки прокси SPICE:
engine-config -s SpiceProxyDefault=""
  1. Перезапустите службу ovirt-engine:
systemctl restart ovirt-engine.service

В результате SPICE Proxy будет деактивирован (выключен) и подключение извне к сетям системы виртуализации ROSA Virtualization через прокси-сервер для протокола SPICE станет невозможным.

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

Установка и настройка Squid

В данном подразделе объясняется, как установить и настроить прокси-сервер Squid для Портала ВМ.

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

Для настройки прокси-сервера Squid:

  1. Получите в установленном порядке закрытый ключ и сертификат ключа для порта HTTPS прокси-сервера Squid в виде файлов proxy.key и proxy.cer соответственно.
  2. Установите Squid на машине прокси:
yum install squid
  1. Переместите полученные файлы proxy.key и proxy.cer с закрытым ключом и сертификатом ключа в каталог машины прокси (например, /etc/squid).
  2. Установите права на чтение файлов proxy.key и proxy.cer для пользователя squid:
chgrp squid /etc/squid/proxy.*
chmod 640 /etc/squid/proxy.*
  1. Squid должен верифицировать сертификат ЦС, используемый виртуализированным ЦУ. Для этого скопируйте с виртуализированного ЦУ сертификат ЦС /etc/pki/ovirt-engine/ca.pem на машину прокси в каталог /etc/squid и установите права на чтение файла сертификата ca.pem для пользователя squid:
chgrp squid /etc/squid/ca.pem
chmod 640 /etc/squid/ca.pem
  1. Для принудительного режима SELinux измените контекст порта 443, тем самым разрешив Squid использовать порт 443:
yum install policycoreutils-python
semanage port -m -p tcp -t http_cache_port_t 443
  1. Замените текущий файл конфигурации Squid /etc/squid/squid.conf следующим содержимым:
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
  1. Перезапустите службу прокси-сервера Squid:
systemctl restart squid.service

Примечание — Для увеличения интервала времени простоя Squid перед разрывом соединения (по умолчанию ‒ 15 минут простоя) настройте параметр read_timeout в файле конфигурации Squid /etc/squid/squid.conf (например, значение "read_timeout 10 hours" увеличивает интервал времени простоя до 10 часов).

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

Обзор прокси-сервера WebSocket

Прокси-сервер WebSocket даёт возможность пользователям подключаться к ВМ с помощью консоли noVNC. Клиент noVNC использует веб-сокеты для передачи данных VNC, но сервер VNC в QEMU не поддерживает технологию веб-сокетов, поэтому между клиентом и сервером VNC необходимо расположить прокси WebSocket. При этом прокси WebSocket может выполняться на любой машине, имеющей доступ к сети, включая машину виртуализированного ЦУ.

Примечание — Прокси-сервер WebSocket и консоль noVNC являются экспериментальными технологиями. Экспериментальные возможности не поддерживаются соглашениями об уровне обслуживания, могут иметь неполную функциональность и не рекомендуются к использованию на производстве, но предоставляют ранний доступ к будущим возможностям продукта, давая клиентам средство протестировать функциональность и предоставить отзывы, полезные для разработчиков.

Прокси-сервер WebSocket можно установить и настроить на машине виртуализированного ЦУ во время начального создания конфигурации ЦУ или на отдельной машине. Также можно провести миграцию WebSocket с машины виртуализированного ЦУ на отдельную машину.

Миграция WebSocket на отдельную машину

По соображениям безопасности или производительности прокси-сервер WebSocket может выполняться на отдельной машине. Действия по переносу WebSocket с машины виртуализированного ЦУ на отдельную машину включают в себя удаление конфигурации WebSocket с машины виртуализированного ЦУ, а затем установку прокси на отдельной машине.

Для удаления WebSocket с машины виртуализированного ЦУ:

  1. Запустите утилиту engine-cleanup на машине виртуализированного ЦУ:
engine-cleanup
  1. При запросе на удаление всех компонентов введите "No":
Do you want to remove all components? (Yes, No) [Yes]: No
  1. При запросе на удаление виртуализированного ЦУ (engine) введите "No":
Do you want to remove the engine? (Yes, No) [Yes]: No
  1. При запросе на удаление прокси-сервера WebSocket введите "Yes":
Do you want to remove the WebSocket proxy? (Yes, No) [No]: Yes
  1. При запросах на удаление любых других компонентов введите "No".

Для установки WebSocket на отдельной машине:

  1. Установите прокси-сервер WebSocket:
yum install ovirt-engine-websocket-proxy
  1. Запустите утилиту engine-setup для настройки конфигурации прокси-сервера WebSocket:
engine-setup

Примечание — Если в системе ранее был установлен пакет rhvm, то при выводе запроса о необходимости настройки виртуализированного ЦУ на этом хосте введите "No".

  1. При выводе следующего запроса нажмите клавишу Enter для запуска процесса настройки конфигурации прокси-сервера WebSocket на данной машине:
Configure WebSocket Proxy on this machine? (Yes, No) [Yes]:
  1. При выводе следующего запроса нажмите клавишу Enter, чтобы принять автоматически определённое имя хоста, или введите альтернативное имя хоста (обратите внимание, что при использовании виртуальных хостов автоматически определённое имя хоста может быть неправильным):
Host fully qualified DNS name of this server [host.example.com]:
  1. При выводе следующего запроса нажмите клавишу Enter, чтобы утилита engine-setup автоматически настроила межсетевой экран и открыла порты, необходимые для внешних соединений (в противном случае нужные порты необходимо будет открыть вручную):
Setup can automatically configure the firewall on this system.
Note: automatic configuration of the firewall may overwrite current settings.
Do you want Setup to configure the firewall? (Yes, No) [Yes]:
  1. При выводе следующего запроса введите полное доменное имя (FQDN) машины виртуализированного ЦУ:
Host fully qualified DNS name of the engine server []:
  1. При выводе следующего запроса нажмите клавишу Enter, чтобы утилита engine-setup автоматически выполнила необходимые настройки на машине виртуализированного ЦУ, или введите цифру 2, чтобы выполнить эти настройки вручную:
Setup will need to do some actions on the remote engine server. Either automatically, using ssh as root to access it, or you will be prompted to manually perform each such action.
Please choose one of the following:
1 Access remote engine server using ssh as root
2 Perform each action manually, use files to copy content around
(1, 2) [1]:
  1. Для настройки вручную:
  • При выводе следующего запроса нажмите клавишу Enter, чтобы принять номер порта SSH по умолчанию, или укажите номер порта SSH машины виртуализированного ЦУ:
ssh port on remote engine server [22]:
  • Укажите пароль суперпользователя root для выполнения входа в систему на машине виртуализированного ЦУ:
root password on remote engine server engine_host.example.com:
  1. При выводе следующего запроса введите "Yes" для просмотра правил iptables на предмет их отличия от текущих параметров:
Generated iptables rules are different from current ones.
Do you want to review them? (Yes, No) [No]:
  1. При выводе ранее настроенных параметров нажмите клавишу Enter, чтобы подтвердить текущую конфигурацию:
--== CONFIGURATION PREVIEW ==--
Firewall manager                        : iptables
Update Firewall                         : True
Host FQDN                               : host.example.com
Configure WebSocket Proxy               : True
Engine Host FQDN                        : engine_host.example.com
Please confirm installation settings (OK, Cancel) [OK]:
  1. Ознакомьтесь со следующими инструкциями для использования настроенного прокси-сервера WebSocket на машине виртуализированного ЦУ:
Manual actions are required on the engine host in order to enroll certs for this host and configure the engine about it.
Please execute this command on the engine host:
engine-config -s WebSocketProxy=host.example.com:6100
and than restart the engine service to make it effective
  1. Осуществите вход в систему на машине виртуализированного ЦУ и выполните следующие команды для завершения настройки:
engine-config -s WebSocketProxy=host.example.com:6100
systemctl restart ovirt-engine.service