Брандмауэр для кластера 1С:Предприятия 8.3: что пропустить и как проверить
Содержание
Для сервера 1С:Предприятия 8.3 на входящие соединения открывают TCP-порты 1540 (агент сервера), 1541 (менеджер кластера) и весь диапазон 1560-1591 (рабочие процессы). Этого достаточно, чтобы толстый и тонкий клиент подключились к базе в клиент-серверном режиме. Остальные порты — для СУБД, консоли через RAS, отладки и лицензий — открывают по ситуации.
Типичная история: администратор переносит сервер 1С на новую машину, база в консоли видна, а у бухгалтеров при входе висит ошибка соединения. Частая причина — на брандмауэре разрешили только 1540 и 1541, а диапазон рабочих процессов забыли. Вторая по частоте — клиент не может разрешить сетевое имя сервера, хотя все порты открыты.
Основные порты кластера серверов 1С и кто их слушает
Подключение клиента идёт в три шага. Клиент обращается к агенту сервера на 1540. Агент сообщает адрес менеджера кластера на 1541. Менеджер выдаёт клиенту рабочий процесс, и дальше весь обмен данными идёт уже с ним — на порт из диапазона 1560-1591.
Отсюда простое правило: если закрыт любой из трёх участков, клиент не войдёт в базу.
| Порт | Процесс | Кто подключается | Обязателен |
|---|---|---|---|
| 1540 TCP | ragent — агент сервера | клиенты, консоль администрирования, RAS | да |
| 1541 TCP | rmngr — менеджер кластера | клиенты, другие серверы кластера | да |
| 1560-1591 TCP | rphost — рабочие процессы, дополнительные менеджеры | клиенты, другие серверы кластера | да |
| 1545 TCP | ras — сервер администрирования | утилита rac, сторонние консоли | если используете rac |
| 1550 TCP | dbgs — сервер отладки | Конфигуратор, EDT | только на тестовом сервере |
Порты по умолчанию задаются при установке службы. Их видно в параметрах запуска агента:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -debug -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Здесь -port — порт агента, -regport — порт менеджера кластера, -range — диапазон для рабочих процессов. Клиентский компьютер входящих портов для 1С не требует: он только инициирует исходящие соединения.
Ключ -debug в строке запуска включает режим отладки на сервере. На рабочем сервере его обычно убирают: он нагружает процессы и открывает лишнюю точку входа.
Сколько портов нужно в диапазоне
Каждый рабочий процесс занимает порт из диапазона. Если в свойствах кластера включено несколько менеджеров или режим «менеджер под каждый сервис», дополнительные процессы rmngr тоже берут порты оттуда же.
Стандартных 32 портов хватает для сервера на 3-5 рабочих процессов с запасом. Когда процессов становится больше 15-20 или на машине работают несколько кластеров, диапазон расширяют, например до 1560:1691. Главное — открыть на брандмауэре ровно тот диапазон, который задан в 1С, а не «примерно такой же».
Порты для СУБД, лицензий и служебных сервисов
Рабочие процессы 1С сами ходят в базу данных. Клиенты к СУБД напрямую не подключаются. Поэтому порт СУБД открывают только между сервером 1С и сервером базы данных, если это разные машины.
| Сервис | Порт по умолчанию | Когда открывать |
|---|---|---|
| Microsoft SQL Server | 1433 TCP | СУБД на отдельной машине |
| SQL Server Browser | 1434 UDP | именованный экземпляр без фиксированного порта |
| PostgreSQL | 5432 TCP | СУБД на отдельной машине |
| Сетевой ключ HASP (License Manager) | 475 TCP/UDP | аппаратный сетевой ключ стоит на другом компьютере |
| Веб-интерфейс Sentinel | 1947 TCP | только для администратора ключей |
| Веб-сервер с публикацией | 80 / 443 TCP | тонкий клиент через http, веб-клиент, HTTP-сервисы |
- 🗄️ MS SQL, именованный экземпляр. По умолчанию такой экземпляр получает динамический порт, и он меняется после перезапуска. Задайте постоянный порт в
SQL Server Configuration Managerв свойствах протокола TCP/IP, разделIPAll, и откройте именно его. - 🐘 PostgreSQL. Кроме брандмауэра, проверьте параметр
listen_addressesвpostgresql.confи разрешение для адреса сервера 1С вpg_hba.conf. Без этого порт будет открыт, а соединение отклонено. - 🔑 Программные лицензии. Их проверяет сам сервер 1С, отдельного порта для них не нужно.
Не публикуйте порт СУБД в интернет и не открывайте его для всей локальной сети. Достаточно разрешить подключение с IP-адресов серверов 1С.
Почему диапазон рабочих процессов — главный источник проблем
Порты агента и менеджера постоянны. А вот какой именно порт из диапазона получит клиент, заранее неизвестно: рабочий процесс после перезапуска может занять другой. Поэтому правило «открыть 1561» вместо «открыть 1560-1591» сначала работает, а потом ломается без видимой причины.
С точки зрения безопасности 32 открытых порта выглядят тревожно. Но слушают их только процессы 1С, и проблема решается не сокращением диапазона, а ограничением источников:
- 🧱 разрешайте входящие соединения только из подсетей, где стоят клиенты, терминальные серверы и веб-серверы;
- 🌐 не пробрасывайте порты 1С в интернет напрямую — для удалённых сотрудников используйте VPN, терминальный сервер или публикацию через веб-сервер с HTTPS;
- 🔒 задайте администратора кластера и администратора агента в консоли, чтобы постороннему не хватило одного открытого порта для управления кластером;
- 🧹 уберите
-debugи не держите открытым1550на рабочем сервере.
Как изменить диапазон или порты
Диапазон для конкретного сервера задают в консоли кластера: Рабочие серверы → свойства сервера → Диапазоны IP-портов. Именно в свойствах рабочего сервера, а не кластера. Новый диапазон начинает действовать для вновь запущенных процессов.
Порты агента и менеджера меняют в строке запуска службы: в Windows — в параметре ImagePath раздела реестра службы агента в HKLM\SYSTEM\CurrentControlSet\Services\, в Linux — в параметрах запуска службы srv1cv8.
Перед изменением порта менеджера кластера сделайте копию папки srvinfo. Реестр кластера хранится в подпапке reg_1541, где число — это значение -regport. Поменяете порт на 1641, и агент создаст пустую папку reg_1641: кластер появится без баз. Это не потеря данных, но выглядит пугающе. Либо переименуйте папку, либо регистрируйте кластер заново.
Изменения в строке запуска вступают в силу после перезапуска службы агента. Все сеансы пользователей при этом оборвутся, а несохранённые документы пропадут. Делайте это вне рабочего времени, предупредив пользователей.
Второй кластер на той же машине обычно запускают на соседней «сотне»: -port 1640 -regport 1641 -range 1660:1691. Тогда правила брандмауэра легко дублировать.
Правила брандмауэра Windows и Linux для сервера 1С
На Windows Server 2016 и новее правило проще всего создать из командной строки от имени администратора. Одна команда закрывает все обязательные порты:
netsh advfirewall firewall add rule name="1C Server 8.3" dir=in action=allow protocol=TCP localport=1540-1541,1560-1591
То же в PowerShell, с ограничением по подсети клиентов:
New-NetFirewallRule -DisplayName "1C Server 8.3" -Direction Inbound -Protocol TCP -LocalPort 1540,1541,1560-1591 -RemoteAddress 192.168.10.0/24 -Action Allow
Через графический интерфейс путь такой: Панель управления → Брандмауэр Защитника Windows → Дополнительные параметры → Правила для входящих подключений → Создать правило. Тип правила — «Для порта», протокол TCP, в поле портов перечислите 1540-1541, 1560-1591.
Нюансы, на которых спотыкаются:
- Правило должно действовать для того профиля сети, в котором находится сервер. Сервер в домене работает в профиле «Доменный», и правило только для «Частного» не сработает.
- Разрешение по программе (
ragent.exe) вместо портов ломается при обновлении платформы: путь к исполняемому файлу содержит номер версии. - Сторонний антивирус с собственным сетевым экраном работает поверх брандмауэра Windows. Порты придётся открыть и в нём.
На Linux с firewalld:
sudo firewall-cmd --permanent --add-port=1540-1541/tcp
sudo firewall-cmd --permanent --add-port=1560-1591/tcp
sudo firewall-cmd --reload
На Ubuntu и Debian с ufw:
sudo ufw allow from 192.168.10.0/24 to any port 1540:1541 proto tcp
sudo ufw allow from 192.168.10.0/24 to any port 1560:1591 proto tcp
Диагностика: на каком шаге не проходит соединение
Сообщение об ошибке обычно содержит адрес и порт, к которому клиент не смог подключиться. Например: Ошибка соединения с сервером 1С:Предприятия 8.3 с фрагментом server_addr=tcp://srv1c:1541. Порт в этом фрагменте сразу показывает, какой участок закрыт.
Проверьте по порядку с компьютера клиента:
- Агент. В PowerShell:
Test-NetConnection srv1c -Port 1540. СтрокаTcpTestSucceeded : True— порт доступен. - Менеджер кластера. То же для
1541. - Рабочий процесс. Узнайте, какой порт занял
rphost, и проверьте его. На сервере выполнитеnetstat -ano | findstr LISTENINGи найдите порты из диапазона рядом с PID процессаrphost.exeв диспетчере задач. В Linux —ss -tlnp | grep rphost. - Имя сервера. Выполните
ping srv1cс клиента. Ответ должен прийти с правильного IP.
Четвёртый пункт пропускают чаще всего. Сервер сообщает клиенту адрес рабочего процесса по своему сетевому имени. Если клиент не может это имя разрешить — например, он подключается по IP или из другой подсети без DNS, — соединение рвётся даже при открытых портах. Лечится записью в DNS или строкой в файле C:\Windows\System32\drivers\etc\hosts на клиенте.
Порты при нескольких рабочих серверах и балансировке
Когда в кластере два и больше рабочих серверов, сеть усложняется. Клиент может получить рабочий процесс на любом из них. Значит, порты 1540, 1541 и диапазон рабочих процессов должны быть открыты на каждом сервере кластера — и для клиентов, и для других серверов.
Серверы кластера постоянно обмениваются данными между собой. Если между ними стоит межсетевой экран, правила нужны в обе стороны.
Что учесть при масштабировании:
- 📐 Диапазоны задаются для каждого сервера отдельно в его свойствах. Они могут совпадать, если серверы разные машины, но брандмауэр каждой машины должен пропускать именно её диапазон.
- 🛡️ Резервирование менеджера кластера. Если включаете резервный центральный сервер, на нём тоже должны быть открыты
1540и1541. - 🧭 Требования назначения функциональности позволяют закрепить, например, фоновые задания за одним сервером. На набор портов это не влияет: рабочие процессы на любом сервере слушают диапазон.
- 🌍 Веб-сервер с публикацией — тоже клиент кластера. Между ним и серверами 1С нужны те же три участка портов, а пользователям достаточно 443.
Для кластера из нескольких машин удобно держать одинаковые порты и одинаковый текст правил на всех серверах. Тогда новый сервер добавляется копированием одной команды netsh.