Diretrizes de solução de problemas de RPC (Chamada de Procedimento Remoto)

Aplica-se a: Cliente Windows

Você pode encontrar um erro "servidor RPC indisponível" ao se conectar à WMI (Instrumentação de Gerenciamento do Windows) ou à Microsoft SQL Server, durante uma sessão de RPC (Chamada de Procedimento Remoto) ou ao usar vários snap-ins do MMC (Microsoft Management Console). A imagem a seguir mostra um exemplo de erro RPC.

Captura de tela de uma mensagem de erro informando que o seguinte erro ocorreu: o servidor RPC não está disponível.

Esse é um erro de rede comum que requer alguma familiaridade básica com o processo para solucionar problemas com êxito. Para começar, há vários termos importantes para entender:

  • Mapeador de ponto de extremidade (EPM): um serviço que escuta no servidor e orienta os aplicativos cliente para aplicativos de servidor usando informações de porta e UUID.
  • Torre: descreve o protocolo RPC para permitir que o cliente e o servidor negociem uma conexão.
  • Pisos: as camadas de conteúdo dentro de uma torre que contêm dados específicos, como portas, endereços IP e identificadores.
  • UUID: um GUID bem conhecido que identifica um aplicativo RPC. Durante a solução de problemas, você pode usar o UUID para acompanhar as conversas RPC de um único tipo de aplicativo (entre os muitos tipos que ocorrem em um único computador ao mesmo tempo).
  • Opnum: identifica uma função que o cliente deseja que o servidor execute. Este é simplesmente um número hexadecimal. No entanto, um bom analisador de rede traduzirá a função para você. Se a função não puder ser identificada, entre em contato com o fornecedor do aplicativo.
  • Porta: o ponto de extremidade de comunicação para o aplicativo cliente ou servidor. O EPM aloca portas dinâmicas (também conhecidas como portas altas ou portas efêmeras) para clientes e servidores usarem.

    Observação

    Normalmente, o número da porta é a informação mais importante que você usará para solução de problemas.

  • Dados do Stub: os dados trocados entre as funções no cliente e as funções no servidor. Esses dados são a carga, a parte importante da comunicação.

Como a conexão funciona

O diagrama a seguir mostra um cliente se conectando a um servidor para executar uma operação remota. Inicialmente, o cliente entra em contato com a porta TCP 135 no servidor e negocia com o EPM para obter um número de porta dinâmico. Depois que o EPM atribui uma porta, o cliente se desconecta e usa a porta dinâmica para se conectar ao servidor.

Diagrama que mostra como um cliente faz uma conexão RPC com um servidor remoto.

Importante

Se um firewall separar o cliente e o servidor, o firewall precisará permitir a comunicação na porta 135 e nas portas dinâmicas atribuídas pelo EPM. Uma abordagem para gerenciar esse cenário é especificar portas ou intervalos de portas para o EPM usar. Para obter mais informações, consulte Configurar como o RPC aloca portas dinâmicas.

Alguns firewalls também permitem a filtragem UUID. Nesse cenário, se uma solicitação RPC usar a porta 135 para atravessar o firewall e entrar em contato com o EPM, o firewall observará a UUID associada à solicitação. Quando o EPM responde e envia um número de porta dinâmico para essa UUID, o firewall também observa o número da porta. Em seguida, o firewall permite operações de associação RPC para essa porta e UUID.

Configurar como o RPC aloca portas dinâmicas

Por padrão, o EPM aloca portas dinâmicas aleatoriamente do intervalo configurado para TCP e UDP (com base na implementação do sistema operacional usado). No entanto, essa abordagem pode não ser prática, especialmente se o cliente e o servidor precisarem se comunicar por meio de um firewall. Um método alternativo é especificar um número de porta ou um intervalo de números de porta para o EPM usar e abrir essas portas no firewall.

Muitos aplicativos do servidor Windows que dependem do RPC fornecem opções (como chaves de registro) para personalizar as portas permitidas. Os serviços Windows usam a subchaveHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet para essa tarefa.

Quando você especificar uma porta ou intervalo de portas, use portas que estão fora do intervalo de portas comumente usadas. Você pode encontrar uma lista abrangente de portas de servidor usadas no Windows e nos principais produtos da Microsoft em Visão geral do serviço e requisitos de porta de rede para Windows. O artigo também lista aplicativos de servidor RPC e menciona quais aplicativos de servidor RPC podem ser configurados para usar portas de servidor personalizadas além dos recursos do runtime do RPC.

Importante

Esta seção, método ou tarefa contém etapas que descrevem como modificar o Registro. Entretanto, sérios problemas poderão ocorrer caso você modifique o Registro incorretamente. Portanto, siga essas etapas cuidadosamente. Para maior proteção, faça backup do Registro antes de modificar, para poder restaurar se ocorrer um problema. Para saber mais sobre como fazer o backup e restaurar o registro, consulte Como fazer o backup e restaurar o registro no Windows.

