Порты 1540, 1541, 1560–1591 и 475: как 1С получает лицензию по сети
Содержание
Серверу лицензирования 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.
Как идёт соединение в клиент-серверном варианте
- Клиент обращается к агенту сервера (
ragent) на порт1540. - Агент направляет его к менеджеру кластера (
rmngr) на порт1541. - Менеджер назначает рабочий процесс (
rphost), и дальше клиент работает с ним напрямую на одном из портов диапазона1560–1591.
Отсюда частая ошибка: открыли только 1540 и 1541, а диапазон забыли. Подключение начинается, потом обрывается по таймауту. Консоль администрирования тоже ходит через агент, то есть на 1540.
Порты сервера лицензирования и кластера 1С: сводная таблица
| Порт | Протокол | Процесс | Зачем нужен | Нужен для лицензий |
|---|---|---|---|---|
| 1540 | TCP | ragent | Агент сервера, вход клиентов и консоли | Да |
| 1541 | TCP | rmngr | Главный менеджер кластера | Да |
| 1560–1591 | TCP | rphost, rmngr | Рабочие процессы и сервисы кластера | Да |
| 475 | UDP и TCP | HASP License Manager | Сетевой аппаратный ключ | Только при ключе HASP |
| 1947 | TCP | Sentinel LDK License Manager | Локальный менеджер ключей и веб-панель http://localhost:1947 | Нет, для доступа по сети не требуется |
| 1545 | TCP | ras | Сервер администрирования для утилиты rac | Нет |
| 1550 | TCP | dbgs | Сервер отладки | Нет |
Порт 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: через оснастку
- Откройте
wf.msc→ Правила для входящих подключений → Создать правило. - Тип правила — Для порта, протокол — TCP.
- В поле портов впишите
1540-1541,1560-1591. - Действие — Разрешить подключение, профили — тот, в котором работает сервер (обычно Доменный).
- Задайте понятное имя, например «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С.
- Разверните кластер → Рабочие серверы.
- Откройте свойства нужного рабочего сервера.
- В поле с диапазонами IP-портов замените или добавьте диапазон.
- Сохраните и перезапустите службу сервера 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 и контейнеры
В контейнере три вещи ломаются чаще всего.
- Проброс портов. Публикуйте всю тройку:
-p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591. Номера внутри и снаружи должны совпадать: кластер сообщает клиенту внутренний номер порта рабочего процесса. - Имя хоста. Задайте его явно (
--hostname srv1c) и сделайте так, чтобы клиенты разрешали это имя в адрес хоста Docker. - Привязка лицензии. Программная лицензия запоминает параметры окружения. При пересоздании контейнера меняются имя и MAC-адрес, и лицензия перестаёт подходить. Фиксируйте
--hostnameи--mac-address, каталог/var/1C/licensesдержите в постоянном томе.
Каждая повторная активация расходует попытку восстановления лицензии. Поэтому настройте постоянные параметры контейнера до активации, а не после.
USB-ключ в контейнер пробрасывать неудобно. Проще оставить ключ на хосте или другой машине с HASP License Manager и прописать её адрес в nethasp.ini внутри контейнера.