- Сервер терминалов для 1С по протоколу RDP на linux: рекомендации по настройке с учетом опыта реальной эксплуатации
- Небольшое, но важное отступление
- Рекомендации по установке операционной системы
- Установка и настройка сервера xrdp with xorgxrdp backend
- Установка клиента 1С: Предприятие версии 8.3.9
- Корректная настройка с временными файлами, создаваемыми платформой 1С
- Решение проблемы с невозможностью выгрузки деклараций из баз ЗУП 2.5 и Бух 2.0
- Рекомендации по организации обмена файлами и печати с удаленных офисов
- Возможные альтернативы
- Заключение
- Ubuntu + XRDP + x11RDP терминальный сервер, с поддержкой звука, для серфинга в интернете — пошаговое руководство
- Что это такое и для чего это нужно
- История номер один. (основано на реальных событиях)
- История номер два. (основано на реальных событиях)
- Предисловие
- x11RDP
- Небольшое отступление
- Настройка языковой консоли и режима переключения языков
- Готовый пакет для установки
Сервер терминалов для 1С по протоколу RDP на linux: рекомендации по настройке с учетом опыта реальной эксплуатации
В статье рассматриваются нюансы установки и настройки терминального сервера по протоколу RDP для работы с базами 1с на платформе 8.3 на базе дистрибутива Xubuntu 14.04 с учетом возможностей последней версии сервера xrdp и опыта реальной эксплуатации.
Не так давно (в конце декабре 2016 года) вышел в свет очередной релиз сервера xrdp версии 0.9.1. Одновременно с этим была выпущена стабильная версия одного из «бекендов» xrdp — xorgxrdp v 0.2.0. Эти версии мы и будем использовать далее при установке.
Небольшое, но важное отступление
В составе дистрибутивов linux в-основном содержится устаревшая версия сервера xrdp версии 0.6.x, в которой имеются баги, которые мешают нормально работать с 1с (например, не работает нормально буфер обмена с русскими символами).
В основном, когда рассматривается установка терминального сервера на базе протокола rdp на linux, рассматриваются варианты установки сервера xrdp со сборкой X11Rdp бекенда с помощью специальных скриптов, например, X11RDP-o-Matic (для ubuntu) — статья на хабре, статья на infostart.
Использование бекэнда X11Rdp несет в себе несколько минусов:
- Достаточно долгое время сборки
- Сложно решить проблему с переключением языков. После переподключения к сеансу переключение языков может перестать работать. Автор регестрировал проблему на сайте разработчиков — гарантированное решение было найдено автором только для бекенда xorgxrdp правкой исходно кода (далее этот метод используется в статье)
- Скорость отрисовки может оказаться недостаточно быстрой для комфортной работы пользователей
Использование бекэнда xorgxrdp позволяет указанных проблем избежать.
В статье рассматривается установка на Xubuntu версии 14.04 LTS, а не более свежей версии 16.04 LTS, по причине падения производительности при прорисовке удаленного экрана. Есть зарегистрированная проблема по данной ситуации. Кому-то помогало отключение compositor в настройках, но автору статьи не удалось добиться такой же скорости прорисовки, как на версии Xubuntu 14.04.
Рекомендации по установке операционной системы
Для установки используем 32-битную версию ОС Xubuntu 14.04. Ссылка на образ.
Система может быть установлена как на хост, на и в виртуальную среду. Я обычно предпочитаю виртуализацию KVM, рабочие сервера ставились на ней.
При разбивке дисков использовалась классическая схема (не LVM), файловая система ext4. В виртуальную машину подключено 3 диска фиксированного размера:
- 22 Гбайта: 18 Гигабайт точка монтирования /, остальное под swap
- 5 Гбайт: точка монтирования /var
- 5 Гбайт: точка монтирования /tmp
Данное разбиение — это предпочтение автора с учетом удобства эксплуатации. В любом случае, при планировании дискового пространства необходимо учитывать возможную нагрузку на файловую систему. При использовании файловых баз данных желательно использовать SSD диск(и).
Для сервера необходимо установить статический IP-адрес.
Для удобства ввода команд для последующей установки необходимо установить OpenSSH-сервер:
При активированном firewall открываем порт 22:
Установка и настройка сервера xrdp with xorgxrdp backend
На сайте разработчиков есть инструкция для установки на debian 8, используем ее за основу.
Устанавливаем необходимые зависимости:
Создаем каталог для загрузки дистрибутивов:
Клонируем из репозитория текущую последнюю сборку xrdp и собираем с кодеком rfxcodec:
Устанавливаем xrdp в систему:
Скачиваем дистрибутив xorg-xrdp бекенда:
Устанавливаем жесткое правило переключения раскладки с русского на английский язык сочетанием клавиш Ctrl+Shift для решения проблемы переключения раскладок. Корректность проверяется созданием сессии — 1-я проверка, отключаемся, подключаемся еще раз в ту же сессию — заново еще раз проверяем.
В терминале присваиваем значения временных переменных:
Делаем замену кода в исходном файле:
Компилируем и устанавливаем в систему xorg-xrdp бекэнд:
Желательно в файле /etc/xrdp/xrdp.ini поменять местами блоки [X11rdp] и [Xorg], чтобы у пользователя по умолчанию был правильный бэкэнд. При подключении к серверу нужно выбирать Xorg в списке сессий.
При необходимости изменения порта по умолчанию с 3389 на другой, редактируем файл /etc/xrdp/xrdp.ini: в разделе [Globals] меняем значение переменной port=3389 на требуемый.
При активированном firewall открываем порт 3389(либо тот, на который стандартный был изменен):
После настроек перезапускаем службу
Теперь можете подключиться к серверу через стандартного клиента с windows либо с linux любым клиентом, который поддерживает протокол rdp.
Внимание: перед подключением необходимо убедиться, что раскладка клавиатуры на клиентской машине установлена в английский язык, иначе не получится ввести имя пользователя и пароль в окне выбора сессий сервера xrdp.
После установки желательно проверить, что нормально работает буфер обмена с кириллическими символами в обе стороны. Также можно убедиться, что работает копирование файлов через буфер обмена с русскими символами (это одни из основных проблем, которые были устранены в последних сборках сервера xrdp и которые раньше мешали нормально использовать в рабочей среде сервер терминалов на базе xrdp).
Установка клиента 1С: Предприятие версии 8.3.9
В связи с тем, что в последних версиях платформы компания 1с довела нативного клиента для ОС на базе linux до состояния, с которым можно более менее комфортно работать, будем использовать именно его, а не пытаться установить wine, а поверх клиента для ОС Windows.
Устанавливаем дополнительные компоненты, необходимые для корректной работы:
Скачиваем в папку с сайта 1с дистрибутив клиента и сервера:
Так как компонеты сервера 1с нужны были только для удовлетворения зависимостей, отключаем службу:
Если используется сетевой hasp-ключ, то пропишем параметры поиска:
Если используются программные лицензии, то их необходимо активировать через конфигуратор (можно на пустой файловой базе данных).
Корректная настройка с временными файлами, создаваемыми платформой 1С
В процессе работы столкнулись с проблемой, когда у одного пользователя внешняя обработка заполнения табличной части работает, а у другого нет — выдается сообщение о нарушении прав доступ. Проблема заключается в том, что платформа 1С создает временные файл /tmp/PrnForm.tmp, т.е. путь до файла одинаковый у разных пользователей. Соответственно, первый пользователь, который воспользовался обработкой, неявно создал во временной папке файл, на который есть доступ на изменение только у него. Другой пользователь уже не может переписать файл.
Решение заключается в правильной настройке общесистемной umask, отнесение пользователей к одинаковой группе, а также правильной настройкой прав на временную папку /tmp.
Редактируем общесистемную маску. Правим файл:
в нем меняем значение на:
Всех терминальных пользоватлей относим в группу Users (если не были отнесены ранее, можно и в другую группу).
Меняем права на папку tmp
Если используется обмен с сайтом Битрикс, то аналогичные настройки нужно сделать для папки /var/log/bitrix.
Вариант решения подобной проблемы применительно 1С описан в статье.
Решение проблемы с невозможностью выгрузки деклараций из баз ЗУП 2.5 и Бух 2.0
Есть одна неприятная особенность, которая может помешать бухгалтерам на клиенте 1C для linux выгружать декларации из зарплатной базы и бухгалтерии — после выбора файла и попытке выгрузить будет выдаваться сообщение вида «Нет доступа к каталогу [НазваниеКаталога]. Проверьте корректность имени каталога выгрузки!
Решение найдено и заключается в необходимости замены кода „Кат = Новый Файл(ПутьДляВыгрузки + “NUL»);» на «Кат = Новый Файл(ПутьДляВыгрузки);» в «Обработка.ОбщиеОбъектыРегламентированнойОтчетности.Форма.НастройкаПараметровСохраненияРегламентированногоОтчета.Форма.Модуль». К сожалению, для таких изменений придется конфигурацию снимать с поддержки.
Рекомендации по организации обмена файлами и печати с удаленных офисов
В случае, если с сервером работа ведется только в рамках локальной сети, проблем никаких нет — samba работает хорошо.
В случае, если у предприятия сеть распределенных офисы, то часто встает вопрос об организации удобного обмена файлами и настройки печати.
Для обмена файлами удобно использовать выделенный аккаунт dropbox — выделенная папка на сервере синхронизируется с облаком, а на клиентах либо через предоставление общего доступа к папке dropbox либо с тем же самым аккаунтом настраивается клиент.
Для печати на удаленные принтеры удобно использовать схему построения виртуальной частной сети, в этом случае решается проблема даже с теми удаленными точками, на которых нет фиксированного IP-адреса. Доступ к принтеру будет доступен по IP-адресу внутри VPN-сети. Как вариант, предлагаю использовать NeoRouter Free. Настройка данного продукта выходит за рамки данной статьи.
Возможные альтернативы
К сожалению, стабильно работающих бесплатных альтернатив на текущий момент я не вижу. Был достаточно успешный опыт использования связки OpenSuse 11.2+FreeNX (от etersoft) + WineEtersoft (купленный) для работы с конфигурациями на базе платформ 8.1, но на текущий момент такая связка для новых установок потеряла актуальность — не все пакеты можно найти для установки, на более свежих версиях ОС Linux и конфигурациях 1С скорость отрисовки ужасная.
Было достаточно много времени потрачено на тестирование других продуктов типа x2Go, но там также есть много НО: при подключении со свежих версий ОС типа Windows 8, Windows 10 есть артефакты при отрисовке изображения и т.п. В общем, если для административных функций альтернативные решения еще как-то подходят, то для реальной работы с решениями фирмы 1С не очень.
Заключение
При рассмотрении возможности перехода не рассмотренное решение нужно учесть такой фактор, как наличие торгового оборудования. Не все торговое оборудование поддерживается в linux, а тем более мало, что можно запустить через RDP.
В целом же при желании сэкономить на лицензиях Windows можно обойтись и решениями на базе LINUX, тем более в последнее время разработка XRDP идет ударными темпами. В марте этого года планируется выпуск версии 0.9.2 — это следует из опубликованных Release notes.
Источник
Ubuntu + XRDP + x11RDP терминальный сервер, с поддержкой звука, для серфинга в интернете — пошаговое руководство
Особенно нетерпеливых отсылаю сразу в конец статьи где будет ссылка на готовый .deb-пакет для установки.
А для всех остальных…
Что это такое и для чего это нужно
В первую очередь данное решение можно использовать как очень бюджетный вариант реализации безопасного доступа к интернет сотрудникам небольшой фирмы.
История номер один. (основано на реальных событиях)
Предположим бухгалтеру, в конце отчетного периода, когда все «на ушах», на
эл.почту приходит страшное письмо от «Налоговой Полиции» в котором говорится о том, что её фирма попала под жуткую проверку и ей следует немедленно ознакомиться с официальным документом который находится в прикреплённом к письму файле.
В панике бухгалтер пытается открыть прикреплённый файл и… все компьютеры фирмы подключенные в данный момент к внутренней локальной сети получают порцию вируса щифровальщика который парализует работу фирмы не не один день.
В случае с реализацией доступа через терминал на всех! компьютерах блокируется прямой доступ в интернет. Если работнику понадобилось в сеть для серфинга (почта, скайп, мессенджер) то он просто щелкает по иконке на рабочем столе и попадает на альтернативный рабочий стол где он может делать всё что угодно. В случае заражения при просмотре почты или любым другим способом вирус попадает на одинокую локальную машину (терминальный сеанс) которая не имеет доступа к сети предприятия и другим компьютерам. Так же в данном сеансе не хранятся важные документы и бухгалтерские базы данных. Поэтому ущерба, даже при полном удалении информации внутри сеанса, не будет абсолютно ни какого. Так же терминальную сессию можно просто свернуть в трей и открывать по мере необходимости, если пикнуло сообщение от мессенджера или поступил скайп звонок.
История номер два. (основано на реальных событиях)
Предположим один из сотрудников принес на флешке взломанную лицензионную программу которую поставил к себе на компьютер, в данном случае не рассматриваем доменные структуры AD, речь идет о небольших фирмах где не содержат штат сетевиков. После установки данной программы она спокойно может пожаловаться разработчикам через интернет что на компьютере по такому то IP кто то поставил взломанную версию и спокойно пользуется.
Дальше дело техники. Причем разборки могут быть очень серьёзные.
При реализации варианта терминал сервера данный вариант так же не проходит так как у локального компьютера просто нет доступа к сети и любая программа шпион не сможет вынести сор из избы.
Предисловие
Данное руководство, в первую очередь, ориентировано на начинающих системных администраторов желающих разобраться в сути вопроса. Так что для продвинутых в тексте может оказаться много лишнего. В руководстве постараюсь максимально подробно описать процесс настройки linux терминального сервера использующегося для безопасного интернет серфинга и описать решение известных проблем.
Для того чтобы все прошло успешно настоятельно советую, для начала, использовать те же самые версии ПО что и в данном описании. Потом, на основе полученного опыта, вы сможете реализовать данный проект на удобном Вам оборудовании и ПО.
Сборка и тестирование производилось на виртуальной машине от virtualbox. При использовании чистого железа так же могут возникнуть проблемы с настройками драйверов. Из программного обеспечения были использованы Ubuntu 16.04 LTS server / x11RDP 7.6 / xRPD 0.9.2. На других версиях данное решение не тестировалось и не проверялось.
XRDP является специальным прокси-сервером который прослушивает RDP port 3389 на предмет внешних запросов. Принимает на него подключения и далее, в зависимости от настроек, переадресовывает их на внутренние порты OS.
Для установки скомпилируем необходимые пакеты:
По умолчанию в репозиториях UBUNTU 16.04 находится пакет xRDP v0.6.0 в котором я не смог найти решения для рализации передачи звука. Поэтому собирать новую версию xRDP будем из исходников.
На многих сайтах советуют клонировать свежую версию при помощи git:
Но, в данном случае, возникает риск того что, на момент тестирования, вы можете столкнуться с совершенно новой версией имеющей значительные отличия от v0.9.2 и что то может пойти не так. Поэтому скачиваем и распаковываем фиксированный пакет XRDP v0.9.2 с сайта разработчиков.
Перейдем в каталог с XRPD и начнем компиляцию:
На данном этапе необходимо указать компилятору что в готовую сборку необходимо добавить модуль поддержки звука. Более подробно об этом можно прочесть в файле который теперь находится на вашем диске в каталоге с исходниками XRDP.
Установим библиотеки необходимые для переадресации звука.
Добавляем ключ активирующий звук —enable-load_pulse_modules при конфигурации пакета, собираем и устанавливаем.
Теперь скопируем ключ защиты. В данном файле содержится пара ключей RSA, используемая для аутентификации удаленного клиента. Открытый ключ является самозаверяющим. Если этого не сделать то при подключении получим ошибку протокола RDP.
Добавляем XRDP в автозагрузку. Для автозагрузки будем использовать systemd:
Проверим прошла ли установка:
$ xrdp: A Remote Desktop Protocol server.
Copyright © Jay Sorg 2004-2014
See www.xrdp.org for more information.
Version 0.9.2
Если все сделано верно то теперь можно попробовать подключиться к серверу при помощи любого RDP клиента с другого компьютера. Или установить на этой же тестовой машине клиент freerdp:
И подключится локально внутри системы.
Дальше стартовой заставки дело не пойдет потому что у нас пока не установлена серверная часть ПО которой прокси сервер XRDP был бы должен передать управление.
x11RDP
В качестве серверной части могут быть использованы серверные модули поддерживающие разные протоколы передачи данных. В данном варианте будем использовать x11RDP v7.6.
Небольшое отступление
Все дело в том, что установленный нами ранее прокси XRDP 0.9.2 не может, без доработок, перебрасывать подключения к предыдущей версии сервера x11RDP v7.1 на котором, в свою очередь, отсутствует известная проблема с переключением раскладок клавиатуры ru/en как при создании нового сеанса так и при переподключении к старой сессии.
А при использовании старой версии прокси XRDP 0.6.0 с которой работает сервер x11RDP v7.1 мы не сможем осуществить переброс звука так как XRDP 0.6.0 не поддерживает ключ —enable-load_pulse_modules.
Для установки x11RDP v 7.6 вернемся в каталог:
Создадим каталог для установки пакета и произведем сборку.
Сборка происходит достаточно долго 15-30 мин. Команда time позволит нам увидеть, по окончании процесса процесса, сколько было затрачено времени.
Теперь у нас есть и RDP прокси и RDP сервер которому прокси передаст управление. Но нет графического приложения которое RDP сервер сможет вывести на экран.
Для дальнейшего тестирования, чтобы убедиться что все установки прошли успешно, установим графический эмулятор терминала xterm.
И попробуем подключиться к серверу со стороны, или локально если ранее установили freerdp.
Теперь из меню необходимо выбрать x11RDP чтобы указать прокси какому именно серверу должно быть передано управление и ввести логин и пароль к ubuntu серверу.
Если все верно то на экране мы увидим графический интерфейс терминала xterm.
Настройка языковой консоли и режима переключения языков
Почти все основные настройки клавиатуры в ubuntu осуществляются при прмощи пакета setxkbmap.
Для начала закроем терминальную сессию и вернемся в консоль нашего ubuntu сервера
посмотрим что творится с клавиатурой.
Теперь подключимся к серверу терминалов и в терминале xterm выполним ту же команду:
$ Trying to build keymap using the following components:
keycodes: xfree86+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us+inet(pc105)
geometry: pc(pc105)
xkb_keymap <
xkb_keycodes < include «xfree86+aliases(qwerty)» >;
xkb_types < include «complete» >;
xkb_compat < include «complete» >;
xkb_symbols < include «pc+us+inet(pc105)» >;
xkb_geometry < include «pc(pc105)» >;
>;
Есть русская консоль и определены клавиши переключения языка alt_shift. На сервере терминалов противоположность:
Есть только английский язык и клавиши переключения языка не определены.
Есть еще одна странность. Локально, на сервере ubuntu, модель клавиатуры определилась как pc104:
А на сервере терминалов как pc105:
Если вы решили производить тестирование не на виртуальной машине, а на чистом железе
то результат может отличаться в зависимости от типа использованного оборудования.
Вернемся к ubuntu серверу и посмотрим что установлено в конфигурационных файлах системы
по умолчанию
$ # KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL=«pc105»
XKBLAYOUT=«us,ru»
XKBVARIANT=»,»
XKBOPTIONS=«grp:alt_shift_toggle,grp_led:scroll»
BACKSPACE=«guess»
Установим hwinfo (сборщик информации об аппаратной части системы) и посмотрим информацию о железе:
В итоге аппаратно модель клавиатуры, в нашем случае определяется как pc104, в файлах конфигурации системы прописано обращение к устройству pc105. На локальном сервере определяется pc104, на сервере терминалов pc105. Из за данного несоответствия, в частности, возникает несколько глюков. Многие пишут что не могут справиться с настройкой локали на терминальном сервере. У некоторых пропадает русификация после переподключении к отвалившейся сессии и те пе.
Откроем в любом текстовом редакторе (я использую в примере редактор nano) файл конфигурации системы и исправим тип клавиатуры по умолчанию в соответствии с данными полученными от hwinfo:
Файл клавиатурных настроек программы XRDP 0.9.2 находится в файле
/etc/xrdp/xrdp_keyboard.ini. Эти данные прокси передает xRDP серверу как данные клиента который производит подключение. Откроем его и добавим в конец данного файла блок поддержки русской локали.
Предварительно исправив модель клавиатуры на верную model=pc104 (в оригнальной версии установлена pc105):
Добавляем в конец файла:
[rdp_keyboard_ru]
keyboard_type=4
keyboard_subtype=1
model=pc104
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru
[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru
Подключаемся к терминальному серверу. Проверяем клавиатурные настройки:
$ Trying to build keymap using the following components:
keycodes: xfree86+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us+ru:2+group(alt_shift_toggle)
geometry: pc(pc104)
xkb_keymap <
xkb_keycodes < include «xfree86+aliases(qwerty)» >;
xkb_types < include «complete» >;
xkb_compat < include «complete» >;
xkb_symbols < include «pc+us+ru:2+group(alt_shift_toggle)» >;
xkb_geometry < include «pc(pc104)» >;
Все в порядке, клавиатура определяется верно:
и появился русский язык с переключением по alt_shift. Закрываем сеанс оставляя его работать в фоне и переподключаемся к нему же снова чтобы проверить что не возникает известной проблемы при которой локаль пропадает при переподключении к уже открытому ранее сеансу.
В ubuntu старше 10.10, по умолчанию, за вывод звука отвечает сервер pulseaudio. В десктопных дистрибутивах он уже установлен. В серверных нет. Поэтому установим его.
Посмотрим и запишем номер версии пакета который по умолчанию установился в нашу систему:
Для начала скачаем исходники pulseaudio. Сделать это можно двумя способами.
1. Скачать общую версию с сайта разработчиков (freedesktop.org/software/pulseaudio/releases/) скачивать надо именно ту версию которую мы определили ранее. В нашем случае pulseaudio 8.0
2. Более правильно — подключить deb-src репозитории системы и получить исходники которые использовали авторы данного ubuntu дистрибутива.
По умолчаню ссылки на исходники в ubuntu отключены. Для подключения отредактируем файл списка репозиториев:
Необходимо удалить значки # перед всеми списками deb-src репозиториев.
$ E: Вы должны заполнить sources.list, поместив туда URI источников пакетов
Переходим в установочный каталог XRDP:
Исправляем make файл.
/pulseaudio* в данном случае не проходят. Необходимо точно прописать адрес каталога.
Замените admin на имя пользователя в Вашей системе. Сохраняем исправленный файл и делаем:
Если все выполнено верно в каталоге будут скомпилированы 2 новых библиотеки
module-xrdp-sink.so и module-xrdp-source.so.
Осталось только скопировать их в рабочий каталог с библиотеками сервера pulseaudio:
После перезапуска звук будет активирован.
Осталось установить любую удобную графическую оболочку. Для терминального сервера желательно что то не ресурсоемкое.
XFCE
Минимальный набор элементов:
Полный набор элементов:
LXDE
Минимальный набор элементов:
Полный набор элементов:
В зависимости от версии установленной графической оболочки, для её запуска возможно понадобится настроить файл .xsession
Готовый пакет для установки
XRDP v0.9.2 + скомпилированные библиотеки pulseaudio 8.0 + исправленный keyboard.ini файл для поддержки русификации. Те же кто не хочет сам собирать бакенд x11RDP v7.6 по этой же ссылке могут скачать готовый deb пакет бакенда xorg v.0.2.0. Порядок установки для совсем ленивых
Повторюсь что пакеты собирались практически на коленках и работа протестирована только
на ubuntu 16.04 server. Работоспособность данных .deb-пакетов на других системах не гарантирована.
Источник