Почему веб-клиенты 1С не получают лицензии HASP по сети и как это исправить?

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

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

Анализируем архитектуру раздачи лицензий для веб-клиентов

Для того чтобы понять суть проблемы, нам необходимо детально проанализировать разницу в получении лицензий обычным тонким клиентом и веб-клиентом, работающим через публикацию на веб-сервере (например, Apache или IIS). Рассмотрим эту цепочку взаимодействия:

  1. Тонкий клиент (прямое подключение). При запуске обычного тонкого клиента в локальной сети по протоколу TCP/IP (напрямую к серверу приложений 1С) исполняемый файл 1cv8c.exe на компьютере пользователя пытается самостоятельно обнаружить клиентскую лицензию. Он ищет локальный USB-ключ HASP, программные лицензии на локальном диске, а также опрашивает менеджеры лицензий HASP License Manager по сети с помощью широковещательных запросов или настроек в собственном файле nethasp.ini. Если клиент находит лицензию сам, сервер приложений «1С:Предприятия» в этом процессе не участвует.
  2. Веб-клиент (подключение через браузер). Веб-клиент физически работает внутри интернет-браузера на конечном устройстве пользователя. У него нет прямого доступа к аппаратным портам компьютера, к локальной сети организации, к портам 475 (HASP) или к конфигурационным файлам операционной системы. По этой причине веб-клиент физически не способен самостоятельно искать ключи защиты в сети.

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

Шаг 1. Проверяем настройки кластера «1С:Предприятия»

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

Для проверки выполним следующие действия:

  1. Откроем утилиту «Администрирование серверов 1С:Предприятия».
  2. Раскроем дерево нашего кластера и перейдем в ветку «Информационные базы».
  3. Найдем нужную информационную базу, откроем ее свойства.
  4. Проверим значение параметра Разрешить выдачу лицензий сервером 1С:Предприятия. Оно обязательно должно быть установлено в значение «Да».

Если этот параметр установлен в значение «Нет», сервер будет отказывать в выдаче лицензий веб-клиентам, перекладывая эту обязанность на сторону самого клиента (что, как мы выяснили выше, для веб-клиентов технически невозможно).

Шаг 2. Разбираемся с конфигурационными файлами nethasp.ini и nhsrv.ini

Когда мы меняем IP-адреса серверов, на которых физически установлены аппаратные многопользовательские ключи HASP (серии ORGL8), нам необходимо явно указать серверу 1С новые адреса для поиска. По умолчанию поиск менеджеров лицензий идет через широковещательные UDP-запросы. Однако в распределенных сетях (в разных подсетях) широковещательный трафик блокируется маршрутизаторами. В этом случае мы обязаны настроить файлы конфигурации.

Рассмотрим правильную настройку файла nethasp.ini на стороне сервера приложений «1С:Предприятия» для принудительного опроса конкретного сервера лицензий по протоколу TCP/IP:


[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 172.168.0.46
NH_TCPIP_METHOD = TCP
NH_USE_BROADCAST = Disabled

Проанализируем ключевые параметры этого конфигурационного файла:

Теперь посмотрим на настройки ответной части — файла nhsrv.ini, который находится на компьютере-менеджере лицензий (где установлен USB-ключ). Нам необходимо разрешить обслуживание входящих TCP-соединений:


[NHS_SERVER]
NHS_USERLIST = 250
NHS_SERVERNAMES = key2
NHS_HIGHPRIORITY = no

[NHS_IP]
NHS_USE_UDP = enabled
NHS_USE_TCP = enabled
NHS_IP_portnum = 475

Обратим внимание на параметр NHS_USE_TCP = enabled. Он открывает порт 475 по протоколу TCP для приема входящих запросов от нашего сервера «1С:Предприятия».

Шаг 3. Устраняем проблему разрядности и правильного расположения файлов

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

Разберем, где должен лежать файл настроек:

Важный нюанс прав доступа: служба сервера «1С:Предприятия» обычно работает под ограниченной системной учетной записью (например, usr1cv8). Если вы создали или скопировали файл nethasp.ini под учетной записью администратора, обязательно проверьте права доступа к файлу. У пользователя usr1cv8 должны быть права на «Чтение» этого файла, иначе служба не сможет его прочитать и проигнорирует настройки.

Шаг 4. Ключевая причина сбоя — кэширование сетевых настроек службой сервера 1С

Перейдем к самой сути проблемы, описанной автором темы. Администратор изменил IP-адреса серверов лицензирования, корректно переписал конфигурационные файлы nethasp.ini и nhsrv.ini, убедился, что тонкие клиенты сразу заработали по новым адресам, но веб-сервер продолжал выдавать ошибку отсутствия лицензии.

Выясним причину этого поведения:

Процессы тонкого клиента запускаются на компьютерах пользователей каждый раз заново. При каждом новом запуске процесс считывает конфигурационный файл nethasp.ini с диска «с нуля», сразу получая актуальный IP-адрес менеджера лицензий.

В то же время сервер приложений «1С:Предприятия» является долгоживущей системной службой. Рабочие процессы сервера (rphost.exe) и менеджер кластера (rmngr.exe) считывают файл nethasp.ini только один раз при инициализации службы или при самом первом обращении к подсистеме лицензирования. В дальнейшем все параметры сетевого поиска кэшируются в оперативной памяти процессов сервера 1С.

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

nethasp.ini: C:/Program Files/1cv8/conf/nethasp.ini, прочитан успешно, ошибка соединения с менеджером лицензий: Net Status=0, System Error=0, Warning=15

Код ошибки Warning=15 прямо указывает на невозможность установить сетевое соединение с менеджером лицензий по сохраненным в памяти адресам. Именно поэтому полный перезапуск службы сервера «1С:Предприятия» является обязательным действием для применения новых сетевых настроек лицензирования.

Шаг 5. Скрытое ограничение платформы при работе с несколькими HASP-ключами одной серии

Проанализируем еще один важнейший системный аспект, с которым неизбежно столкнется автор темы при текущей схеме организации сети. В дано указано:

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

Сервер приложений 1С:Предприятия умеет единовременно работать только с ОДНИМ сетевым ключом HASP каждой серии по сети.

Если в вашем файле nethasp.ini на сервере 1С будут прописаны IP-адреса обоих HASP-менеджеров (Машины 1 и Машины 2) с ключами серии ORGL8, то при инициализации сервер опросит их, выберет тот менеджер, который ответит первым, и будет забирать лицензии только с него. Второй сетевой ключ той же серии сервер 1С полностью проигнорирует. Таким образом, веб-клиентам будет доступно максимум 50 лицензий, а не 100.

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

Для решения этой проблемы и суммирования лицензий на сервере 1С рекомендуем использовать следующие подходы:

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

Резюме и чеклист для администратора

Подводя итоги, сформируем краткий чеклист действий для восстановления раздачи лицензий веб-клиентам после изменения сетевых настроек:

  1. Убедитесь, что в свойствах информационной базы в консоли администрирования кластера включена опция Разрешить выдачу лицензий сервером.
  2. Проверьте, что файл nethasp.ini лежит в правильном каталоге в соответствии с разрядностью службы сервера (для 64-битного сервера это каталог Program Files, а не Program Files (x86)).
  3. Убедитесь, что у сервисной учетной записи, под которой запущена служба сервера 1С (например, usr1cv8), есть права на чтение файла nethasp.ini.
  4. Пропишите в nethasp.ini точный IP-адрес HASP-менеджера и отключите широковещательный поиск (Broadcast).
  5. На стороне сервера с ключом в файле nhsrv.ini разрешите работу по протоколу TCP.
  6. Обязательно перезапустите службу сервера «1С:Предприятия» для сброса кэша лицензирования и применения новых сетевых настроек.
← На главную