RustDesk удаленное управление с открытым исходным кодом

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

Введение

Многие из нас знают, что такое TeamViewer и до 2022 года пользовались им. Наверно это был самый распространённый сервис по удаленному доступу к рабочему столу ПК и даже телефонов. Но руководство этого сервиса, как и многие западные компании, решили поддержать фашистов и запретили пользоваться своим сервисом для нашего сегмента интернета. Но свято место пусто не бывает и пользователи быстро нашли альтернативу в виде сервиса Anydesk. Anydesk так же как и TeamViewer работает на всех ОС и телефонах. Я даже рассказывал как установить Anydesk на MacOS.

Но кто даст гарантию, что и Anydesk перестанет работать? Это может произойти в любой момент. Нужна такая альтернатива, что бы соответствовала закону об “суверенном интернете”. Конечно есть несколько российских альтернатив, но они, как правило, платные или не кроссплатформенные.

Закон о «суверенном интернете» — неформальное название Федерального закона от 1 мая 2019 года № 90-ФЗ «О внесении изменений в Федеральный закон „о связи“ и Федеральный закон „Об информации, информационных технологиях и о защите информации“», предусматривающего создание национальной системы маршрутизации интернет-трафика, инструментов централизованного управления и др. Вступил в силу 1 ноября 2019 года.

Я понимаю этот закон так: если запад полностью отключит (перерубит кабеля или заглушит BGP анонсы) интернет, то сервис должен остаться работать внутри страны как это было например с Visa и MasterCard. Для этого сервис должен работать на ваших серверах и иметь как минимум открытый исходный код. И я нашел такой, точнее мне подсказали.

RustDesk – это бесплатная программа удалённого доступа к рабочему столу, которая позволяет пользователям получать доступ к компьютерам и серверам удаленно. Она разработана для обеспечения безопасности, скорости и простоты использования. RustDesk доступна для Windows, macOS, Linux, Android и iOS, а сам сервис может быть развернут на собственном сервере.

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

Для решения этой проблемы с медленным доступом и соответствия закону РФ (да я так шучу, ну что вы сразу)))) я покажу как развернуть собственный сервис RustDesk на Linux, Synology и TerraMaster. Главное помните, что для работы сервера Rustdesk ему нужен общедоступный IP адрес статический или динамический (DDNS). Клиентам это не нужно, RustDesk может спокой пробивать NAT.

Тут сразу нужно отметить, что есть платная версия Pro, но она мне не интересна и в данном руководстве я ее рассматривать не буду.

Системные требования

  • Linux CentOS Linux 7/8, Ubuntu 18/20 и Debian.
  • Сервера с 1 процессором, 1 ГБ оперативной памяти и диском 10 ГБ достаточно для запуска RustDesk.
  • Системные требования очень низкие. Минимальной конфигурации облачного сервера хватит. В зависимости от размера сети, если не удастся прямое TCP подключение, трафик пойдёт через ретранслятор. Объём трафика ретранслятора будет от 30 кб/с до 3 Мб/с (для экрана размером 1920х1080), в зависимости от разрешения и частоты обновления. Если софт используется для обычных офисных нужд, объём трафика будет около 100 кб/с.

По умолчанию hbbs слушает порты 21115(tcp) и 21116(tcp/udp), 21118(tcp), hbbr слушает порты 21117(tcp) и 21119(tcp). Удостоверьтесь, что эти порты открыты на фаерволе. Обратите внимание: Порт 21116 должен быть открыт и как TCP и как UDP. Порт 21115 используется для проверки типа NAT, 21116/UDP используется для регистрации и службы heartbeat, 21116/TCP используется для пробивания TCP отверстий и службы соединений, 21117 используется для службы ретранслятора, 21118 и 21119 используется для поддержки Web-клиентов. Если вам не нужны Web-клиент (21118, 21119) соответствующие порты можно отключить.

  • TCP(21115, 21116, 21117, 21118, 21119)
  • UDP(21116)

