Где прячется сервер 1С:Предприятия: от ярлыка пользователя до сканирования портов
Содержание
Быстрее всего сервер 1С находится с рабочего места любого пользователя. Откройте окно запуска 1С, выделите базу: под списком появится строка вида Srvr="srv1c";Ref="buh";. Значение Srvr и есть имя сервера в сети, Ref — имя базы на нём. Если в строке стоит File=, база файловая и сервера 1С за ней нет.
Когда ярлыков нет или нужно найти все серверы 1С в локальной сети, ищут по сетевым следам. Служба агента слушает порт 1540, менеджер кластера — 1541, рабочие процессы — диапазон 1560-1591. По этим портам, по процессам ragent, rmngr, rphost и по записям в DNS и Active Directory сервер обнаруживается даже без документации.
Что искать: из чего состоит сервер 1С и какие следы он оставляет
Сервер 1С:Предприятия — это не одна программа, а связка процессов. От неё зависит, что именно вы увидите в сети и на машине.
| Компонент | Процесс | Порт по умолчанию | Что делает |
|---|---|---|---|
| 🧩 Агент сервера | ragent | 1540 | Управляет кластерами на этом компьютере, к нему подключается консоль |
| 🗂 Менеджер кластера | rmngr | 1541 | Хранит реестр кластера, принимает подключения клиентов |
| ⚙️ Рабочий процесс | rphost | 1560-1591 | Выполняет код и работает с СУБД |
| 🛠 Сервер администрирования | ras | 1545 | Нужен для утилиты rac и сторонних консолей |
Порт 1541 — это порт кластера. Его указывают в строке подключения, если он отличается от стандартного: Srvr="srv1c:2541". Такая запись почти всегда означает, что на одной машине запущено несколько агентов, например под разные версии платформы.
Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера. Если администратор его менял, ищите не 1560-1591, а то, что настроено у вас.
Сервер 1С и сервер СУБД — разные вещи. База может лежать на отдельной машине с MS SQL или PostgreSQL. Клиент 1С с СУБД напрямую не общается, поэтому для поиска нужен именно компьютер с ragent.
Способ 1. Строка подключения в стартере и настройках клиента
Начните с клиентских машин. Это безопасно и не требует прав администратора.
Окно запуска 1С
- Запустите ярлык 1С:Предприятия.
- Выделите нужную базу в списке, ничего не открывая.
- Прочитайте строку под списком:
Srvr— сервер,Ref— база. - Нажмите «Изменить», чтобы увидеть тип расположения и при необходимости скопировать имя кластера.
Работающая программа
Если пользователь уже в базе, откройте главное меню и выберите Справка → О программе. В сведениях об информационной базе видна та же строка подключения. Разработчик получит её и из кода функцией СтрокаСоединенияИнформационнойБазы().
Файлы со списком баз
Список баз хранится в файле пользователя:
%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» |
Сервер найден, но не подключается: разбор ошибок
Найти адрес — половина дела. Ниже типичные сообщения и что за ними стоит.
Srvr не разрешается или служба агента остановлена. Проверьте nslookup и состояние службы на сервере. Временно можно прописать адрес в файл hosts на клиенте.-regport в ImagePath и укажите его в строке подключения.Test-NetConnection srv1c -Port 1541.hosts.Ref со списком из rac infobase summary list: имя базы в кластере может отличаться от имени в окне запуска.Порты для межсетевого экрана сервера удобно открыть одной командой PowerShell от администратора:
New-NetFirewallRule -DisplayName "1C Server" -Direction Inbound -Protocol TCP `
-LocalPort 1540,1541,1545,1560-1591 -Action Allow
Если диапазон рабочих процессов у вас другой, подставьте его.
Частые вопросы
Почему платформа не показывает список серверов 1С сама, как сетевое окружение?
Можно ли найти сервер 1С через интернет?
ws= с адресом публикации, а не Srvr.Как понять, какая версия платформы стоит на найденном сервере?
ragent.exe в ImagePath: в нём есть каталог с номером версии. Удалённо версию покажет консоль администрирования в свойствах рабочего сервера.На одном компьютере может быть несколько серверов 1С?
Srvr="srv1c:2541".Где сервер, если база веб-опубликована?
ws= ведёт на веб-сервер. Сервер 1С за ним ищите в файле default.vrd каталога публикации: там указана строка подключения к базе.