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

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

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

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

Для решения этой проблемы мы должны глубоко погрузиться в механизмы работы HASP License Manager (HLM), файлов конфигурации nethasp.ini и nhsrv.ini, а также специфику поиска и использования лицензий сервером 1С:Предприятия. Выясним причину такого поведения и предложим пошаговый план по настройке.

Понимание основ работы HASP License Manager и файлов конфигурации

Прежде чем перейти к конкретным настройкам, важно понимать роли двух ключевых файлов конфигурации:

  1. nethasp.ini: Этот файл используется для клиентских приложений (включая сервер 1С, когда он сам ищет лицензии по сети) и определяет, где и как они должны искать менеджер лицензий HASP (HLM) и получать лицензии. Он располагается на машине, которая запрашивает лицензию.
  2. nhsrv.ini: Этот файл используется для сервера HASP License Manager (HLM) и определяет, кому и как он должен выдавать лицензии, установленные на данном компьютере. Он располагается на машине, где установлен HLM и физический HASP-ключ.

В нашем случае сервер 1С, исчерпав свои лицензии, фактически становится "клиентом" для других HLM в сети, пытаясь получить дополнительные лицензии. Именно здесь кроется одна из причин непредсказуемого поведения.

Особенности работы сервера 1С с HASP-ключами и алгоритм выбора лицензий

Критически важно понимать, как сервер 1С:Предприятия ищет и использует аппаратные ключи HASP. Этот механизм имеет несколько нюансов:

  1. Выбор ключа одной серии: Сервер 1С (или расширение веб-сервера) может получить клиентскую лицензию только от одного аппаратного ключа защиты одной серии, обнаруженного по сети с помощью HASP License Manager. Это означает, что если в сети обнаружено несколько многопользовательских клиентских ключей серии ORGL8 (например, на 5, 10, 20, 50, 100 рабочих мест), сервер произвольно выберет только один из них. После исчерпания лицензий на этом выбранном ключе, поиск других ключей серии ORGL8 выполняться не будет.
  2. Иерархия поиска: После ключей ORGL8 сервер будет искать ключ ORG8A (на 300 рабочих мест), а затем ORG8B (на 500 рабочих мест). Каждый из этих типов ключей также будет выбран по одному экземпляру.
  3. Не рекомендуется совместное использование: Категорически не рекомендуется использовать одни и те же многопользовательские HASP-ключи для одновременного получения клиентских лицензий через HASP License Manager и сервер 1С:Предприятия. Это может привести к конфликтам и непредсказуемому поведению.
  4. Приоритет последнего успешного подключения: Сервер 1С:Предприятия первым делом пытается получить лицензию из того файла программной лицензии или ключа HASP, откуда лицензия была получена при последнем успешном подключении. Это означает, что даже если мы изменим настройки, сервер может "помнить" предыдущий, "ненужный" ключ и продолжать обращаться к нему. Для корректного применения новых настроек может потребоваться перезапуск сервера 1С и переподключение всех пользователей.
  5. Локальные ключи сервера 1С: Если лицензии раздает сервер 1С, то никакими настройками (ни блокировкой 475 порта, ни nethasp.ini, ни параметром UseHwLicenses) невозможно запретить серверу 1С:Предприятия раздавать лицензии с ключа, установленного непосредственно на его машине, если у сервера включена опция выдачи клиентских лицензий.

Таким образом, наша основная проблема – сервер произвольно выбирает ключ и не переключается на другие ключи той же серии, если первый исчерпан – объясняется самой логикой работы 1С с HASP-ключами.

Пошаговая настройка файла nethasp.ini для клиента (сервера 1С)

Файл nethasp.ini настраивается для того, чтобы явно указать серверу 1С (когда он выступает в роли клиента для внешних HASP License Manager), откуда брать лицензии. Это позволяет избежать широковещательного поиска и принудительно направить запросы к нужным IP-адресам.

Расположение файла nethasp.ini

