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

· 10 мин

Содержание

Для сервера 1С:Предприятия 8.3 в брандмауэре открывают входящие TCP-порты 1540 (агент сервера), 1541 (менеджер кластера) и диапазон 1560–1591 (рабочие процессы). Если администрируете кластер через rac с другого компьютера, добавьте TCP 1545 для сервера администрирования RAS. Порт СУБД (1433 у MS SQL Server, 5432 у PostgreSQL) нужен только между сервером 1С и сервером базы данных, пользователям его открывать не надо.

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

Из чего складывается соединение клиента с сервером 1С

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

  1. 🔹 Клиент обращается к агенту сервера (процесс ragent, порт 1540).
  2. 🔹 Агент передаёт его менеджеру кластера (процесс rmngr, порт 1541). Этот номер вы указываете в адресе базы: Srvr="srv1c" подразумевает 1541, для нестандартного кластера пишут Srvr="srv1c:1641".
  3. 🔹 Менеджер выдаёт адрес рабочего процесса (rphost), и дальше клиент работает уже с ним, на одном из портов диапазона.

Отсюда главное правило: если открыть только 1540 и 1541, клиент пройдёт первые два этапа и упадёт на третьем. Именно поэтому ошибка выглядит странно: сервер «виден», но база не открывается.

Все соединения инициирует клиент. Обратных подключений от сервера к рабочей станции нет, поэтому на компьютерах пользователей входящие порты для 1С открывать не нужно.

Таблица портов сервера 1С 8.3 по умолчанию

Сводка для одного кластера со стандартными настройками:

ПортПротоколПроцессКто подключаетсяКогда нужен
1540TCPragent — агент сервераКлиенты, консоль кластераВсегда
1541TCPrmngr — менеджер кластераКлиенты, другие серверы кластераВсегда
1560–1591TCPrphost — рабочие процессыКлиентыВсегда
1545TCPras — сервер администрированияУтилита rac, сторонние консолиТолько при удалённом администрировании через rac
1433TCPMS SQL ServerСервер 1СЕсли СУБД на отдельной машине
1434UDPSQL Server BrowserСервер 1СТолько для именованного экземпляра без явного порта
5432TCPPostgreSQLСервер 1СЕсли СУБД на отдельной машине
475UDP и TCPМенеджер сетевых ключей HASPКлиенты и сервер 1СТолько при аппаратных сетевых ключах
80, 443TCPВеб-сервер (IIS, Apache)Веб-клиент, тонкий клиент по HTTP, мобильные клиентыТолько при публикации базы на веб-сервере

RAS работает по TCP, а не по UDP. Встречается совет открыть «UDP 1545» — с таким правилом rac не подключится.

Для отладки конфигурации по протоколу HTTP запускается сервер отладки, по умолчанию на порту 1550. В рабочем окружении его обычно не включают, и наружу этот порт не открывают.

Если на машине несколько кластеров

Второй экземпляр сервера 1С (например, для тестовых баз или другой версии платформы) ставят со сдвигом номеров. Распространённая схема — сдвиг на 100:

ЭкземплярАгентМенеджер кластераРабочие процессы
Первый154015411560–1591
Второй164016411660–1691
Третий174017411760–1791

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

Диапазон портов рабочих процессов: где задаётся и как сузить

Диапазон 1560–1591 — это значение по умолчанию. Оно задаётся двумя способами.

При запуске службы. Параметры видны в свойствах службы «Агент сервера 1С:Предприятия 8.3» (services.msc → служба → вкладка «Общие» → «Исполняемый файл»). Строка выглядит примерно так:

"C:\Program Files\1cv8\8.3.24.1586\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

Здесь -port — агент, -regport — менеджер кластера, -range — диапазон рабочих процессов, -d — каталог служебных файлов кластера.

В консоли кластера. Откройте «Администрирование серверов 1С Предприятия», разверните кластер → «Рабочие серверы» → свойства нужного сервера. Поле с диапазонами IP-портов находится в свойствах рабочего сервера, а не кластера: там можно удалить диапазон по умолчанию и добавить свой.

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

Сколько портов действительно нужно

