Freigeben über


Remoteprozeduraufruf (RPC)-Fehler bei der Problembehandlung

Möglicherweise tritt beim Herstellen einer Verbindung mit der Windows-Verwaltungsinstrumentation (WMI) oder Microsoft SQL Server während einer RPC-Sitzung (Remote Procedure Call, REMOTE Procedure Call, RPC) oder bei Verwendung verschiedener MMC-Snap-Ins (Microsoft Management Console) ein Fehler auf. Die folgende Abbildung zeigt ein Beispiel für einen RPC-Fehler.

Screenshot einer Fehlermeldung, die zeigt, dass der RPC-Server nicht verfügbar ist.

Dies ist ein häufiger Netzwerkfehler, der grundlegende Kenntnisse mit dem Prozess erfordert, um eine erfolgreiche Problembehandlung durchzuführen. Zunächst gibt es mehrere wichtige Begriffe, die Sie verstehen sollten:

  • Endpoint Mapper (EPM):Ein Dienst, der auf dem Server lauscht und Client-Apps mithilfe von Port- und UUID-Informationen zu Server-Apps leitet. Der Dienst ist Teil des RPC-Subsystems, das dynamische Endpunkte als Reaktion auf Clientanforderungen aufgelöst. In einigen Fällen werden Endpunkte dynamisch Servern zugewiesen.
  • Tower: Beschreibt das RPC-Protokoll, damit der Client und der Server eine Verbindung aushandeln können.
  • Böden: Die Inhaltsschichten innerhalb eines Turms, die bestimmte Daten enthalten, z. B. Ports, IP-Adressen und Bezeichner.
  • UUID: Eine bekannte GUID, die eine RPC-Anwendung identifiziert. Während der Problembehandlung können Sie die UUID verwenden, um die RPC-Unterhaltungen eines einzelnen Anwendungstyps (unter den vielen Typen, die auf einem einzelnen Computer gleichzeitig auftreten) nachzuverfolgen.
  • Opnum: Identifiziert eine Funktion, die der Client ausführen möchte. Dies ist einfach eine hexadezimale Zahl. Ein guter Netzwerkanalysator übersetzt die Funktion jedoch für Sie. Wenn die Funktion nicht identifiziert werden kann, wenden Sie sich an Ihren Anwendungsanbieter.
  • Port: Der Kommunikationsendpunkt für Client- oder Serveranwendung. Das EPM weist dynamische Ports (auch als hohe Ports oder ephemerale Ports bezeichnet) für Clients und Server zu, die verwendet werden sollen.

    Notiz

    In der Regel ist die Portnummer die wichtigsten Informationen, die Sie für die Problembehandlung verwenden werden.

  • Stubdaten: Die Daten, die zwischen den Funktionen auf dem Client und den Funktionen auf dem Server ausgetauscht werden. Diese Daten sind die Nutzlast, der wichtige Teil der Kommunikation.

Funktionsweise der Verbindung

Das folgende Diagramm zeigt einen Client, der eine Verbindung mit einem Server herstellt, um einen Remotevorgang auszuführen. Der Client kontaktiert zunächst den TCP-Port 135 auf dem Server und verhandelt dann mit EPM für eine dynamische Portnummer. Nachdem EPM einen Port zugewiesen hat, trennt der Client die Verbindung und verwendet dann den dynamischen Port, um eine Verbindung mit dem Server herzustellen.

Diagramm, das zeigt, wie ein Client eine RPC-Verbindung mit einem Remoteserver herstellt.

Wichtig

Wenn eine Firewall den Client und den Server trennt, muss die Firewall die Kommunikation an Port 135 und an den dynamischen Ports zulassen, die EPM zuweist. Ein Ansatz zur Verwaltung dieses Szenarios besteht darin, Ports oder Ports für EPM anzugeben, die verwendet werden sollen. Weitere Informationen finden Sie unter Konfigurieren, wie RPC dynamische Ports zuweist.