Установка Rusdesk

Варианты установки:

  • Linux
  • Docker (Linux, Synology, Terramaster, Proxmox LXC и т.д)
  • Windows (рассматриваться не будет)

Установка Rustdesk на Linux

Я буду устанавливать на Linux Ubuntu 22.04 серверная версия.

Для начала делаем стандартные команды

sudo apt update
sudo apt upgrade
sudo reboot

Теперь скачаем скрипт установки и запустим его. Если запросит пароль введите его.

wget https://raw.githubusercontent.com/techahold/rustdeskinstall/master/install.sh
chmod +x install.sh
./install.sh

Первое что спросит скрипт это как вы будите подключаться к вашему rustdesk серверу. Если у вас статический IP, то тут нужно указать именно его, но лучше всего указывать доменное имя купленное или DDNS. Например, можно указать ddns.example.ru. Это имя можно потом изменить, я покажу где. Нажмите 1 или 2 в зависимости от вашего выбора и укажите соответствующие значение.

На этот вопрос можно ответить нет цифрой 2. Если ответите да, то скрипт установит HTTP сервер позволяющий скачивать скрипты, для установки готовых настроенный клиентов rustdesk для windows и linux. Мне это не интересно.

По окончанию работы скрипта у нас есть полностью рабочий и настроенный сервер rustdesk. Скрипт сообщит по какому домену или IP адресу нужно подключаться клиенту, а так же сообщит публичный ключ. Ключ нужно запомнить.

Публичный находится в папке /opt/rustdesk/ в файле id_ed25519.pub на случай если вы его забудете.

Если нужно его перегенирить, то просто удалите два соответствующих файла и перезапустите hbbs и hbbr сервисы командами:

service rustdeskrelay restart
service rustdesksignal restart

Для чего нужен IP или DDNS понятно, а вот для чего ключ? Честно сказать не знаю, у меня и с ключом и без работало, но говорят с ключом трафик шифруется.

В скрипте есть косяк, который неверно генерит файл запуска rustdesksignal. Для решения этой проблемы отредактируйте файл:

nano /etc/systemd/system/rustdesksignal.service

Замените:

ExecStart=/opt/rustdesk/hbbs -k _

На:

ExecStart=/opt/rustdesk/hbbs -r ddns.example.ru

Теперь применить эти изменения

systemctl daemon-reload

И перезапустите rustdesksignal выше изложенной командой.

Все, теперь сервер rustdesk установлен на Linux и работает. Остается разрешить на фаерволе соответствующие порты и пробросить их на роутере NAT, которые я изложил в системных требованиях.

Установка Rustdesk на Synology

Я буду устанавливать на DSM 7.2, если у вас версия ниже, то можно посмотреть официальное руководство по этой ссылке.

Открываем DSM и File Station. В папке docker создаем папку rustdesk, а в ней пустую папку data как показано на картинке ниже

Открываем Container Manager, проекты и создаем проект. Придумываем название, задаем пусть /docker/rustdesk и выбираем либо файл либо текст.

Файл и текст должны содержать следующее:

Не забудьте поменять ddns.example.ru на свое значение

services:
  hbbs:
    container_name: rustdesk-hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r ddns.example.ru:21117
    volumes:
      - ./data:/root
    depends_on:
      - hbbr
    restart: unless-stopped
    network_mode: host

  hbbr:
    container_name: rustdesk-hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - ./data:/root
    restart: unless-stopped
    network_mode: host

Затем везде жмите далее и далее, а когда проект будет создан увидите Exit Code 0, который означает, что вы все сделали верно. Если нет, смотрите, что за ошибка и устраняйте ее.

Публичный находится в папке /docker/rustdesk/data в файле id_ed25519.pub на случай если вы его забудете.

Все, теперь сервер rustdesk установлен на Synology и работает. Остается разрешить на фаерволе соответствующие порты и пробросить их на роутере NAT, которые я изложил в системных требованиях.

