Определяем IP-адрес сервера 1С и подключённых клиентов

· 8 мин

Содержание

Адрес самого сервера проще всего посмотреть прямо на нём: команда ipconfig в командной строке Windows покажет IP-адрес сетевой карты. А вот чтобы узнать, с какого компьютера зашёл конкретный клиент 1С, адрес напрямую нигде не хранится — платформа фиксирует имя компьютера, а IP вы получаете уже из этого имени через DNS или ping.

Разберём все рабочие способы: от утилит Windows и консоли администрирования серверов до встроенного языка 1С, журнала регистрации и анализа портов через netstat. В конце — как правильно открыть порты кластера на файрволе, чтобы клиенты вообще достучались до сервера.

Важно понимать разницу. В клиент-серверном варианте «сервер 1С» — это служба ragent на машине с установленным сервером приложений. Её адрес и порт нужны клиентам для подключения. «Клиент» — рабочая станция пользователя. Её адрес обычно нужен администратору, чтобы найти, кто держит блокировку или грузит базу.

С какого адреса работает сам сервер: средства Windows

Начнём с самого сервера приложений. Зайдите на машину, где крутится служба сервера 1С, и откройте командную строку (cmd).

  1. Команда ipconfig выводит IP-адреса всех сетевых интерфейсов. Нужный — строка IPv4-адрес у активного адаптера (обычно Ethernet).
  2. ipconfig /all добавляет имя компьютера, MAC-адрес, адреса DNS и шлюза — пригодится, если адаптеров несколько.
  3. hostname показывает сетевое имя машины. Именно это имя, а не IP, клиенты обычно указывают в строке «Кластер серверов » при добавлении базы.

Если нужно узнать IP чужой машины по её имени — например, рабочей станции пользователя:

  • ping ИМЯ_КОМПЬЮТЕРА — в ответах будет виден IP-адрес, на который резолвится имя.
  • nslookup ИМЯ_КОМПЬЮТЕРА — запрос к DNS-серверу, покажет адрес без отправки пакетов (удобно, если на машине закрыт ICMP и ping молчит).

IP-адрес, полученный через DHCP, может смениться после перезагрузки. Для сервера 1С всегда настраивайте статический адрес или резервирование по MAC на DHCP-сервере — иначе клиенты в один прекрасный день перестанут подключаться.

Кто подключён к серверу: консоль администрирования

Консоль администрирования серверов 1С — главный инструмент, когда нужно увидеть всех подключённых клиентов разом. Открывается оснастка Администрирование серверов 1С Предприятия (MMC) или современная клиентская утилита администрирования.

Порядок:

  1. Разверните центральный сервер → кластер → пункт Сеансы.
  2. В списке сеансов для каждого пользователя есть колонка с компьютером-клиентом. Платформа показывает сетевое имя машины, с которой открыт сеанс.
  3. Чтобы перевести имя в IP, скопируйте его и прогоните через ping или nslookup (см. раздел выше).

Рядом есть пункт Соединения — там видно соединения на уровне рабочих процессов. Для поиска «кто сейчас в базе» обычно хватает списка сеансов.

Консоль подключается к серверу через агента кластера — по умолчанию это порт 1540. Если оснастка не видит сервер, проверьте, что в её свойствах указаны правильные имя машины и порт агента, и что порт не режет файрвол.

Если консоль не запускается с ошибкой вроде «класс не зарегистрирован», помогает перерегистрация библиотеки администрирования. В каталоге bin установленной платформы выполните от администратора regsvr32 radmin.dll (версия платформы должна совпадать с версией сервера).

Аналогичные данные даёт консольная утилита rac. Сначала узнайте идентификатор кластера, затем запросите список сеансов:

rac cluster list
rac session list --cluster=ИДЕНТИФИКАТОР_КЛАСТЕРА

В выводе по каждому сеансу будет поле с именем клиентского компьютера. Точный набор опций команды смотрите в справке rac help session — синтаксис немного меняется от версии к версии платформы.

Получаем данные о клиентах кодом 1С

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

Имя машины, на которой выполняется код, даёт глобальная функция:

ИмяТекущегоКомпьютера = ИмяКомпьютера();
Сообщить(ИмяТекущегоКомпьютера);

На клиенте она вернёт имя рабочей станции, на сервере (в серверной процедуре) — имя сервера приложений.

Чтобы получить список всех активных клиентов, в клиент-серверном варианте работает метод ПолучитьСеансыИнформационнойБазы(). Он доступен пользователю с правами администрирования:

Сеансы = ПолучитьСеансыИнформационнойБазы();
Для Каждого Сеанс Из Сеансы Цикл
    Пользователь = "";
    Если Сеанс.Пользователь <> Неопределено Тогда
        Пользователь = Сеанс.Пользователь.Имя;
    КонецЕсли;
    Сообщить(Пользователь + " | " + Сеанс.Компьютер + " | " + Сеанс.ИмяПриложения);
КонецЦикла;

Свойство Компьютер — это сетевое имя клиентской машины, то же самое, что показывает консоль. Прямого свойства с IP-адресом у объекта сеанса нет: его нужно получить отдельно, разрезолвив имя через DNS.

В файловом варианте базы метод вернёт один сеанс — ваш собственный. Разбор по компьютерам имеет смысл только в клиент-серверном режиме, где пользователей много.

Журнал регистрации: откуда заходили пользователи

Когда нужно не «кто сейчас», а «кто и откуда заходил вчера», поможет журнал регистрации. Он хранит компьютер-источник для каждого события.

