Windows에서 "The RPC server is unavailable"(RPC 서버를 사용할 수 없습니다) 오류는 네트워크상의 두 컴퓨터 간 통신에 문제가 발생했을 때 나타납니다. 즉, 사용자의 컴퓨터(RPC 클라이언트)가 원격 컴퓨터(RPC 서버)에 연결하지 못하는 상황입니다. 이 경우 실행 중인 프로그램은 원격 호스트의 데이터에 접근할 수 없어 정상적으로 작동하지 않고 RPC 오류를 반환합니다. 이 글에서는 RPC 프로토콜을 통한 컴퓨터 간 통신을 방해하는 대표적인 원인과 해결 방법을 단계별로 살펴보겠습니다.
RPC 프로토콜의 동작 원리
RPC(Remote Procedure Call, 원격 프로시저 호출)는 클라이언트-서버 애플리케이션이 로컬 네트워크를 통해 통신할 때 사용하는 대표적인 프로토콜입니다. 주로 원격 컴퓨터와의 통신에 사용되지만, 일부 프로그램은 로컬에서 실행 중인 앱과 서비스 간의 상호작용에도 RPC를 활용합니다.
일반적인 RPC 세션은 다음과 같은 순서로 진행됩니다.
- RPC 클라이언트가 TCP 포트 135를 통해 RPC 서버의 RPC 엔드포인트 매퍼(RPC Endpoint Mapper) 서비스에 연결합니다.
- 클라이언트는 필요한 RPC 애플리케이션(서비스)이 실행 중인 포트 번호를 요청합니다.
- RPC 엔드포인트 매퍼는 해당 서비스가 시작될 때 할당받은 동적 RPC 포트 번호를 반환합니다.
- RPC 클라이언트는 지정된 TCP 포트를 통해 실제 RPC 앱 서비스에 연결합니다.
이 과정에서 클라이언트가 RPC 서버에 연결하지 못하면 애플리케이션에 다음과 같은 오류가 표시됩니다.
The RPC server is unavailable
참고로 최신 Windows 버전(Windows Vista/2008 이상)은 49152~65535 범위의 동적 RPC 포트를 사용하며, 구버전인 Windows Server 2003/XP/2000은 1024~65535 범위를 사용했습니다.
RPC 오류의 주요 원인
RPC 통신이 실패하는 가장 흔한 원인은 다음과 같습니다.
- 원격 컴퓨터가 꺼져 있는 경우
- 원격 호스트에서 RPC 관련 서비스가 실행되지 않는 경우
- 잘못된 호스트 이름으로 접속하거나, 서버의 DNS 이름과 일치하지 않는 IP 주소를 사용하는 경우
- 서버 또는 클라이언트의 네트워크 연결 설정이 잘못된 경우
- 방화벽이 클라이언트와 서버 간 RPC 트래픽을 차단하는 경우
1. 원격 컴퓨터 가용성 확인
먼저 원격 컴퓨터가 켜져 있는지 확인하고, 컴퓨터 이름과 IP 주소로 각각 ping 테스트를 수행하세요.
호스트 이름으로 RPC 서버에 접근할 수 없다면 DNS 레코드가 올바른지 점검하고, 클라이언트에서 DNS 캐시를 초기화합니다.
ipconfig /flushdns
최근에 RPC 서버가 실행 중인 컴퓨터의 이름이 변경되었다면, Active Directory DNS에 다시 등록해 보세요.
ipconfig /registerdns
2. RPC 관련 서비스 상태 확인
서버 측에서 들어오는 RPC 연결을 처리하는 서비스들이 정상적으로 실행 중인지 확인해야 합니다.
- 서비스 관리 콘솔(
services.msc)을 실행합니다. - 다음 세 가지 서비스가 실행 중이며, 시작 유형이 자동으로 설정되어 있는지 확인합니다.
- Remote Procedure Call (RPC)
- RPC Endpoint Mapper
- DCOM Server Process Launcher
PowerShell을 사용하면 더 빠르게 서비스 상태를 확인할 수 있습니다.
Get-Service RpcSs,RpcEptMapper,DcomLaunch | Select DisplayName,Status,StartType
RPC 서비스가 중지된 상태에서 시작되지 않는다면, 레지스트리를 통해 강제로 활성화할 수 있습니다. 각 서비스의 레지스트리 키에서 Start 값을 2(자동 시작)로 변경하세요.
- Remote Procedure Call (RPC) —
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RpcSs - RPC Endpoint Mapper —
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RpcEptMapper - DCOM Server Process Launcher —
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DcomLaunch
3. 방화벽의 RPC 트래픽 차단 여부 확인
컴퓨터 간 RPC 트래픽이 방화벽에 의해 차단되고 있지 않은지 확인하세요. 고급 보안이 포함된 Windows Defender 방화벽을 사용하는 경우, RPC 트래픽을 허용하는 인바운드 규칙이 존재하는지 점검하거나 새로 생성해야 합니다.
필요한 규칙은 크게 두 가지입니다.
- TCP 135 포트를 통한 RPC 엔드포인트 매퍼 서비스 접근 허용
- RPC 동적 포트(49152~65535)를 통한 대상 RPC 서비스 접근 허용
규칙은 도메인(Domain), 개인(Private), 공용(Public) 모든 네트워크 프로필에 대해 생성해야 합니다. 마이크로소프트 공식 문서의 "Create Inbound Rules to Support RPC" 지침에 따라 수동으로 만들 수 있으며, Active Directory 도메인 환경에서는 GPO를 통해 방화벽 규칙을 일괄 배포하거나 PowerShell 스크립트를 활용하는 것이 효율적입니다.
TCP 135 포트 연결 테스트
클라이언트에서 RPC 서버의 TCP/135 포트에 접근 가능한지 확인하세요. RPC 엔드포인트 매퍼는 반드시 이 포트에서 수신 대기해야 합니다. PowerShell로 다음과 같이 테스트할 수 있습니다.
Test-NetConnection 192.168.1.201 -port 135
포트가 정상적으로 열려 있다면 TcpTestSucceeded : True 결과가 표시됩니다.
PortQry로 RPC 엔드포인트 확인
PortQry 도구를 사용하면 원격 컴퓨터에 등록되어 RPC 엔드포인트 매퍼가 알리는 RPC 엔드포인트(서비스 및 애플리케이션) 목록을 조회할 수 있습니다.
portqry -n 192.168.1.201 -p tcp -e 135
출력 결과에서 사용하려는 RPC 서비스에 할당된 포트 번호(서비스가 실행 중인지 여부)를 확인하고, 해당 포트가 클라이언트 측에서 차단되지 않았는지 점검할 수 있습니다.
서드파티 방화벽이나 백신 소프트웨어를 사용 중이라면, 해당 프로그램이 RPC 트래픽을 차단하지 않고 RPC 동적 포트 트래픽을 올바르게 처리하는지도 반드시 확인하세요.
4. 네트워크 프로토콜 및 설정 점검
컴퓨터의 네트워크 설정이 올바른지 확인합니다. 점검 항목은 다음과 같습니다.
- IP 주소, 기본 게이트웨이, 서브넷 마스크
- DNS 서버 설정 (PowerShell로도 확인 가능)
- 네트워크 어댑터 설정에서 인터넷 프로토콜 버전 6(TCP/IPv6) 활성화 여부
- Microsoft 네트워크용 파일 및 프린터 공유 활성화 여부
특히 TCP/IPv6 프로토콜이 비활성화되어 있으면 일부 네트워크 애플리케이션이 정상적으로 작동하지 않고 1722 The RPC server is unavailable 오류를 반환할 수 있습니다. IPv6를 활성화한 후에도 RPC 오류가 지속된다면, 레지스트리를 통해 Teredo 프로토콜을 비활성화해 보세요.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters 키에 DisabledComponents라는 이름의 DWORD 값을 생성하고 값을 8로 설정합니다.
reg add hklm\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 8
심화 진단: 트래픽 덤프 분석
위 방법으로도 문제를 해결하지 못하는 경우, RPC 서버에서 네트워크 트래픽 덤프를 수집한 뒤 Microsoft Network Monitor 3.4 또는 Message Analyzer로 분석해야 할 수 있습니다.
또한 Windows 10 1809 및 Windows Server 2019부터는 패킷 모니터(Packet Monitor, PktMon.exe)라는 내장 트래픽 스니퍼를 기본 제공하므로, 별도의 도구 설치 없이도 네트워크 패킷을 캡처하고 분석할 수 있습니다.