Установка Rustdesk на Terramaster

Для установки RustDesk на TerraMaster вам понадобится Portainer. Как его установить я описал в своей статье: Установка и настройка Portainer в Terramaster

Через диспетчер файлов в папке docker создайте пустую папку rustdesk как показано на картинке ниже, а внутри создайте еще пустую папку data

Теперь нужно узнать полный путь до этой папки data. Для этого зайдите в ее свойства и увидите полный путь. Этот путь нужно запомнить.

Открываем Portainer, переходим на вкладку Stacks и жмем добавить

В этом окне придумываем имя, выбираем web editor и вставляем текст

Файл и текст должны содержать следующее:

Замените ddns.example.ru и путь до папки data на ваши значения

services:
  hbbs:
    container_name: rustdesk-hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r ddns.example.ru:21117
    volumes:
      - /home/sbaf/Docker/rustdesk/data:/root
    depends_on:
      - hbbr
    restart: unless-stopped
    network_mode: host

  hbbr:
    container_name: rustdesk-hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - /home/sbaf/Docker/rustdesk/data:/root
    restart: unless-stopped
    network_mode: host

Затем в самом низу нажмите кнопку Deploy the stack

Если все сделали верно, то появится работающий Stack

И два работающих контейнера

А в папке data появится файл id_ed25519.pub в котором будет открытый ключ для настройки клиентов RustDesk

Все, теперь сервер rustdesk установлен на Terramaster и работает. Остается разрешить на фаерволе соответствующие порты и пробросить их на роутере NAT, которые я изложил в системных требованиях.

Установка Web клиента Rustdesk

Установить Web клиента можно на любом сервере или ПК в Docker контейнере. Я покажу на примере Synology, но по аналогии будет и в TerraMaster и в Portainer и где угодно.

Открываем Container Manager, реестр и вводим в поиск keyurbhole/flutter_web_desk затем выбираем образ и нажимаем загрузить как показано на картинке ниже

Затем переходим в образы, ждем пока он скачается, выделяем и нажимаем запустить

В открывшемся окне придумываем имя и при желании устанавливаем ограничение на ресурсы

В этом окне нужно установить порт для открытия веб страницы этого контейнера. Я установил 5050.

Затем везде жмите далее не меняя никаких настроек.

После создание контейнера открывайте http://IP-NAS:5050 и откроется WEB клиент Rustdesk и можно будет подключаться к другим ПК через браузер.

Этот WEB клиент Rustdesk так же имеет настройки сервера и ключа.

Настройка клиента Rustdesk

Клиенты Rustdesk на Windows, Linux, macOS, Андроид и IOS настраиваются одинаково.

Настройка очень простая. В параметрах сети укажите сервер ID ddns.example.ru и публичный ключ.

После чего, если все сделали правильно увидите состояние готово без предупреждений о медленной работе.

Вместо итога

Для меня Rustdesk является неплохой альтернативой TeamViewer и Anydesk, но из-за того, что мне приходится работать с незнакомыми людьми рассказывать им как настроить rustdesk для работы с моим сервером не вариант. Во-первых, не все согласятся. Во вторых они будут работать через него даже без моего ведома. Мне бы этого не хотелось. Но для людей, которым нужно управлять собственным парком компьютеров или помогать друзьям и знакомым, Rustdesk отлично подойдет. Работает превосходно, мне не на что пожаловаться. Я подключался и через проводной интернет и с мобильного телефона через LTE, никаких проблем у меня не возникло, все довольно просто и понятно. А как быстро работает передача файлов с ПК на ПК это просто песня. А самое главное ни одного разрыва соединения во время тестирования у меня не было.

Теперь вы знаете как установить и настроить RustDesk удаленное управление с открытым исходным кодом. RustDesk это полная альтернатива TeamViewer и AnyDesk.

Материалы, которые помогли

Видео ролик

Подписаться
Уведомить о
guest
40 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии