Работа с 1С:Предприятие неразрывно связана с базой данных, и в 99% случаев это Microsoft SQL Server или PostgreSQL. Но даже опытные администраторы иногда сталкиваются с проблемами подключения, когда система внезапно "не видит" сервер. Чаще всего корень зла кроется в неправильной настройке портов — либо они заблокированы брандмауэром, либо используются нестандартные значения. Эта статья поможет разобраться, какие порты задействует SQL в 1С, как их проверить, настроить и устранить типичные ошибки.

Мы рассмотрим не только стандартные порты для разных версий SQL Server (включая Express и PostgreSQL), но и нюансы их использования в кластерных конфигурациях, при удалённом доступе через интернет, а также в облачных решениях типа 1С:Fresh. Особое внимание уделим диагностике проблем — от простого ping до анализа логов SQL Server Error Log. Если вы администрируете 1С или занимаетесь настройкой серверов, эта информация сэкономит вам часы на поиск решений.

Стандартные порты SQL Server для 1С

По умолчанию Microsoft SQL Server использует порт 1433 для входящих подключений. Это стандартный порт для протокола TDS (Tabular Data Stream), который применяется для обмена данными между клиентом 1С и сервером баз данных. Однако в реальных условиях значение может отличаться — особенно если на сервере установлено несколько экземпляров SQL или используются named instances.

Важно понимать, что 1С не подключается напрямую к SQL — взаимодействие идёт через сервер 1С:Предприятия (рар-сервер), который уже общается с SQL. Но если вы настраиваете прямое подключение (например, через SQL Server Management Studio или pgAdmin для PostgreSQL), порты становятся критически важны. Вот базовые значения для разных СУБД:

  • 🔹 Microsoft SQL Server (стандартный экземпляр): 1433/TCP
  • 🔹 Microsoft SQL Server (named instance, динамический порт): случайный порт из диапазона 49152-65535 (назначается SQL Browser)
  • 🔹 SQL Server Browser Service: 1434/UDP (используется для обнаружения named instances)
  • 🔹 PostgreSQL: 5432/TCP (по умолчанию для 1С:PostgreSQL)
  • 🔹 1С:Fresh (облако): порты не настраиваются вручную, доступ через HTTPS (443/TCP)

Если вы используете named instance (например, SQLExpress или MSSQLSERVER2019), то по умолчанию SQL Server назначает динамический порт при каждом запуске. Чтобы подключиться к такому экземпляру, должен работать SQL Server Browser (служба на порту 1434/UDP), которая сообщает клиенту актуальный порт. Это добавляет сложности при настройке брандмауэра — приходится открывать либо диапазон портов, либо фиксировать порт для экземпляра вручную.

📊 Какой SQL-сервер вы используете с 1С?
Microsoft SQL Server
PostgreSQL
Оба варианта
Другой

Порты для кластерных конфигураций и репликации

В корпоративных средах 1С часто работает с кластерными установками SQL Server (Always On, Failover Cluster) или с настройкой репликации между серверами. Здесь порты играют ещё более важную роль, так как трафик идёт не только между клиентом и сервером, но и между узлами кластера. Вот ключевые порты для таких сценариев:

Сценарий Порт Протокол Назначение
Always On Availability Groups 5022/TCP TCP Синхронизация данных между репликами
Database Mirroring 5022-5024/TCP TCP Обмен данными между главной и зеркальной БД
Service Broker 4022/TCP TCP Асинхронная обработка сообщений
SQL Server Analysis Services (SSAS) 2383/TCP TCP OLAP-кубы и аналитика (используется редко в 1С)

Для кластеров Always On также важен порт 1433 на виртуальном IP-адресе (VIP), который перемещается между узлами. Если вы настраиваете гео-репликацию (например, между дата-центрами), убедитесь, что порты открыты между всеми участниками репликации. В противном случае синхронизация будет прерываться с ошибками типа "Connection timeout" или "The TCP/IP connection to the host has failed".

💡

Если в кластере используются разные подсети, проверьте маршрутизацию между ними. Часто проблемы с репликацией связаны не с портами, а с отсутствием маршрута между подсетями.

Как проверить, какие порты использует ваш SQL Server