Einige Firewalls ermöglichen auch die UUID-Filterung. Wenn in diesem Szenario eine RPC-Anforderung Port 135 verwendet, um die Firewall zu überqueren und EPM zu kontaktieren, stellt die Firewall die UUID fest, die der Anforderung zugeordnet ist. Wenn EPM antwortet und eine dynamische Portnummer für diese UUID sendet, notiert die Firewall auch die Portnummer. Die Firewall ermöglicht dann RPC-Bindungsvorgänge für diese UUID und den Port.

Konfigurieren der Zuweisung dynamischer Ports durch RPC

Standardmäßig weist EPM dynamische Ports zufällig aus dem Bereich zu, der für TCP und UDP konfiguriert ist (basierend auf der Implementierung des verwendeten Betriebssystems). Dieser Ansatz ist jedoch möglicherweise nicht praktisch, insbesondere, wenn der Client und der Server über eine Firewall kommunizieren müssen. Eine alternative Methode besteht darin, eine Portnummer oder einen Portbereich anzugeben, für die EPM verwendet werden soll, und diese Ports in der Firewall zu öffnen.

Viele Windows-Serveranwendungen, die auf RPC basieren, bieten Optionen (z. B. Registrierungsschlüssel), um die zulässigen Ports anzupassen. Windows-Dienste verwenden den Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet für diese Aufgabe.

Wenn Sie einen Port- oder Portbereich angeben, verwenden Sie Ports, die sich außerhalb des Bereichs der häufig verwendeten Ports befinden. Sie finden eine umfassende Liste der Serverports, die in Windows und wichtigen Microsoft-Produkten in Serviceübersicht und Netzwerkportanforderungen für Windows verwendet werden. Im Artikel werden auch RPC-Serveranwendungen aufgeführt und erwähnt, welche RPC-Serveranwendungen so konfiguriert werden können, dass benutzerdefinierte Serverports verwendet werden können, die über die Funktionen der RPC-Laufzeit hinausgehen.

Wichtig

Dieser Abschnitt, diese Methode bzw. diese Aufgabe enthält eine Beschreibung der Schritte zum Bearbeiten der Registrierung. Durch die falsche Bearbeitung der Registrierung können schwerwiegende Probleme verursacht werden. Daher müssen Sie sicherstellen, dass Sie diese Schritte sorgfältig ausführen. Erstellen Sie eine Sicherungskopie der Registrierung, bevor Sie Änderungen vornehmen, damit Sie die Registrierung wiederherstellen können, falls ein Problem auftritt. Weitere Informationen zum Sichern und Wiederherstellen der Registrierung finden Sie unter: Sichern und Wiederherstellen der Registrierung Windows.

Standardmäßig ist der Internetschlüssel nicht vorhanden. Daher müssen Sie es erstellen. Für den Internetschlüssel können Sie die folgenden Einträge konfigurieren:

  • Ports REG_MULTI_SZ: Gibt einen Port oder einen inklusiven Portbereich an. Die anderen Einträge, die unter dem Internet angezeigt werden, geben an, ob es sich um die zu verwendenden Ports oder die Ports handelt, die von der Verwendung ausgeschlossen werden sollen.

    • Wertbereich: 0 - 65535
      Beispielsweise stellt 5984 einen einzelnen Port dar, und 5000-5100 stellt eine Reihe von Ports dar. Wenn werte außerhalb des Bereichs von 0 bis 65535 liegen oder ein beliebiger Wert nicht interpretiert werden kann, behandelt die RPC-Laufzeit die gesamte Konfiguration als ungültig.
  • PortsInternetAvailable REG_SZ: Gibt an, ob der Ports-Wert Ports darstellt, die eingeschlossen werden sollen, oder Ports, die ausgeschlossen werden sollen.

    • Werte: Y oder N (ohne Groß-/Kleinschreibung)
      • Y: Die Ports, die im Eintrag "Ports " aufgeführt sind, stellen alle Ports auf diesem Computer dar, die für EPM verfügbar sind.
      • N: Die ports, die im Eintrag "Ports " aufgeführt sind, stellen alle Ports dar, die für EPM nicht verfügbar sind.
  • UseInternetPorts REG_SZ: Gibt die Standardsystemrichtlinie an.

    • Werte: Y oder N (ohne Groß-/Kleinschreibung)
      • Y: Den Prozessen, die die Standardsystemrichtlinie verwenden, werden Ports aus der Gruppe der internetverwendigen Ports zugewiesen, wie zuvor definiert.
      • N: Den Prozessen, die die Standardsystemrichtlinie verwenden, werden Ports aus der Gruppe von nur Intranetports zugewiesen.

