Где прячется сервер 1С:Предприятия: от ярлыка пользователя до сканирования портов

· 9 мин

Содержание

Быстрее всего сервер 1С находится с рабочего места любого пользователя. Откройте окно запуска 1С, выделите базу: под списком появится строка вида Srvr="srv1c";Ref="buh";. Значение Srvr и есть имя сервера в сети, Ref — имя базы на нём. Если в строке стоит File=, база файловая и сервера 1С за ней нет.

Когда ярлыков нет или нужно найти все серверы 1С в локальной сети, ищут по сетевым следам. Служба агента слушает порт 1540, менеджер кластера — 1541, рабочие процессы — диапазон 1560-1591. По этим портам, по процессам ragent, rmngr, rphost и по записям в DNS и Active Directory сервер обнаруживается даже без документации.

Что искать: из чего состоит сервер 1С и какие следы он оставляет

Сервер 1С:Предприятия — это не одна программа, а связка процессов. От неё зависит, что именно вы увидите в сети и на машине.

КомпонентПроцессПорт по умолчаниюЧто делает
🧩 Агент сервераragent1540Управляет кластерами на этом компьютере, к нему подключается консоль
🗂 Менеджер кластераrmngr1541Хранит реестр кластера, принимает подключения клиентов
⚙️ Рабочий процессrphost1560-1591Выполняет код и работает с СУБД
🛠 Сервер администрированияras1545Нужен для утилиты rac и сторонних консолей

Порт 1541 — это порт кластера. Его указывают в строке подключения, если он отличается от стандартного: Srvr="srv1c:2541". Такая запись почти всегда означает, что на одной машине запущено несколько агентов, например под разные версии платформы.

Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера. Если администратор его менял, ищите не 1560-1591, а то, что настроено у вас.

Сервер 1С и сервер СУБД — разные вещи. База может лежать на отдельной машине с MS SQL или PostgreSQL. Клиент 1С с СУБД напрямую не общается, поэтому для поиска нужен именно компьютер с ragent.

Способ 1. Строка подключения в стартере и настройках клиента

Начните с клиентских машин. Это безопасно и не требует прав администратора.

Окно запуска 1С

  1. Запустите ярлык 1С:Предприятия.
  2. Выделите нужную базу в списке, ничего не открывая.
  3. Прочитайте строку под списком: Srvr — сервер, Ref — база.
  4. Нажмите «Изменить», чтобы увидеть тип расположения и при необходимости скопировать имя кластера.

Работающая программа

Если пользователь уже в базе, откройте главное меню и выберите Справка → О программе. В сведениях об информационной базе видна та же строка подключения. Разработчик получит её и из кода функцией СтрокаСоединенияИнформационнойБазы().

Файлы со списком баз

Список баз хранится в файле пользователя:

%APPDATA%\1C\1CEStart\ibases.v8i

Откройте его Блокнотом. Каждая база — секция в квадратных скобках со строкой Connect=. Чтобы собрать все серверы разом, выполните в PowerShell:

Select-String -Path "$env:APPDATA\1C\1CEStart\ibases.v8i" -Pattern 'Srvr="([^"]+)"' |
  ForEach-Object { $_.Matches[0].Groups[1].Value } | Sort-Object -Unique

В той же папке лежит 1cestart.cfg. Если в нём есть строки CommonInfoBases=, список баз раздаётся централизованно из общего файла. Путь к нему укажет, где администратор держит эталонный список, а там будут все рабочие серверы организации. Общий для компьютера вариант настроек ищите в %ProgramData%\1C\1CEStart\1cestart.cfg.

Способ 2. Службы, реестр и каталог srvinfo на подозрительной машине

Есть кандидат, но нет уверенности, что сервер 1С стоит именно там? Проверьте службы.

Windows

Служба агента по умолчанию называется «Агент сервера 1С:Предприятия 8.3 (x86-64)». Найти её можно так:

Get-Service | Where-Object { $_.DisplayName -like "*1С*" -or $_.Name -like "*1C*" }