Por padrão, a chave da Internet não existe. Portanto, você precisa criá-lo. Para a chave da Internet , você pode configurar as seguintes entradas:

  • Portas REG_MULTI_SZ: especifica uma porta ou um intervalo inclusivo de portas. As outras entradas que aparecem na Internet indicam se estas são as portas a serem usadas ou as portas a serem excluídas do uso.

    • Intervalo de valor: 0 - 65535
      Por exemplo, 5984 representa uma única porta e 5000-5100 representa um conjunto de portas. Se algum valor estiver fora do intervalo de 0 a 65535 ou se algum valor não puder ser interpretado, o runtime do RPC tratará toda a configuração como inválida.
  • PortsInternet Disponível REG_SZ: especifica se o valor portas representa portas a serem incluídas ou portas a serem excluídas.

    • Valores: Y ou N (não sensíveis a casos)
      • Y: As portas listadas na entrada portas representam todas as portas nesse computador que estão disponíveis para o EPM.
      • N: As portas listadas na entrada portas representam todas as portas que não estão disponíveis para o EPM.
  • UseInternetPorts REG_SZ: especifica a política padrão do sistema.

    • Valores: Y ou N (não sensíveis a casos)
      • Y: Os processos que usam a política padrão do sistema são portas atribuídas do conjunto de portas disponíveis para Internet, conforme definido anteriormente.
      • N: Os processos que usam a política padrão do sistema são portas atribuídas do conjunto de portas somente intranet.

Você deve abrir um intervalo de portas maiores que a porta 5000. Os números de porta com menos de 5.000 já podem estar em uso por outros aplicativos e podem causar conflitos com seus aplicativos DCOM. Além disso, a experiência anterior mostra que um mínimo de 100 portas devem ser abertas. Isso ocorre porque vários serviços do sistema dependem dessas portas RPC para se comunicarem entre si.

Observação

O número mínimo de portas necessárias pode ser diferente de computador para computador. Computadores com suporte a mais tráfego poderão encontrar esgotamento da porta se as portas dinâmicas do RPC forem restritas. Leve isso em consideração se você restringir o intervalo de portas.

Aviso

Se houver um erro na configuração da porta ou não houver portas suficientes no pool, o EPM não poderá registrar aplicativos de servidor RPC (incluindo serviços windows como Netlogon) que usam pontos de extremidade dinâmicos. Se ocorrer um erro de configuração, o código de erro será 87 (0x57) ERROR_INVALID_PARAMETER. Por exemplo, se não houver portas suficientes, o netlogon registrará o evento 5820:

Nome do Log: Sistema
Fonte: NETLOGON
ID do evento: 5820
Nível: erro
Palavras-chave: Clássico
Descrição:
O serviço Netlogon não pôde adicionar a interface do AuthZ RPC. O serviço foi encerrado. O seguinte erro ocorreu: "O parâmetro está incorreto."

Para obter mais informações sobre como o RPC funciona, consulte RPC em TI/Pro.

Exemplo de uma configuração de porta personalizada

Neste exemplo, as portas 5000 a 6000 (inclusivas) foram selecionadas arbitrariamente para ajudar a ilustrar como as novas entradas de registro podem ser configuradas. Este exemplo não é uma recomendação de um número mínimo de portas que qualquer sistema específico requer. Essa configuração requer adicionar a chave da Internet em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpce adicionar as seguintes entradas:

  • Portas MULTI_SZ
    • Tipo de dados: MULTI_SZ
    • Valor: 5000-6000
  • PortsInternetAvailable REG_SZ
    • Tipo de dados: REG_SZ
    • Valor: Y
  • UseInternetPorts REG_SZ
    • Tipo de dados: REG_SZ
    • Valor: Y

O computador precisa reiniciar para que essa configuração entre em vigor. Depois disso, todos os aplicativos que usam RPC receberão portas dinâmicas no intervalo de 5000 a 6.000 (inclusive).

Solução de problemas de erros do RPC

Portqry

O PortQry fornece uma visão rápida de como o RPC está funcionando antes de se aprofundar nos dados de rastreamento de rede. Você pode determinar rapidamente se pode fazer uma conexão executando o seguinte comando no computador cliente:

Portqry.exe -n <ServerIP> -e 135

Observação

Neste comando, <o ServerIP> representa o endereço IP do servidor que você está entrando em contato.

Por exemplo, considere o seguinte comando:

Portqry.exe -n 169.254.0.2 -e 135

Este comando produz uma saída que se assemelha ao seguinte trecho:

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.2[49664]

Examinando essa saída, você pode determinar as seguintes informações:

  • O DNS está funcionando corretamente (resolveu o endereço IP para um FQDN (nome de domínio totalmente qualificado)).
  • O PortQry entrou em contato com a porta RPC (135) no computador de destino.
  • O EPM respondeu ao PortQry e atribuiu a porta dinâmica 49664 (fechada em colchetes) para comunicação subsequente.
  • PortQry reconectado à porta 49664.

Se alguma dessas etapas falhar, geralmente você poderá começar a coletar rastreamentos de rede simultâneos, conforme descrito na próxima seção.