Каждый рабочий процесс занимает порты из диапазона, а при работе с сеансами ему нужны и дополнительные. На небольшом сервере с одним-двумя rphost хватает десятка портов, но сужать диапазон до минимума рискованно: при росте числа процессов новые не смогут стартовать.

Практичный ориентир — оставить стандартные 32 порта. Если служба безопасности требует сузить, считайте не меньше 4–5 портов на каждый рабочий процесс и держите запас. Порт, который никто не слушает, открытым держать безопасно: атаковать на нём нечего.

Правила брандмауэра: готовые команды для Windows и Linux

Windows Server: PowerShell

Запустите PowerShell от администратора на сервере 1С:

New-NetFirewallRule -DisplayName "1C Server 8.3" -Direction Inbound -Protocol TCP -LocalPort 1540,1541,1560-1591 -Action Allow

Если нужно удалённое администрирование через RAS, добавьте отдельное правило и ограничьте его адресами админов:

New-NetFirewallRule -DisplayName "1C RAS" -Direction Inbound -Protocol TCP -LocalPort 1545 -RemoteAddress 192.168.1.10 -Action Allow

Windows: через netsh

Тот же результат для старых скриптов и командной строки:

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

Через графический интерфейс: wf.msc → «Правила для входящих подключений» → «Создать правило» → тип «Для порта» → TCP → «Определённые локальные порты» → 1540,1541,1560-1591 → «Разрешить подключение». На шаге «Профиль» оставьте только «Доменный» и «Частный», если сервер не смотрит в интернет.

Linux: ufw и firewalld

Для Ubuntu и Debian с ufw:

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

Для дистрибутивов с firewalld (РЕД ОС, Astra в ряде сборок, CentOS-подобные):

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

Ограничьте источник

Открывать порты 1С «для всех» без нужды не стоит. Укажите в правиле подсеть офиса или VPN, например -RemoteAddress 192.168.1.0/24. Публиковать порты кластера 1С напрямую в интернет нельзя: для удалённых сотрудников используйте VPN, RDP-шлюз или публикацию базы на веб-сервере по HTTPS.

Связь сервера 1С с MS SQL Server и PostgreSQL

С базой данных работает только сервер 1С: рабочие процессы rphost подключаются к СУБД от имени пользователя, указанного в параметрах информационной базы. Компьютеры бухгалтеров к SQL-серверу не обращаются, поэтому порт СУБД открывают только для IP-адреса сервера 1С.

Если 1С и СУБД стоят на одной машине, порт в брандмауэре открывать не нужно: соединение локальное.

MS SQL Server

  • 🔸 Экземпляр по умолчанию слушает TCP 1433.
  • 🔸 Именованный экземпляр (SRV\SQL2019) по умолчанию получает динамический порт. Клиент узнаёт его через службу SQL Server Browser на UDP 1434.
  • 🔸 Надёжнее назначить именованному экземпляру фиксированный порт в «Диспетчере конфигурации SQL Server»: «Сетевая конфигурация SQL Server» → протоколы экземпляра → TCP/IP → вкладка «IP-адреса» → блок «IPAll». Очистите «Динамические TCP-порты» и впишите номер в «TCP-порт». После перезапуска службы SQL откройте этот порт.
  • 🔸 Протокол TCP/IP в той же оснастке должен быть включён. В редакции Express он после установки часто выключен.

Пример правила на SQL-сервере, разрешающего подключения только от сервера 1С:

New-NetFirewallRule -DisplayName "MSSQL from 1C" -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 192.168.1.20 -Action Allow

PostgreSQL

Здесь недостаточно одного брандмауэра. PostgreSQL сам решает, кого пускать:

  1. В postgresql.conf параметр listen_addresses должен включать сетевой адрес, а не только localhost. Например listen_addresses = '*'.
  2. В pg_hba.conf добавьте строку для адреса сервера 1С:
host    all    postgres    192.168.1.20/32    md5
  1. Перезапустите PostgreSQL и откройте TCP 5432 для сервера 1С.

Вместо md5 в новых сборках часто используют scram-sha-256: метод должен совпадать с тем, как хранится пароль пользователя.

Перезапуск службы СУБД обрывает работу всех баз на этом сервере. Сеансы пользователей 1С завершатся с ошибкой. Планируйте перезапуск на нерабочее время.

