Remote procedure calls windows

Устранение ошибок удаленного вызова процедур (RPC) Troubleshoot Remote Procedure Call (RPC) errors

При подключении к инструментарию управления Windows (WMI), SQL Server, удаленном подключении или при некоторых оснастках консоли управления (MMC) может возникнуть ошибка RPC. На следующем рисунке приводится пример ошибки RPC. You might encounter an RPC server unavailable error when connecting to Windows Management Instrumentation (WMI), SQL Server, during a remote connection, or for some Microsoft Management Console (MMC) snap-ins. The following image is an example of an RPC error.

Это часто встречающийся в сетевом мире сообщение об ошибке, и можно очень быстро потерять попытку, не пытаясь понять многое, что происходит «под хламом». This is a commonly encountered error message in the networking world and one can lose hope very fast without trying to understand much, as to what is happening ‘under the hood’.

Перед началом устранения неполадок недоступного сервера RPC — ошибка, давайте сначала рассмотрим основные принципы этой ошибки. Before getting in to troubleshooting the *RPC server unavailable— error, let’s first understand basics about the error. Необходимо понимать несколько важных терминов: There are a few important terms to understand:

  • Mapper конечных точек — служба, прослушиваемая на сервере, которая направляет клиентские приложения к серверным приложениям по портам и UUID. Endpoint mapper – a service listening on the server, which guides client apps to server apps by port and UUID.
  • В нем описывается протокол RPC, позволяющий клиенту и серверу согласовывать подключение. Tower – describes the RPC protocol, to allow the client and server to negotiate a connection.
  • Floor — содержимое дома с определенными данными, например портами, IP-адресами и идентификаторами. Floor – the contents of a tower with specific data like ports, IP addresses, and identifiers.
  • UUID — известный GUID, идентифицирует приложение RPC. UUID – a well-known GUID that identifies the RPC application. UUID — это то, что используется для обсуждения определенного типа приложения RPC, так как, скорее всего, их будет много. The UUID is what you use to see a specific kind of RPC application conversation, as there are likely to be many.
  • Opnum — идентификатор функции, которую клиент хочет выполнить на сервере. Opnum – the identifier of a function that the client wants the server to execute. Это просто hexadecimal number, но хороший анализатор сети переведет функцию за вас. It’s just a hexadecimal number, but a good network analyzer will translate the function for you. Если это не так, поставщик приложения должен сообщить вам об этом. If neither knows, your application vendor must tell you.
  • Порт — конечные точки связи для клиентских и серверных приложений. Port – the communication endpoints for the client and server applications.
  • Данные загона — данные, которые даются функциям и данным, которые обмениваются между клиентом и сервером. Stub data – the information given to functions and data exchanged between the client and server. Это полезное значение, важная часть. This is the payload, the important part.

При устранении неполадок используется много вышеуказанных сведений, наиболее важным является номер порта Динамического RPC, который вы получаете при беседе с EPM. A lot of the above information is used in troubleshooting, the most important is the Dynamic RPC port number you get while talking to EPM.

Как работает подключение How the connection works

Клиент А хочет выполнить некоторые функции или использовать службу, запущенную на удаленном сервере, сначала установит соединение с удаленным сервером, выполив трехначерное рукопожатие. Client A wants to execute some functions or wants to make use of a service running on the remote server, will first establish the connection with the Remote Server by doing a three-way handshake.

Порты RPC также могут быть предоставлены из определенного диапазона. RPC ports can be given from a specific range as well.

Настройка динамического выделения портов RPC Configure RPC dynamic port allocation

Динамическое распределение портов удаленного вызова процедур (RPC) используется серверным приложением и приложениями удаленного администрирования, такими как диспетчер DHCP, диспетчер службы windows Internet Name Service (WINS) и т. д. Remote Procedure Call (RPC) dynamic port allocation is used by server applications and remote administration applications such as Dynamic Host Configuration Protocol (DHCP) Manager, Windows Internet Name Service (WINS) Manager, and so on. Динамическое распределение портов RPC предписывает программе RPC использовать определенный случайный порт в диапазоне, настроенном для TCP и UDP, в зависимости от реализации используемой операционной системы. RPC dynamic port allocation will instruct the RPC program to use a particular random port in the range configured for TCP and UDP, based on the implementation of the operating system used.

Читайте также:  Как узнать ком порт usb устройства windows 10

