В крупных инфраструктурах часто возникает ситуация, когда в одной локальной сети сосуществуют несколько серверов 1С: тестовые и продуктовые контуры. Одной из наиболее запутанных проблем является «миграция» или «слет» лицензий, когда клиентское приложение или сервер 1С внезапно перестает видеть назначенную ему программную лицензию и начинает пытаться получить доступ к аппаратному ключу HASP другого сервера. Разберем детально, почему это происходит и как жестко ограничить область поиска лицензий.
Для понимания сути проблемы сначала проанализируем, как именно платформа 1С:Предприятие 8.3 ищет лицензию при запуске сеанса. Этот алгоритм жестко зашит в движок, и нарушение этой логики часто приводит к ошибкам. Система ищет ключи в следующей последовательности:
.lic в локальных папках профиля пользователя или программы, для которых может потребоваться расшифровщик файлов программных лицензий.Обратим внимание на критически важный момент: сетевой аппаратный ключ стоит в приоритете выше, чем программные лицензии, выдаваемые сервером 1С. Если в сети доступен продуктовый ключ, система сначала попытается «постучаться» в него. Если там закончились свободные места (как в логах автора: «занято через сервер 290»), 1С может выдать ошибку, даже не дойдя до опроса вашего тестового сервера лицензирования, что решается с помощью удаления спящих сеансов.
Если ранее система успешно работала с программной лицензией на 100 рабочих мест, а затем внезапно «перепрыгнула» на сетевой ключ, это означает, что произошел сбой на одном из этапов. Рассмотрим основные причины:
1. Сетевые задержки: Если связь между сервером приложений и сервером лицензирования кратковременно прерывается, 1С инициирует повторный цикл поиска лицензии. Поскольку поиск начинается с первого пункта, система натыкается на доступный в сети аппаратный ключ быстрее, чем восстанавливается связь с программным сервисом.
2. Изменение параметров виртуальной машины: Программные лицензии 1С крайне чувствительны к характеристикам «железа». Если ваш тестовый сервер лицензирования работает в виртуальной среде (VMware, Hyper-V), изменение динамической памяти, переезд на другой физический хост (vMotion) или изменение MAC-адреса сетевой карты мгновенно аннулирует привязку лицензии. Система считает, что файл лицензии поврежден, и переходит к следующему шагу поиска — сетевому ключу HASP.
3. Кэширование настроек: Даже если вы отключили Broadcast в файле nethasp.ini, драйвер ключа может хранить информацию о последнем успешном подключении к менеджеру лицензий в реестре или системном кэше. Это позволяет 1С «видеть» ключ даже при пустых конфигурационных файлах, в чем поможет очистка кеша 1С (серверного и клиентского).
Самый простой и быстрый способ запретить конкретной информационной базе искать аппаратные ключи — это использование параметров запуска. Рассмотрим, как это сделать для тестовых баз. В окне запуска 1С выберите нужную базу, нажмите «Изменить» и на вкладке «Дополнительно» в поле «Параметры запуска» введите:
/UseHwLicenses-
Этот ключ принудительно отключает поиск аппаратных ключей защиты (как локальных, так и сетевых) для данного сеанса. Система будет вынуждена использовать только программные лицензии. Если тестовых баз много, этот параметр можно прописать в общих настройках или в файле 1CEStart.cfg.
Важно понимать, что файл nethasp.ini должен редактироваться не на сервере, где стоит ключ, а на машине, которая запрашивает лицензию. В случае клиент-серверного варианта лицензию запрашивает процесс rphost на сервере приложений. Проанализируем настройки, которые помогут полностью исключить сетевой поиск ключей HASP.
Найдите файл nethasp.ini (обычно в папке C:\Program Files\1cv8\conf или в папке установки драйвера Aladdin). Отредактируйте секцию [NH_COMMON] и [NH_TCPIP] следующим образом:
[NH_COMMON]
NH_TCPIP = DISABLED ; Полностью отключаем протокол TCP/IP для поиска HASP
[NH_TCPIP]
NH_USE_BCAST = DISABLED ; Выключаем широковещательный запрос
; NH_SERVER_ADDR = 127.0.0.1 ; Можно зациклить поиск на локальный адрес
Установка NH_TCPIP = DISABLED является самым надежным методом. Это гарантирует, что драйвер защиты даже не попытается открыть сетевые порты для поиска менеджеров лицензий. После внесения изменений на сервере приложений рекомендуется перезапустить службу Agent 1C:Enterprise.
Если вы используете роль «Сервер лицензирования» в кластере 1С 8.3, необходимо убедиться, что требования назначения функциональности настроены корректно. Рассмотрим алгоритм действий:
Важный нюанс: Помните, что сервер приложений сам по себе является клиентом для лицензий. Даже если вы настроили консоль, но не прописали /UseHwLicenses-, движок 1С все равно может попытаться найти сетевой HASP-ключ в обход механизмов кластера, если программная лицензия по какой-то причине недоступна.
Чтобы окончательно выяснить, почему 1С видит продовый ключ, воспользуйтесь утилитой Aladdin Monitor. Рассмотрим порядок диагностики:
1. Запустите монитор на любом компьютере в сети.
2. Найдите в списке продовый сервер лицензий (по IP или имени).
3. Проанализируйте список подключенных пользователей. Если вы видите там имя вашего тестового сервера приложений или учетную запись, под которой запущена служба 1С, значит, изоляция на уровне nethasp.ini не сработала.
Подведем итог нашему анализу. Чтобы лицензия не «слетала» и не переключалась на чужие ключи, выполните следующие шаги:
.lic не поврежден.nethasp.ini принудительно установите NH_TCPIP = DISABLED./UseHwLicenses-.Такой комплексный подход позволит вам полностью разделить лицензионные контуры и избежать ситуаций, когда работа тестовой среды блокируется из-за нехватки мест на основном ключе предприятия.