Файловая база: какие порты нужны без сервера 1С

В файловом варианте сервера 1С нет, и порты 1540–1591 не используются вовсе. Клиент открывает файл 1Cv8.1CD прямо из общей сетевой папки. Нужны только порты общего доступа к файлам Windows:

  • 📁 TCP 445 — протокол SMB, через него идёт вся работа с базой;
  • 📁 устаревший NetBIOS (TCP 139, UDP 137–138) — только для очень старых систем, в современной сети его отключают.

В брандмауэре Windows за это отвечает встроенная группа правил «Общий доступ к файлам и принтерам». Включите её для профиля «Частный» или «Доменный» на компьютере, где лежит база.

Если файловая база опубликована на веб-сервере, пользователи подключаются по HTTP или HTTPS (TCP 80/443), а SMB для них не нужен. Ещё один частый случай — сетевой аппаратный ключ HASP: менеджеру лицензий нужен порт 475, иначе 1С сообщит, что не обнаружен ключ защиты, хотя база доступна.

Как проверить, что порты открыты и слушаются

Проверяйте с двух сторон: на сервере — слушает ли процесс порт, на клиенте — доходят ли пакеты.

На сервере 1С

Windows, командная строка:

netstat -ano | findstr ":1540 :1541 :156"

В выводе должны быть строки в состоянии LISTENING. Номер в последнем столбце — PID процесса; сверить его можно в диспетчере задач на вкладке «Подробности»: ragent.exe, rmngr.exe, rphost.exe.

Linux:

sudo ss -tlnp | grep -E 'ragent|rmngr|rphost'

С компьютера пользователя

PowerShell проверяет TCP-порт без установки дополнительных программ:

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

TcpTestSucceeded : True значит, что порт доступен. Проверьте и агент, и менеджер, и хотя бы один порт из диапазона, на котором netstat на сервере показал LISTENING.

Удалённо через RAS

Если RAS запущен (ras cluster --port=1545 localhost:1540), с машины администратора выполните:

rac srv1c:1545 cluster list

Список кластеров в ответе подтверждает, что и 1545 на сервере, и 1540 внутри сервера доступны.

Имя сервера

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

Ошибки подключения и что они означают

Тексты сообщений зависят от версии платформы, но причины повторяются. Выберите свой случай:

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

Частая ловушка: правило есть, а порт закрыт

Брандмауэр Windows применяет правила по сетевым профилям. Если правило создано только для профиля «Доменный», а сетевой адаптер сервера определился как «Общедоступный», правило молча не работает. Проверьте профиль подключения командой Get-NetConnectionProfile и поправьте профиль в свойствах правила.

Вторая ловушка — сторонний антивирус со своим сетевым экраном. Он работает поверх брандмауэра Windows, и разрешающее правило в wf.msc для него ничего не значит. Добавьте те же порты в его настройки.

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

Нужно ли открывать порты 1С на компьютерах пользователей?
Нет. Все соединения клиент начинает сам, сервер обратно к рабочим станциям не подключается. Входящие правила нужны только на сервере 1С и на сервере СУБД.
Можно ли поменять стандартный порт 1541 на другой?
Да, при установке второго экземпляра или по требованию безопасности. Тогда в адресе базы в списке клиентов указывают порт явно: srv1c:1641. Сам по себе нестандартный порт защиту не заменяет.
Сколько портов занимает кластер из двух рабочих серверов?
На каждом сервере — свой агент, менеджер и диапазон рабочих процессов. Между серверами кластера порты должны быть открыты в обе стороны, поскольку менеджеры и процессы обмениваются данными.
Нужен ли порт для программной лицензии 1С?
Программная лицензия хранится в файле на компьютере или сервере и проверяется локально, отдельный сетевой порт ей не нужен. Порт 475 нужен только для сетевого аппаратного ключа HASP.
Достаточно ли RDP, чтобы не открывать порты 1С наружу?
Да, при работе через удалённый рабочий стол клиент 1С запускается на терминальном сервере внутри сети. Наружу публикуется только RDP, лучше через шлюз или VPN, а порты кластера остаются во внутренней сети.