С сервера лицензий не берутся лицензии: диагностика и настройка HASP и программной защиты

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

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

Суть проблемы

Представим конфигурацию сети:

  1. Сервер А (Рабочий сервер 1С): На нем физически установлен аппаратный ключ защиты (например, на 50 пользователей).
  2. Сервер Б (Сервер лицензирования): На нем активированы пакеты программных лицензий. Особенность в том, что эти программные лицензии при активации были привязаны к аппаратному ключу, который установлен на Сервере А.
  3. Сервер В (Посторонний): В сети есть еще один менеджер лицензий (HASP LM) с другим ключом, который «мешает» корректному поиску.

Симптомы проблемы: утилита ring license validate на сервере лицензирования показывает, что все в порядке. Однако рабочий сервер 1С не может забрать лицензии для клиентов. В логах или сообщениях об ошибке мы видим, что система пытается обратиться не к тому ключу защиты (неверный ID серии ключа), либо возникает ошибка привязки лицензии.

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

Анализ ошибки привязки к сетевому ключу

Первое, на что нам необходимо обратить внимание, — это ошибка вида:


Ошибка программного лицензирования. Ошибка привязки программной лицензии к компьютеру:
file://C:/ProgramData/1C/licenses/202xxxxxxxx056.lic
В текущей конфигурации компьютера имеются:
HASP_0: ORGL8, client, 5 users, id 12xxxxxxx74, 1

Здесь мы видим две проблемы:

  1. Лицензия ищет ключ, к которому она привязана (в примере автора темы подразумевается ключ с ID 20xxxxxx270).
  2. Фактически система «видит» в сети другой ключ (ID 12xxxxxxx74).

Важное архитектурное правило: Крайне не рекомендуется привязывать программные лицензии на Сервере лицензирования к аппаратному ключу, который установлен на другом компьютере (сетевому ключу). И вот почему:

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

Настройка nethasp.ini для правильного поиска ключа

Если в сети несколько менеджеров лицензий (HASP LM), платформа 1С по умолчанию использует широковещательный запрос (Broadcast). Это значит, что она "кричит" на всю сеть: "У кого есть лицензия?". Кто первый ответил (или чей ответ быстрее дошел), тот ключ и будет использован.

В нашем случае отвечает "неправильный" ключ. Чтобы заставить сервер видеть строго определенный ключ, нам нужно настроить файл nethasp.ini. Обычно он находится в папке conf установленной версии платформы (например, C:\Program Files\1cv8\conf\nethasp.ini).

Настроим секцию [NH_TCPIP] следующим образом:


[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
; Обязательно отключаем широковещательный поиск
NH_USE_BROADCAST = Disabled 

; Указываем конкретный IP-адрес машины с нужным ключом
NH_SERVER_ADDR = 10.11.11.2 

Обратите внимание: если вы не установите параметр NH_USE_BROADCAST = Disabled, указание IP-адреса может не сработать, так как широковещательный ответ от другого сервера может прийти быстрее адресного опроса.

Изоляция ключей с помощью nhsrv.ini

Иногда настройки клиента недостаточно, и нужно запретить "лишнему" менеджеру лицензий отвечать на запросы нашего сервера. Для этого настроим сам HASP License Manager на той машине, где стоит "мешающий" ключ.

Файл настройки называется nhsrv.ini. Он должен находиться в папке с установленным менеджером лицензий (обычно C:\Program Files (x86)\Aladdin\HASP LM\).

Важный нюанс: Как выяснилось в ходе разбора проблемы, служба HASP LM может не видеть этот файл, если он просто лежит в папке программы, но папка не прописана в системной переменной %PATH%, или если служба запущена с правами, не позволяющими читать этот файл. Убедитесь, что после редактирования файла вы перезапустили службу HASP Loader.

В файле nhsrv.ini используем параметр NHS_IP_LIMIT для ограничения доступа:


[NHS_IP]
; Разрешаем доступ только определенным подсетям или адресам
; Синтаксис: NHS_IP_LIMIT = , <Маска подсети>
; Но чаще используется список разрешенных IP

NHS_IP_LIMIT = 10.11.11.2, 10.44.*.*

Этот параметр работает как "белый список". Если вы пропишете туда только локальные адреса, сервер перестанет отвечать на запросы из других подсетей, что исключит его из "видимости" вашего сервера лицензирования.

Процедура перепривязки (Рекомендация)

Если вы столкнулись с нестабильной работой схемы "Программная лицензия привязана к сетевому ключу", наиболее надежным решением будет изменение параметров привязки.

  1. Вариант А (Локализация): Физически переставьте USB-ключ в сервер, где развернут Сервер Лицензирования. В этом случае проверка привязки будет проходить через локальный драйвер, минуя сеть и HASP LM. Это снимет проблему занятых лицензий и сетевых сбоев.
  2. Вариант Б (Перепривязка): Если переместить ключ нельзя, рассмотрите возможность повторной активации программных лицензий (получение лицензии с новым пин-кодом). При этом в качестве параметров привязки выберите аппаратные характеристики самого Сервера Лицензирования (сетевая карта, жесткий диск, процессор), а не USB-ключ.

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

Резюме по диагностике

Если сервер 1С не видит лицензии, выполним следующие действия:

  1. Проверим, не пытается ли он "привязаться" к неправильному ключу (смотрим журнал ошибок, ID ключей).
  2. В файле nethasp.ini на клиенте (сервере 1С) отключим NH_USE_BROADCAST и пропишем явный IP нужного ключа.
  3. Проверим файл nhsrv.ini на серверах с ключами, чтобы ограничить зону их видимости.
  4. Убедимся, что на аппаратном ключе, к которому привязана программная лицензия, есть свободные сессии (если ключ остался сетевым).
← На главную