Параметры запуска службы скажут больше, чем её название. Они лежат в реестре:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<имя службы>\ImagePath

В ImagePath видна командная строка ragent.exe с ключами:

  • 📌 -port 1540 — порт агента;
  • 📌 -regport 1541 — порт кластера;
  • 📌 -range 1560:1591 — порты рабочих процессов;
  • 📌 -d "C:\Program Files\1cv8\srvinfo" — каталог данных сервера.

То же самое покажет команда sc qc "<имя службы>". Если служб несколько, значит, на машине работают несколько агентов с разными портами.

Каталог srvinfo

В каталоге из ключа -d есть подпапка reg_1541 (номер совпадает с портом кластера). Внутри лежит файл реестра кластера 1CV8Clst.lst. Это текстовый файл: в нём перечислены имена рабочих серверов кластера и зарегистрированные базы.

Файл реестра кластера только читайте. Не редактируйте и не удаляйте его при работающей службе: можно потерять регистрацию всех баз. Если нужно изучить содержимое, скопируйте файл в другую папку.

Linux

systemctl list-units --type=service | grep -i 1c
ps -ef | grep -E 'ragent|rmngr|rphost' | grep -v grep

В выводе ps у процесса ragent видны те же ключи: порты и каталог данных. По умолчанию каталог данных находится в домашней папке пользователя usr1cv8, обычно /home/usr1cv8/.1cv8/1C/1cv8.

Способ 3. Процессы и активные соединения

Процессы помогают в двух ситуациях: подтвердить сервер на самой машине и вычислить его адрес с клиента.

На сервере

Откройте Диспетчер задач, вкладку «Подробности». Сервер 1С выдают процессы ragent.exe, rmngr.exe и несколько rphost.exe. Пользователь у них — служебная учётная запись, по умолчанию USR1CV8.

Проверить, какие порты реально слушаются:

Get-NetTCPConnection -State Listen |
  Where-Object { $_.LocalPort -in 1540,1541,1545 } |
  Select-Object LocalAddress, LocalPort, OwningProcess

На Linux аналог — ss -tlnp | grep -E ':154[015]'.

На клиенте: обратный приём

Это приём, который выручает чаще остальных. Если у пользователя открыта серверная база, его компьютер держит соединение с сервером. Выполните на клиенте:

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

В колонке внешнего адреса будет IP-адрес сервера 1С. Так находят сервер, даже когда в строке подключения записан алиас, а куда он ведёт, никто не помнит.

Не завершайте процессы rphost и rmngr «для проверки». У всех пользователей оборвутся сеансы, а несохранённые документы пропадут. Перезапуск службы допустим только вне рабочего времени и после предупреждения пользователей.

Способ 4. Сканирование сети и утилиты rac, ras и ragent

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

nmap

nmap -p 1540,1541,1545 --open 192.168.1.0/24

Узлы с открытым 1540 — кандидаты в серверы 1С. Открытый 1541 без 1540 на нестандартной машине стоит проверить отдельно: возможно, агент там слушает другой порт.

PowerShell без сторонних программ

Если ставить nmap нельзя, хватит встроенных средств:

$net = "192.168.1"
1..254 | ForEach-Object {
    $ip = "$net.$_"
    $tcp = New-Object System.Net.Sockets.TcpClient
    $try = $tcp.BeginConnect($ip, 1540, $null, $null)
    if ($try.AsyncWaitHandle.WaitOne(200) -and $tcp.Connected) { "$ip - порт 1540 открыт" }
    $tcp.Close()
}

Таймаут 200 мс подходит для локальной сети. Для удалённого филиала по VPN увеличьте его до 1000.

Что делать с ragent

Сам ragent — это не сканер, а процесс агента. Ищут именно его: открытый 1540 почти всегда означает работающий ragent. Ручной запуск ragent с ключом -debug используют для отладки, а не для поиска, на рабочем сервере так делать не нужно.

rac и ras: что внутри найденного сервера

