Condividi tramite


Indicazioni per la risoluzione degli errori RPC (Remote Procedure Call)

Si applica a: Windows Client

È possibile che si verifichi un errore "Server RPC non disponibile" quando ci si connette a Strumentazione gestione Windows (WMI) o Microsoft SQL Server, durante una sessione RPC (Remote Procedure Call) o quando si usano diversi snap-in di Microsoft Management Console (MMC). L'immagine seguente mostra un esempio di errore RPC.

Screenshot di un messaggio di errore che indica che si è verificato l'errore seguente: il server RPC non è disponibile.

Si tratta di un errore di rete comune che richiede una certa familiarità di base con il processo per la risoluzione dei problemi. Per iniziare, esistono diversi termini importanti da comprendere:

  • Endpoint mapper (EPM): servizio che resta in ascolto sul server e guida le app client alle app server usando le informazioni sulla porta e l'UUID.
  • Tower: descrive il protocollo RPC per consentire al client e al server di negoziare una connessione.
  • Piani: livelli di contenuto all'interno di una torre che contengono dati specifici, ad esempio porte, indirizzi IP e identificatori.
  • UUID: GUID noto che identifica un'applicazione RPC. Durante la risoluzione dei problemi, è possibile usare l'UUID per tenere traccia delle conversazioni RPC di un singolo tipo di applicazione (tra i molti tipi che si verificano in un singolo computer contemporaneamente).
  • Opnum: identifica una funzione che il client vuole che il server esegua. Si tratta semplicemente di un numero esadecimale. Tuttavia, un buon analizzatore di rete tradurrà automaticamente la funzione. Se la funzione non può essere identificata, contattare il fornitore dell'applicazione.
  • Porta: endpoint di comunicazione per l'applicazione client o server. EPM alloca porte dinamiche (note anche come porte elevate o porte temporanee) per client e server da usare.

    Nota

    In genere il numero di porta è le informazioni più importanti che verranno usate per la risoluzione dei problemi.

  • Dati Stub: dati scambiati tra le funzioni nel client e le funzioni nel server. Questi dati sono il payload, la parte importante della comunicazione.

Funzionamento della connessione

Il diagramma seguente mostra un client che si connette a un server per eseguire un'operazione remota. Il client contatta inizialmente la porta TCP 135 sul server e quindi negozia con EPM per un numero di porta dinamico. Dopo che EPM assegna una porta, il client si disconnette e quindi usa la porta dinamica per connettersi al server.

Diagramma che mostra come un client effettua una connessione RPC a un server remoto.

Importante

Se un firewall separa il client e il server, il firewall deve consentire la comunicazione sulla porta 135 e sulle porte dinamiche assegnate da EPM. Un approccio alla gestione di questo scenario consiste nel specificare porte o intervalli di porte da usare per EPM. Per altre informazioni, vedere Configurare il modo in cui RPC alloca le porte dinamiche.

Alcuni firewall consentono anche il filtro UUID. In questo scenario, se una richiesta RPC usa la porta 135 per attraversare il firewall e contattare EPM, il firewall annota l'UUID associato alla richiesta. Quando EPM risponde e invia un numero di porta dinamico per tale UUID, il firewall annota anche il numero di porta. Il firewall consente quindi le operazioni di associazione RPC per l'UUID e la porta.

Configurare il modo in cui RPC alloca le porte dinamiche

Per impostazione predefinita, EPM alloca le porte dinamiche in modo casuale dall'intervallo configurato per TCP e UDP (in base all'implementazione del sistema operativo usato). Tuttavia, questo approccio potrebbe non essere pratico, soprattutto se il client e il server devono comunicare tramite un firewall. Un metodo alternativo consiste nel specificare un numero di porta o un intervallo di numeri di porta da usare per EPM e aprire tali porte nel firewall.

Molte applicazioni server Windows che si basano su RPC offrono opzioni (ad esempio le chiavi del Registro di sistema) per personalizzare le porte consentite. I servizi Windows usano la sottochiaveHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet per questa attività.

Quando si specifica una porta o un intervallo di porte, usare porte che non rientrano nell'intervallo di porte di uso comune. È possibile trovare un elenco completo delle porte server usate in Windows e nei principali prodotti Microsoft in Panoramica del servizio e requisiti delle porte di rete per Windows. L'articolo elenca anche le applicazioni server RPC e indica quali applicazioni server RPC possono essere configurate per l'uso di porte server personalizzate oltre le funzionalità del runtime RPC.

Importante

In questa sezione, metodo o attività viene illustrata la procedura per modificare il Registro di sistema. Poiché l'errata modifica del Registro di sistema può causare seri problemi, Di conseguenza, attenersi scrupolosamente alla procedura indicata. Al fine di protezione, eseguire il backup del registro di sistema prima di modificarlo, in modo da poterlo ripristinare in caso di problemi. Per ulteriori informazioni su come eseguire backup e ripristino del Registro di sistema, vedere Backup e ripristino del Registro di sistema in Windows.