Обычно этот файл располагается в каталоге установки платформы 1С:Предприятие. Например, для 64-битной версии это может быть C:\Program Files\1cv8\conf (как указано в сообщении 17), или в каталоге конкретного исполняемого файла 1С:Предприятия. Мы рекомендуем размещать его в папке conf или в директории, где находится исполняемый файл 1cv8.exe или ragent.exe.

Структура и ключевые параметры nethasp.ini

Мы будем использовать протокол TCP/IP, поэтому нам нужно сосредоточиться на секциях [NH_COMMON] и [NH_TCPIP]. Наша задача – отключить все лишние протоколы и явно указать IP-адреса менеджеров лицензий.


[NH_COMMON]
NH_TCPIP = Enabled    ; Включаем протокол TCP/IP
NH_IPX = Disabled     ; Отключаем IPX, если он не используется
NH_NETBIOS = Disabled ; Отключаем NetBIOS, если он не используется

[NH_IPX]
; Секция остается пустой, если IPX Disabled

[NH_NETBIOS]
; Секция остается пустой, если NetBIOS Disabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; IP-адрес нужного сервера с HASP LM
; NH_SERVER_ADDR = 192.168.1.101 ; Если есть несколько HLM, можно указать несколько IP через запятую
                                 ; или каждый на новой строке, но в нашем случае это не поможет с ключами одной серии ORGL8
NH_PORT_NUMBER = 475           ; Стандартный порт HASP License Manager
NH_USE_BROADCAST = Disabled    ; **Критически важно! Отключаем широковещательный поиск**
; NH_SESSION = 15              ; Параметры для оптимизации, можно оставить по умолчанию
; NH_SEND_RCV = 15             ; Параметры для оптимизации, можно оставить по умолчанию
  1. NH_TCPIP = Enabled: Обязательно убеждаемся, что протокол TCP/IP включен.
  2. NH_IPX = Disabled, NH_NETBIOS = Disabled: Отключаем все неиспользуемые протоколы. Это уменьшает время поиска и исключает возможность получения лицензий по "ненужным" каналам, которые могут игнорировать явное указание IP-адреса.
  3. NH_SERVER_ADDR = <ip нужного сервера>: Это самый важный параметр. Здесь мы указываем конкретный IP-адрес (или несколько, через запятую) машины, на которой работает HASP License Manager с нужным нам ключом. Если в сети много HLM, и нам нужно приоритизировать один, то его IP должен быть здесь. Однако, как мы помним, для ключей одной серии ORGL8 сервер 1С все равно выберет один произвольный ключ, даже если здесь указано несколько IP. Этот параметр полезен, когда нам нужно явно ограничить поиск ключами, например, ORG8A, после исчерпания локального ORGL8.
  4. NH_PORT_NUMBER = 475: Стандартный порт, по которому HASP License Manager отдает лицензии. Его всегда следует указывать.
  5. NH_USE_BROADCAST = Disabled: Это критически важный параметр для нашей проблемы. Широковещательный поиск (broadcast) позволяет HLM обнаруживать себя в сети автоматически. Если он включен, то даже при указанном NH_SERVER_ADDR, клиент может обнаружить другой HLM по broadcast и взять лицензию оттуда. Отключение broadcast принуждает клиент (сервер 1С) обращаться только по явно указанным адресам.

После внесения изменений в файл nethasp.ini, необходимо перезапустить сервер 1С:Предприятия, чтобы новые настройки вступили в силу. Также может потребоваться время, чтобы все пользователи переподключились и сервер обновил информацию о занятых лицензиях (сообщение 26).

Настройка файла nhsrv.ini для сервера HASP License Manager

Файл nhsrv.ini настраивает поведение самого HASP License Manager. Здесь мы можем ограничить круг адресов, которым HLM будет отвечать, и убедиться, что он использует только нужные протоколы.

Расположение файла nhsrv.ini

Этот файл обычно находится в каталоге установки HASP License Manager, например: C:\Program Files\Aladdin\HASP LM или C:\Program Files (x86)\Aladdin\HASP LM для 64-битных систем.