Sie sollten einen Bereich von Ports öffnen, die größer als Port 5000 sind. Portnummern, die weniger als 5000 sind, werden möglicherweise bereits von anderen Anwendungen verwendet, und sie können Konflikte mit Ihren DCOM-Anwendungen verursachen. Darüber hinaus zeigt die bisherige Erfahrung, dass mindestens 100 Ports geöffnet werden sollten. Dies liegt daran, dass mehrere Systemdienste auf diese RPC-Ports angewiesen sind, um miteinander zu kommunizieren.

Notiz

Die mindestanzahl der erforderlichen Ports kann sich von Computer zu Computer unterscheiden. Computer, die mehr Datenverkehr unterstützen, können portieren, wenn die dynamischen RPC-Ports eingeschränkt sind. Berücksichtigen Sie dies, wenn Sie den Portbereich einschränken.

Warnung

Wenn in der Portkonfiguration ein Fehler auftritt oder nicht genügend Ports im Pool vorhanden sind, kann EPM keine RPC-Serveranwendungen (einschließlich Windows-Diensten wie Netlogon) registrieren, die dynamische Endpunkte verwenden. Wenn ein Konfigurationsfehler auftritt, ist der Fehlercode 87 (0x57) ERROR_INVALID_PARAMETER. Wenn beispielsweise nicht genügend Ports vorhanden sind, protokolliert Netlogon das Ereignis 5820:

Protokollname: System
Quelle: NETLOGON
Ereignis-ID: 5820
Ebene: Fehler
Schlüsselwörter: Klassisch
Beschreibung:
Der Netlogon-Dienst konnte die AuthZ RPC-Schnittstelle nicht hinzufügen. Der Dienst wurde beendet. Der folgende Fehler ist aufgetreten: 'Der Parameter ist falsch.'

Weitere Informationen zur Funktionsweise von RPC finden Sie unter RPC über IT/Pro.

Beispiel für eine benutzerdefinierte Portkonfiguration

In diesem Beispiel wurden die Ports 5000 bis 6000 (einschließlich) willkürlich ausgewählt, um zu veranschaulichen, wie die neuen Registrierungseinträge konfiguriert werden können. In diesem Beispiel wird keine Mindestanzahl von Ports empfohlen, die für ein bestimmtes System erforderlich sind. Für eine solche Konfiguration muss der Internetschlüssel unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc hinzugefügt und die folgenden Einträge hinzugefügt werden:

  • Ports MULTI_SZ
    • Datentyp: MULTI_SZ
    • Wert: 5000-6000
  • PortsInternetAvailable-REG_SZ
    • Datentyp: REG_SZ
    • Wert: Y
  • UseInternetPorts-REG_SZ
    • Datentyp: REG_SZ
    • Wert: Y

Der Computer muss neu gestartet werden, damit diese Konfiguration wirksam wird. Danach werden allen Anwendungen, die RPC verwenden, dynamische Ports im Bereich von 5000 bis 6000 (einschließlich) zugewiesen.

Problembehandlung bei RPC-Fehlern

PortQry

