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

Настройка Space Gateway

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

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

Подробнее о Space Gateway в архитектуре системы VDI и рекомендуемых схемах инсталляции для систем различного масштаба.


Установка Space Gateway

Установку 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 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. Проверка настроек Keepalived

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

    Пример конфигурации Keepalived
    global_defs {
        router_id gw
    }
    
    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.32.222
        }
        track_script {
            check_gateway
        }
    }
    
    # Распределение портов по метке 1
    virtual_server fwmark 1 {
        lb_algo rr
        lb_kind NAT
        protocol TCP
        real_server 10.254.32.212 0 {
            weight 1
        } 
    }
    

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