В пользовательском режиме откройте НСИ и администрирование → Администрирование → Журнал регистрации (в типовых конфигурациях на БСП путь похожий; если раздела нет — журнал открывается из меню функций администратора).

Что сделать:

  1. Задайте период и, при необходимости, отбор по пользователю или событию.
  2. В настройке состава колонок включите колонку Компьютер — в ней будет имя клиентской машины, с которой выполнено действие.
  3. Для разовой задачи удобно отобрать события «Сеанс. Начало» — по ним видно, с каких компьютеров люди логинились.

Журнал, как и сеансы, хранит имя компьютера, а не IP. Логика та же: нашли имя — при необходимости перевели в адрес.

Если база опубликована на веб-сервере и пользователи заходят через тонкий или веб-клиент по HTTP(S), в сеансах и журнале вы увидите адрес веб-сервера, а не рабочей станции. Сервер 1С «общается» с веб-сервером, а тот уже с браузером пользователя. Реальные адреса клиентов в этом случае смотрят в логах веб-сервера (Apache или IIS), а не в консоли 1С.

Журнал регистрации может весить гигабайты. Не открывайте его без отбора по периоду на большой базе — форма будет долго грузиться и съест память клиента.

netstat: какие соединения и порты открыты

Иногда вопрос стоит иначе: не «чей адрес», а «кто вообще сейчас соединён с сервером и по каким портам». Здесь работает штатная утилита Windows netstat.

На сервере приложений выполните от администратора:

netstat -ano | findstr "1540 1541 156"
  • -a — все соединения, -n — в числовом виде (без разрешения имён), -o — с идентификатором процесса (PID).
  • findstr отфильтрует строки по портам кластера.

В колонке Внешний адрес вы увидите IP-адреса и порты клиентов, подключённых к серверу. Колонка PID связывает соединение с процессом — сопоставьте его в диспетчере задач с ragent.exe или rphost.exe.

Чтобы сразу видеть имя процесса, добавьте ключ -b (требует прав администратора):

netstat -anob

Это самый прямой способ получить именно IP-адреса клиентов, а не их имена: в сетевых соединениях фигурируют адреса.

Есть и обратная задача — проверить с клиентской машины, доходит ли она до сервера. На рабочей станции выполните netstat -an | findstr 1541 при открытой базе: если соединение в состоянии ESTABLISHED есть, значит, клиент достучался до менеджера кластера. Пусто или SYN_SENT — пакеты до сервера не доходят, разбирайтесь с сетью и файрволом.

Порты кластера и правила файрвола

Чтобы клиент дошёл до сервера, на файрволе сервера должны быть открыты порты кластера. Порядок подключения такой: клиент обращается к агенту кластера (порт 1540), затем к менеджеру кластера (1541), после чего работает с рабочими процессами (rphost).

Диапазон портов рабочих процессов по умолчанию — 1560–1591. Он задаётся в свойствах рабочего сервера в консоли администрирования, там же настраиваются требования назначения функциональности и параметры отказоустойчивости.

Минимальный набор правил для входящих подключений на сервере:

Служба / назначениеПорт по умолчаниюПротокол
Агент кластера (ragent)1540TCP
Главный менеджер кластера1541TCP
Рабочие процессы (rphost)1560–1591TCP

Правило в брандмауэре Windows можно создать командой (пример для диапазона):

netsh advfirewall firewall add rule name="1C Server" dir=in action=allow protocol=TCP localport=1540-1591
Чей адрес вам нужно узнать?

Открывайте порты точечно и только во внутренней сети. Выставлять порты сервера 1С напрямую в интернет нельзя — это прямой путь к взлому базы. Удалённый доступ организуйте через VPN или терминальный сервер, а не пробросом портов на роутере.

Для безопасности дополнительно ограничьте, с каких адресов разрешены подключения: в правиле файрвола укажите разрешённые IP (область «Удалённый IP-адрес»), а не «любой». Так даже внутри сети к серверу не подключатся с посторонних машин.

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

Почему в консоли и журнале показано имя компьютера, а не IP-адрес?
Платформа идентифицирует клиента по сетевому имени машины — так надёжнее при динамических адресах. IP получают из имени через ping или nslookup, а напрямую адреса видны только в netstat на уровне сетевых соединений.
Клиент не видит сервер по имени, а по IP подключается. Что не так?
Проблема в разрешении имён (DNS или файл hosts). Либо настройте, чтобы имя сервера корректно резолвилось в его адрес, либо пропишите в строке кластера IP напрямую — но тогда при смене адреса подключение снова отвалится.
Какой порт указывать клиенту при подключении к серверу?
По умолчанию клиенту достаточно имени или адреса центрального сервера и порта агента 1540 (часто порт вообще не указывают — берётся значение по умолчанию). Остальные порты кластер согласует сам, их нужно лишь открыть на файрволе.
Как узнать внешний IP-адрес сервера для удалённого доступа?
Внешний адрес выдаёт провайдер — его видно в настройках роутера или через внешний сервис определения адреса. Но пробрасывать порты 1С на этот адрес не стоит: безопаснее VPN или публикация базы на веб-сервере по HTTPS.
Можно ли одной командой увидеть IP всех подключённых клиентов?
Да, на сервере: netstat -ano с фильтром по портам кластера покажет внешние адреса и порты всех активных соединений. Имена пользователей это не даёт — их сопоставляют со списком сеансов в консоли администрирования.