Para obter mais informações sobre o PortQry, consulte Usando a ferramenta de linha de comando do PortQry.

Netsh

Você pode usar a ferramenta Netsh do Windows para coletar dados de rastreamento de rede simultaneamente no cliente e no servidor.

Para coletar rastreamentos de rede simultâneos, abra uma janela de Prompt de Comando elevada no cliente e no servidor.

No cliente, execute o seguinte comando:

Netsh trace start scenario=netconnection capture=yes tracefile=c:\client_nettrace.etl maxsize=512 overwrite=yes report=yes

No servidor, execute o seguinte comando:

Netsh trace start scenario=netconnection capture=yes tracefile=c:\server_nettrace.etl maxsize=512 overwrite=yes report=yes

Agora, tente reproduzir seu problema no computador cliente. Em seguida, execute o seguinte comando no prompt de comando em ambas as janelas para interromper os rastreamentos:

Netsh trace stop

Abra os arquivos de rastreamento no Microsoft Network Monitor 3.4 ou No Analisador de Mensagens e filtre os dados de rastreamento para o endereço IP do servidor ou dos computadores cliente e da porta TCP 135. Por exemplo, use cadeias de caracteres de filtro, como o seguinte:

  • Ipv4.address==<client-ip> e ipv4.address==<server-ip> e tcp.port==135

    Nesta cadeia de caracteres de filtro, <o client-ip> representa o endereço IP do cliente e < o server-ip> representa o endereço IP do servidor.

  • tcp.port==135

Nos dados filtrados, procure a entrada EPM na coluna Protocolo .

Procure uma resposta do EPM (no servidor) que inclua um número de porta dinâmico. Se o número da porta dinâmica estiver presente, observe-o para referência futura.

Captura de tela do Monitor de Rede que mostra a porta dinâmica realçada.

Refiltre os dados de rastreamento para o número da porta dinâmica e o endereço IP do servidor. Por exemplo, use uma cadeia de caracteres de filtro como tcp.port==<dynamic-port-allocated> e ipv4.address==<server-ip>. Nesta cadeia de caracteres de filtro, <a porta dinâmica alocada> representa o número da porta dinâmica e < o server-ip> representa o endereço IP do servidor.

Captura de tela do Monitor de Rede que tem um filtro aplicado.

Nos dados filtrados, procure evidências de que o cliente se conectou com êxito à porta dinâmica ou procure quaisquer problemas de rede que possam ter ocorrido.

Porta não acessível

A causa mais comum de erros de "servidor RPC indisponível" é que o cliente não pode se conectar à porta dinâmica alocada. O rastreamento do lado do cliente mostraria retransmissões do SYN do TCP para a porta dinâmica.

Captura de tela do Monitor de Rede que mostra os retransmissões do SYN do TCP.

Esse comportamento indica que uma das seguintes condições é bloquear a comunicação:

Coleta de dados para solução de problemas mais profunda

Antes de entrar em contato com o suporte da Microsoft, recomendamos que você colete informações sobre seu problema.

Pré-requisitos

Esses procedimentos usam o conjunto de ferramentas TSS (TroubleShootingScript ). Para usar este conjunto de ferramentas, você deve estar ciente dos seguintes pré-requisitos:

  • Você deve ter permissão no nível do administrador no computador local.

  • Na primeira vez que você executa o conjunto de ferramentas, você precisa aceitar um EULA.

  • Verifique se a política de execução de script Windows PowerShell para o computador está definida como RemoteSigned. Para obter mais informações sobre a política de execução do PowerShell, consulte about_Execution_Policies.

    Observação

    Se o ambiente impedir que você use RemoteSigned no nível do computador, você poderá defini-lo temporariamente no nível do processo. Para fazer isso, execute o seguinte cmdlet em uma janela do Prompt de Comando do Powershell elevada antes de iniciar a ferramenta:

    PS C:\> Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSigned
    

    Para verificar se a alteração entra em vigor, execute o PS C:\> Get-ExecutionPolicy -List cmdlet.

    As permissões no nível do processo se aplicam apenas à sessão atual do PowerShell. Depois de fechar a janela do PowerShell, a política de execução será revertida para a configuração original.

Coletar informações importantes antes de entrar em contato com o suporte da Microsoft

  1. Baixe o TSS em todos os nós e expanda-o para a pasta C:\tss .

  2. Abra a pasta C:\tss em uma janela de Prompt de Comando do PowerShell elevada.

  3. Inicie rastreamentos no computador problemático executando o seguinte cmdlet:

    TSS.ps1 -Scenario NET_RPC
    
  4. Responda ao prompt do EULA.

  5. Reproduza o problema. Você pode usar ferramentas como Visualizador de Eventos ou wbemtest para monitorar ou testar o problema.

  6. Depois de reproduzir o problema, pare imediatamente de coletar dados.

  7. Depois que os scripts automatizados terminarem de coletar os dados necessários, anexe os dados à sua solicitação de suporte.