Почему слетает программная лицензия 1С 8.3 и как запретить системе поиск аппаратных ключей в одной сети

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

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

Порядок поиска лицензий: почему 1С «видит» чужие ключи

Для понимания сути проблемы сначала проанализируем, как именно платформа 1С:Предприятие 8.3 ищет лицензию при запуске сеанса. Этот алгоритм жестко зашит в движок, и нарушение этой логики часто приводит к ошибкам. Система ищет ключи в следующей последовательности:

  1. Локальный аппаратный ключ: USB-флешка, вставленная непосредственно в компьютер пользователя.
  2. Локальная программная лицензия: Файлы с расширением .lic в локальных папках профиля пользователя или программы, для которых может потребоваться расшифровщик файлов программных лицензий.
  3. Сетевой аппаратный ключ: Опрос менеджеров лицензий (HASP License Manager) по сети. Именно на этом этапе возникают конфликты в общих сетях.
  4. Программная лицензия из основной поставки: Например, лицензия, идущая в комплекте с конфигурацией.
  5. Сервер лицензирования 1С: Лицензии, которые раздает сам сервер приложений через кластер (включая рекомендации по установке комьюнити-лицензии).

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

Анализируем причины «рандомного» отключения

Если ранее система успешно работала с программной лицензией на 100 рабочих мест, а затем внезапно «перепрыгнула» на сетевой ключ, это означает, что произошел сбой на одном из этапов. Рассмотрим основные причины:

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

2. Изменение параметров виртуальной машины: Программные лицензии 1С крайне чувствительны к характеристикам «железа». Если ваш тестовый сервер лицензирования работает в виртуальной среде (VMware, Hyper-V), изменение динамической памяти, переезд на другой физический хост (vMotion) или изменение MAC-адреса сетевой карты мгновенно аннулирует привязку лицензии. Система считает, что файл лицензии поврежден, и переходит к следующему шагу поиска — сетевому ключу HASP.

3. Кэширование настроек: Даже если вы отключили Broadcast в файле nethasp.ini, драйвер ключа может хранить информацию о последнем успешном подключении к менеджеру лицензий в реестре или системном кэше. Это позволяет 1С «видеть» ключ даже при пустых конфигурационных файлах, в чем поможет очистка кеша 1С (серверного и клиентского).

Способ 1. Изоляция на уровне параметров запуска базы

Самый простой и быстрый способ запретить конкретной информационной базе искать аппаратные ключи — это использование параметров запуска. Рассмотрим, как это сделать для тестовых баз. В окне запуска 1С выберите нужную базу, нажмите «Изменить» и на вкладке «Дополнительно» в поле «Параметры запуска» введите:


/UseHwLicenses-

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

Способ 2. Жесткая настройка nethasp.ini на стороне сервера и клиента

Важно понимать, что файл 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.

Способ 3. Требования назначения функциональности в кластере

Если вы используете роль «Сервер лицензирования» в кластере 1С 8.3, необходимо убедиться, что требования назначения функциональности настроены корректно. Рассмотрим алгоритм действий:

  1. Откройте консоль администрирования серверов 1С.
  2. Перейдите в раздел «Кластеры» — «Рабочие серверы».
  3. Для каждого сервера определите «Требования назначения функциональности».
  4. Создайте правило для объекта «Сервис лицензирования».
  5. Для тестового сервера установите тип «Назначать», а для продуктового (в рамках этого кластера) — «Не назначать».

Важный нюанс: Помните, что сервер приложений сам по себе является клиентом для лицензий. Даже если вы настроили консоль, но не прописали /UseHwLicenses-, движок 1С все равно может попытаться найти сетевой HASP-ключ в обход механизмов кластера, если программная лицензия по какой-то причине недоступна.

Диагностика с помощью инструментов Aladdin

Чтобы окончательно выяснить, почему 1С видит продовый ключ, воспользуйтесь утилитой Aladdin Monitor. Рассмотрим порядок диагностики:

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

Итоги и рекомендации

Подведем итог нашему анализу. Чтобы лицензия не «слетала» и не переключалась на чужие ключи, выполните следующие шаги:

  1. Проверьте стабильность программной лицензии: Убедитесь, что параметры виртуальной машины статичны, а файл .lic не поврежден.
  2. Изолируйте уровень драйвера: На тестовом сервере приложений в файле nethasp.ini принудительно установите NH_TCPIP = DISABLED.
  3. Используйте флаги запуска: Для всех ярлыков тестовых баз добавьте ключ /UseHwLicenses-.
  4. Контролируйте сеансы: Используйте консоль администрирования 1С для мониторинга того, откуда именно была получена лицензия в конкретном сеансе (в колонке «Лицензия» обычно указывается путь к файлу или адрес HASP-сервера).

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

← На главную