Как часто в своей работе вы задумываетесь о необходимости обеспечения удаленного доступа для пользователей? Как насчет 100% бесплатных решений?
Да, такое мы все любим, но уж очень невелик выбор подобных решений под Linux:

  • TigerVNC, TightVNC - отличное решение, если пользователям для работы достаточно удаленного рабочего стола. Но что, если нужен проброс флешек, USB токенов, принтеров и звука? Всё это можно организовать, но вот чтобы прям сразу, из коробки...

  • Xrdp - Самый известный сервер RDP для Linux. Возможно подключение с любого стандартного rdp клиента (Window, Linux), проброс флешек, USB токенов, принтеров и звука из коробки. Практически полный аналог Microsoft TS, но для Linux. Проект активно развивается.

  • NoMachine - это проприетарное программное обеспечение. Однако у них есть очень либеральная бесплатная версия для личного использования (freeware), которая и получила широкую известность. Эта версия имеет почти все функции платных редакций, но с ограничением на количество одновременных соединений (до 2-х).

* В этом списке намеренно не упоминаются VDI решения (a-la Spice от RedHat), т.к. эти тяжеловесы выходят за рамки этой статьи.

Что же делать, если вы остановили свой выбор на практически идеальном решении Xrdp, но количество пользователей продолжает расти, и перестает вмещаться на один сервер? В целом ответ прост, нужен еще один Xrdp сервер!
Но тут же возникает проблема, а как балансировать доступ пользователей к двум Xrdp серверам? А если серверов больше двух?
Теперь ответ есть здесь: Xrdp broker project
Или прямая ссылка на github: https://github.com/AAAPops/rdp-broker.git

Переходим по ссылке, читаем Readme, и видим, что вышла версия 0.0.9, которая содержит не только исходный код для самостоятельной сборки, но и deb пакет для Debian 13.

Стоит попробовать реализовать схему, приведенную на картинке. Для этого и четырех виртуалок с Debian 13 не жалко -)
На трех буду разворачивать связку Xrdp + rdp-agent, а на четвертой будет rdp-broker.
rdp-agent буду ставить из deb пакета, а rdp-broker попробую собрать из исходников.

Установка, конфигурирование и запуск проходит штатно, если не спешить, и прочитать файл Readme на гитхабе.
Очень интересно наблюдать в логах, как брокер принимает решение о перенаправлении пользователя на тот или иной сервер. Всё понятно и информативно.

В документации написано, что проект базируется на библиотеках проекта freerdp3. А как быть, если дистрибутив Linux достаточно старый, и содержит только библиотеки freerdp2? Возьму Debian 10, и попробую собрать исходники rdp-broker.
Тут к сожалению не всё так радостно, как на свежих дистрибутивах. Сначала нужно собрать все нужные библиотеки freerdp3 и libwinpr3 из проекта FreeRDP. А также возможно и библиотеку libnng из проекта NNG
После этого rdp-broker успешно собирается. Не думаю, что все промежуточные шаги нужно описывать здесь. Любой опытный админ легко воспроизведет их.

Что могу сказать, в целом заявленный функционал работает. Новая Xrdp сессия для пользователя создается, старая вполне успешно ищется на одном из 3 агентов. А чего еще можно требовать от брокера соединений?

На мой взгляд задача объединения Xrdp серверов в единый кластер успешно решена. Попробуйте сами, и поделитесь своим опытом!

Комментарии (10)


  1. sledov
    28.08.2025 14:32

    но уж очень невелик выбор подобных решений под Linux

    А как же RustDesk забыли?


    1. RomaU Автор
      28.08.2025 14:32

      RustDesk (и аналоги TeamViewer, AnyDesk): Это инструмент удаленного контроля и доступа "1 к 1". Т.е. это никак не тянет на Терминальный сервер -)

      А Xrdp/VNC это классический терминальный сервер, который позволяет запустить множество удаленных сессий на одном сервере.


      1. RTFM13
        28.08.2025 14:32

        RustDesk (и аналоги TeamViewer, AnyDesk): Это инструмент удаленного контроля и доступа "1 к 1". Т.е. это никак не тянет на Терминальный сервер -)

        как и упомянутые *vnc

        Может сейчас всё поменялось, но я пару лет назад интересовался, и было всё плохо.

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

        XRDP позволял открыть только одну сессию для 1го пользователя. При чем локальная тоже считалась.

        А если ты еще хочешь wayland, то работает только krfb, который как vnc только вообще никака не управляется из консоли.

        Интересно, как обстоят дела сей-час.


        1. kenomimi
          28.08.2025 14:32

          Я себе vdi домашний делал, столкнулся тоже. VNC во всех видах лагучий, требует широкий канал. RDP (который как сервис) много лучше, но при закрытии окна сессия скидывается, ровно как в виндах - для моих задач неудобно.

          Из реально юзабельного оказался только spice - при должном тюнинге пролезает даже через сотовую сеть без существенных лагов (как у vdi-решения от vmwarе), что было большим удивлением. Плюс умеет кидать виртуальные gpu с реальным бекендом в виртуалки, две простейших видяхи-затычки по 4гб в сервер - и прирост производительности прямо налицо. Но там одна машина - один пользователь, для себя идеально, для прода в таком виде не пойдет.


          1. RomaU Автор
            28.08.2025 14:32

            SPICE, как и любое другое VDI решение требует значительных ресурсов, если пользователей реально много. Т.е. каждому по виртуалке -)

            Производительность XRDP/VNC на плохих каналах вполне достаточная, т.к. появились новые кодеки сжатия. XRDP предлагает h264 сжатие. Это 2-5 Mb/s. для экрана 1920x1080. Поверьте, SPICE требует ничуть не меньше.


        1. RomaU Автор
          28.08.2025 14:32

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

          XRDP позволял открыть только одну сессию для 1го пользователя. При чем локальная тоже считалась


          Это как минимум не так-)
          XRDP/VNC позволяли запустить столько сессий пользователя, сколько требуется.
          Единственное ограничение - мощность сервера.
          Процедура запуска новой сессии у XRDP гораздо более простая, и не требует от админа никаких действий на стороне терминального сервера.


  1. Vilos
    28.08.2025 14:32

    Слабовато для целой статьи на Хабре...хоть бы рассказали как из исходников собирали...


    1. RomaU Автор
      28.08.2025 14:32

      Это просто обзор новых возможностей Xrdp от стороннего разработчика.
      Пошаговая инструкция сборки исходников есть на гитхабе https://github.com/AAAPops/rdp-broker. Раздел "Build prerequisite"


  1. Johan_Palych
    28.08.2025 14:32

    1. RomaU Автор
      28.08.2025 14:32

      А что здесь не так? Просто очерчено поле для дальнейших улучшений, если они потребуются.
      Или смущает, что сервис разработан в России?