Найденный сервер нужно «расспросить». Для этого на нём должен работать ras. Если он не запущен как служба, его стартуют так:

ras cluster --port=1545 srv1c:1540

Дальше с любой машины, где установлена платформа:

rac srv1c:1545 cluster list
rac srv1c:1545 server list --cluster=<id кластера>
rac srv1c:1545 infobase summary list --cluster=<id кластера>

Первая команда выдаст кластеры и их порты, вторая — все рабочие серверы кластера, третья — список баз. Если на кластере заданы администраторы, добавьте --cluster-user и --cluster-pwd. Остальные параметры смотрите в rac help.

Тот же список покажет консоль «Администрирование серверов 1С Предприятия». В ней добавляют центральный сервер по имени и порту 1540. Если консоль не открывается, перерегистрируйте radmin.dll из каталога bin нужной версии платформы командой regsvr32 от имени администратора.

Способ 5. DNS и Active Directory

В домене сервер 1С часто удаётся найти, вообще не трогая сеть.

DNS

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

nslookup srv1c
nslookup 192.168.1.20

Если имя оказалось алиасом (CNAME), nslookup покажет настоящее имя машины. На контроллере домена можно пройтись по зоне:

Get-DnsServerResourceRecord -ZoneName "corp.local" |
  Where-Object { $_.HostName -like "*1c*" }

Active Directory

  • 🔍 Компьютеры по имени: Get-ADComputer -Filter 'Name -like "*1c*"' -Properties OperatingSystem, Description.
  • 🔍 Служебные учётные записи: если служба 1С работает от доменного пользователя, найдите его через Get-ADUser -Filter 'Name -like "*1cv8*"'.
  • 🔍 Имена служб для Kerberos: при доменной аутентификации на учётку службы регистрируют SPN. Команда setspn -L <домен\учётка> выдаст имена серверов, где эта учётка работает.

Для Get-ADComputer и Get-ADUser нужен модуль Active Directory из средств удалённого администрирования (RSAT).

Сводка способов

СпособКогда подходитНужны праваОграничение
Окно запуска, ibases.v8iЕсть пользователь с настроенной базойОбычныеВидно только его базы
netstat на клиентеБаза сейчас открытаОбычныеТолько активные подключения
Службы и реестрЕсть машина-кандидатАдминистратор машиныОдна машина за раз
nmap или PowerShellНужен полный списокСогласование с ИБМешают межсетевые экраны
rac и консольСервер найден, нужен составАдминистратор кластераНужен ras на сервере
DNS и ADДоменная сетьЧтение каталогаИмена не обязаны содержать «1c»

Сервер найден, но не подключается: разбор ошибок

Найти адрес — половина дела. Ниже типичные сообщения и что за ними стоит.

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

Порты для межсетевого экрана сервера удобно открыть одной командой PowerShell от администратора:

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

Если диапазон рабочих процессов у вас другой, подставьте его.

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

Почему платформа не показывает список серверов 1С сама, как сетевое окружение?
У 1С нет широковещательного обнаружения серверов. И окно добавления базы, и консоль администрирования ждут, что вы введёте имя сервера вручную.
Можно ли найти сервер 1С через интернет?
Только если администратор опубликовал порты наружу или базу через веб-сервер. В первом случае так делать не рекомендуется. Во втором в строке подключения будет ws= с адресом публикации, а не Srvr.
Как понять, какая версия платформы стоит на найденном сервере?
Посмотрите путь к ragent.exe в ImagePath: в нём есть каталог с номером версии. Удалённо версию покажет консоль администрирования в свойствах рабочего сервера.
На одном компьютере может быть несколько серверов 1С?
Да. Каждый агент запускается отдельной службой со своими портами, например 1540 и 2540. В строке подключения такой кластер указывают с портом: Srvr="srv1c:2541".
Где сервер, если база веб-опубликована?
Строка ws= ведёт на веб-сервер. Сервер 1С за ним ищите в файле default.vrd каталога публикации: там указана строка подключения к базе.