В практике системного администрирования 1С часто встречается ситуация, когда в корпоративной сети установлено несколько аппаратных USB-ключей защиты, но пользователи внезапно получают ошибку: «Не обнаружено свободной лицензии!». При этом анализ логов показывает, что система видит только один ключ (часто наименьшего номинала), на котором закончились свободные места, и игнорирует второй, более емкий ключ.
Проанализируем технические причины такого поведения платформы 1С:Предприятие и драйвера HASP, а также разберем по шагам, как правильно разграничить доступ к лицензиям и настроить конфигурационные файлы.
Выясним причину, почему при добавлении второго USB-ключа (например, на 5 пользователей к уже имеющемуся на 100 мест) система перестает распределять лицензии со второго сервера. Основная проблема кроется в архитектуре сетевого протокола HASP и назначении серий ключей:
ORGL8 (красные ключи). Ключи других серий (например, ORG8A на 300 пользователей или ORG8B на 500 пользователей) встречаются реже. Менеджер лицензий HASP License Manager не умеет суммировать лицензии одной серии на одном сервере, а сетевой протокол не суммирует их по сети автоматически.ORGL8. Как только на запрос отвечает первый попавшийся сервер (например, сервер с ключом на 5 мест), поиск завершается. Если на этом сервере все 5 лицензий уже заняты, драйвер возвращает клиенту ошибку нехватки лицензий. Опрос следующего сервера в сети не производится.Ошибка программного лицензирования. Файл программной лицензии не предусматривает возможность запуска клиентских приложений. Это нормальное поведение системы: платформа обнаруживает файл серверной лицензии (на 32- или 64-разрядный сервер 1С), но не может выделить из него рабочее место для клиентского сеанса, так как он предназначен только для работы самого кластера.Рассмотрим самое надежное решение: запретить основной массе клиентских рабочих мест опрашивать сервер с маленьким ключом через широковещательную рассылку и жестко направить их на сервер с ключом на 100 лицензий.
Разберем по шагам настройку на терминальном сервере или клиентских компьютерах:
C:\Program Files (x86)\1cv8\conf\nethasp.ini (для 32-разрядных клиентов) или C:\Program Files\1cv8\conf\nethasp.ini (для 64-разрядных клиентов).[NH_COMMON] включим протокол TCP/IP.[NH_TCPIP] отключим широковещательный поиск директивой NH_USE_BROADCAST = Disabled и пропишем точный IP-адрес сервера, где установлен большой ключ.Посмотрим на пример правильного содержимого конфигурационного файла:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10
NH_USE_BROADCAST = Disabled
Где 192.168.1.10 — это IP-адрес терминального сервера с USB-ключом на 100 пользователей. После сохранения файла клиентские сеансы будут мгновенно подключаться к указанному менеджеру лицензий, полностью игнорируя сервер с 5-пользовательским ключом.
Если требуется сохранить ключ на 5 пользователей для конкретного круга лиц (например, для программистов, внешних подключений или отдельного подразделения), необходимо настроить менеджер лицензий HASP License Manager на сервере, куда физически подключен этот ключ.
Настройка выполняется через файл nhsrv.ini, который располагается в каталоге установки менеджера лицензий (по умолчанию C:\Program Files (x86)\Aladdin\HASP LM):
nhsrv.ini на машине с ключом на 5 мест.NHS_IP_LIMIT.Посмотрим на пример конфигурации:
[NHS_SERVER]
NHS_USERLIST = 10
[NHS_IP]
NHS_USE_BROADCAST = Disabled
NHS_IP_LIMIT = 192.168.1.50, 192.168.1.51, 192.168.1.52, 192.168.1.53, 192.168.1.54
После внесения изменений обязательно перезапустим службу HASP Loader. Теперь менеджер лицензий будет отвечать только тем пяти клиентам, чьи IP-адреса указаны в списке. Все остальные компьютеры в сети продолжат искать лицензии дальше и дойдут до сервера с ключом на 100 пользователей.
Проанализируем еще один важный аспект, отраженный в логе ошибки: «занято через сервер 2». Если информационная база работает в клиент-серверном варианте, служба сервера 1С может самостоятельно захватывать сетевые лицензии и раздавать их сеансам.
Когда пользователи работают через терминальный сервер, централизованная раздача лицензий сервером 1С приводит к перерасходу слотов: каждый открытый сеанс или вторая информационная база забирают отдельную лицензию. Чтобы избежать этого, выполним следующие действия:
В этом случае клиентские приложения на терминальном сервере начнут получать лицензии напрямую от локального менеджера лицензий. Благодаря этому на одного пользователя терминала будет расходоваться ровно 1 лицензия из 100-пользовательского пула независимо от того, сколько баз и окон 1С запущено в рамках этой сессии.
Рассмотрим альтернативные пути решения, если текущей конфигурации оборудования недостаточно:
ORGL8, программные клиентские лицензии (файлы .lic) любых номиналов отлично суммируются при активации на одном сервере 1С. Можно активировать комплект на 100 рабочих мест и комплект на 5 рабочих мест на сервере кластера 1С, получив единый суммарный пул на 105 лицензий без конфликтов сетевых протоколов.ORG8A на 300 мест) по официальной процедуре апгрейда у обслуживающего партнера 1С.