Порты 1540, 1541, 1560–1591 и 475: как 1С получает лицензию по сети

· 10 мин

Содержание

Серверу лицензирования 1С нужны TCP-порты 1540 (агент сервера), 1541 (менеджер кластера) и диапазон 1560–1591 (рабочие процессы). Если лицензии выдаёт сетевой аппаратный ключ HASP, добавьте порт 475 по UDP и TCP. Это порты по умолчанию: их меняют при установке второго кластера на тот же компьютер.

Типичная картина: сервер 1С стоит, базы опубликованы, а пользователи получают Не обнаружен ключ защиты программы или полученная программная лицензия!. Часто дело не в лицензии, а в закрытом порте: клиент просто не достучался до того, кто её выдаёт. Поэтому начинать стоит с сети.

Кто выдаёт лицензию в сети: кластер серверов или менеджер ключей

Под «сервером лицензирования 1С» в разговорах имеют в виду два разных механизма. От того, какой у вас, зависит набор портов.

🔹 Программные лицензии на сервере 1С. Файлы лицензий лежат на компьютере, где работает кластер:

  • Windows — C:\ProgramData\1C\licenses;
  • Linux — /var/1C/licenses.

Клиент подключается к кластеру, кластер выдаёт сеансу клиентскую лицензию. Отдельного «сервиса лицензий» с собственным портом здесь нет: лицензия идёт по тем же соединениям, по которым клиент работает с базой. Поэтому порты лицензирования — это порты кластера.

🔹 Сетевой аппаратный ключ HASP. Ключ вставлен в любой компьютер сети, на нём запущен HASP License Manager. Клиенты 1С находят ключ по протоколу UDP/TCP на порту 475. Этот вариант работает и в файловом режиме, без сервера 1С.

🔹 Смешанный вариант. Лицензия на сам сервер 1С (серверная) — программная или ключ, а клиентские — сетевой ключ HASP. Тогда открывать нужно и порты кластера, и 475.

Как идёт соединение в клиент-серверном варианте

  1. Клиент обращается к агенту сервера (ragent) на порт 1540.
  2. Агент направляет его к менеджеру кластера (rmngr) на порт 1541.
  3. Менеджер назначает рабочий процесс (rphost), и дальше клиент работает с ним напрямую на одном из портов диапазона 1560–1591.

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

Порты сервера лицензирования и кластера 1С: сводная таблица

ПортПротоколПроцессЗачем нуженНужен для лицензий
1540TCPragentАгент сервера, вход клиентов и консолиДа
1541TCPrmngrГлавный менеджер кластераДа
1560–1591TCPrphost, rmngrРабочие процессы и сервисы кластераДа
475UDP и TCPHASP License ManagerСетевой аппаратный ключТолько при ключе HASP
1947TCPSentinel LDK License ManagerЛокальный менеджер ключей и веб-панель http://localhost:1947Нет, для доступа по сети не требуется
1545TCPrasСервер администрирования для утилиты racНет
1550TCPdbgsСервер отладкиНет

Порт 1545 откройте, только если администрируете кластер удалённо через rac или сторонние консоли. Порт отладки на рабочем сервере держите закрытым.

Диапазон 1560–1591 — это 32 порта. Каждому рабочему процессу и каждому сервису кластера нужен свой порт. На сервере с десятками рабочих процессов диапазон расширяют, например до 1560–1691, и правило брандмауэра меняют вместе с ним.

Как открыть порты 1С в брандмауэре Windows и Linux

Правила создают на компьютере, где стоит сервер 1С или ключ HASP. На клиентских машинах входящие правила не нужны: им достаточно разрешённых исходящих соединений, а они в Windows разрешены по умолчанию.

Windows: через командную строку

Запустите командную строку от имени администратора и выполните:

netsh advfirewall firewall add rule name="1C Server Cluster" dir=in action=allow protocol=TCP localport=1540-1541,1560-1591
netsh advfirewall firewall add rule name="HASP LM UDP" dir=in action=allow protocol=UDP localport=475
netsh advfirewall firewall add rule name="HASP LM TCP" dir=in action=allow protocol=TCP localport=475

Две последние строки нужны только на компьютере с сетевым ключом.

Windows: через PowerShell

New-NetFirewallRule -DisplayName "1C Server Cluster" -Direction Inbound -Protocol TCP -LocalPort 1540,1541,1560-1591 -Action Allow
New-NetFirewallRule -DisplayName "HASP LM UDP" -Direction Inbound -Protocol UDP -LocalPort 475 -Action Allow