Per impostazione predefinita, la chiave Internet non esiste. Pertanto, è necessario crearlo. Per la chiave Internet , è possibile configurare le voci seguenti:

  • Porte REG_MULTI_SZ: specifica una porta o un intervallo inclusivo di porte. Le altre voci visualizzate in Internet indicano se si tratta delle porte da usare o delle porte da escludere dall'uso.

    • Intervallo di valori: 0 - 65535
      Ad esempio, 5984 rappresenta una singola porta e 5000-5100 rappresenta un set di porte. Se i valori non rientrano nell'intervallo compreso tra 0 e 65535 o se non è possibile interpretare alcun valore, il runtime RPC considera l'intera configurazione come non valida.
  • PortsInternetAvailable REG_SZ: specifica se il valore Ports rappresenta le porte da includere o le porte da escludere.

    • Valori: Y o N (senza distinzione tra maiuscole e minuscole)
      • Y: le porte elencate nella voce Porte rappresentano tutte le porte del computer disponibili per EPM.
      • N: le porte elencate nella voce Porte rappresentano tutte le porte non disponibili per EPM.
  • UseInternetPorts REG_SZ: specifica i criteri di sistema predefiniti.

    • Valori: Y o N (senza distinzione tra maiuscole e minuscole)
      • Y: ai processi che usano i criteri di sistema predefiniti vengono assegnate le porte dal set di porte disponibili per Internet, come definito in precedenza.
      • N: ai processi che usano i criteri di sistema predefiniti vengono assegnate porte dal set di porte solo intranet.

È consigliabile aprire un intervallo di porte maggiori della porta 5000. I numeri di porta inferiori a 5000 potrebbero essere già in uso da altre applicazioni e potrebbero causare conflitti con le applicazioni DCOM. Inoltre, l'esperienza precedente mostra che è necessario aprire almeno 100 porte. Questo perché diversi servizi di sistema si basano su queste porte RPC per comunicare tra loro.

Nota

Il numero minimo di porte necessarie può essere diverso da computer a computer. I computer che supportano più traffico potrebbero riscontrare l'esaurimento delle porte se le porte dinamiche RPC sono limitate. Prendere in considerazione questo aspetto se si limita l'intervallo di porte.

Avviso

Se si verifica un errore nella configurazione delle porte o non sono presenti porte sufficienti nel pool, EPM non può registrare applicazioni server RPC (inclusi i servizi Windows come Netlogon) che usano endpoint dinamici. Se si verifica un errore di configurazione, il codice di errore è 87 (0x57) ERROR_INVALID_PARAMETER. Ad esempio, se le porte non sono sufficienti, netlogon registra l'evento 5820:

              Nome registro: sistema
Origine: NETLOGON
ID evento: 5820
Livello: Errore
Parole chiave: classico
Descrizione:
Il servizio Netlogon non è riuscito ad aggiungere l'interfaccia RPC AuthZ. Il servizio è stato terminato. Si è verificato l'errore seguente: 'Il parametro non è corretto'.

Per altre informazioni sul funzionamento di RPC, vedere RPC su IT/Pro.

Esempio di configurazione di una porta personalizzata

In questo esempio le porte da 5000 a 6000 (incluse) sono state selezionate arbitrariamente per illustrare come configurare le nuove voci del Registro di sistema. Questo esempio non è una raccomandazione di un numero minimo di porte richieste da un determinato sistema. Questa configurazione richiede l'aggiunta della chiave Internet in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpce l'aggiunta delle voci seguenti:

  • Porte MULTI_SZ
    • Tipo di dati: MULTI_SZ
    • Valore: 5000-6000
  • PortsInternetAvailable REG_SZ
    • Tipo di dati: REG_SZ
    • Valore: Y
  • UseInternetPorts REG_SZ
    • Tipo di dati: REG_SZ
    • Valore: Y

Per rendere effettiva questa configurazione, il computer deve essere riavviato. Successivamente, a tutte le applicazioni che usano RPC vengono assegnate porte dinamiche nell'intervallo compreso tra 5000 e 6000 (inclusi).

Risoluzione degli errori RPC

PortQry

PortQry fornisce informazioni rapide sul funzionamento di RPC prima di approfondire i dati di traccia di rete. È possibile determinare rapidamente se è possibile stabilire una connessione eseguendo il comando seguente nel computer client:

Portqry.exe -n <ServerIP> -e 135

Nota

In questo comando, <ServerIP> rappresenta l'indirizzo IP del server che si sta contattando.

Si consideri, ad esempio, il comando seguente:

Portqry.exe -n 169.254.0.2 -e 135

Questo comando produce un output simile all'estratto seguente:

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]

