Брандмауэр для кластера 1С:Предприятия 8.3: что пропустить и как проверить

· 9 мин

Содержание

Для сервера 1С:Предприятия 8.3 на входящие соединения открывают TCP-порты 1540 (агент сервера), 1541 (менеджер кластера) и весь диапазон 1560-1591 (рабочие процессы). Этого достаточно, чтобы толстый и тонкий клиент подключились к базе в клиент-серверном режиме. Остальные порты — для СУБД, консоли через RAS, отладки и лицензий — открывают по ситуации.

Типичная история: администратор переносит сервер 1С на новую машину, база в консоли видна, а у бухгалтеров при входе висит ошибка соединения. Частая причина — на брандмауэре разрешили только 1540 и 1541, а диапазон рабочих процессов забыли. Вторая по частоте — клиент не может разрешить сетевое имя сервера, хотя все порты открыты.

Основные порты кластера серверов 1С и кто их слушает

Подключение клиента идёт в три шага. Клиент обращается к агенту сервера на 1540. Агент сообщает адрес менеджера кластера на 1541. Менеджер выдаёт клиенту рабочий процесс, и дальше весь обмен данными идёт уже с ним — на порт из диапазона 1560-1591.

Отсюда простое правило: если закрыт любой из трёх участков, клиент не войдёт в базу.

ПортПроцессКто подключаетсяОбязателен
1540 TCPragent — агент сервераклиенты, консоль администрирования, RASда
1541 TCPrmngr — менеджер кластераклиенты, другие серверы кластерада
1560-1591 TCPrphost — рабочие процессы, дополнительные менеджерыклиенты, другие серверы кластерада
1545 TCPras — сервер администрированияутилита rac, сторонние консолиесли используете rac
1550 TCPdbgs — сервер отладкиКонфигуратор, 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 Server1433 TCPСУБД на отдельной машине
SQL Server Browser1434 UDPименованный экземпляр без фиксированного порта
PostgreSQL5432 TCPСУБД на отдельной машине
Сетевой ключ HASP (License Manager)475 TCP/UDPаппаратный сетевой ключ стоит на другом компьютере
Веб-интерфейс Sentinel1947 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.

Нюансы, на которых спотыкаются:

  1. Правило должно действовать для того профиля сети, в котором находится сервер. Сервер в домене работает в профиле «Доменный», и правило только для «Частного» не сработает.
  2. Разрешение по программе (ragent.exe) вместо портов ломается при обновлении платформы: путь к исполняемому файлу содержит номер версии.
  3. Сторонний антивирус с собственным сетевым экраном работает поверх брандмауэра 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
Перед тем как пускать пользователей
Выполнено: 0 / 6

Диагностика: на каком шаге не проходит соединение

Сообщение об ошибке обычно содержит адрес и порт, к которому клиент не смог подключиться. Например: Ошибка соединения с сервером 1С:Предприятия 8.3 с фрагментом server_addr=tcp://srv1c:1541. Порт в этом фрагменте сразу показывает, какой участок закрыт.

Проверьте по порядку с компьютера клиента:

  1. Агент. В PowerShell: Test-NetConnection srv1c -Port 1540. Строка TcpTestSucceeded : True — порт доступен.
  2. Менеджер кластера. То же для 1541.
  3. Рабочий процесс. Узнайте, какой порт занял rphost, и проверьте его. На сервере выполните netstat -ano | findstr LISTENING и найдите порты из диапазона рядом с PID процесса rphost.exe в диспетчере задач. В Linux — ss -tlnp | grep rphost.
  4. Имя сервера. Выполните ping srv1c с клиента. Ответ должен прийти с правильного IP.

Четвёртый пункт пропускают чаще всего. Сервер сообщает клиенту адрес рабочего процесса по своему сетевому имени. Если клиент не может это имя разрешить — например, он подключается по IP или из другой подсети без DNS, — соединение рвётся даже при открытых портах. Лечится записью в DNS или строкой в файле C:\Windows\System32\drivers\etc\hosts на клиенте.

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

Порты при нескольких рабочих серверах и балансировке

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

Серверы кластера постоянно обмениваются данными между собой. Если между ними стоит межсетевой экран, правила нужны в обе стороны.

Что учесть при масштабировании:

  • 📐 Диапазоны задаются для каждого сервера отдельно в его свойствах. Они могут совпадать, если серверы разные машины, но брандмауэр каждой машины должен пропускать именно её диапазон.
  • 🛡️ Резервирование менеджера кластера. Если включаете резервный центральный сервер, на нём тоже должны быть открыты 1540 и 1541.
  • 🧭 Требования назначения функциональности позволяют закрепить, например, фоновые задания за одним сервером. На набор портов это не влияет: рабочие процессы на любом сервере слушают диапазон.
  • 🌍 Веб-сервер с публикацией — тоже клиент кластера. Между ним и серверами 1С нужны те же три участка портов, а пользователям достаточно 443.

Для кластера из нескольких машин удобно держать одинаковые порты и одинаковый текст правил на всех серверах. Тогда новый сервер добавляется копированием одной команды netsh.

Частые вопросы

Нужно ли открывать порты на компьютерах пользователей?
Нет. Клиент 1С только устанавливает исходящие соединения к серверу. Входящие порты нужны на сервере 1С и, при отдельной машине, на сервере СУБД.
Можно ли сократить диапазон рабочих процессов до нескольких портов?
Можно, но в диапазоне должно хватать портов на все рабочие процессы и дополнительные менеджеры кластера. Если портов не хватит, новые процессы не запустятся. Безопаснее ограничивать подключение по IP-адресам источников.
Как открыть доступ к серверу 1С из интернета?
Не пробрасывайте порты 1540-1591 напрямую. Используйте VPN, терминальный сервер или публикацию базы на веб-сервере с HTTPS на порту 443.
Какой порт нужен для файловой базы?
Своих портов у файловой базы нет. Доступ идёт через общую сетевую папку Windows по протоколу SMB, порт 445.
Работает ли консоль кластера через те же порты?
Консоль администрирования серверов подключается к агенту на порту 1540. Утилита rac работает через сервер администрирования ras, по умолчанию на порту 1545.