Структура и ключевые параметры nhsrv.ini

Мы будем отключать неиспользуемые протоколы и, при необходимости, ограничивать диапазон IP-адресов.


[NHS_SERVER]
NHS_USERLIST     = 250         ; Максимальное число одновременных подключений к HLM (по умолчанию 250)
NHS_HIGHPRIORITY = no          ; Запускать HLM с высоким приоритетом (default=no)
NHS_SERVERNAMES = HASP_SERVER1 ; **Рекомендуется:** Уникальное имя для каждого HLM в сети

[NHS_IP]
NHS_USE_UDP      = enabled     ; Включить UDP для HLM
NHS_USE_TCP      = enabled     ; Включить TCP для HLM
NHS_IP_portnum   = 475         ; IP порт (по умолчанию 475)
; NHS_IP_LIMIT = 192.168.1.0/24 ; **Важно:** Ограничивает IP-адреса, которым разрешено взаимодействовать с HLM
                               ; запросы с других адресов будут игнорированы.
                               ; Можно указать несколько диапазонов или конкретных IP через запятую.

[NHS_IPX]
NHS_USE_IPX      = disabled    ; **Отключаем IPX**
; NHS_addrpath                 ; Если IPX Disabled, эти параметры неактуальны
; NHS_AppendAddr
; NHS_usesap
; NHS_ipx_socketnum

[NHS_NETBIOS]
NHS_USE_NETBIOS  = disabled    ; **Отключаем NetBIOS**
  1. NHS_USERLIST: Определяет максимальное число одновременных подключений к данному HLM. Можно настроить по своему усмотрению.
  2. NHS_SERVERNAMES = <уникальное_имя>: Если в сети есть несколько HLM, крайне рекомендуется присвоить каждому уникальное имя. Это помогает избежать конфликтов и иногда облегчает идентификацию в диагностических утилитах.
  3. NHS_USE_UDP = enabled, NHS_USE_TCP = enabled: Убеждаемся, что HLM слушает по UDP и TCP на порту 475. Обращение к HASP License Manager всегда выполняется по протоколу UDP, даже если в nethasp.ini указан NH_TCPIP_METHOD = TCP.
  4. NHS_IP_portnum = 475: Порт HLM.
  5. NHS_USE_IPX = disabled, NHS_USE_NETBIOS = disabled: Аналогично nethasp.ini, отключаем все неиспользуемые протоколы. Это упрощает сетевое взаимодействие и предотвращает нежелательные подключения через другие протоколы. Это было одной из рекомендаций (сообщение 20-21).
  6. NHS_IP_LIMIT = <диапазон_IP> (из дополнительных данных): Этот параметр очень полезен для повышения безопасности и контроля. Он позволяет указать конкретные IP-адреса или диапазоны (например, 192.168.1.0/24), с которых разрешено взаимодействовать с данным HLM. Запросы с неразрешенных адресов будут просто проигнорированы. Используйте его, если хотите, чтобы данный HLM обслуживал только определенные подсети или серверы.

После внесения изменений в файл nhsrv.ini, необходимо перезапустить службу HASP License Manager, чтобы новые настройки вступили в силу.

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

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

  1. Приоритет последнего успешного подключения: Мы уже упоминали, что сервер 1С сначала пытается получить лицензию из того источника (файл программной лицензии или HASP-ключ), откуда лицензия была получена при последнем успешном подключении. Это означает, что если сервер ранее "запомнил" нежелательный ключ, он будет обращаться к нему вновь, пока не произойдет полный сброс или переконфигурация.
  2. Программные лицензии на менеджере кластера: Далее сервер ищет программные лицензии, установленные на компьютере менеджера кластера.
  3. Аппаратные ключи на менеджере кластера: Затем он ищет многопользовательские HASP-ключи, которые физически установлены на компьютере менеджера кластера сервера 1С:Предприятия.
  4. Сетевые аппаратные ключи через HASP License Manager: Только после проверки локальных источников, сервер 1С начинает искать многопользовательские HASP-ключи, доступные по сети с помощью HASP License Manager. И именно на этом этапе вступают в действие настройки nethasp.ini.

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