Esaminando questo output, è possibile determinare le informazioni seguenti:

  • Dns funziona correttamente (l'indirizzo IP è stato risolto in un nome di dominio completo (FQDN).
  • PortQry ha contattato la porta RPC (135) nel computer di destinazione.
  • EPM ha risposto a PortQry e ha assegnato la porta dinamica 49664 (racchiusa tra parentesi quadre) per la comunicazione successiva.
  • PortQry riconnesso alla porta 49664.

Se uno di questi passaggi ha esito negativo, è in genere possibile iniziare a raccogliere tracce di rete simultanee, come descritto nella sezione successiva.

Per altre informazioni su PortQry, vedere Uso dello strumento da riga di comando PortQry.

Netsch

È possibile usare lo strumento netsh di Windows per raccogliere simultaneamente i dati di traccia di rete nel client e nel server.

Per raccogliere tracce di rete simultanee, aprire una finestra del prompt dei comandi con privilegi elevati sia nel client che nel server.

Nel client eseguire il comando seguente:

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

Nel server eseguire il comando seguente:

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

A questo punto, provare a riprodurre il problema nel computer client. Eseguire quindi il comando seguente al prompt dei comandi in entrambe le finestre per arrestare le tracce:

Netsh trace stop

Aprire i file di traccia in Microsoft Network Monitor 3.4 o Message Analyzer e filtrare i dati di traccia per l'indirizzo IP del server o dei computer client e della porta TCP 135. Ad esempio, usare stringhe di filtro come le seguenti:

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

    In questa stringa di filtro client-ip>< rappresenta l'indirizzo IP del client e <server-ip> rappresenta l'indirizzo IP del server.

  • tcp.port==135

Nei dati filtrati cercare la voce EPM nella colonna Protocollo .

Cercare una risposta da EPM (sul server) che include un numero di porta dinamico. Se il numero di porta dinamico è presente, annotarlo come riferimento futuro.

Screenshot di Monitoraggio di rete che mostra la porta dinamica evidenziata.

Filtra di nuovo i dati di traccia per il numero di porta dinamica e l'indirizzo IP del server. Ad esempio, usare una stringa di filtro, ad esempio tcp.port==<dynamic-port-allocated> e ipv4.address==<server-ip>. In questa stringa di filtro, <dynamic-port-allocated> rappresenta il numero di porta dinamico e <server-ip> rappresenta l'indirizzo IP del server.

Screenshot di Monitoraggio di rete con un filtro applicato.

Nei dati filtrati cercare la prova che il client si sia connesso correttamente alla porta dinamica o cercare eventuali problemi di rete che potrebbero essersi verificati.

Porta non raggiungibile

La causa più comune degli errori "Server RPC non disponibile" è che il client non è in grado di connettersi alla porta dinamica allocata. La traccia sul lato client mostra quindi le ritrasmissioni TCP SYN per la porta dinamica.

Screenshot di Monitoraggio di rete che mostra le ritrasmissioni TCP SYN.

Questo comportamento indica che una delle condizioni seguenti blocca la comunicazione:

  • L'intervallo di porte dinamiche è bloccato nel firewall nell'ambiente.
  • Un dispositivo centrale sta rilasciando i pacchetti.
  • Il server di destinazione elimina i pacchetti. Questa condizione potrebbe essere causata da configurazioni come la rimozione di pacchetti WFP (Windows Filtering Platform), la rimozione di pacchetti della scheda di interfaccia di rete (NIC) o la modifica del driver di filtro .

Raccolta di dati per una risoluzione dei problemi più approfondita

Prima di contattare il supporto tecnico Microsoft, è consigliabile raccogliere informazioni sul problema.

Prerequisiti

Queste procedure usano il set di strumenti TroubleShootingScript (TSS). Per usare questo set di strumenti, è necessario tenere presente i prerequisiti seguenti:

  • È necessario disporre dell'autorizzazione a livello di amministratore per il computer locale.

  • La prima volta che si esegue il set di strumenti, è necessario accettare un contratto di licenza.

  • Assicurarsi che il criterio di esecuzione dello script Windows PowerShell per il computer sia impostato su RemoteSigned. Per altre informazioni sui criteri di esecuzione di PowerShell, vedere about_Execution_Policies.

    Nota

    Se l'ambiente impedisce di usare RemoteSigned a livello di computer, è possibile impostarlo temporaneamente a livello di processo. A tale scopo, eseguire il cmdlet seguente in una finestra del prompt dei comandi di PowerShell con privilegi elevati prima di avviare lo strumento:

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

    Per verificare che la modifica abbia effetto, eseguire il PS C:\> Get-ExecutionPolicy -List cmdlet .

    Le autorizzazioni a livello di processo si applicano solo alla sessione corrente di PowerShell. Dopo aver chiuso la finestra di PowerShell, i criteri di esecuzione ripristinano l'impostazione originale.

Raccogliere informazioni chiave prima di contattare il supporto tecnico Microsoft

  1. Scaricare TSS in tutti i nodi ed espanderlo nella cartella C:\tss .

  2. Aprire la cartella C:\tss in una finestra del prompt dei comandi di PowerShell con privilegi elevati.

  3. Avviare le tracce nel computer con problemi eseguendo il cmdlet seguente:

    TSS.ps1 -Scenario NET_RPC
    
  4. Rispondere al prompt del contratto di licenza.

  5. Riprodurre il problema. È possibile usare strumenti come Visualizzatore eventi o wbemtest per monitorare o testare il problema.

  6. Dopo aver riprodotto il problema, interrompere immediatamente la raccolta dei dati.

  7. Dopo che gli script automatizzati hanno completato la raccolta dei dati necessari, allegare i dati alla richiesta di supporto.