В практике администрирования систем на базе «1С:Предприятие» часто возникает задача оптимизации использования аппаратных ключей защиты. Типичная ситуация: у разработчика или в небольшом офисе есть локальный USB-ключ HASP, но занимать им физический порт на рабочем компьютере неудобно. Возникает логичный вопрос: можно ли подключить этот ключ напрямую к USB-разъему роутера, чтобы он стал доступен по локальной сети всем участникам? При этом крайне желательно избежать ситуации, когда для раздачи лицензий требуется держать постоянно включенным выделенный сервер или один из рабочих компьютеров пользователей.
В рамках данной статьи мы подробно проанализируем технические ограничения этого процесса, разберем, почему классический менеджер лицензий не запустится на стандартном роутере, и рассмотрим единственно верное рабочее решение — технологию USB-over-IP (USBIP). Мы пошагово разберем процесс настройки серверной части на роутере и клиентской части на операционной системе Windows.
Для начала проанализируем, почему стандартные средства защиты 1С отказываются работать «из коробки» при простом подключении ключа в USB-порт роутера. Чтобы сетевой ключ HASP стал доступен клиентским приложениям через локальную сеть, на компьютере, где физически установлен ключ, должна быть запущена специальная служба — HASP License Manager (HASP LM).
Разработчик средств защиты (компания Sentinel/Aladdin) выпускает HASP License Manager в виде скомпилированных бинарных файлов для операционных систем Windows и Linux. Однако эти файлы созданы строго для x86-совместимых процессоров (архитектуры Intel и AMD). Современные же роутеры, даже работающие под управлением встроенных операционных систем на базе ядра Linux (таких как OpenWrt, KeeneticOS, Padavan), построены на базе процессоров с архитектурой ARM или MIPS. Запустить стандартный x86-бинарник HASP License Manager на таком процессоре напрямую невозможно.
Но решение есть. Чтобы обойти это архитектурное ограничение, нам не нужно заставлять роутер обрабатывать лицензии 1С и запускать на нем менеджер лицензий. Достаточно использовать роутер в роли «умного удлинителя» USB-порта по сети. Эту задачу решает технология USB-over-IP (USBIP).
При использовании USB-over-IP физический ключ защиты 1С вставляется в USB-порт роутера. Специальная служба на роутере перехватывает трафик этого USB-порта и инкапсулирует его в пакеты протокола TCP/IP, отправляя в локальную сеть. На стороне клиентского компьютера запускается программа-клиент, которая принимает этот сетевой трафик и создает в системе виртуальный USB-контроллер. Операционная система Windows (и, соответственно, платформа «1С:Предприятие») воспринимает этот виртуальный порт как полноценный физический разъем материнской платы. Для системы ключ выглядит так, будто он подключен непосредственно к компьютеру.
Рассмотрим пошагово, как реализовать эту схему на практике.
Для реализации схемы нам понадобится роутер с установленной альтернативной прошивкой, поддерживающей установку дополнительных пакетов (например, OpenWrt, либо роутер марки Keenetic с активированной средой Entware).
Рассмотрим процесс настройки на примере роутера под управлением прошивки OpenWrt. Нам необходимо подключиться к роутеру по протоколу SSH и выполнить установку необходимых модулей ядра и утилит.
Выполним последовательно следующие команды в терминале роутера:
# Обновляем индекс пакетов репозитория
opkg update
# Устанавливаем драйверы ядра для поддержки USBIP
opkg install kmod-usbip kmod-usbip-server kmod-usb-ohci kmod-usb2
# Устанавливаем пользовательские утилиты управления USBIP
opkg install usbip-server usbip-client
После успешной установки пакетов необходимо физически подключить ключ HASP 1С в USB-разъем роутера. Теперь нам нужно определить системный идентификатор подключенного устройства. Для этого выполним команду:
usbip list -l
В выводе команды мы увидим список подключенных к роутеру USB-устройств. Нам необходимо найти устройство, в описании которого упоминается Aladdin Knowledge Systems (или Sentinel), и записать его шинный идентификатор (например, 1-1 или 1-1.2).
Теперь запустим службу трансляции портов и привяжем наш HASP-ключ к сетевому вещанию с помощью следующих команд:
# Запуск демона USBIP на стандартном порту 3240
usbipd -D
# Экспорт устройства (вместо 1-1 укажите ваш идентификатор шины)
usbip bind -b 1-1
Чтобы данные настройки не сбрасывались при перезагрузке роутера, настоятельно рекомендуем добавить эти команды в скрипт автозапуска роутера (файл /etc/rc.local перед строкой exit 0).
После того как роутер начал транслировать USB-порт с ключом 1С в локальную сеть, перейдем к настройке рабочего компьютера пользователя или программиста, которому требуется этот ключ.
Для операционных систем Windows существует отличный бесплатный проект с открытым исходным кодом — usbipd-win (или классический usbip-win). Также можно воспользоваться коммерческими утилитами с удобным графическим интерфейсом, такими как USB Redirector или VirtualHere. Последняя крайне проста в настройке, так как ее серверная часть представляет собой один исполняемый файл, запускаемый на роутере.
Рассмотрим подключение с помощью консольной утилиты usbip на стороне Windows. Скачайте дистрибутив клиента, распакуйте его и запустите командную строку от имени администратора. Перейдите в каталог с утилитой и выполните следующие действия:
1. Проверим доступность экспортируемых устройств на роутере (предположим, IP-адрес нашего роутера в локальной сети — 192.168.1.1):
usbip.exe list -r 192.168.1.1
В консоли должен отобразиться наш ключ HASP 1С с тем самым идентификатором шины, который мы привязывали на роутере (например, 1-1).
2. Выполним подключение (монтирование) устройства к нашей системе Windows:
usbip.exe attach -r 192.168.1.1 -b 1-1
После выполнения этой команды операционная система Windows обнаружит новое устройство. В Диспетчере устройств появится стандартное устройство защиты Aladdin HASP key или Sentinel USB Key (в зависимости от установленных у вас драйверов защиты 1С). Платформа «1С:Предприятие» при запуске мгновенно обнаружит этот ключ как локальный и успешно запустится.
При планировании данной схемы важно понимать ключевую особенность технологии USB-over-IP: проброс физического USB-порта по сети всегда осуществляется монопольно на один конкретный компьютер. То есть одновременно подключить один и тот же порт к двум разным ПК напрямую через утилиту usbip не получится.
Исходя из этого, рассмотрим два сценария организации работы.
Если у вас на руках обычный локальный ключ (например, фиолетовый однопользовательский ключ разработчика H4 M1 ORGL8), то схема настраивается максимально просто. Ключ монтируется на компьютер программиста. В результате физический USB-порт на ноутбуке или системном блоке остается свободным, а ключ надежно спрятан в роутере и доступен по воздуху (через Wi-Fi) или по кабелю в пределах домашней или офисной локальной сети.
Если вы используете красный сетевой ключ (например, на 5, 10 или более пользователей), схема подключения усложняется, но остается полностью реализуемой:
475.nethasp.ini прописывается IP-адрес этого компьютера-сервера. Рассмотрим пример правильной настройки секции [NH_TCPIP] в файле nethasp.ini:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; IP-адрес компьютера, куда проброшен ключ через USBIP
NH_PORT_NUMBER = 475
NH_TCPIP_METHOD = UDP
Благодаря такой комбинированной схеме все пользователи сети смогут одновременно получать лицензии, при этом сам физический ключ будет безопасно находиться в USB-порту роутера.
Проанализируем ключевые моменты, на которые системному администратору стоит обратить внимание при эксплуатации данной схемы:
USB Redirector или через планировщик задач Windows для usbip), чтобы восстанавливать связь автоматически.Таким образом, утверждение о том, что подключить ключ 1С к роутеру невозможно из-за отсутствия менеджера лицензий под процессоры роутеров, является ошибочным. Используя технологию USB-over-IP, мы превращаем роутер в надежный беспроводной удлинитель, успешно решая поставленную задачу с минимальными затратами времени и ресурсов.