В практике системного администрирования 1С часто возникают ситуации, когда после обновления платформы «отваливаются» лицензии. Особенно остро эта проблема стоит в гибридных инфраструктурах, где сервер приложений 1С работает под управлением Linux, а пользователи подключаются через терминальный сервер на Windows. Ситуация осложняется, если аппаратные ключи HASP (флешки) разнесены по разным физическим компьютерам в сети. Рассмотрим подробно, как диагностировать и решить проблему поиска лицензий в такой конфигурации.
Разберем типичный сценарий: имеется сервер 1С:Предприятия версии 8.3.15.1958 на Linux. Базы данных работают под управлением СУБД (например, PostgreSQL). Пользователи работают в терминальной сессии на Windows-сервере. Ключи защиты физически установлены на двух разных компьютерах в локальной сети. После обновления платформы один из ключей перестает видеться системой, хотя до обновления всё работало корректно.
Выясним основную причину: при обновлении платформы настройки драйверов и конфигурационные файлы (такие как nethasp.ini) могут быть перезаписаны или сброшены в состояние «по умолчанию». Кроме того, новые версии платформы могут иначе интерпретировать приоритеты поиска лицензий.
Прежде чем приступать к правке конфигов, проанализируем доступность портов. Основной порт для работы HASP License Manager — 475 (используются протоколы UDP и TCP). Проверим, открыт ли этот порт на машинах, где физически установлены ключи.
На стороне Windows-машины с ключом можно воспользоваться командой в PowerShell для проверки прослушивания порта:
Test-NetConnection -ComputerName IP_АДРЕС_ПК_С_КЛЮЧОМ -Port 475
На стороне Linux-сервера также важно убедиться, что брандмауэр (iptables или firewalld) не блокирует исходящие запросы к менеджерам лицензий. Если сервер 1С сам должен раздавать лицензии, на нем должен быть установлен пакет aksusbd.
В терминальной среде (Windows) наиболее критичным является файл nethasp.ini. Именно он указывает клиентскому приложению 1С, где именно в сети искать ключи, если широковещательный запрос (Broadcast) не срабатывает или ограничен настройками сети. Разберем по шагам правильное заполнение этого файла.
Важный нюанс: В 64-битных системах Windows может существовать несколько папок conf. Убедитесь, что вы редактируете файл в папке той разрядности платформы, которая запускается у пользователей (обычно это C:\Program Files\1cv8\conf для 64-битного клиента или C:\Program Files (x86)\1cv8\conf для 32-битного).
Отредактируем секцию [NH_TCPIP] следующим образом:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10, 192.168.1.11 ; Указываем IP-адреса всех ПК, где стоят ключи
NH_TCPIP_METHOD = TCP ; Или UDP, но TCP часто стабильнее в сложных сетях
NH_USE_BCAST = Disabled ; Выключаем широковещательный запрос, чтобы ускорить поиск и избежать конфликтов
Параметр NH_USE_BCAST = Disabled крайне важен. Если он включен (Enabled), 1С сначала пытается «крикнуть» в сеть и найти любой доступный ключ. Если она находит первый попавшийся ключ, на котором закончились свободные лицензии, поиск может прекратиться, так и не дойдя до второго адреса из списка NH_SERVER_ADDR. Отключив Broadcast, мы заставляем систему опрашивать указанные IP-адреса последовательно.
Проанализируем ситуацию, если лицензии должен выдавать именно сервер 1С (в настройках информационной базы стоит флаг «Разрешить выдачу лицензий сервером 1С:Предприятия»). В этом случае nethasp.ini нужно настраивать не только на рабочих станциях, но и на самом сервере Linux.
На Linux-сервере файл конфигурации обычно находится по пути /opt/1cv8/x86_64/conf/nethasp.ini (путь может отличаться в зависимости от версии и архитектуры). Рассмотрим основные моменты:
usr1cv8 должен иметь права на чтение этого файла.hasplm (если она установлена на Linux) не конфликтует с аналогичными службами на Windows-машинах.Рассмотрим техническое ограничение: если оба ваших аппаратных ключа относятся к одной серии (например, два сетевых ключа по 10 пользователей серии ORGL8), то один менеджер лицензий (HASP License Manager) не сможет обслуживать их оба одновременно на одном физическом ПК. Именно поэтому решение разнести их на разные компьютеры (как в нашем случае) является единственно верным.
Однако помните, что клиент 1С прекращает поиск, как только находит первый доступный менеджер лицензий нужной серии. Если на первом ключе (192.168.1.10) заняты все 10 лицензий, 1С может выдать ошибку, не попытавшись обратиться ко второму ключу (192.168.1.11). Чтобы этого избежать, убедитесь, что в nethasp.ini адреса прописаны через запятую, а на самих ПК с ключами в файле hasplm.ini (находится в папке драйвера HASP) заданы разные имена серверов в параметре HASP_ServerName.
Посмотрим, как платформа 1С версии 8.3 принимает решение о том, какую лицензию взять. Это поможет понять, почему аппаратный ключ может «игнорироваться»:
Если на сервере или терминале остались «хвосты» от старых программных лицензий или были установлены эмуляторы, поиск аппаратного сетевого ключа может просто не начаться. Проанализируем содержимое папок %ProgramData%\1C\1cv8\conf и %AppData%\1C\1cv8\conf на предмет лишних файлов лицензий.
Для восстановления работоспособности после обновления платформы 8.3.15 в связке с Linux-сервером выполним следующие действия:
nethasp.ini на терминальном сервере, указав конкретные IP-адреса и отключив NH_USE_BCAST.Такой системный подход позволяет гарантированно «подцепить» все доступные в сети аппаратные ключи и обеспечить бесперебойную работу пользователей в терминальной среде.