Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows에서 "RPC 서버를 사용할 수 없음" 오류 완벽 해결 가이드

Windows에서 "The RPC server is unavailable"(RPC 서버를 사용할 수 없습니다) 오류는 네트워크상의 두 컴퓨터 간 통신에 문제가 발생했을 때 나타납니다. 즉, 사용자의 컴퓨터(RPC 클라이언트)가 원격 컴퓨터(RPC 서버)에 연결하지 못하는 상황입니다. 이 경우 실행 중인 프로그램은 원격 호스트의 데이터에 접근할 수 없어 정상적으로 작동하지 않고 RPC 오류를 반환합니다. 이 글에서는 RPC 프로토콜을 통한 컴퓨터 간 통신을 방해하는 대표적인 원인과 해결 방법을 단계별로 살펴보겠습니다.

RPC 프로토콜의 동작 원리

RPC(Remote Procedure Call, 원격 프로시저 호출)는 클라이언트-서버 애플리케이션이 로컬 네트워크를 통해 통신할 때 사용하는 대표적인 프로토콜입니다. 주로 원격 컴퓨터와의 통신에 사용되지만, 일부 프로그램은 로컬에서 실행 중인 앱과 서비스 간의 상호작용에도 RPC를 활용합니다.

일반적인 RPC 세션은 다음과 같은 순서로 진행됩니다.

  1. RPC 클라이언트가 TCP 포트 135를 통해 RPC 서버의 RPC 엔드포인트 매퍼(RPC Endpoint Mapper) 서비스에 연결합니다.
  2. 클라이언트는 필요한 RPC 애플리케이션(서비스)이 실행 중인 포트 번호를 요청합니다.
  3. RPC 엔드포인트 매퍼는 해당 서비스가 시작될 때 할당받은 동적 RPC 포트 번호를 반환합니다.
  4. 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 통신이 실패하는 가장 흔한 원인은 다음과 같습니다.

  1. 원격 컴퓨터가 꺼져 있는 경우
  2. 원격 호스트에서 RPC 관련 서비스가 실행되지 않는 경우
  3. 잘못된 호스트 이름으로 접속하거나, 서버의 DNS 이름과 일치하지 않는 IP 주소를 사용하는 경우
  4. 서버 또는 클라이언트의 네트워크 연결 설정이 잘못된 경우
  5. 방화벽이 클라이언트와 서버 간 RPC 트래픽을 차단하는 경우

1. 원격 컴퓨터 가용성 확인

먼저 원격 컴퓨터가 켜져 있는지 확인하고, 컴퓨터 이름과 IP 주소로 각각 ping 테스트를 수행하세요.

호스트 이름으로 RPC 서버에 접근할 수 없다면 DNS 레코드가 올바른지 점검하고, 클라이언트에서 DNS 캐시를 초기화합니다.

ipconfig /flushdns

최근에 RPC 서버가 실행 중인 컴퓨터의 이름이 변경되었다면, Active Directory DNS에 다시 등록해 보세요.

ipconfig /registerdns

2. RPC 관련 서비스 상태 확인

서버 측에서 들어오는 RPC 연결을 처리하는 서비스들이 정상적으로 실행 중인지 확인해야 합니다.

  1. 서비스 관리 콘솔(services.msc)을 실행합니다.
  2. 다음 세 가지 서비스가 실행 중이며, 시작 유형이 자동으로 설정되어 있는지 확인합니다.
    • 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)라는 내장 트래픽 스니퍼를 기본 제공하므로, 별도의 도구 설치 없이도 네트워크 패킷을 캡처하고 분석할 수 있습니다.