Прежде чем настраивать брандмауэр, нужно точно знать, какие порты слушает ваш SQL Server. Вот 3 надёжных способа это определить:

  1. Через SQL Server Configuration Manager:

    • 🔧 Откройте SQL Server Configuration Manager (не путайте с SQL Server Management Studio!).
    • 🔧 Перейдите в раздел SQL Server Network Configuration → Protocols for [ИМЯ_ЭКЗЕМПЛЯРА].
    • 🔧 Дважды кликните на TCP/IP и во вкладке IP Addresses посмотрите поле TCP Port для каждого IP.
  • Через командную строку (netstat):

    netstat -ano | findstr "1433"

    Эта команда покажет все активные подключения на порту 1433. Чтобы увидеть все порты SQL Server, замените 1433 на sqlservr.exe:

    netstat -ano | findstr "sqlservr.exe"
  • Через PowerShell:

    Get-NetTCPConnection -State Listen | Where-Object {$_.OwningProcess -eq (Get-Process sqlservr).Id} | Select-Object LocalAddress, LocalPort
  • Если вы используете named instance, и порт не фиксирован, то при каждом перезапуске SQL Server он может меняться. В этом случае в логах SQL Server Error Log (путь: C:\Program Files\Microsoft SQL Server\MSSQL{version}.{instance}\MSSQL\Log\ERRORLOG) будет строка вида:

    Server is listening on [ 'any'  54321].

    Где 54321 — это динамически назначенный порт для данного экземпляра.

    Как найти ERRORLOG, если путь нестандартный?

    Если SQL Server установлен в нетипичное место, найдите путь к логам через запрос:

    SELECT SERVERPROPERTY('ErrorLogFileName') AS 'Error Log Path';

    Выполните его в SQL Server Management Studio.

    Настройка брандмауэра для портов SQL в 1С

    Даже если порты открыты на SQL Server, брандмауэр Windows или корпоративный firewall может блокировать трафик. Вот пошаговая инструкция по настройке правил:

    Проверьте текущие правила в брандмауэре|Создайте правило для входящих подключений на порт 1433/TCP|Добавьте правило для 1434/UDP (если используете named instances)|Откройте дополнительные порты для кластеров (5022 и др.)|Примените правила к нужным профилям (Domain, Private, Public)

    -->

    Для Windows Defender Firewall:

    1. Откройте Панель управления → Брандмауэр Windows → Дополнительные параметры.
    2. В разделе Правила для входящих подключений создайте новое правило.
    3. Выберите Для портаTCP → укажите 1433 (или ваш кастомный порт).
    4. Разрешите подключение и примените правило ко всем профилям.

    Для named instances придётся открыть либо 1434/UDP (для SQL Browser), либо зафиксировать порт для экземпляра и открыть его. Чтобы зафиксировать порт:

    1. Откройте SQL Server Configuration Manager.
    2. Перейдите в SQL Server Network Configuration → Protocols for [ИМЯ_ЭКЗЕМПЛЯРА] → TCP/IP.
    3. Во вкладке IP Addresses для каждого IP-адреса (или IPAll) укажите одинаковый статический порт (например, 1533).
    4. Перезапустите службу SQL Server.
    5. ⚠️ Внимание: Если вы используете PostgreSQL, то по умолчанию он слушает 5432/TCP, но в файле postgresql.conf (обычно в C:\Program Files\PostgreSQL\{version}\data\) можно изменить порт на любой другой. После изменения не забудьте обновить файл pg_hba.conf для разрешений подключений.

      Диагностика проблем с подключением по портам

      Если 1С не подключается к SQL Server, а вы уверены, что порты открыты, вот алгоритм диагностики:

      1. Проверьте доступность сервера:

        ping ИМЯ_СЕРВЕРА

        Если ping не проходит, проблема на уровне сети (DNS, маршрутизация, сетевые политики).

      2. Проверьте порт с клиентской машины:

        telnet ИМЯ_СЕРВЕРА 1433

        Если экран остаётся пустым — порт открыт. Если появляется ошибка типа "Could not open connection" — порт заблокирован.

      3. Проверьте логи SQL Server:

        В SQL Server Error Log ищите ошибки вида "Login failed" или "Connection handshake failed". Они могут указывать на проблемы с аутентификацией или шифрованием.

      4. Используйте PortQry:

        Утилита PortQry от Microsoft позволяет детально протестировать порты. Скачайте её с официального сайта и выполните:

        portqry -n ИМЯ_СЕРВЕРА -e 1433
      5. Типичные ошибки и их причины:

        • 🚨 "Network path not found" — проблема с разрешением имени сервера (проверьте DNS или файл hosts).
        • 🚨 "Connection timeout" — порт заблокирован брандмауэром или служба SQL Server не запущена.
        • 🚨 "Login failed for user" — неверные учётные данные или отключён протокол SQL Server Authentication.
        • 🚨 "The target principal name is incorrect" — проблемы с Kerberos (актуально для доменных сред).
      💡

      Если telnet проходит, а 1С не подключается — проблема не в портах, а в настройках аутентификации или конфигурации сервера 1С.

      Особенности портов для удалённого доступа и облаков

      При настройке удалённого доступа к 1С через интернет (например, для работы из дома или филиалов) порты SQL Server никогда не открывают напрямую в интернет. Вместо этого используют:

      • 🌐 VPN — подключение к корпоративной сети, где порты SQL уже открыты внутренним брандмауэром.
      • 🌐 RDP (Remote Desktop) — порт 3389/TCP для подключения к серверу, где запущена 1С.
      • 🌐 Шлюзы (RD Gateway, 1С:Link) — порт 443/TCP для безопасного туннелирования трафика.
      • 🌐 Облачные решения (1С:Fresh, 1С:GISP) — порты настраивает провайдер, клиенту достаточно HTTPS (443).

    Если вы всё же решили открыть SQL-порт в интернет (что крайне не рекомендуется по соображениям безопасности), обязательно:

    1. Используйте нестандартный порт (например, 2433 вместо 1433).
    2. Настройте IP-фильтрацию на брандмауэре (разрешите подключения только с доверенных IP).
    3. Включите шифрование трафика (например, Force Encryption = Yes в настройках SQL Server).
    4. Регулярно обновляйте SQL Server и следите за уязвимостями (например, Microsoft Security Updates).
    5. ⚠️ Внимание: Открытие порта 1433 в интернет без дополнительных мер защиты — это гарантированный способ стать жертвой атаки brute force или эксплойтов вроде SQL Injection. В 2023 году более 30% взломанных SQL Server были скомпрометированы из-за открытых портов.

      Оптимизация безопасности: что делать вместо открытия портов

      Вместо того чтобы открывать порты SQL Server, используйте более безопасные альтернативы:

      Метод Порты Плюсы Минусы
      VPN (OpenVPN, WireGuard) 1194/UDP или 51820/UDP Шифрование трафика, нет прямого доступа к SQL Требует настройки на клиентских машинах
      RDP Gateway 443/TCP Централизованный доступ, двухфакторная аутентификация Нужна лицензия на Windows Server
      1С:Link 443/TCP Интеграция с 1С, поддержка мобильных клиентов Платное решение
      SSH-туннель 22/TCP Шифрование, гибкая настройка Сложно администрировать для многих пользователей

      Для PostgreSQL дополнительную безопасность обеспечивает настройка pg_hba.conf. Например, чтобы разрешить подключения только с определённых IP, добавьте строку:

      host    all             all             192.168.1.0/24          md5

      Где 192.168.1.0/24 — это подсеть, из которой разрешены подключения.

      💡

      Для максимальной безопасности комбинируйте методы. Например, используйте VPN + аутентификацию по сертификатам в SQL Server.

      FAQ: Частые вопросы о портах SQL в 1С

      🔍 Почему 1С не подключается к SQL Server, хотя порт 1433 открыт?

      Проблема может быть в:

      • 🔹 Неправильных учётных данных (проверьте SQL Server Authentication в настройках сервера).
      • 🔹 Отключённом протоколе TCP/IP в SQL Server Configuration Manager.
      • 🔹 Блокировке на уровне антивируса (например, Kaspersky или ESET могут блокировать трафик).
      • 🔹 Несовпадении версий клиента и сервера (например, 1С 8.3.20 не всегда корректно работает с SQL Server 2022).

    Проверьте логи SQL Server и (файл 1cv8.log в каталоге пользователя).

    🔍 Как изменить порт для named instance SQL Server?

    Чтобы зафиксировать порт для named instance:

    1. Откройте SQL Server Configuration Manager.
    2. Перейдите в SQL Server Network Configuration → Protocols for [ИМЯ_ЭКЗЕМПЛЯРА] → TCP/IP.
    3. Во вкладке IP Addresses для каждого IP (или IPAll) укажите нужный порт (например, 1533).
    4. Перезапустите службу SQL Server.

    После этого обновите строку подключения в 1С (если используется прямое подключение) или в конфигурационном файле сервера 1С.

    🔍 Нужно ли открывать порт 1434/UDP для работы 1С?

    Порт 1434/UDP используется службой SQL Server Browser для обнаружения named instances. Он нужен, если:

    • 🔹 Вы подключаетесь к named instance (не к стандартному экземпляру).
    • 🔹 Порт SQL Server не зафиксирован (динамический).

    Если вы используете стандартный экземпляр (например, MSSQLSERVER) или зафиксировали порт вручную, то 1434/UDP можно не открывать. Однако в этом случае в строке подключения нужно явно указывать порт, например:

    сервер\экземпляр,1533
    🔍 Какие порты нужно открыть для репликации между двумя SQL Server?

    Для настройки репликации (например, Always On Availability Groups или Database Mirroring) требуется:

    • 🔹 1433/TCP — для основного трафика.
    • 🔹 5022/TCP — для синхронизации реплик (по умолчанию).
    • 🔹 445/TCP — для обмена файлами (если используется FileStream).
    • 🔹 135/TCP — для RPC (иногда требуется для управления кластером).

    Также убедитесь, что между серверами разрешён ICMP (ping) для диагностики сетевых проблем.

    🔍 Можно ли использовать PostgreSQL вместо MS SQL с 1С?

    Да, 1С:Предприятие поддерживает PostgreSQL начиная с версии платформы 8.3.10. Для этого:

    • 🔹 Установите 1С:PostgreSQL (специальная сборка от 1С) или стандартный PostgreSQL версии 9.6+.
    • 🔹 По умолчанию используется порт 5432/TCP.
    • 🔹 В конфигураторе 1С при создании базы выберите PostgreSQL как тип СУБД.

    Обратите внимание, что некоторые функции (например, полнотекстовый поиск) могут работать иначе, чем в MS SQL. Также PostgreSQL не поддерживает FILESTREAM, что может быть критично для некоторых конфигураций.