При администрировании крупных информационных систем на базе 1С:Предприятие часто возникает ситуация, когда в организации одновременно используются и классические аппаратные USB-ключи защиты (HASP), и современные программные лицензии (пин-коды). Без грамотной настройки эти две системы лицензирования начинают конфликтовать: пользователи клиент-серверных баз могут хаотично перехватывать аппаратные лицензии, предназначенные для файловых баз, а сама платформа 1С может подолгу зависать при запуске, опрашивая всю локальную сеть в поисках свободных ключей.
В этой статье мы подробно разберем, как четко разграничить использование лицензий. Мы сделаем так, чтобы выделенная группа пользователей (например, 20 человек для работы с тестовыми файловыми базами) гарантированно получала лицензии с аппаратного USB-ключа, а все остальные 70 пользователей работали исключительно с программными лицензиями.
Прежде чем переходить к редактированию конфигурационных файлов, давайте проанализируем ситуацию и разберем логику поведения платформы 1С при поиске лицензии. По умолчанию платформа выполняет поиск в строго определенной последовательности:
.lic) и установленных локально однопользовательских USB-ключей.В чем заключается главная опасность? Сетевой опрос аппаратных ключей (Шаг 3) происходит раньше, чем обращение к серверу 1С за программными лицензиями (Шаг 4). Это означает, что любой пользователь клиент-серверной базы при запуске 1С первым делом попытается «откусить» лицензию от аппаратного USB-ключа, если тот доступен в сети. В результате аппаратные лицензии мгновенно закончатся, а те пользователи, которым они реально необходимы (например, для работы с файловыми базами), останутся ни с чем.
Для решения этой проблемы нам потребуется настроить три компонента: менеджер лицензий HASP LM на сервере с ключом, конфигурационные файлы nethasp.ini на клиентских машинах и параметры раздачи лицензий на самом сервере 1С.
Служба HASP License Manager (HASP LM) отвечает за раздачу лицензий с USB-ключа в сеть. Чтобы ограничить круг компьютеров, которые имеют право забирать эти лицензии, мы воспользуемся конфигурационным файлом nhsrv.ini.
Выясним сначала, где должен располагаться этот файл. Местоположение зависит от способа запуска службы HASP LM:
nhsrv.ini должен находиться в системной директории: C:\Windows\System32 (для 32-разрядных операционных систем) или C:\Windows\SysWOW64 (для 64-разрядных систем).nhsrvw32.exe.Рассмотрим подробнее ключевые параметры файла nhsrv.ini, которые нам необходимо настроить в секции [NHS_SERVER]. Откройте файл текстовым редактором и внесите следующие изменения:
[NHS_SERVER]
;; Задаем максимальное количество обслуживаемых пользователей (актуально для больших ключей)
NHS_USERLIST = 250
;; Задаем ограничение по IP-адресам для раздачи аппаратных лицензий
NHS_IP_LIMIT = 192.168.1.10-29, 192.168.1.55, 192.168.2.*
Разберем синтаксис параметра NHS_IP_LIMIT. Этот параметр позволяет жестко ограничить доступ к ключу. Здесь мы перечисляем через запятую IP-адреса тех самых 20 доверенных компьютеров, которым разрешено забирать аппаратные лицензии. Параметр поддерживает:
192.168.1.55);192.168.1.10-29);192.168.2.*).Если компьютер пользователя с IP-адресом, не входящим в данный список, попытается обратиться к HASP LM, менеджер лицензий просто проигнорирует его запрос. При этом программные лицензии этого пользователя никак не пострадают — платформа, не получив ответа от HASP LM, перейдет к следующему шагу поиска и успешно заберет программную лицензию от сервера 1С.
Важное замечание по перезапуску: Чтобы настройки вступили в силу, службу HASP License Manager необходимо перезапустить. Сделать это можно через стандартную оснастку «Службы» в Windows (служба называется HASP Loader). Перезапуск происходит мгновенно на лету, активные сеансы пользователей в базах данных при этом не прерываются, а сетевые соединения быстро восстанавливаются.
Ограничений на стороне сервера HASP LM часто бывает недостаточно. Если оставить настройки клиентов по умолчанию, то все 70 «программных» пользователей при каждом запуске 1С будут отправлять широковещательные запросы в сеть, ожидая тайм-аута ответа от заблокированного для них HASP LM. Это приводит к длительному запуску программы и лишней нагрузке на сеть.
Мы настроим файл nethasp.ini, который управляет поведением сетевого драйвера защиты на стороне каждого клиента. Этот файл обычно располагается в папке установки платформы: C:\Program Files\1cv8\conf\ (или C:\Program Files (x86)\1cv8\conf\).
Сценарий А: Настройка для 20 «аппаратных» пользователей
Для компьютеров, которые должны быстро и гарантированно забирать лицензии с USB-ключа, мы отключаем медленный широковещательный поиск (бродкаст) и прописываем прямой IP-адрес сервера, на котором запущен HASP LM:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
;; Указываем IP-адрес машины, где физически установлен USB-ключ и запущен HASP LM
NH_SERVER_ADDR = 192.168.1.100
NH_PORT_NUMBER = 475
NH_TCPIP_METHOD = UDP
;; Отключаем широковещательный опрос всей локальной сети
NH_USE_BROADCAST = Disabled
Такая настройка заставит платформу мгновенно адресовать запрос менеджеру лицензий по указанному IP-адресу, минуя долгую стадию сканирования сети.
Сценарий Б: Настройка для 70 «программных» пользователей
Для всех остальных сотрудников нам нужно полностью запретить даже попытки поиска аппаратных сетевых ключей. Это можно сделать двумя способами:
1. Отредактировать их локальный файл nethasp.ini, полностью отключив протокол TCP/IP для поиска ключей защиты:
[NH_COMMON]
NH_TCPIP = Disabled
2. Или использовать альтернативный, более простой способ управления через параметры запуска. В настройках списка баз в стартере 1С (в окне выбора информационных баз нажать кнопку «Изменить» -> далее -> на последней вкладке в поле «Дополнительные параметры запуска») прописать специальный ключ:
/UseHwLicenses-
Знак минус на конце этого ключа дает платформе жесткую команду: полностью игнорировать любые аппаратные ключи защиты при запуске этой информационной базы. Клиент сразу же перейдет к получению программной лицензии от сервера.
Это критически важный организационный момент, о котором часто забывают администраторы. Если USB-ключ на 20 пользователей физически подключен к тому же серверу, на котором функционирует служба «Агент сервера 1С:Предприятия» (ragent), то сервер 1С будет напрямую (через локальный драйвер, в обход сети и службы HASP LM) видеть этот ключ.
Если в свойствах клиент-серверной базы на сервере включена опция «Разрешить выдачу лицензий сервером 1С», то сервер начнет самостоятельно забирать лицензии с этого локального USB-ключа и раздавать их подключающимся пользователям клиент-серверных баз. При этом файлы nethasp.ini и nhsrv.ini будут сервером полностью проигнорированы, так как обращение идет локально напрямую к драйверу. Лицензии на ключе мгновенно исчерпаются.
Чтобы избежать этой проблемы, выполним следующие шаги:
nhsrv.ini, как описано в Шаге 1.nethasp.ini на самом сервере 1С (в папке C:\Program Files\1cv8\conf\). В секции [NH_COMMON] установите значение NH_TCPIP = Disabled. Это гарантирует, что служба сервера 1С перестанет видеть этот сетевой ключ и при раздаче лицензий клиентам будет использовать исключительно пул программных лицензий.Давайте подведем итоги проделанной работы и зафиксируем схему настройки в виде краткого алгоритма совместного сосуществования лицензий:
nhsrv.ini, жестко ограничив доступ через параметр NHS_IP_LIMIT для всех остальных адресов.nethasp.ini точный адрес сервера лицензирования и отключите широковещательный поиск (NH_USE_BROADCAST = Disabled)./UseHwLicenses- в дополнительных параметрах запуска или директивой NH_TCPIP = Disabled.Благодаря такому подходу вы получите стабильно работающую систему, где запуск 1С у всех пользователей происходит мгновенно, а лицензии распределяются строго в соответствии с разработанной вами политикой доступа.