`
Module 2:
Troubleshooting
Remote Procedure Call
(RPC) Over HTTP
Contents
Introducing RPC over HTTP ..................................................1
Pre-Requisites for RPC/HTTP ...............................................6
RPC over HTTP Setup..............................................................8
Using RpcHttp_Setup.vbs.................................................... 10
The RPC Virtual Directory in IIS .......................................16
Troubleshooting Server Configuration............................18
Client Registry Keys ..............................................................19
Troubleshooting Client-Server Connectivity ................ 21
Certificates and client problems ....................................... 27
Troubleshooting with RPCPing...........................................28
Management Instrumentation, and Microsoft® Windows® XP are either registered trademarks or
trademarks of Microsoft Corporation in the United States and/or other countries.
The names of actual companies and products mentioned herein may be the trademarks of their
respective owners.
Module 2: Troubleshooting Remote Procedure Call (RPC) Over HTTP 1 Introducing RPC over HTTP
RPC over HTTP enables client programs to use the Internet to execute
procedures provided by server programs on distant networks. RPC over HTTP
tunnels its calls through an established HTTP port. Thus, its calls can cross
network firewalls on both the client and server networks.
RPC over HTTP routes its calls to the RPCProxy located on the RPC server's
network. The RPCProxy establishes and maintains a connection to the RPC
server. It serves as a proxy, dispatching remote procedure calls to the RPC
server and sending the server's replies back across the Internet to the client
application. This process is illustrated in the following diagram.
2 Module 2: Troubleshooting Remote Procedure Call (RPC) Over HTTP
The diagram shows a firewall on the client application's network. This is not
required for RPC over HTTP to operate. However, if the client network does
have a firewall, it will also need a proxy server program such as Microsoft®
Proxy Server.
and
String UUID
.
ncacn_http selects the protocol sequence specification for RPC over HTTP.
For more information, see
Protocol Sequence Constants
and
String
Binding
.
rpc_server is the network address of the computer that is executing the
RPC server process. The server address must be specified in a form visible
and understandable by the RPCProxy computer, not by the client. Since the
client does not connect directly to the server, it does not need to be able to
resolve the name of the server, or establish a connection to it. The
RPCProxy will establish the connection on the client’s behalf, and therefore,
rpc_server must be a name recognizable by the RPCProxy.
endpoint specifies the TCP/IP port that the RPC server process listens to for
remote procedure calls. For more information, see
Finding Endpoints
.
HttpProxy optionally specifies an HTTP proxy server on the RPC client's
network, such as Microsoft Proxy Server. If a proxy server is selected, no
port number is specified, the RPC stub uses port 80 by default if SSL is not
requested, and port 443 if SSL is specified.
Versions
4 Module 2: Troubleshooting Remote Procedure Call (RPC) Over HTTP RPC over HTTP v1 cannot authenticate to the RPCProxy. RPC over HTTP v2
can authenticate; by default v2 requires authentication to the RPCProxy.
RPCProxy v1 does not operate correctly when the IIS machine on which it is
installed is part of a web farm. RPCProxy v2 operates properly when the IIS
machine on which it is installed is part of a web farm.
If Microsoft® Internet Explorer is installed on the client program's
computer and your client does not specify an HttpProxy in its string binding,
the RPC client stub will search the registry on the client computer for an
HttpProxy entry. If it finds one, it will use the proxy specified in the registry
entry.
Suppose, for instance, your client program needs to connect across the Internet
to an RPC server on a computer called Server7.microsoft.com. Further, suppose
that the RPCProxy runs on Major7.microsoft.com. The RPC server program
listens to port 2225. Your client would use the string binding:
ncacn_http:Server7.microsoft.com[2225,
‘rpcproxy’=Major7.microsoft.com]
If the RPCProxy can resolve the server name as Server7, without requiring a
fully qualified domain name, you can also specify:
ncacn_http:Server7 [2225, ‘rpcproxy’=Major7.microsoft.com]
If the client network uses a firewall and an Internet proxy server called
myproxy, and Internet Explorer on the client is not configured to use that proxy,
you would need to modify the client's string binding to:
Client-side
Microsoft® Outlook® 2003
Windows XP with Service Pack 1 + Q331320
RPC over HTTP requires the
QFE
referenced in Q331320 installed on the client
workstation. This fix will be included in Windows XP SERVICE PACK 2.
Ensure %windir%\system32\RPCRT4.DLL is 5.1.2600.1142 or above. This
and later builds addresses an apparent delay in the client. This problem is more
noticeable when connecting via a slow network link and the "Bypass proxy
server for local addresses" check box is selected in the Microsoft Internet
Explorer options and the HTTP connection to Microsoft® Exchange Server
2003 can be made through the HTTP proxy server on the network to which you
are connected. Outlook 2003 has issued a local RPC call that is waiting for a
remote RPC call to complete.
After installing the fix the client will need to be rebooted.
Server-side
Exchange 2003 on Microsoft® Windows® 2003 for FE (if FE is deployed)
Exchange 2003 on Windows 2003 for BE
Exchange 2003 on Windows 2003 for Public Folders
eIS\ParametersSystem
Parameter: Rpc/HTTP Port
Type: REG_DWORD
Value: 0x1771 (Decimal: 6001)
And then for the System Attendant:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSExchang
eSA\Parameters
Parameter: Rpc/HTTP NSPI Port
Type: REG_DWORD
Value: 0x1774 (Decimal: 6004)
Exchange Server
Registry
Module 2: Troubleshooting Remote Procedure Call (RPC) Over HTTP 9 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSExchang
eSA\Parameters
Parameter: HTTP Port
Type: REG_DWORD
Value: 0x1772 (Decimal: 6002)
The registry setting for Windows 2003 global catalog servers is not automated
by Exchange 2003 setup. This setting must be configured either manually or
programmatically for RPC over HTTP to work. This is scheduled to be
included in Windows 2003 Service Pack 1 (SP1).
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Para
meters
Parameter: NSPI interface protocol sequences
RPCProxy Server
Re
gistry
10 Module 2: Troubleshooting Remote Procedure Call (RPC) Over HTTP Using RpcHttp_Setup.vbs RpcHttp_Setup.vbs is part of the Web Release of Exchange 2003 tools and
utilities. Running the script from the command line with no options displays
the utility help.
C:\cscript RpcHttp_Setup.vbs
Microsoft (R) Windows Script Host Version 5.6 Copyright (C)
Microsoft Corporation 1996-2001. All rights reserved. --
RpcHttp_Setup.vbs (6.5.6889.0) –
Usage: RpcHttp_Setup.vbs -d:domainname (-i:importfile | -
r:front_end_proxy) [-p]
-d:domainname
Specify the domain name that you wish to search for Exchange and global
catalog servers. Your domain name should be a DNS fully qualified domain
name (FQDN) for the Active Directory domain. (Required parameter.)
-p (Do not allow access to RPC Portmapper port (593) via RPC/HTTP.)
-- At least one of the following two options must be
specified! --
-i:importfile
Specify a path where a registry import file will be created. The path should
include the file name. If the path contains spaces, it should be contained in
WARNING: Unable to determine Windows build number for
'ExchangeServer55.De.mo' using WMI. Assuming that it is not
running a Windows Server 2003 build. (Error: 462)
--- Evaluating Exchange server 'Exchange_Back-End'
--- Found 4 Exchange servers.
--- Skipped 2 Exchange servers without Windows Server 2003 (or
unavailable Windows version)
--- Skipped 1 Exchange servers of the wrong type (i.e. front-
end, IM, etc.)
--- Detecting AD Global Catalog servers in 'De.mo'
--- Evaluating Global Catalog server 'GlobalCatalogueServer'
WARNING: NSPI port is not set in registry for Global Catalog
server 'GlobalCatalogueServer.De.mo'. Using default port
range (1024-65535). Please fix this problem to improve
security.
--- Evaluating Global Catalog server E2k3-LegacyOS
--- Found 2 AD Global Catalog servers.
--- Skipped 1 AD Global Catalog servers without Windows Server
2003 (or unavailable Windows version)
--- Updating registry on ‘rpcproxy’ front-end
'GlobalCatalogueServer.de.mo'
--- All done!
12 Module 2: Troubleshooting Remote Procedure Call (RPC) Over HTTP
Multiple RPCProxy servers can be configured by appending:
“-r:other_’rpcproxy’Sever_fqdn” to the previous command line. The exact
number of “-r:” arguments has not been determined.
GlobalCatalogueServer is also a Windows 2003 global catalog.
This warning is removed by configuring the global catalog server(s) prior to
running the rpchttp_setup script. The registry import file can be found in
Appendix B. The output below is produced when the setup script is run after
configuring the global catalog server(s).
Exchange_Back-End:593;Exchange_Back-
End.De.mo:593;Exchange_Back-End:6001;Exchange_Back-
End.De.mo:6001;Exchange_Back-End:6002;Exchange_Back-
End.De.mo:6002;Exchange_Back-End:6004;Exchange_Back-
End.De.mo:6004;GlobalCatalogueServer:593;GlobalCatalogueServer
.De.mo:593;GlobalCatalogueServer:6004;GlobalCatalogueServer.De
.mo:6004
Note
Note
Module 2: Troubleshooting Remote Procedure Call (RPC) Over HTTP 13 Remember, only Exchange 2003 mailbox or Public Folder servers running on
Windows 2003 and Windows 2003 global catalog servers will be listed in the
Valid Ports registry value on the RPCProxy server.
It is possible to run the following command line which will give you a debug
output of the functions the utility goes through. You may want to run the utility
with this switch if all Windows 2003 global catalogs and Exchange 2003
servers running on Windows 2003 are not listed in the ValidPorts key.
CSCRIPT RpcHttp_Setup.vbs –d:YourDomain.Com –
r:Your’rpcproxy’.com -t
11/03/2003 11:02:01 - FIsWindowsNetBuild - INFO: Leaving
ExecQuery for EX2k3-server.De.mo
11/03/2003 11:02:01 - FIsWindowsNetBuild - 'EX2k3-
server.De.mo' BuildNumber=2195; Version=5.0.2195
11/03/2003 11:02:01 - CheckServerConfig - ignoring server '
EX2k3-server.De.mo (old windows build)
The output below is indicative of an Exchange 2003 server running on
Windows 2003.
Troubleshooting
RpcHttp_Setup.vbs
14 Module 2: Troubleshooting Remote Procedure Call (RPC) Over HTTP 11/03/2003 11:02:01 - Detected exchange server:
'Exchange_Back-End'
11/03/2003 11:02:01 - NetBIOS address: Exchange_Back-End
11/03/2003 11:02:01 - dns address: Exchange_Back-End.De.mo
--- Evaluating Exchange server E2k3-LegacyOS
11/03/2003 11:02:01 - FIsWindowsNetBuild - INFO: Entering
GetObject for Exchange_Back-End.De.mo
11/03/2003 11:02:01 - FIsWindowsNetBuild - INFO: Leaving
GetObject for Exchange_Back-End.De.mo
11/03/2003 11:02:01 - FIsWindowsNetBuild - INFO: Entering
ExecQuery for Exchange_Back-End.De.mo
11/03/2003 11:02:02 - FIsWindowsNetBuild - INFO: Leaving
ExecQuery for Exchange_Back-End.De.mo
11/03/2003 11:02:02 - FIsWindowsNetBuild – ‘Exchange_Back-
End.De.mo’ BuildNumber=3777; Version=5.2.3777
11/03/2003 11:02:02 - CheckServerConfig - Store port on