PortQry bietet schnellen Einblick in die Funktionsweise von RPC, bevor Sie sich mit Netzwerkablaufverfolgungsdaten befassen. Sie können schnell ermitteln, ob Sie eine Verbindung herstellen können, indem Sie den folgenden Befehl auf dem Clientcomputer ausführen:

Portqry.exe -n <ServerIP> -e 135

Notiz

In diesem Befehl stellt ServerIP> die IP-Adresse des Servers dar, <den Sie kontaktieren.

Sehen Sie sich beispielsweise den folgenden Befehl an:

Portqry.exe -n 10.10.10.10 -e 135

Dieser Befehl erzeugt eine Ausgabe, die dem folgenden Auszug ähnelt:

Querying target system called:
10.10.10.10
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:10.10.10.10[49664]

Durch Untersuchen dieser Ausgabe können Sie die folgenden Informationen ermitteln:

  • DNS funktioniert ordnungsgemäß (die IP-Adresse wurde in einen vollqualifizierten Domänennamen (FQDN) aufgelöst.
  • PortQry hat den RPC-Port (135) auf dem Zielcomputer kontaktiert.
  • EPM reagierte auf PortQry und zugewiesene den dynamischen Port 49664 (eingeschlossen in eckige Klammern) für die nachfolgende Kommunikation.
  • PortQry wurde erneut mit Port 49664 verbunden.

Wenn eine dieser Schritte fehlschlägt, können Sie in der Regel mit der Erfassung gleichzeitiger Netzwerkablaufverfolgungen beginnen, wie im nächsten Abschnitt beschrieben.

Weitere Informationen zu PortQry finden Sie unter Verwenden des Befehlszeilentools "PortQry".

Netsh

Sie können das Windows Netsh-Tool verwenden, um Netzwerkablaufverfolgungsdaten gleichzeitig auf dem Client und dem Server zu sammeln.

Um gleichzeitige Netzwerkablaufverfolgungen zu sammeln, öffnen Sie ein Eingabeaufforderungsfenster mit erhöhten Rechten sowohl auf dem Client als auch auf dem Server.

Führen Sie auf dem Client den folgenden Befehl aus:

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

Führen Sie auf dem Server den folgenden Befehl aus:

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

Versuchen Sie nun, Ihr Problem auf dem Clientcomputer zu reproduzieren. Führen Sie dann den folgenden Befehl an der Eingabeaufforderung in beiden Fenstern aus, um die Ablaufverfolgungen zu beenden:

Netsh trace stop

Öffnen Sie die Ablaufverfolgungsdateien in Microsoft Network Monitor 3.4 oder Message Analyzer, und filtern Sie die Ablaufverfolgungsdaten für die IP-Adresse der Server- oder Clientcomputer und den TCP-Port 135. Verwenden Sie z. B. Filterzeichenfolgen wie die folgenden:

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

    In dieser Filterzeichenfolge <stellt client-ip> die IP-Adresse des Clients dar, und <server-ip> stellt die IP-Adresse des Servers dar.

  • tcp.port==135

Suchen Sie in den gefilterten Daten nach dem EPM-Eintrag in der Protokollspalte .

Suchen Sie nach einer Antwort von EPM (auf dem Server), die eine dynamische Portnummer enthält. Wenn die dynamische Portnummer vorhanden ist, notieren Sie sie für zukünftige Referenz.

Screenshot des Netzwerkmonitors, auf dem der dynamische Port hervorgehoben ist.

Filtern Sie die Ablaufverfolgungsdaten für die dynamische Portnummer und die Server-IP-Adresse neu. Verwenden Sie z. B. eine Filterzeichenfolge wie tcp.port==<dynamic-port-allocated> and ipv4.address==<server-ip.> In dieser Filterzeichenfolge <stellt dynamic-port-zugeordnet> die dynamische Portnummer und <server-ip> die IP-Adresse des Servers dar.

Screenshot des Netzwerkmonitors, auf den ein Filter angewendet wurde.

Suchen Sie in den gefilterten Daten nach Nachweisen, dass der Client erfolgreich mit dem dynamischen Port verbunden ist, oder suchen Sie nach Netzwerkproblemen, die möglicherweise aufgetreten sind.

Port nicht erreichbar

Die häufigste Ursache für Fehler "RPC-Server nicht verfügbar" ist, dass der Client keine Verbindung mit dem zugeordneten dynamischen Port herstellen kann. Die clientseitige Ablaufverfolgung würde dann TCP SYN-Übertragungen für den dynamischen Port anzeigen.

Screenshot des Netzwerkmonitors, der TCP SYN-Übertragungen zeigt.

Dieses Verhalten gibt an, dass eine der folgenden Bedingungen die Kommunikation blockiert:

  • Der dynamische Portbereich wird in der Firewall in der Umgebung blockiert.
  • Ein mittleres Gerät bricht die Pakete ab.
  • Der Zielserver wird die Pakete ablegen. Diese Bedingung kann durch Konfigurationen wie die Paketablage der Windows-Filterplattform (WFP), die Netzwerkschnittstellenkarte (Network Interface Card, NIC) oder die Änderung des Filtertreibers verursacht werden.

Sammeln von Daten zur tieferen Problembehandlung

Bevor Sie sich an den Microsoft-Support wenden, empfehlen wir, Informationen zu Ihrem Problem zu sammeln.

Voraussetzungen

Diese Verfahren verwenden das Toolset TroubleShootingScript (TSS). Um dieses Toolset zu verwenden, sollten Sie die folgenden Voraussetzungen beachten:

  • Sie müssen über die Berechtigung auf Administratorebene auf dem lokalen Computer verfügen.

  • Wenn Sie das Toolset zum ersten Mal ausführen, müssen Sie eine EULA akzeptieren.

  • Stellen Sie sicher, dass die Windows PowerShell-Skriptausführungsrichtlinie für den Computer auf RemoteSigned" festgelegt ist. Weitere Informationen zur PowerShell-Ausführungsrichtlinie finden Sie unter about_Execution_Policies.

    Notiz

    Wenn Ihre Umgebung die Verwendung RemoteSigned auf Computerebene verhindert, können Sie sie vorübergehend auf Prozessebene festlegen. Führen Sie dazu das folgende Cmdlet in einem PowerShell-Eingabeaufforderungsfenster mit erhöhten Rechten aus, bevor Sie das Tool starten:

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

    Führen Sie das PS C:\> Get-ExecutionPolicy -List Cmdlet aus, um zu überprüfen, ob die Änderung wirksam wird.

    Die Berechtigungen auf Prozessebene gelten nur für die aktuelle PowerShell-Sitzung. Nachdem Sie das PowerShell-Fenster geschlossen haben, wird die Ausführungsrichtlinie auf die ursprüngliche Einstellung zurückgesetzt.

Sammeln sie wichtige Informationen, bevor Sie sich an den Microsoft-Support wenden

  1. Laden Sie TSS auf allen Knoten herunter, und erweitern Sie ihn in den Ordner "C:\tss".

  2. Öffnen Sie den Ordner "C:\tss" in einem PowerShell-Eingabeaufforderungsfenster mit erhöhten Rechten.

  3. Starten Sie Ablaufverfolgungen auf dem Problemcomputer, indem Sie das folgende Cmdlet ausführen:

    .\TSS.ps1 -Scenario NET_RPC
    
  4. Antworten Sie auf die Eingabeaufforderung des EULA.

  5. Reproduzieren Sie das Problem. Sie können Tools wie Ereignisanzeige oder wbemtest verwenden, um das Problem zu überwachen oder zu testen.

  6. Nachdem Sie das Problem reproduziert haben, beenden Sie sofort das Sammeln von Daten.

  7. Nachdem die automatisierten Skripts die Erfassung der erforderlichen Daten abgeschlossen haben, fügen Sie die Daten an Ihre Supportanfrage an.