Event ID 10028 DCOM: DCOM не удалось связаться с компьютером
Архитектура DCOM и симптомы сбоя (RPC)
Событие 10028 логируется в журнале System источником DistributedCOM. Сообщение: «DCOM не удалось связаться с компьютером [Имя_целевого_ПК] с использованием любого из настроенных протоколов. Запрошен PID [Номер]». DCOM (Distributed Component Object Model) — это протокол сетевого взаимодействия, на котором работают WMI, MMC-оснастки, PowerShell Remoting и агенты мониторинга. Симптомы: консоли удаленного управления (Server Manager), системы бэкапа (Veeam) или Zabbix/SCOM не могут подключиться к удаленному серверу для сбора метрик.
Сетевой стек DCOM
DCOM использует сложный механизм портов (RPC Endpoint Mapper):
- Сначала клиент стучится на TCP-порт 135.
- Сервер отвечает и динамически выделяет клиенту случайный порт из диапазона 49152–65535.
- Если Firewall блокирует хотя бы один этап — генерируется ошибка 10028 (или 10009).
Пошаговое дерево решений (Траблшутинг сети и прав)
Сценарий 1: Проверка межсетевых экранов (Firewall)
Это самая частая причина 10028. DCOM отправил запрос по сети, но пакет был отброшен. Вам нужно разрешить трафик DCOM.
- Проверка порта 135: С исходного сервера (где в логе выпала ошибка) выполните PowerShell-команду:
Test-NetConnection -ComputerName "ЦЕЛЕВОЙ_СЕРВЕР" -Port 135 - Правила Windows Defender Firewall: На целевом сервере должны быть включены правила для группы «Инструментарий управления Windows (WMI)» (Windows Management Instrumentation - DCOM-In и WMI-In).
- Аппаратные файрволы (Cisco/Mikrotik): Если сервера в разных VLAN, сетевики часто открывают только порт 135, забывая открыть динамический диапазон RPC (TCP 49152-65535). Пакет дропается на этапе согласования порта.
Сценарий 2: Блокировка UAC для недоменных ПК (Workgroup)
Если целевой ПК не находится в домене (или сервера в разных лесах без траста), локальный запрос DCOM блокируется политикой UAC (Remote UAC). Ядро считает запрос недоверенным.
- На целевом ПК откройте
regeditот имени Администратора. - Перейдите:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System. - Создайте параметр DWORD (32-bit): LocalAccountTokenFilterPolicy со значением 1.
- Перезапустите службу
Winmgmtили перезагрузите ПК.
Сценарий 3: Разрешение имен (DNS)
DCOM жестко завязан на Kerberos (SPN). Если исходный сервер не может правильно разрешить имя целевого сервера в IP-адрес (или резолвит старый IP), запрос уйдет в пустоту. Выполните ipconfig /flushdns.
Типовые ошибки администраторов
- Поиск ошибки на целевом сервере: Ошибка 10028 пишется ТОЛЬКО на исходном (отправляющем) сервере. На сервере, к которому пытались подключиться, логов об отказе часто вообще нет, так как пакет сгорел в файрволе.
Сложные межсетевые экраны часто ломают служебный трафик Windows RPC/DCOM. Возьмем вашу ИТ-инфраструктуру на абонентское обслуживание: спроектируем корректные правила Firewall, настроим WMI-доступы, пропишем SPN и обеспечим стабильный сбор метрик (Zabbix/Prometheus).
Частые вопросы (FAQ)
Почему 10028 сыплется на клиентские ПК (Windows 10/11)?
Чаще всего антивирусный сервер (например, Kaspersky Security Center) или сканер уязвимостей пытается по расписанию опросить выключенный, спящий или отсоединенный от сети ноутбук сотрудника по DCOM. Отключенный ПК не отвечает, генерируется таймаут 10028.
В чем отличие 10028 от 10016?
10016 (Local Activation) — это проблема локальных прав (ACL) внутри самого сервера (нет прав запустить объект). 10028 (Unable to communicate) — это проблема СЕТЕВОЙ связности между двумя разными компьютерами.
Можно ли ограничить динамические порты RPC (49152-65535)?
Да. Если безопасники не дают открыть 16000 портов между VLAN, вы можете ограничить RPC-пул (например, до 100 портов: 50000-50100) через реестр (HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet). Но это нужно делать на КАЖДОМ целевом сервере.
Почему пинг (ICMP) идет, а DCOM 10028 все равно появляется?
Пинг проверяет только 3-й уровень OSI (Сетевой). DCOM работает на 7-м (Прикладном). Пинг не гарантирует, что открыты порты TCP 135/49152+ и что работают службы RPC.
Как проверить DCOM локально?
Запустите PowerShell: 'Get-WmiObject Win32_OperatingSystem -ComputerName localhost'. Если локально работает, а по сети (с другим ComputerName) падает — проблема 100% в файрволе или аутентификации.