Перейти к содержанию

Настройка Space Gateway

Общие сведения

Space Gateway (шлюз подключения внешних пользователей) - это решение, позволяющее обеспечить удаленный доступ для пользователей виртуальных рабочих столов.

Схема сетевого взаимодействия

img

Поддержка протокола Loudplay шлюзом подключений внешних пользователей запланирована на 3Q 2025 года.

Установку Space Gateway необходимо выполнить в соответствии с инструкцией:

Технические требования к ВМ/ФМ для установки Space Gateway:

  • Оперативная память – не менее 4 Гб.

  • Количество ядер процессора – не менее 4.

  • Объем дискового пространства - не менее 30 ГБ.

  • Сетевой интерфейс – не менее 10 Гбит Ethernet, в количестве не менее одного.

Данная ВМ/ФМ с установленным шлюзом обеспечивает 1000 подключений.


Схемы работы шлюза

Возможны 2 схемы работы шлюза:

  • Без NAT.
  • С использованием NAT.

Подключение без NAT

Cхема непосредственного подключения к шлюзу (без NAT) используется при развёртывании всей инфраструктуры внутри локальной сети, если не предполагается доступ из Интернета.

В этом случае Публичный IP-адрес шлюза будет соответствовать Виртуальному IP-адресу. В настройках диспетчера для полей Адрес шлюза и Виртуальный IP указывается одинаковый адрес.

Схема без NAT

image

Подключение с использованием NAT

Схема с NAT используется, если предполагается осуществлять подключение к инфраструктуре из Интернета.

В этом случае на маршрутизаторе должна быть выполнена трансляция Публичного IP-адреса на Виртуальный IP-адрес.

Схема с использованием NAT

image

Публичный IP-адрес

Публичный IP-адрес - это адрес шлюза. Он прописывается в настройках диспетчера Настройки - Система - Шлюз в поле Адрес шлюза.

Настройка со стороны диспетчера

img


Подготовка

Виртуальный IP-адрес назначается на сетевой интерфейс с помощью программы Keepalived. Конфигурирование (настройка) Keepalived выполняется шлюзом автоматически. В этой конфигурации всегда будет использован первый сетевой интерфейс в системе.

Сетевой интерфейс

image

Возможно добавление нескольких сетевых интерфейсов хосту шлюза. В этом случае также в качестве основного управляющего сетевого интерфейса будет использован первый сетевой интерфейс в системе.

Несколько сетевых интерфейсов

image


Настройка

1. Проверка, запущены ли необходимые службы

sudo systemctl status vdi-gateway
sudo systemctl status haproxy
sudo systemctl status keepalived

2. Просмотр настроек

  • Настройки хранятся в файле /opt/vdi-gateway/app/settings.db. Это файл базы данных SQLite. Чтобы прочитать его, необходимо установить программу sqlite3:

    sudo apt install sqlite3
    
  • Открыть файл настроек:

    sqlite3 settings.db
    
  • Получить настройки, выполнив запрос:

    select * from settings
    

Настройки представляют собой строку json:

 {"is_enabled":true,"internal_addrs":["10.254.150.132"],"ssl":false,"disp_addrs":["10.244.32.32"],"disp_port 
 ":4200,"public_addr":"10.254.150.136","virtual_addr":"10.254.150.136","api_port":8000,"balancer_api_port":8002 
 ,"port_range_start":5900,"port_range_stop":5999,"api_key":"IVNGbmpzZGtmdWV3","cli_key":"U0ZuanNka2Z1ZXch"}

3. Проверка настроек Haproxy и Keepalived

  • Настройки Haproxy хранятся в файле /etc/haproxy/haproxy.cfg.

    Пример конфигурации HAProxy
     listen stats 
        bind 10.254.150.136:8003 
        mode http 
        stats enable 
        stats uri / 
        http-request use-service prometheus-exporter if { path /metrics } 
     peers sticktables 
        bind :10000 
        server gw 
        table sticky-sessions type ip size 1m 
     frontend service_tunnel 
        bind 10.254.150.136:443 
        default_backend service_tunnel 
     backend service_tunnel 
        balance roundrobin 
        server gateway_0 10.254.150.132:4300 check 
     frontend client 
        bind 10.254.150.136:8002 
        default_backend client 
     backend client 
        balance roundrobin 
        stick match src table sticktables/sticky-sessions 
        stick store-request src table sticktables/sticky-sessions 
        server gateway_0 10.254.150.132:8000 check 
     frontend tunnels 
        bind 10.254.150.136:5900-5999, 
        default_backend tunnels 
     backend tunnels 
        balance roundrobin 
        stick match src table sticktables/sticky-sessions 
        stick store-request src table sticktables/sticky-sessions 
        server gateway_0 10.254.150.132
    

  • Настройки Keepalived хранятся в файле /etc/keepalived/keepalived.conf.

    Пример конфигурации Keepalived
       global_defs { 
          router_id gw 
       }     
       vrrp_script check_haproxy { 
          script "/usr/bin/systemctl is-active --quiet haproxy" 
       }           
       vrrp_script check_gateway { 
          script "/usr/bin/systemctl is-active --quiet vdi-gateway" 
       }           
       vrrp_instance gateway { 
          state BACKUP 
          interface eth0 
          virtual_router_id 1 
          virtual_ipaddress { 
              10.254.150.136 
          } 
          track_script { 
              check_haproxy 
              check_gateway 
          } 
       }
    

4. Работа с API

Интерфейс API шлюза доступен на порте 8000. Дополнительная информация о портах.

В шлюзе есть эндпоинты. Одни предназначены для получения запросов от диспетчера, другие - от клиента.

Для выполнения http-запросов необходимо авторизоваться с помощью токена, который передается в заголовке запроса. Для этого нажать кнопку Authorize и ввести ключ авторизации api_key (для диспетчера) или cli_key (для клиента), значение которого можно получить из настроек:

  • api_key требуется для выполнения http-запросов от диспетчера:

    • /v3/get_settings/
    • /v3/change_settings/
    • /v3/get_connections/
    • /v3/disconnect/
    • /v3/health/
  • cli_key требуется для выполнения http-запросов от клиента:

    • /v3/open_connection/
    • /v3/connect/

5. Проверка работоспособности туннеля

На хосте шлюза в API выполнить запрос /v3/get_connections/. В ответе запроса будет список всех соединений, запущенных на данном хосте.

6. Сброс всех запущенных соединений

Закрыть все запущенные соединения на хосте можно перезапуском службы шлюза:

sudo systemctl restart vdi-gateway.service

7. Версия Space Gateway

В интерфейсе работы с API рядом с заголовком Space Gateway отображается номер версии. Версия 1.6.3 приведена в качестве примера, она может отличаться.

Версия Space Gateway

image

8. Вывод лога в реальном времени

Для мониторинга работы шлюза можно запустить вывод лога в реальном времени командой:

sudo journalctl -u vdi-gateway --follow