Удаленное администрирование рабочих станций и серверов за последние два года претерпело кардинальные изменения. Коммерческие гиганты вроде TeamViewer и AnyDesk либо заблокировали доступ с российских IP-адресов, либо ввели жесткие ограничения: сессии принудительно обрываются через 120 секунд, всплывают предупреждения о коммерческом использовании, а скорость передачи изображения падает до единиц кадров в секунду.
Попытка использовать официальные бесплатные публичные серверы открытого клиента RustDesk также сталкивается с суровой реальностью: публичные релеи перегружены сотнями тысяч пользователей по всему миру. Пинг подскакивает до 180–300 мс, перемещение курсора мыши запаздывает на полсекунды, а картинка рассыпается на артефакты сжатия. Единственное надежное инженерное решение — поднять собственный изолированный сервер RustDesk на недорогом отечественном VDS с задержкой 5–15 мс и полным контролем над безопасностью.
1. Почему публичные серверы больше не подходят: лимиты AnyDesk и перегрузка релеев
При организации технической поддержки, администрировании удаленных филиалов или помощи коллегам надежность соединения играет первостепенную роль. Сравним ключевые параметры работы проприетарных сервисов, публичных релеев и собственного сервера RustDesk:
| Параметр | AnyDesk (Free) | RustDesk (Public) | Свой сервер RustDesk |
|---|---|---|---|
| Длительность сессии | Ограничена (часто 2–5 минут) | Без жестких лимитов | Не ограничена (24/7) |
| Сетевая задержка (RTT) | 120–250 мс (серверы в ЕС) | 150–350 мс (высокая загрузка) | 5–20 мс (сервер в РФ) |
| Частота кадров (FPS) | 15–30 FPS с просадками | 10–25 FPS при дропах пакетов | До 60 FPS плавного потока |
| Шифрование и ключи | Закрытый проприетарный контур | Публичный общий ключ | Приватный ключ Ed25519 |
| Вендор-лок и санкции | Высокий риск блокировок | Риск перегрузки и бана IP | Полная независимость |
Собственный сервер не только снимает любые лимиты по времени и количеству одновременных подключений, но и гарантирует, что изображение удаленного рабочего стола, нажатия клавиш и буфер обмена никогда не покинут ваш доверенный периметр.
2. Архитектура RustDesk Server: назначение hbbs, hbbr и карта сетевых портов
Серверная экосистема RustDesk построена на разделении обязанностей между двумя легковесными бинарными демонами, написанными на Rust:
- hbbs (Heartbeat / ID Rendezvous Server): Сигнальный сервер. Регистрирует клиентские устройства по уникальным числовым ID, хранит их текущие внешние IP-адреса, принимает heartbeat-пакеты о доступности и координирует процедуру пробива NAT (P2P Hole Punching) для прямого соединения клиентов.
- hbbr (Relay Server): Сервер ретрансляции. Вступает в работу, если клиенты находятся за изолированными корпоративными фаерволами или жестким симметричным NAT, не позволяющим установить прямой P2P-туннель. В этом случае весь зашифрованный трафик транслируется через hbbr на скорости серверного канала.
Для безошибочной работы связки требуется открыть и пробросить строго определенный пул портов:
| Служба | Порт | Протокол | Назначение |
|---|---|---|---|
hbbs |
21115 |
TCP |
Тестирование типа NAT и доступности портов |
hbbs |
21116 |
TCP |
Маршрутизация вызовов и сервис установления связи |
hbbs |
21116 |
UDP |
Регистрация ID клиентов и отправка пульса (Heartbeat) |
hbbr |
21117 |
TCP |
Сервис ретрансляции трафика рабочего стола (Relay) |
hbbs |
21118 |
TCP |
Поддержка веб-клиента WebSocket (опционально) |
hbbr |
21119 |
TCP |
Поддержка веб-клиента релея (опционально) |
Критически важный нюанс с портом 21116 UDP
Наиболее распространенная причина отказа сервера («Невозможно подключиться через промежуточный сервер») кроется в том, что администраторы открывают порт 21116 только для TCP. Порт 21116 обязан быть доступен по обоим протоколам — TCP и UDP. Если UDP-пакеты отсекаются сетевым фильтром хостинга или фаерволом ОС, клиенты не смогут зарегистрироваться в сигнальной службе.
3. Системные требования к VDS и подготовка чистой Ubuntu 24.04 LTS
Огромное достоинство RustDesk Server — исключительная легковесность. В состоянии покоя и hbbs, и hbbr потребляют всего по 12–25 МБ оперативной памяти и практически нулевой процент CPU. Поэтому под сервер достаточно арендовать самый базовый тариф:
- Процессор: 1 виртуальное ядро (vCPU).
- Оперативная память: 1 ГБ RAM (с запасом под саму ОС Ubuntu и системные демоны Docker).
- Дисковое пространство: 15–20 ГБ NVMe (база зарегистрированных пиров весит считанные мегабайты).
- Сетевой интерфейс: Белый статический IPv4-адрес и безлимитный канал от 100 Мбит/с.
Подключаемся к свежему серверу по SSH и выполняем базовую актуализацию пакетной базы Ubuntu 24.04:
# Обновление репозиториев и установленных системных пакетов
sudo apt update && sudo apt upgrade -y
# Установка необходимых утилит
sudo apt install -y curl wget git ufw dnsutils
Если Docker еще не установлен в вашей системе, разверните официальный Docker Engine с плагином Compose за пару команд:
# Загрузка и запуск официального скрипта установки Docker
curl -fsSL https://get.docker.com | sh
# Включение автозапуска службы Docker при перезагрузке ОС
sudo systemctl enable --now docker
4. Развертывание связки hbbs и hbbr в Docker Compose
Для изоляции сервисов и сохранения данных при обновлениях контейнеров организуем рабочую директорию /opt/rustdesk-server:
# Создание рабочей папки для файлов конфигурации и ключей
sudo mkdir -p /opt/rustdesk-server/data
cd /opt/rustdesk-server
Создаем файл декларации compose.yaml с помощью текстового редактора:
services:
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: rustdesk-hbbs
restart: unless-stopped
command: hbbs -r YOUR_SERVER_IP_OR_DOMAIN:21117 -k _
volumes:
- ./data:/root
network_mode: host
depends_on:
- hbbr
hbbr:
image: rustdesk/rustdesk-server:latest
container_name: rustdesk-hbbr
restart: unless-stopped
command: hbbr -k _
volumes:
- ./data:/root
network_mode: host
Почему мы используем network_mode: host?
Режим network_mode: host исключает прослойку трансляции адресов (NAT) и накладные расходы проксирующего демона Docker. Это критично для приложений реального времени с интенсивным UDP-трафиком. Сетевые задержки снижаются до аппаратного минимума, а UDP-пакеты портов 21116 обрабатываются ядром Linux без потерь.
В строке command: hbbs -r YOUR_SERVER_IP_OR_DOMAIN:21117 -k _ обязательно замените плейсхолдер YOUR_SERVER_IP_OR_DOMAIN на реальный внешний статический IP-адрес вашего VDS (например, 185.22.15.80) или на зарегистрированный DNS-домен (например, relay.mydomain.ru).
Флаг -k _ имеет решающее значение для безопасности: он заставляет службы генерировать пару ключей шифрования Ed25519 и отклонять любые входящие подключения без авторизации.
Запускаем контейнеры в фоновом режиме:
# Запуск стека RustDesk в фоновом режиме
docker compose up -d
# Проверка статуса работы контейнеров
docker compose ps
5. Надежные VDS-провайдеры с низким пингом для сервера ретрансляции
Поскольку сервер ретрансляции непрерывно передает видеопоток удаленного стола, критически важно выбирать провайдеров с прямым подключением к крупным российским точкам обмена трафиком (MSK-IX, SPB-IX) и чистыми белыми IPv4-адресами без блокировок входящих UDP-пакетов.
Рекомендуемые VDS-провайдеры
Отказоустойчивые сервера с быстрыми NVMe и каналом до 1 Гбит/с
Timeweb Cloud
Оптимальная площадка для сервера ретрансляции RustDesk: дата-центры в Москве и Санкт-Петербурге с задержкой 5–15 мс по всей европейской части РФ, выделенный IPv4-адрес без фильтрации портов и безлимитный сетевой канал до 1 Гбит/с.
Selectel
Инфраструктура корпоративного уровня Tier III с гарантированной доступностью 99.98% и защитой от сетевых атак на уровнях L3/L4. Идеально подходит для IT-отделов и круглосуточной технической поддержки корпоративных пользователей.
Beget
Удобная панель управления сервером, моментальный деплой Ubuntu 24.04 LTS, автоматические ежедневные резервные копии и круглосуточная квалифицированная поддержка системных инженеров 24/7.
6. Принудительное шифрование и защита ключом Ed25519 от несанкционированного доступа
При первом запуске с флагом -k _ демон hbbs автоматически генерирует в подпапке ./data пару криптографических ключей:
id_ed25519— закрытый приватный ключ сервера (никогда не покидает VDS).id_ed25519.pub— открытый публичный ключ сервера.
Именно публичный ключ защищает ваш сервер от несанкционированного использования. Посмотрим содержимое сгенерированного открытого ключа:
# Вывод открытого публичного ключа сервера
cat /opt/rustdesk-server/data/id_ed25519.pub
В терминале отобразится короткая строка длиной 44 символа (заканчивающаяся на знак равенства =), например:
vDkL80wA+wX42zP+7yN9zQm1h1lD/V7nZqJ1xR9kM8g=
Что произойдет, если не использовать ключ (-k _)?
Без ключа любой ботнет или посторонний пользователь, просканировавший порт 21116 вашего IP-адреса, сможет указать ваш VDS в качестве своего сервера ретрансляции. Ваши гигабитные каналы и ресурсы процессора будут бесплатно расходоваться на чужой видеотрафик. Использование -k _ отсекает любые неподписанные попытки подключения на сетевом уровне.
7. Настройка фаервола UFW и решение проблемы проброса портов в Docker
При использовании network_mode: host контейнеры слушают сетевые интерфейсы операционной системы напрямую. Это означает, что системный брандмауэр UFW (Uncomplicated Firewall) корректно фильтрует трафик без конфликтов с цепочками iptables Docker.
Открываем только строго необходимые порты и активируем межсетевой экран:
# Разрешаем стандартный SSH для сохранения доступа администратора
sudo ufw allow 22/tcp comment "SSH Remote Management"
# Разрешаем диапазон TCP портов для RustDesk hbbs и hbbr
sudo ufw allow 21115:21119/tcp comment "RustDesk TCP Services"
# Разрешаем критический UDP порт для heartbeat и регистрации клиентов
sudo ufw allow 21116/udp comment "RustDesk Heartbeat Registration"
# Включаем брандмауэр (если он еще не был активен)
sudo ufw enable
# Проверяем итоговый статус правил
sudo ufw status verbose
После активации правил обязательно убедитесь, что порты корректно отвечают на внешние запросы через онлайн-утилиту:
8. Настройка клиентов RustDesk: Windows, Linux, macOS и Android за 1 минуту
Чтобы клиентские приложения (на вашем компьютере и на компьютере, к которому вы планируете подключаться) работали через созданный приватный сервер, их необходимо переключить с публичных релеев на ваш VDS.
Способ 1: Ручная настройка через графический интерфейс
- Скачайте и запустите официальный клиент RustDesk с официального сайта или GitHub-репозитория.
- В главном окне программы нажмите на меню (три точки) рядом с вашим ID и выберите «Сеть» (ID/Сервер ретрансляции).
- Заполните поля конфигурации:
- ID-сервер: введите IP-адрес или домен вашего VDS (например,
relay.mydomain.ruили185.22.15.80). - Сервер ретрансляции: укажите тот же адрес (или оставьте пустым, клиент подставит адрес ID-сервера).
- API-сервер: оставьте поле пустым.
- Ключ (Key): вставьте скопированную строку публичного ключа из файла
id_ed25519.pub.
- ID-сервер: введите IP-адрес или домен вашего VDS (например,
- Нажмите «ОК». В нижней строке статус-бара клиента надпись должна смениться на зеленый индикатор: «В сети» (Ready).
Способ 2: Быстрое развертывание через строку конфигурации (1 клик)
Чтобы не вводить параметры вручную на десятках удаленных машин, RustDesk поддерживает импорт конфигурации через специальную строку подключения. Формат строки:
host=IP_ИЛИ_ДОМЕН_СЕРВЕРА,key=ПУБЛИЧНЫЙ_КЛЮЧ
Пример готовой строки:
host=185.22.15.80,key=vDkL80wA+wX42zP+7yN9zQm1h1lD/V7nZqJ1xR9kM8g=
Передайте эту строку пользователю или администратору. В окне настроек сети клиента достаточно нажать кнопку «Вставить конфигурацию сервера», и все поля заполнятся автоматически.
Лайфхак для массового деплоя на Windows
Клиент RustDesk для Windows умеет считывать параметры сервера прямо из собственного имени исполняемого файла! Если переименовать дистрибутив по шаблону rustdesk-host=185.22.15.80,key=vDkL80wA...=.exe, программа при первом запуске автоматически применит настройки вашего приватного сервера без единого клика со стороны удаленного пользователя.
9. Решение частых сбоев: ошибка «Невозможно подключиться через промежуточный сервер»
При настройке и эксплуатации сервера администраторы иногда сталкиваются с типовыми ошибками соединения. Разберем три наиболее частых инцидента и методы их мгновенного устранения:
1. Бесконечное состояние «Подключение...» или отказ связи с релеем
Причина: В строке запуска hbbs в параметре -r был указан локальный адрес (например localhost или 127.0.0.1), либо домен с неверно настроенной DNS A-записью. Клиент обращается к hbbs, а hbbs сообщает ему подключиться к релею по адресу 127.0.0.1, из-за чего удаленный клиент пытается найти ретранслятор на собственной машине.
Решение: Проверьте значение флага -r в compose.yaml. Там обязан быть указан публичный внешний IP или резолвящийся домен: hbbs -r 185.22.15.80:21117 -k _. После правки перезапустите стек: docker compose down && docker compose up -d.
2. Ошибка «Невозможно подключиться через промежуточный сервер»
Причина: Клиент передал ключ, не совпадающий с ключом в id_ed25519.pub, либо на удаленном компьютере включен корпоративный DPI-прокси, блокирующий нестандартные TCP-порты.
Решение: Сверьте хеш ключа. Если порт 21117 блокируется провайдером клиента, настройте перенаправление порта на стандартный 443 (HTTPS) с помощью правил iptables или внешнего Nginx Reverse Proxy.
3. Красный индикатор «Не в сети» в статус-баре клиента
Причина: Закрыт порт 21116 UDP в правилах фаервола ОС или в панели хостинга (Security Groups). Клиент не может зарегистрировать свой ID.
Решение: Выполните команду sudo ufw status на сервере и убедитесь в наличии строки 21116/udp ALLOW. Проверьте также сетевые фильтры в панели управления хостингом.
10. Резюме и итоговый чек-лист готовности сервера к работе
Развертывание собственного сервера RustDesk в Docker Compose занимает не более 10–15 минут, но решает задачу независимого удаленного доступа на годы вперед. Вы получаете максимальную скорость отклика (до 60 кадров в секунду при пинге 5–15 мс), неограниченное время сессий и гарантированную конфиденциальность корпоративного уровня.
Разверните собственный сервер RustDesk за 10 минут
Выберите надежный VDS в Москве или Санкт-Петербурге с быстрым NVMe-накопителем, выделенным статическим IP-адресом и низкими задержками для плавной и комфортной работы с удаленными рабочими столами без зависаний.
Выбрать VDS с пингом до 15 мс в Timeweb CloudЧек-лист готовности после развертывания:
- Контейнеры
rustdesk-hbbsиrustdesk-hbbrработают в статусеUp(проверено черезdocker compose ps). - В параметрах hbbs указан внешний IP или домен сервера с портом 21117 (
-r IP:21117). - Активирован режим шифрования
-k _и сохранен открытый ключ изid_ed25519.pub. - В фаерволе UFW открыты порты
21115:21119/tcpи21116/udp. - Клиенты на подключаемых ПК показывают статус «В сети» с зеленым индикатором готовности.