Как запретить серверу 1С поиск локального аппаратного ключа и оптимизировать раздачу лицензий?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В практике администрирования систем на базе 1С:Предприятие 8.3 часто возникает специфическая задача: необходимо ограничить сервер 1С в использовании локально установленного аппаратного ключа (USB HASP). Типичный сценарий — когда на сервере активированы программные лицензии, которые должен раздавать сервер, а аппаратный ключ предназначен исключительно для клиентских машин, работающих через HASP License Manager. Рассмотрим подробнее, почему стандартные флаги в настройках не всегда помогают, и разберем по шагам, как правильно настроить такую схему.

Почему сервер 1С «игнорирует» отключение аппаратной защиты?

Проанализируем ситуацию: многие администраторы пытаются снять флаг «Использовать аппаратную защиту (ключ защиты)» в настройках консоли кластера или параметрах базы. Для управления этими параметрами в разных операционных системах удобно использовать альтернативную консоль администрирования серверов 1С (ras). Однако при поиске клиентской лицензии сервер 1С:Предприятие зачастую игнорирует этот параметр. Выясним причину этого поведения.

Дело в том, что процессы сервера (rmngr, rphost) обращаются к ключу, установленному в тот же физический сервер, напрямую через драйвер (Local API). Параметр UseHwLicenses в файлах конфигурации или настройках запуска эффективно работает для толстого и тонкого клиентов, но менеджер кластера при раздаче лицензий «видит» локальный порт USB на уровне системы. Пока ключ вставлен в сервер, драйвер Sentinel (HASP) предоставляет к нему доступ любому процессу с правами администратора или системной службы.

Проблема привязки программных лицензий к USB-ключу

Рассмотрим важный нюанс, упомянутый в обсуждении. Если ваши программные лицензии (включая комьюнити-лицензии разработчика на сервере 1С) при активации были привязаны к многопользовательскому аппаратному ключу, то любая попытка «спрятать» ключ от сервера приведет к неработоспособности программных лицензий. Проанализируем механизм проверки:

  1. При запуске сервер 1С проверяет файл программной лицензии (.lic).
  2. В файле указано, что ключом привязки является конкретный ID аппаратного HASP.
  3. Сервер опрашивает локальные USB-порты. Если ключ не найден, программная лицензия считается невалидной.

Важно: В таком случае единственный способ изолировать ключ — это выполнить перепривязку программных лицензий к параметрам самого сервера (CPU, материнская плата, BIOS) с использованием резервного пин-кода, и только после этого физически удалять ключ.

Алгоритм поиска лицензий: выясняем приоритеты

Чтобы эффективно управлять лицензиями, разберем по шагам стандартный алгоритм поиска (для версии 8.3), когда клиент подключается к серверной базе:

  1. Поиск на стороне клиента: Сначала клиентское приложение пытается найти ключ самостоятельно (локальный или сетевой через NetHASP.ini). Если на терминальном сервере стоит HASP LM, клиент может забрать лицензию оттуда.
  2. Программные лицензии на сервере: Если клиент не нашел ключ, он обращается к серверу 1С. Сервер сначала ищет свободные программные лицензии в своих каталогах.
  3. Аппаратные ключи на сервере: В последнюю очередь сервер пытается выдать лицензию с аппаратного ключа, который он видит локально.

Проблема «перетекания» лицензий (когда со временем сервер начинает выдавать всё больше лицензий с USB-ключа) связана с механизмом кэширования. 1С сохраняет информацию о последнем успешном получении лицензии в файлах 1cv8conn.pfl. Если однажды клиент получил лицензию от сервера, он будет пытаться делать это снова и снова, минуя поиск через HASP LM.

Варианты решения проблемы

Рассмотрим наиболее эффективные методы блокировки поиска локального ключа сервером.

Метод 1. Использование виртуализации (проброс USB)

Это самый надежный способ, если физически сервер только один. Проанализируем шаги:

Метод 2. Физический вынос ключа

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

  1. Устанавливаем ключ на машину «Б».
  2. Запускаем там HASP License Manager.
  3. На сервере 1С (машина «А») в файле nethasp.ini (лежит обычно в C:\Program Files\1cv8\conf) прописываем запрет на вещание (broadcast) и не указываем адрес машины «Б» в списке серверов лицензий.

При таком подходе сервер 1С будет «видеть» только свои программные лицензии, а терминальные пользователи будут забирать лицензии напрямую с машины «Б» через свои настройки nethasp.ini. В ситуациях, когда лицензии «зависают», вам может пригодиться специальное WEB приложение для управления сеансами "1С сервера", которое позволяет оперативно завершать лишние процессы.

Настройка логирования HASP License Manager

В ходе обсуждения часто возникает вопрос о контроле за раздачей лицензий. Чтобы понять, кто именно забирает лицензии с аппаратного ключа, включим лог-файл в nhsrv.ini. Разберем пример настройки секции:


[NHS_SERVER]
NHS_USERLIST = enabled
NHS_LOGFILE = C:\Logs\hasp_activity.log
NHS_LOGSIZE = 2048
NHS_LOG_ERROR_EVENTS = enabled

После внесения изменений необходимо перезапустить службу Sentinel LDK License Manager. В указанном файле вы увидите список IP-адресов и идентификаторов сессий, что поможет определить, «подсасывает» ли лицензии сервер 1С или они уходят клиентам.

Рекомендации по управлению кэшем лицензий

Чтобы сбросить «привычку» сервера выдавать лицензии с USB, после настройки ограничений рекомендуется очистить файлы параметров соединений. Перед очисткой полезно изучить подробную информацию по рабочему каталогу центрального сервера (srvinfo) и методам его очистки. Проанализируем, где они находятся:

Удаление этих файлов (при остановленной службе 1С) заставит систему инициировать поиск лицензий заново согласно установленным вами приоритетам в nethasp.ini и настройках кластера.

Подведем итог: Заблокировать поиск локального USB-ключа программными методами внутри одной ОС крайне сложно, так как сервер 1С имеет приоритетный доступ к драйверу. Наилучшим решением является либо перепривязка программных лицензий к железу с выносом ключа на другой хост, либо изоляция ключа внутри виртуальной среды.

← На главную