Организация удаленной работы сотрудников часто требует подключения к локальным ресурсам офиса из внешней сети. Одной из наиболее распространенных проблем при такой схеме работы является получение лицензий 1С:Предприятие удаленными пользователями, подключенными через VPN. Особенно остро этот вопрос встает, когда базы данных работают в файловом режиме, а ключи защиты (как аппаратные, так и программные) находятся внутри корпоративной сети.
В данной статье мы подробно разберем, как правильно настроить систему для трансляции сетевых аппаратных лицензий через Kerio Control VPN Client, рассмотрим синтаксис конфигурационных файлов, настроим брандмауэр и проанализируем возможные сетевые проблемы, такие как ограничения MTU и маршрутизация.
Прежде чем переходить к настройке, проанализируем исходные данные. В локальной сети компании могут присутствовать два типа лицензий:
192.168.0.45 для терминальных сессий (RDP), получить их напрямую на удаленном компьютере через VPN невозможно. Программная лицензия «не умеет» раздаваться по сети силами самого клиента 1С при файловом подключении.192.168.0.40), а специальная служба — HASP License Manager — занимается их раздачей по локальной сети. Именно этот тип лицензий можно и нужно транслировать удаленным пользователям, подключенным по VPN.Выясним, как заставить локальный ПК удаленного пользователя увидеть аппаратный ключ на сервере 192.168.0.40 через Kerio VPN.
По умолчанию платформа 1С:Предприятие пытается найти менеджер лицензий HASP с помощью широковещательных (broadcast) запросов по сети. Однако широковещательные пакеты не проходят через VPN-туннели, поскольку виртуальная сеть клиента и физическая локальная сеть офиса представляют собой разные подсети (например, сеть VPN-клиентов — 10.10.10.0/24, а локальная сеть — 192.168.0.0/24).
Чтобы клиент 1С отправлял направленный (unicast) запрос непосредственно на сервер лицензирования 192.168.0.40, необходимо отредактировать конфигурационный файл nethasp.ini на компьютере удаленного пользователя.
Выполним следующие действия по шагам:
%ProgramFiles(x86)%\1cv8\conf\ или в папку конкретного релиза, например, %ProgramFiles(x86)%\1cv8\8.3.XX.XXXX\conf\.%ProgramFiles%\1cv8\conf\.nethasp.ini. Если его там нет, создадим обычный текстовый файл с таким именем.
[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.0.40
NH_USE_BROADCAST = Disabled
Разберем подробнее параметры, которые мы указали в файле:
NH_IPX = Disabled и NH_NETBIOS = Disabled — отключают устаревшие сетевые протоколы, ускоряя время запуска 1С за счет исключения лишних поисковых запросов.NH_TCPIP = Enabled — разрешает использование протокола TCP/IP для поиска ключа.NH_SERVER_ADDR = 192.168.0.40 — самый важный параметр. Мы жестко указываем IP-адрес сервера, на котором физически установлен USB-ключ и запущен HASP License Manager. Если в сети несколько серверов с ключами, их адреса можно перечислить через запятую.NH_USE_BROADCAST = Disabled — принудительно запрещает широковещательный поиск в сети. Это избавляет систему от попыток слать мусорные пакеты, которые все равно будут заблокированы VPN-шлюзом.Даже при правильной настройке файла nethasp.ini на стороне клиента, брандмауэр Kerio Control на стороне офиса может блокировать прохождение пакетов авторизации. Менеджер лицензий HASP по умолчанию принимает запросы по протоколу UDP на порт 475. Обратите внимание, что даже если в секции настроек указано [NH_TCPIP], реальный обмен данными между защитой 1С и менеджером лицензий происходит именно по UDP.
Для настройки доступа системному администратору со стороны офиса необходимо создать соответствующее правило в консоли Kerio Control:
192.168.0.40).475 UDP. Дополнительно, если используются современные ключи Sentinel LDK, рекомендуется открыть порт 1947 (TCP и UDP).Если после выполнения шагов 1 и 2 программа 1С по-прежнему выдает ошибку «Ключ защиты не найден», проведем диагностику сетевого соединения по шагам:
ping 192.168.0.40
Если пинг не проходит, проблема в маршрутах Kerio Control. Убедитесь, что клиент получает IP-адрес из пула VPN и трафик между VPN-сетью и LAN-сетью разрешен политиками маршрутизации.
ping использует протокол ICMP, успешный пинг не гарантирует доступность нужного порта. Проверить доступность UDP-порта можно с помощью утилиты PortQry от Microsoft или аналогичных сканеров портов. Выполним в командной строке:
portqry -n 192.168.0.40 -p udp -e 475
Статус должен быть LISTENING или FILTERED (в зависимости от настроек брандмауэра на самом сервере лицензирования).
nhsrvice.exe (HASP Loader). При необходимости создадим разрешающее правило для входящих подключений.Специфическая проблема, с которой часто сталкиваются администраторы при работе HASP через VPN — периодические «отвалы» лицензии в процессе работы 1С. Пользователь может успешно запустить программу, но через некоторое время получить аварийное завершение работы с ошибкой потери ключа.
Выясним причину этого поведения. Протокол UDP не имеет встроенных механизмов подтверждения доставки и контроля целостности на транспортном уровне. Пакеты HASP, проходя через шифрованный канал Kerio VPN, упаковываются в дополнительные служебные заголовки VPN-протокола. Это увеличивает исходный размер сетевого кадра.
Если размер кадра превышает стандартное значение MTU (Maximum Transmission Unit) провайдера или виртуального адаптера Kerio Virtual Network (обычно это 1500 байт), пакет начинает фрагментироваться на стороне отправителя. Многие промежуточные роутеры или правила безопасности на шлюзе офиса настроены на автоматический сброс фрагментированных UDP-пакетов в целях безопасности. Как результат — лицензия теряется.
Для решения этой проблемы настроим оптимальный размер MTU на виртуальном адаптере удаленного пользователя:
netsh interface ipv4 show subinterfaces
1300 или 1350 байт (это гарантирует отсутствие фрагментации):
netsh interface ipv4 set subinterface "Kerio Virtual Network" mtu=1350 store=persistent
Что делать, если на сервере 192.168.0.45 установлены именно программные (файловые) многопользовательские лицензии, и вы не можете раздать их через HASP LM? Есть отличное архитектурное решение — публикация базы данных на веб-сервере.
Рассмотрим эту схему:
192.168.0.45 разворачивается веб-сервер (Microsoft IIS или Apache).http://192.168.0.45/MyBase (подключение идет через VPN-канал).192.168.0.45, и передает удаленному пользователю уже готовый сеанс работы. На ПК пользователя никакие файлы лицензий и драйверы защиты ставить не требуется.Этот способ является наиболее современным, быстрым и стабильным при работе через VPN-каналы с низкой пропускной способностью.