Рекомендации и устранение распространенных проблем

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

  1. Брандмауэр и антивирус: Проблемы с раздачей лицензий очень часто связаны с брандмауэром Windows или сторонним антивирусом, которые могут блокировать 475 порт (UDP и TCP). Убедитесь, что порт 475 открыт для входящих и исходящих соединений на всех машинах, участвующих в обмене лицензиями (сервер 1С, машины с HASP License Manager, клиентские машины).
  2. Статический IP-адрес для HLM: На серверах, где установлен HASP License Manager, мы настоятельно рекомендуем использовать статический IP-адрес. Это обеспечивает стабильность, поскольку NH_SERVER_ADDR в nethasp.ini будет всегда указывать на один и тот же адрес.
  3. Диагностика с помощью "Журнала поиска программных лицензий и HASP-ключей": 1С:Предприятие имеет встроенный инструмент для диагностики проблем с поиском лицензий. Мы можем использовать "Журнал поиска программных лицензий и HASP-ключей" (доступен в конфигураторе или через специальную утилиту lmcheck.exe или hasp_monitor.exe) для получения подробной информации о том, какие ключи и программные лицензии были найдены и использованы.
  4. Терминальные сессии: В терминальных сессиях локальные ключи могут быть не видны клиентским приложениям 1С. В таких случаях необходимо явно прописывать в nethasp.ini местоположение сетевого ключа и менеджера лицензий, даже если клиент работает на том же сервере, где установлен HLM.
  5. Проблемы с файлом 1cv8conn.pfl: Клиентское приложение 1С хранит информацию о ранее занятой клиентской лицензии в служебном файле 1cv8conn.pfl. Отсутствие доступа к этому файлу или его повреждение может привести к тому, что программа 1С займет лицензию с другого, возможно, нежелательного ключа. Убедитесь, что у пользователей есть права на чтение/запись в каталоге, где хранится этот файл.
  6. Множество ключей одной серии (ORGL8): Если в сети используются несколько аппаратных HASP-ключей одной серии (например, несколько ORGL8 на 5, 10 или 50 мест), и сервер 1С настроен на раздачу лицензий, он, как мы уже выяснили, выберет только один из них произвольно. Для решения этой фундаментальной проблемы рекомендуется либо заменить несколько мелких ключей на один с большим количеством лицензий, либо разнести ключи на разные компьютеры и настроить клиентов (и сервер 1С как клиента для сетевых ключей) так, чтобы они обращались к конкретным менеджерам лицензий (используя NH_SERVER_ADDR) в заданной последовательности для ORGL8, ORG8A, ORG8B. Например, основной ORGL8 на сервере 1С, ORG8A на другом сервере, и ORG8B на третьем, явно указывая IP-адреса в nethasp.ini.
  7. Последовательность применения настроек: Помните, что сервер 1С сначала попытается получить лицензию, которую он использовал в последний раз. Поэтому, после применения всех изменений в nethasp.ini и nhsrv.ini, критически важно перезапустить сервер 1С:Предприятия и попросить всех пользователей перезайти в базы. Только тогда новые настройки начнут действовать корректно и сервер сможет "забыть" старый, нежелательный путь к лицензиям. В сообщении 26 автор темы подтверждает, что после таких действий ключи стали браться правильно, что указывает на успешность применения рекомендаций.

Заключение

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

Правильная конфигурация, включающая отключение ненужных протоколов, явное указание IP-адресов менеджеров лицензий, отключение широковещательного поиска, а также перезапуск всех необходимых служб, позволяет добиться предсказуемого и управляемого распределения лицензий. Мы настоятельно рекомендуем применять статические IP-адреса для серверов с HASP License Manager и всегда проверять настройки брандмауэров, чтобы обеспечить беспрепятственный обмен данными на порту 475.

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

← На главную