Работа с 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), которая сообщает клиенту актуальный порт. Это добавляет сложности при настройке брандмауэра — приходится открывать либо диапазон портов, либо фиксировать порт для экземпляра вручную.
Порты для кластерных конфигураций и репликации
В корпоративных средах 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 надёжных способа это определить:
-
Через 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:
- Откройте
Панель управления → Брандмауэр Windows → Дополнительные параметры. - В разделе
Правила для входящих подключенийсоздайте новое правило. - Выберите
Для порта→TCP→ укажите1433(или ваш кастомный порт). - Разрешите подключение и примените правило ко всем профилям.
Для named instances придётся открыть либо 1434/UDP (для SQL Browser), либо зафиксировать порт для экземпляра и открыть его. Чтобы зафиксировать порт:
- Откройте
SQL Server Configuration Manager. - Перейдите в
SQL Server Network Configuration → Protocols for [ИМЯ_ЭКЗЕМПЛЯРА] → TCP/IP. - Во вкладке
IP Addressesдля каждого IP-адреса (илиIPAll) укажите одинаковый статический порт (например,1533). - Перезапустите службу SQL Server.
-
Проверьте доступность сервера:
ping ИМЯ_СЕРВЕРАЕсли ping не проходит, проблема на уровне сети (DNS, маршрутизация, сетевые политики).
-
Проверьте порт с клиентской машины:
telnet ИМЯ_СЕРВЕРА 1433Если экран остаётся пустым — порт открыт. Если появляется ошибка типа
"Could not open connection"— порт заблокирован. -
Проверьте логи SQL Server:
В
SQL Server Error Logищите ошибки вида"Login failed"или"Connection handshake failed". Они могут указывать на проблемы с аутентификацией или шифрованием. -
Используйте PortQry:
Утилита PortQry от Microsoft позволяет детально протестировать порты. Скачайте её с официального сайта и выполните:
portqry -n ИМЯ_СЕРВЕРА -e 1433 - 🚨
"Network path not found"— проблема с разрешением имени сервера (проверьте DNS или файлhosts). - 🚨
"Connection timeout"— порт заблокирован брандмауэром или служба SQL Server не запущена. - 🚨
"Login failed for user"— неверные учётные данные или отключён протоколSQL Server Authentication. - 🚨
"The target principal name is incorrect"— проблемы с Kerberos (актуально для доменных сред). - 🌐 VPN — подключение к корпоративной сети, где порты SQL уже открыты внутренним брандмауэром.
- 🌐 RDP (Remote Desktop) — порт
3389/TCPдля подключения к серверу, где запущена 1С. - 🌐 Шлюзы (RD Gateway, 1С:Link) — порт
443/TCPдля безопасного туннелирования трафика. - 🌐 Облачные решения (1С:Fresh, 1С:GISP) — порты настраивает провайдер, клиенту достаточно HTTPS (
443).
⚠️ Внимание: Если вы используете PostgreSQL, то по умолчанию он слушает5432/TCP, но в файлеpostgresql.conf(обычно вC:\Program Files\PostgreSQL\{version}\data\) можно изменить порт на любой другой. После изменения не забудьте обновить файлpg_hba.confдля разрешений подключений.
Диагностика проблем с подключением по портам
Если 1С не подключается к SQL Server, а вы уверены, что порты открыты, вот алгоритм диагностики:
Типичные ошибки и их причины:
Если telnet проходит, а 1С не подключается — проблема не в портах, а в настройках аутентификации или конфигурации сервера 1С.
Особенности портов для удалённого доступа и облаков
При настройке удалённого доступа к 1С через интернет (например, для работы из дома или филиалов) порты SQL Server никогда не открывают напрямую в интернет. Вместо этого используют:
Если вы всё же решили открыть SQL-порт в интернет (что крайне не рекомендуется по соображениям безопасности), обязательно:
- Используйте нестандартный порт (например,
2433вместо1433). - Настройте IP-фильтрацию на брандмауэре (разрешите подключения только с доверенных IP).
- Включите шифрование трафика (например,
Force Encryption = Yesв настройках SQL Server). - Регулярно обновляйте SQL Server и следите за уязвимостями (например, Microsoft Security Updates).
- 🔹 Неправильных учётных данных (проверьте
SQL Server Authenticationв настройках сервера). - 🔹 Отключённом протоколе
TCP/IPв SQL Server Configuration Manager. - 🔹 Блокировке на уровне антивируса (например, Kaspersky или ESET могут блокировать трафик).
- 🔹 Несовпадении версий клиента и сервера (например, 1С 8.3.20 не всегда корректно работает с SQL Server 2022).
⚠️ Внимание: Открытие порта 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 и 1С (файл 1cv8.log в каталоге пользователя).
🔍 Как изменить порт для named instance SQL Server?
Чтобы зафиксировать порт для named instance:
- Откройте
SQL Server Configuration Manager. - Перейдите в
SQL Server Network Configuration → Protocols for [ИМЯ_ЭКЗЕМПЛЯРА] → TCP/IP. - Во вкладке
IP Addressesдля каждого IP (илиIPAll) укажите нужный порт (например,1533). - Перезапустите службу 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, что может быть критично для некоторых конфигураций.