Как настроить выдачу лицензий сервером 1С только для веб-клиентов, сохранив аппаратные ключи для локальной сети

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

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

Анализ алгоритма поиска лицензий платформой 1С:Предприятие

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

  1. Локальный USB-ключ: Платформа проверяет наличие ключа, вставленного непосредственно в USB-порт компьютера пользователя.
  2. Многопользовательский ключ HASP: Поиск сетевого ключа через менеджер лицензий NetHASP.
  3. Локальная программная лицензия: Проверка файла лицензии, активированного на конкретном рабочем месте.
  4. Программная лицензия на сервере 1С: Лицензия, привязанная к конкретному серверу приложений.
  5. Выдача лицензий сервером 1С: Использование общего пула лицензий, если в настройках информационной базы установлен соответствующий флаг.

Наша задача — сделать так, чтобы локальные пользователи находили лицензию на этапах 1 или 2, а внешние (веб-клиенты) — на этапе 5. Проблема заключается в том, что при включенном флаге «Выдача лицензий сервером», сервер часто перехватывает инициативу, не давая клиенту завершить поиск в локальной сети.

Решение 1: Использование параметров запуска для локальных клиентов

Самый быстрый и простой способ заставить платформу на стороне клиента отдавать предпочтение аппаратным ключам — это использование ключа командной строки /UseHWLicenses+. Рассмотрим, как это работает на практике.

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

"C:\Program Files\1cv8\common\1cestart.exe" /UseHWLicenses+

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

Решение 2: Тонкая настройка файла 1CEStart.cfg

Если в организации сотни рабочих мест, редактировать ярлыки на каждом компьютере неудобно. Проанализируем возможность централизованной настройки. Мы можем использовать общий файл конфигурации 1CEStart.cfg, который обычно располагается в папке %AppData%\1C\1CEStart или в каталоге установки платформы.

Добавим в этот файл следующую строку, чтобы зафиксировать поведение для всех баз:

UseHWLicenses=YES

Это глобально заставит все установленные экземпляры платформы на компьютере сначала искать аппаратный ключ. Кроме того, крайне важно настроить файл nethasp.ini, чтобы ускорить поиск ключа в сети. Если поиск идет слишком долго, платформа может «сдаться» и запросить лицензию у сервера. Разберем пример настройки nethasp.ini:


[NH_COMMON]
NH_TCPIP = AD ENABLED

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; IP-адрес сервера с USB-ключом
NH_TCPIP_METHOD = TCP
NH_USE_BROADCAST = DISABLED

Важный момент: Отключение широковещательного опроса (NH_USE_BROADCAST = DISABLED) и явное указание IP-адреса сервера менеджера лицензий значительно сокращает время ожидания ответа, что предотвращает преждевременный переход к получению лицензии от сервера 1С.

Решение 3: Профессиональный метод «Дублирование базы в кластере»

Рассмотрим более продвинутый и надежный способ, который не требует настройки каждого клиентского ПК. Этот метод основан на создании двух разных логических записей в кластере серверов 1С для одной и той же физической базы данных.

Разберем по шагам алгоритм настройки:

  1. Откроем консоль администрирования серверов 1С.
  2. Создадим запись База_Локальная. Укажем параметры подключения к SQL-серверу. В параметре Разрешить выдачу лицензий сервером 1С установим значение «Нет». Все локальные пользователи должны подключаться именно к этому имени базы. Так как серверу запрещено выдавать лицензии для этой записи, у клиентов не будет выбора, кроме как искать локальные или HASP ключи.
  3. Создадим запись База_Веб. Укажем те же самые параметры подключения к SQL-серверу (та же физическая БД). В параметре Разрешить выдачу лицензий сервером 1С установим значение «Да».
  4. Опубликуем на веб-сервере (IIS или Apache) именно запись База_Веб.

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

Решение 4: Ограничение доступа на уровне сети (Firewall)

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

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

Особенности работы веб-клиентов и мобильных приложений

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

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

Резюме

Мы рассмотрели несколько подходов к решению задачи. Для небольших сетей идеально подойдет использование параметра /UseHWLicenses+. Для крупных распределенных систем наиболее правильным решением будет создание дублирующих записей базы в кластере с разными настройками выдачи лицензий. Это позволит вам гибко управлять лицензионной политикой без необходимости настройки каждого рабочего места сотрудника.

← На главную