Windows: через оснастку

  1. Откройте wf.msc → Правила для входящих подключений → Создать правило.
  2. Тип правила — Для порта, протокол — TCP.
  3. В поле портов впишите 1540-1541,1560-1591.
  4. Действие — Разрешить подключение, профили — тот, в котором работает сервер (обычно Доменный).
  5. Задайте понятное имя, например «1С кластер».

Если в сети стоит отдельный межсетевой экран или правила разрешают доступ только из определённых подсетей, поле Удалённые IP-адреса в правиле ограничьте подсетью пользователей. Открывать порты кластера в интернет нельзя.

Linux: ufw и firewalld

Для Ubuntu и Debian с ufw:

sudo ufw allow 1540:1541/tcp
sudo ufw allow 1560:1591/tcp

Для дистрибутивов с firewalld:

sudo firewall-cmd --permanent --add-port=1540-1541/tcp
sudo firewall-cmd --permanent --add-port=1560-1591/tcp
sudo firewall-cmd --reload

Как изменить порты кластера 1С и диапазон рабочих процессов

Порты меняют в двух случаях: на одном компьютере нужен второй кластер (например, другой версии платформы) или стандартные порты заняты. Принято сдвигать всю тройку на сотню: 2540, 2541, 2560–2591.

Порт агента и менеджера — в параметрах службы

Порты агента и главного менеджера задаются при регистрации службы. Строка запуска службы выглядит так:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d "C:\Program Files\1cv8\srvinfo2"
  • -port — порт агента (1540 по умолчанию);
  • -regport — порт главного менеджера кластера (1541);
  • -range — диапазон портов рабочих процессов (1560:1591);
  • -d — каталог служебных файлов кластера. У второго кластера он должен быть свой.

Для второго экземпляра службу регистрируют заново с новыми параметрами (ключ -instsrvc вместо -srvc, плюс учётная запись службы). У действующей службы строку запуска в Windows правят в реестре, в параметре ImagePath раздела службы HKLM\SYSTEM\CurrentControlSet\Services\<имя службы>.

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

Диапазон портов — в консоли администрирования

  1. Откройте консоль администрирования серверов 1С.
  2. Разверните кластер → Рабочие серверы.
  3. Откройте свойства нужного рабочего сервера.
  4. В поле с диапазонами IP-портов замените или добавьте диапазон.
  5. Сохраните и перезапустите службу сервера 1С в окно без пользователей.

Новый диапазон сразу добавьте в правило брандмауэра. Иначе рабочие процессы, получившие порт из нового диапазона, будут недоступны снаружи.

Строка подключения к базе с нестандартным портом

Если порт главного менеджера отличается от 1541, клиенту его указывают явно — через двоеточие после имени сервера:

Srvr="srv1c:2541";Ref="buh";

В окне добавления базы это поле Кластер серверов 1С:Предприятия: впишите srv1c:2541. В консоли администрирования при добавлении центрального сервера указывают порт агента — 2540.

Сетевой ключ HASP: настройка порта 475 и файла nethasp.ini

Когда клиентских лицензий нет на сервере, а стоит сетевой ключ, поиск идёт широковещательными запросами по UDP. В локальной сети с одним сегментом это работает само. Через VPN, маршрутизаторы и разные подсети широковещание не проходит — ключ нужно прописать явно.

На компьютере с ключом

  • 🔑 установите драйвер ключа и HASP License Manager;
  • 🔑 убедитесь, что служба менеджера запущена (в списке служб она называется «HASP Loader»);
  • 🔑 откройте порт 475 по UDP и TCP.

На клиентах

Создайте или отредактируйте файл nethasp.ini в каталоге conf платформы, например C:\Program Files\1cv8\conf\nethasp.ini:

[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10
NH_PORT_NUMBER = 475
NH_TCPIP_METHOD = UDP
NH_USE_BROADCAST = Disabled
  • NH_SERVER_ADDR — IP-адрес или имя компьютера с ключом, можно несколько через запятую;
  • NH_TCPIP_METHOD — UDP или TCP; через VPN надёжнее TCP;
  • NH_USE_BROADCAST = Disabled отключает широковещательный поиск и ускоряет запуск.

После сохранения перезапустите 1С на клиенте. Если ключ стоит на сервере 1С и клиентские лицензии выдаёт кластер, тот же nethasp.ini нужен в каталоге conf платформы на сервере.

Видимость ключа и число занятых лицензий удобно смотреть утилитой Aladdin Monitor: она опрашивает менеджер по тому же порту 475. Если монитор с клиентской машины ключ не видит, 1С его тоже не увидит.

Диагностика ошибок подключения к лицензиям 1С

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

Шаг 1. Проверьте доступность портов с клиента

В PowerShell на машине пользователя:

Test-NetConnection srv1c -Port 1540
Test-NetConnection srv1c -Port 1541
Test-NetConnection srv1c -Port 1560

TcpTestSucceeded : True — порт открыт. Порт 1560 отвечает, только если на нём сейчас работает рабочий процесс, поэтому проверяйте и соседние номера. UDP 475 так не проверить: используйте Aladdin Monitor.

Шаг 2. Проверьте, что имя сервера разрешается

Кластер сообщает клиенту адрес рабочего процесса по имени компьютера, а не по IP. Если клиент не может разрешить это имя (нет записи в DNS, сервер за NAT, другая подсеть), подключение к агенту проходит, а дальше обрывается. Временное решение — запись в C:\Windows\System32\drivers\etc\hosts на клиенте, правильное — запись в DNS.

Шаг 3. Посмотрите, кому выданы лицензии

На сервере через утилиту rac (нужен запущенный ras на порту 1545):

rac cluster list
rac session list --cluster=<id кластера> --licenses

Вывод покажет, какие сеансы держат лицензии и откуда они получены. Если все лицензии заняты «зависшими» сеансами, их завершают в консоли администрирования в узле Сеансы. Завершение сеанса обрывает работу пользователя без сохранения — сначала убедитесь, что сеанс действительно брошен.

Шаг 4. Проверьте файлы лицензий и ключ

Убедитесь, что в C:\ProgramData\1C\licenses (или /var/1C/licenses) есть файлы лицензий и у учётной записи службы сервера 1С есть права на чтение каталога. После замены сетевой карты, переустановки ОС или переноса в виртуальную машину программная лицензия может перестать подходить к оборудованию — её восстанавливают по пин-коду.

Диагностика: выберите симптом

Терминальный сервер и Docker: особенности портов и лицензий

Терминальный сервер

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

  • 🖥️ программная клиентская лицензия, активированная на терминальном сервере, привязывается к нему; каждый сеанс 1С занимает место;
  • 🖥️ однопользовательский USB-ключ на терминальном сервере для многих сеансов не подходит — нужен многопользовательский сетевой ключ или программная лицензия;
  • 🖥️ при сетевом ключе nethasp.ini кладут в каталог conf платформы на терминальном сервере, один файл обслуживает все сеансы.

Docker и контейнеры

В контейнере три вещи ломаются чаще всего.

  1. Проброс портов. Публикуйте всю тройку: -p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591. Номера внутри и снаружи должны совпадать: кластер сообщает клиенту внутренний номер порта рабочего процесса.
  2. Имя хоста. Задайте его явно (--hostname srv1c) и сделайте так, чтобы клиенты разрешали это имя в адрес хоста Docker.
  3. Привязка лицензии. Программная лицензия запоминает параметры окружения. При пересоздании контейнера меняются имя и MAC-адрес, и лицензия перестаёт подходить. Фиксируйте --hostname и --mac-address, каталог /var/1C/licenses держите в постоянном томе.

Каждая повторная активация расходует попытку восстановления лицензии. Поэтому настройте постоянные параметры контейнера до активации, а не после.

USB-ключ в контейнер пробрасывать неудобно. Проще оставить ключ на хосте или другой машине с HASP License Manager и прописать её адрес в nethasp.ini внутри контейнера.

Частые вопросы о портах сервера лицензирования 1С

Нужно ли открывать порты на клиентских компьютерах?
Нет. Входящие правила нужны только на сервере 1С и на компьютере с сетевым ключом. Клиенту достаточно исходящих соединений, которые по умолчанию разрешены.
Можно ли сузить диапазон 1560–1591 до нескольких портов?
Можно, но портов должно хватать на все рабочие процессы и сервисы кластера. Слишком узкий диапазон приводит к ошибкам запуска рабочих процессов при росте нагрузки.
Работает ли сетевой ключ HASP в файловом режиме?
Да. Для файловой базы сервер 1С не нужен: клиент сам находит ключ по порту 475. Нужны только запущенный менеджер лицензий и доступ к порту.
Зачем порт 1947, если 1С использует 475?
На 1947 работает локальная служба Sentinel LDK и её веб-панель. Сетевые ключи 1С обслуживает HASP License Manager на порту 475, поэтому 1947 наружу открывать не нужно.
Как понять, что лицензию выдал сервер, а не ключ на клиенте?
Посмотрите сеансы через rac session list с ключом –licenses или в консоли администрирования: у сеанса указано, откуда получена лицензия.