В процессе эксплуатации крупномасштабных систем на базе «1С:Предприятия» часто возникает ситуация, когда необходимо распределить лицензии между несколькими серверами. Типичный сценарий: на основном сервере установлен аппаратный ключ (USB) и активированы программные лицензии, а новый дополнительный сервер не «видит» эти ресурсы. В данной статье мы подробно разберем, как обеспечить стабильную работу системы лицензирования в среде Linux (на примере CentOS 7), правильно настроить файл nethasp.ini и обойти ограничения протоколов поиска.
Прежде чем приступать к настройке конфигурационных файлов, проанализируем важный технический нюанс. В системе 1С существуют два принципиально разных типа защиты: аппаратные USB-ключи и программные лицензии (файлы с расширением .lic).
Важно понимать, что служба HASP License Manager (HASP LM) работает исключительно с аппаратными ключами. Она не способна видеть программные лицензии и транслировать их по сети. Если на вашем первом сервере установлены оба типа защиты, то через HASP LM будут «раздаваться» только те 20 лицензий, которые находятся на USB-носителе. Программные лицензии раздаются либо самим сервером 1С (через менеджер кластера), либо клиентским приложением напрямую.
Если автоматический поиск ключа не дает результатов (например, когда отключен широковещательный поиск (broadcast) или серверы находятся в разных подсетях), нам необходимо явно указать адрес менеджера лицензий. Рассмотрим шаги по настройке на стороне клиента или второго сервера.
Выясним причину, по которой 1С может игнорировать настройки. В среде Linux крайне важен регистр имен и путь к файлу. Рассмотрим правильное расположение файла настроек:
cat ~/.1cv8/1C/1cv8/conf/nethasp.ini
Внутри файла необходимо задать параметры в секциях [NH_COMMON] и [NH_TCPIP]. Разберем по шагам содержание рабочих настроек:
NH_TCPIP находится в состоянии Enabled.NH_SERVER_ADDR следует указать адрес сервера, где физически установлен USB-ключ и запущен HASP LM.Проанализируем пример корректного заполнения секций:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = server1c83 # Используйте DNS-имя вместо IP, если по IP соединение нестабильно
NH_TCPIP_METHOD = TCP
NH_USE_BROADCAST = Disabled
Обратите внимание: опыт показывает, что использование доменного имени (FQDN) иногда срабатывает лучше, чем прямой IP-адрес. Это связано с тем, как операционная система Linux обрабатывает разрешение имен и маршрутизацию пакетов UDP/TCP на порту 475.
В клиент-серверном варианте (например, при использовании связки 1С и PostgreSQL) существует два способа получения лицензии клиентом. Разберем их подробнее, так как от этого зависит место размещения файла nethasp.ini:
Способ 1: Выдача лицензий сервером 1С. В свойствах информационной базы в консоли администрирования кластера установлена опция «Разрешить выдачу лицензий сервером 1С:Предприятия» в значение «Да». В этом случае именно сервер (под пользователем usr1cv8) обращается к ключу. Следовательно, файл nethasp.ini должен быть настроен в профиле пользователя usr1cv8 на том сервере, где запущена база.
Способ 2: Самостоятельное получение лицензии клиентом. Если опция выдачи сервером отключена, каждое клиентское приложение на рабочих станциях пользователей само ищет ключ. В этом случае nethasp.ini должен быть настроен на каждом компьютере пользователя.
Рассмотрим ситуацию, когда у вас имеется несколько аппаратных ключей одной серии (например, два ключа по 20 пользователей серии ORGL8). Выясним важную особенность: один экземпляр HASP License Manager не может корректно работать с двумя ключами одной серии на одной физической машине. Он «увидит» только один из них.
Если вам нужно суммировать лицензии с двух таких ключей, попробуйте следующие решения:
nethasp.ini на стороне клиента укажите оба адреса серверов через запятую в параметре NH_SERVER_ADDR.nhserv.ini на стороне сервера), задав параметр NHS_SERVERNAMES.При работе на Linux необходимо учитывать настройки сетевого экрана (Firewall). Для работы HASP LM требуется открыть порт 475 для протоколов UDP и TCP. Проверим состояние портов командами в терминале:
firewall-cmd --permanent --add-port=475/udp
firewall-cmd --permanent --add-port=475/tcp
firewall-cmd --reload
Если широковещательный флад (broadcast) в вашей сети отключен или ограничен, 1С не сможет найти менеджер лицензий автоматически. Именно в этой ситуации явное указание сервера в nethasp.ini становится единственным способом заставить систему работать.
Начиная с версии платформы 8.3.15, разработчики 1С рекомендуют использовать встроенный «Сервер лицензирования». Это позволяет уйти от низкоуровневой настройки nethasp.ini. Сервер лицензирования в составе кластера 1С может централизованно собирать информацию о доступных программных и аппаратных лицензиях и распределять их между рабочими процессами. Это особенно актуально для сложных инфраструктур с множеством серверов приложений.
Подведем итог: для успешного решения проблемы на Linux убедитесь, что файл конфигурации лежит по пути ~/.1cv8/1C/1cv8/conf/nethasp.ini, права доступа позволяют пользователю 1С его прочитать, а в самом файле указано корректное имя сервера, на котором запущен HASP LM с аппаратным ключом. Помните, что программные лицензии настраиваются отдельно и не имеют отношения к работе менеджера лицензий HASP.