Клиенты, использующие брандмауэры, могут захотеть контролировать, какие порты использует RPC, чтобы маршрутизатор брандмауэра можно было настроить для переададания только этих портов протокола UDP и TCP. Customers using firewalls may want to control which ports RPC is using so that their firewall router can be configured to forward only these Transmission Control Protocol (UDP and TCP) ports. Многие серверы RPC в Windows могут указывать порт сервера в настраиваемом элементе конфигурации, например в записях реестра. Many RPC servers in Windows let you specify the server port in custom configuration items such as registry entries. Если можно указать выделенный порт сервера, вы знаете, какой трафик проходит между хостами через брандмауэр, и можете определить, какой трафик разрешен более адресным образом. When you can specify a dedicated server port, you know what traffic flows between the hosts across the firewall, and you can define what traffic is allowed in a more directed manner.

В качестве порта сервера выберите порт вне диапазона, который можно указать ниже. As a server port, please choose a port outside of the range you may want to specify below. Полный список портов сервера, используемых в Windows и основных продуктах Майкрософт, можно найти в статье «Обзор служб и требования к сетевым портам для Windows». You can find a comprehensive list of server ports that are used in Windows and major Microsoft products in the article Service overview and network port requirements for Windows. В этой статье также перечислены серверы RPC и серверы RPC, которые можно настроить для использования настраиваемых портов серверов за пределами средств, которые предлагает время работы RPC. The article also lists the RPC servers and which RPC servers can be configured to use custom server ports beyond the facilities the RPC runtime offers.

Некоторые брандмауэры также позволяют фильтровать UUID, когда он узнает из запроса конечного mapper RPC для UUID интерфейса RPC. Some firewalls also allow for UUID filtering where it learns from a RPC Endpoint Mapper request for a RPC interface UUID. Ответ имеет номер порта сервера, и последующая привязка RPC для этого порта может быть передана. The response has the server port number, and a subsequent RPC Bind on this port is then allowed to pass.

С помощью редактора реестра можно изменить следующие параметры для RPC. With Registry Editor, you can modify the following parameters for RPC. Значения ключей порта RPC, рассмотренные ниже, находятся в следующем ключе реестра: The RPC Port key values discussed below are all located in the following key in the registry:

HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet\ типа данных имени записи HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet\ Entry name Data Type

Порты REG_MULTI_SZ Ports REG_MULTI_SZ

  • Указывает набор диапазонов IP-портов, состоящий из всех портов, доступных из Интернета, или всех портов, недоступных из Интернета. Specifies a set of IP port ranges consisting of either all the ports available from the Internet or all the ports not available from the Internet. Каждая строка представляет один порт или инклюзивный набор портов. Each string represents a single port or an inclusive set of ports. Например, один порт может быть представлен портом 5984, а набор портов может быть представлен 5000-5100. For example, a single port may be represented by 5984, and a set of ports may be represented by 5000-5100. Если какие-либо записи находятся за пределами диапазона от 0 до 65535 или если не удается интерпретировать любую строку, то вся конфигурация обрабатывается как недействительным. If any entries are outside the range of 0 to 65535, or if any string cannot be interpreted, the RPC runtime treats the entire configuration as invalid.

PortsInternetAvailable REG_SZ Y или N (без чувствительность к делу) PortsInternetAvailable REG_SZ Y or N (not case-sensitive)

  • Если Y, порты, перечисленные в ключе портов, являются всеми портами, доступными из Интернета на этом компьютере. If Y, the ports listed in the Ports key are all the Internet-available ports on that computer. Если n, порты, перечисленные в ключе портов, — это все порты, недоступные в Интернете. If N, the ports listed in the Ports key are all those ports that are not Internet-available.

UseInternetPorts REG_SZ ) Y или N (без чувствительность к делу) UseInternetPorts REG_SZ ) Y or N (not case-sensitive)

  • Указывает политику по умолчанию для системы. Specifies the system default policy.
  • Если Y, процессам, использующим значение по умолчанию, будут назначены порты из набора портов, доступных из Интернета, как было определено ранее. If Y, the processes using the default will be assigned ports from the set of Internet-available ports, as defined previously.
  • Если n, процессам, использующим значение по умолчанию, будут назначены порты из набора портов только для интрасети. If N, the processes using the default will be assigned ports from the set of intranet-only ports.
Читайте также:  Клавиша восстановления windows asus

Пример. Example:

В этом примере произвольно выбраны порты от 5000 до 6000 включительно, чтобы показать, как можно настроить новый ключ реестра. In this example ports 5000 through 6000 inclusive have been arbitrarily selected to help illustrate how the new registry key can be configured. Это не является рекомендацией минимального количества портов, необходимых для конкретной системы. This is not a recommendation of a minimum number of ports needed for any particular system.

Добавьте ключ Интернета в ок HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc Add the Internet key under: HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc

В ключе Интернета добавьте значения Ports (MULTI_SZ), PortsInternetAvailable (REG_SZ) и UseInternetPorts (REG_SZ). Under the Internet key, add the values «Ports» (MULTI_SZ), «PortsInternetAvailable» (REG_SZ), and «UseInternetPorts» (REG_SZ).

Например, новый ключ реестра выглядит следующим образом: Порты: REG_MULTI_SZ: 5000-6000 PortsInternetAvailable: REG_SZ: Y UseInternetPorts: REG_SZ: Y For example, the new registry key appears as follows: Ports: REG_MULTI_SZ: 5000-6000 PortsInternetAvailable: REG_SZ: Y UseInternetPorts: REG_SZ: Y

Перезапустите сервер. Restart the server. Все приложения, которые используют динамическое распределение портов RPC, используют порты от 5000 до 6000 включительно. All applications that use RPC dynamic port allocation use ports 5000 through 6000, inclusive.

Необходимо открыть диапазон портов выше порта 5000. You should open up a range of ports above port 5000. Номера портов ниже 5000 могут уже применяться другими приложениями и могут вызывать конфликты с вашими приложениями DCOM. Port numbers below 5000 may already be in use by other applications and could cause conflicts with your DCOM application(s). Кроме того, предыдущие версии показывают, что необходимо открыть не менее 100 портов, так как несколько системных служб используют эти порты RPC для связи друг с другом. Furthermore, previous experience shows that a minimum of 100 ports should be opened, because several system services rely on these RPC ports to communicate with each other.

Минимальное число требуемого количества портов может отличаться в разных компьютерах. The minimum number of ports required may differ from computer to computer. Если динамические порты RPC ограничены, компьютеры с более высоким трафиком могут оказаться в ситуации, когда порты ограничены. Computers with higher traffic may run into a port exhaustion situation if the RPC dynamic ports are restricted. Учитывайте это при ограничении диапазона портов. Take this into consideration when restricting the port range.

Если в конфигурации порта произошла ошибка или в пуле недостаточно портов, служба mapper конечной точки не сможет зарегистрировать серверы RPC с динамическими конечными точками. If there is an error in the port configuration or there are insufficient ports in the pool, the Endpoint Mapper Service will not be able to register RPC servers with dynamic endpoints. При ошибке конфигурации код ошибки будет иметь 87 (0x57) ERROR_INVALID_PARAMETER. When there is a configuration error, the error code will be 87 (0x57) ERROR_INVALID_PARAMETER. Это также может повлиять на серверы Windows RPC, такие как Netlogon. This can affect Windows RPC servers as well, such as Netlogon. В этом случае будет занося в журнал событие 5820: It will log event 5820 in this case:

Имя журнала: системный источник: код события NETLOGON: уровень 5820: ключевые слова ошибки: классическое описание: службе Netlogon не удалось добавить интерфейс AuthZ RPC. Log Name: System Source: NETLOGON Event ID: 5820 Level: Error Keywords: Classic Description: The Netlogon service could not add the AuthZ RPC interface. Служба была завершена. The service was terminated. Произошла следующая ошибка: «Неправильный параметр». The following error occurred: ‘The parameter is incorrect.’

Если вы хотите глубоко и подробнее узнать, как это работает, см. RPC через it/Pro. If you would like to do a deep dive as to how it works, see RPC over IT/Pro.

Устранение ошибки RPC Troubleshooting RPC error

PortQuery PortQuery

Лучше всего всегда устранять неполадки RPC перед началом трассировки с помощью таких средств, как PortQry. The best thing to always troubleshoot RPC issues before even getting in to traces is by making use of tools like PortQry. Чтобы быстро определить, можно ли установить подключение, с помощью команды: You can quickly determine if you are able to make a connection by running the command:

Читайте также:  Linux build 64 bit

