Тонкий клиент (RDP-клиент) под управлением Linux

В этой статье пойдет речь о подключении терминальных устройств под управлением операционных систем Linux к службе удаленных рабочих столов Windows по протоколу Remote Desktop Protocol (RDP). Статья рассчитана на читателя с начальными навыками настройки Linux.

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

Остается вопрос какими терминалами оснастить рабочие места сотрудников. Есть несколько вариантов решения этого вопроса со своими плюсами и минусами:

  1. Приобрести т.н. «тонкие клиенты» - относительно недорогие рабочие станции в компактных корпусах без жестких дисков. Плюс в том, что они компактны, в них ничего не крутится и не создает шум, не нуждаются в настройке каждого отдельного терминала. Минус в цене, т.к. не смотря на отсутствие в них дисковой подсистемы они остаются дорогими в связи с компактностью и малым спросом. И для работы таких бездисковых клиентов потребуется дополнительное проприетарное программное обеспечение, не входящее в Microsoft Windows Server, как правило платное. И такое ПО будет работать не во всех ситуациях, например, если сервер не в локальной сети, а где-то в Интернет за межсетевыми экранами, придется как следует поплясать с админским бубном вокруг этой системы.
  2. Использовать устаревшие компьютеры. Плюс в том, что в давно работающей организации такое железо наличествует в каком-то количестве, что в свою очередь не требует никаких дополнительных затрат. Минус в том, что старое железо занимает много места, шумит, греется и ломается, кроме того остается вопрос с программным обеспечением для него. Хорошо, если в свое время эти компьютеры продавались с OEM лицензиями Windows. А если нет? Надо как-то решать этот вопрос. И тут на помощь приходит Linux, свободный и бесплатный, надо только его подружить со службой удаленных рабочих столов, об этом и пойдет речь в статье.
  3. Микрокомпьютеры на базе процессоров ARM под управлением операционной системы Linux. На первый взгляд сплошные плюсы: цена, компактность, не греется, не крутится, не шумит. Все что надо на борту есть: сеть, звук, USB, Bluetooth. Но вот штатная утилита подключения к удаленному рабочему столу, если она вообще есть, вызывает оторопь и ужас. Но если там Linux и есть root доступ, то все можно исправить. Читайте как.

Итак, все очень просто. Нужно установить FreeRDP - свободный клиент для протокола RDP. Он доступен практически для всех платформ и присутствует в репозиториях всех популярных дистрибутивов Linux.

Для установки потребуется root доступ

DEB-based дострибутивы Linux:

$ sudo apt-get install freerdp

RPM-based дострибутивы Linux:

# yum install freerdp
В состав Ubuntu входит клиент для подключения к службам удаленных рабочих столов Remmina. Он работает как графическая оболочка для пакета FreeRDP и сразу же после его установки подключается к серверам именно через него. В Ubuntu можете использовать Remmina или запускать FreeRDP из консоли для более гибкой настройки.

Разберемся с нужными нам параметрами консольной команды. Откроем справку:

$ man xfreerdp

и познакомимся с опциями:

/v <server>[:port]указывает адрес:порт сервера службы удаленны рабочих столов. Адрес можно задавать как в виде IP адреса, так и в виде доменного имени
/f полноэкранный режим, как раз то, что нужно для тонкого клиента
/u [<domain>\]<user>указывает имя пользователя на сервере службы удаленных рабочих столов
/p <password>и его пароль
/compressionиспользовать сжатие протокола RDP, используйте эту опцию при медленной скорости соединения с сервером
/soundперенаправлять вывод звука с сервера на клиент
/microphoneперенаправлять звук микрофона с клиента на сервер
/multimediaперенаправлять поток вывода видео с сервера на клиент
+clipboardперенаправлять в обе стороны буфер обмена
/printerперенаправлять на сервер принтеры, подключенные к клиенту
/usbперенаправлять на сервер USB устройства, подключенные к клиенту
+fontsсглаживать экранные шрифты
+aeroотображать визуальные эффекты Windows в RDP клиенте
/rfxиспользовать расширение протокола RemoteFX
/gdi:<sw|hw>использование программного или аппаратного ускорения графики на клиенте

Как можно заметить, это далеко не полный список опций, которые можно использовать для более гибкой настройки клиента, но нам для начала достаточно.

Допустим, сервер служб удаленных рабочих столов под управлением Windows Server 2008 R2 SP1 или выше находится в локальной сети по адресу 10.0.0.4, порт используется по умолчанию 3389, пользователя зовут user, его пароль parol, на клиенте имеется аппаратный ускоритель графики. Запускаем:

$ xfreerdp /v 10.0.0.4 /u user /p parol /sound /microphone /multimedia +clipboard /printer /usb +fonts +aero /rfx /gdi:hw

Для удобства пользователей, добавьте эту команду в автозапуск или сделайте ярлык запуска на рабочем столе.