Это даст вам много выходных данных для искомого, но вам следует искать *ip_tcp — и номер порта в скобках, который сообщает, удалось ли получить динамический порт из EPM и также сделать подключение к ней. This would give you a lot of output to look for, but you should be looking for *ip_tcp— and the port number in the brackets, which tells whether you were successfully able to get a dynamic port from EPM and also make a connection to it. Если вышеуказанное не удается, обычно можно приступить к сбору одновременных сетевых трассировок. If the above fails, you can typically start collecting simultaneous network traces. Что-то вроде этого из выходных данных «PortQry»: Something like this from the output of “PortQry”:

Частичный вывод ниже: Partial output below:

Запрос целевой системы с именем: 169.254.0.2 Пытается разрешить IP-адрес в имя. IP-адрес, разрешенный для RPCServer.contoso.com запроса. TCP-порт 135 (служба epmap): ПРОСЛУШИВАНИЕ С использованием эфемерного порта источника для запроса базы данных mapper конечной точки. Ответ сервера: UUID: d95afe70-a6d5-4259-822e-2c84da1ddb0d ncacn_ip_tcp:169.254.0.10 [49664] Querying target system called: 169.254.0.2 Attempting to resolve IP address to a name. IP address resolved to RPCServer.contoso.com querying. TCP port 135 (epmap service): LISTENING Using ephemeral source port Querying Endpoint Mapper Database. Server’s response: UUID: d95afe70-a6d5-4259-822e-2c84da1ddb0d ncacn_ip_tcp:169.254.0.10[49664]

Полужирным шрифтом является номер эфемерного порта, к который вы успешно подключены. The one in bold is the ephemeral port number that you made a connection to successfully.

Netsh Netsh

Вы можете выполнить команды ниже, чтобы использовать встраиваемую netsh-захваты Windows, чтобы собирать одновременную трассировку. You can run the commands below to leverage Windows inbuilt netsh captures, to collect a simultaneous trace. Не забудьте выполнить приведенную ниже задачу в «Admin CMD», для этого требуется повышение прав. Remember to execute the below on an “Admin CMD”, it requires elevation.

На клиенте On the client

На сервере On the Server

Теперь попробуйте воспроизвести проблему с клиентского компьютера и, как только вы считаете, что проблема воспроизведена, остановите трассировку с помощью команды Now try to reproduce your issue from the client machine and as soon as you feel the issue has been reproduced, go ahead and stop the traces using the command

Откройте трассировки в Microsoft Network Monitor 3.4 или Анализаторе сообщений и отфильтруйте трассировщик для Open the traces in Microsoft Network Monitor 3.4 or Message Analyzer and filter the trace for

Ipv4.address== и ipv4.address== или просто должен tcp.port==135 tcp.port==135 помочь. and ipv4.address== and tcp.port==135 or just tcp.port==135 should help.

Найми протокол EPM в столбце «Протокол». Look for the “EPM” Protocol Under the “Protocol” column.

Теперь проверьте, получает ли вы ответ с сервера. Now check if you are getting a response from the server. Если вы получили ответ, обратите внимание на динамический номер порта, который был выделен для использования. If you get a response, note the dynamic port number that you have been allocated to use.

Проверьте, успешно ли мы подключаемся к динамическим портам. Check if we are connecting successfully to this Dynamic port successfully.

Фильтр должен выглядеть так: tcp.port== и The filter should be something like this: tcp.port== and ipv4.address==

Это поможет вам проверить подключение и изолировать при каких-либо проблемах с сетью. This should help you verify the connectivity and isolate if any network issues are seen.

Порт не дойдет до порта Port not reachable

Самая распространенная причина, по которой сервер RPC недоступен, — это когда динамический порт, к которым пытается подключиться клиент, недоступен. The most common reason why we would see the RPC server unavailable is when the dynamic port that the client tries to connect is not reachable. После этого в клиентской трассировке будут отсканизированы TCP-синтаксис для динамического порта. The client side trace would then show TCP SYN retransmits for the dynamic port.

Порт не может быть досяжим по одной из следующих причин: The port cannot be reachable due to one of the following reasons:

  • Динамический диапазон портов блокируется на брандмауэре в среде. The dynamic port range is blocked on the firewall in the environment.
  • Среднее устройство сбрасывает пакеты. A middle device is dropping the packets.
  • Сервер назначения сбрасывает пакеты (WFP drop/ NIC drop, драйвер фильтра и т. д.). The destination server is dropping the packets (WFP drop / NIC drop/ Filter driver etc).

—>

Оцените статью