“The RPC server is unavailable
”Lỗi xuất hiện trên Windows khi xảy ra lỗi giao tiếp giữa hai máy tính trong mạng. Máy tính của bạn (máy khách RPC) không thể kết nối với máy tính từ xa (máy chủ RPC). Vì vậy, chương trình bạn đang chạy không hoạt động và trả về lỗi RPC vì nó không thể truy cập dữ liệu trên máy chủ từ xa. Trong bài viết này, chúng tôi sẽ phân tích các sự cố phổ biến có thể ngăn cản giao tiếp bình thường của các máy tính qua mạng bằng giao thức RPC.
RPC ( Cuộc gọi xử lý từ xa ) là một giao thức phổ biến để các ứng dụng khách-máy chủ giao tiếp qua mạng cục bộ. Thông thường, nó được sử dụng để giao tiếp với một máy tính từ xa, tuy nhiên, một số chương trình sử dụng RPC trong các tương tác giữa ứng dụng và dịch vụ chạy cục bộ.
Trong một phiên thông thường, ứng dụng khách RPC kết nối với RPC Endpoint Mapper dịch vụ trên máy chủ RPC qua Cổng TCP 135 và yêu cầu số cổng mà ứng dụng (dịch vụ) RPC cần đang chạy. RPC Endpoint Mapper trả về số cổng RPC động được chỉ định cho dịch vụ được chỉ định khi nó được khởi động. Sau đó, máy khách RPC kết nối với dịch vụ ứng dụng RPC trên cổng TCP được chỉ định.
Nếu máy khách RPC không thể kết nối với máy chủ RPC, lỗi sau sẽ xuất hiện trong ứng dụng:
The RPC server is unavailableCác phiên bản Windows hiện đại (Windows Vista / 2008 và mới hơn) sử dụng Phạm vi cổng RPC động từ
49152
thành 65535
. Windows Server 2003 / XP / 2000 đã sử dụng dải cổng RPC khác - 1024 - 65535. Dưới đây là các sự cố phổ biến nhất ngăn máy tính giao tiếp qua RPC:
- Một máy tính từ xa đã bị tắt;
- Các dịch vụ RPC không chạy trên máy chủ từ xa;
- Bạn đang cố gắng kết nối với máy chủ RPC bằng cách sử dụng sai tên máy chủ (hoặc địa chỉ IP sai khớp với tên DNS của máy chủ);
- Cài đặt kết nối mạng không chính xác được sử dụng trên máy chủ hoặc máy khách;
- Lưu lượng RPC giữa máy khách và máy chủ bị tường lửa chặn.
Kiểm tra tính khả dụng của máy tính từ xa
Đảm bảo rằng máy tính từ xa đã được bật, ping nó bằng tên và địa chỉ IP. Nếu máy chủ RPC không khả dụng bởi tên máy chủ, hãy kiểm tra xem bản ghi DNS có chính xác không và cố gắng xóa bộ nhớ cache DNS trên máy khách:ipconfig /flushdns
.
Nếu tên của máy tính mà máy chủ RPC của bạn đang chạy gần đây đã bị thay đổi, hãy thử đăng ký lại nó trong Active Directory DNS:ipconfig /registerdns
.
Kiểm tra trạng thái của các dịch vụ DCE / RPC
Đảm bảo rằng các dịch vụ xử lý kết nối RPC đến đang chạy trên máy chủ:
- Mở bảng điều khiển Quản lý Dịch vụ (
services.msc
); - Đảm bảo rằng các dịch vụ sau đang chạy và được định cấu hình để bắt đầu tự động: Gọi thủ tục từ xa (RPC) , Trình lập bản đồ điểm cuối RPC và Trình khởi chạy quy trình máy chủ DCOM .
Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartType
Nếu các dịch vụ RPC bị dừng và bạn không thể khởi động chúng, hãy thử kích hoạt chúng thông qua sổ đăng ký. Tìm khóa đăng ký của dịch vụ và thay đổi giá trị của Bắt đầu tham số thành 2 (khởi động dịch vụ tự động):
- Cuộc gọi thủ tục từ xa (RPC) - HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ RpcSs
- Trình ánh xạ điểm cuối RPC - HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ RpcEptMapper
- Trình khởi chạy quy trình máy chủ DCOM - HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ DcomLaunch
Tường lửa đang chặn các kết nối RPC
Đảm bảo rằng lưu lượng RPC giữa các máy tính không bị tường lửa của bạn chặn. Nếu bạn đang sử dụng Tường lửa của Bộ bảo vệ Windows với Bảo mật Nâng cao, bạn cần tạo các quy tắc cho phép lưu lượng RPC hoặc đảm bảo rằng chúng tồn tại. Một trong những quy tắc là cho phép truy cập vào dịch vụ RPC Endpoint Mapper qua cổng TCP 135, một quy tắc khác là cho phép truy cập vào dịch vụ RPC mà bạn muốn sử dụng thông qua Cổng động RPC. Tạo quy tắc cho tất cả các cấu hình mạng: Miền , Riêng tư và Công khai.
Bạn có thể tạo quy tắc theo cách thủ công theo hướng dẫn trong bài viết Tạo quy tắc đến để hỗ trợ RPC https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-firewall/create-inbound-rules-to-support-rpc). Trong môi trường miền AD, bạn có thể triển khai các quy tắc tường lửa bằng GPO hoặc sử dụng tập lệnh PowerShell.
Đảm bảo rằng cổng TCP / 135 có sẵn trên máy chủ RPC của bạn từ một máy khách (Người lập bản đồ điểm cuối RPC phải lắng nghe nó). Bạn có thể kiểm tra tính khả dụng của cổng qua PowerShell:
Test-NetConnection 192.168.1.201 -port 135
Nếu cổng RPC khả dụng, bạn sẽ thấy thông báo:TcpTestSucceeded:True
.
Bạn có thể nhận được danh sách các điểm cuối RPC (dịch vụ và ứng dụng) được đăng ký trên máy tính từ xa và được quảng cáo bởi dịch vụ Bản đồ điểm cuối RPC bằng cách sử dụng công cụ PortQry:
portqry -n 192.168.1.201 -p tcp -e 135
Trong đầu ra PortQry, bạn có thể thấy số lượng cổng được gán cho dịch vụ RPC mà bạn muốn sử dụng (nó đang chạy?) Và đảm bảo rằng cổng không bị chặn khỏi máy khách.
Nếu bạn đang sử dụng phần mềm tường lửa / chống vi-rút của bên thứ ba, hãy đảm bảo rằng phần mềm đó không chặn lưu lượng RPC và có thể xử lý chính xác lưu lượng Cổng động RPC.Kiểm tra các giao thức và cài đặt mạng
Đảm bảo rằng cài đặt mạng trên máy tính của bạn là chính xác:địa chỉ IP, cổng mặc định, mặt nạ mạng con, cài đặt máy chủ DNS (bạn có thể kiểm tra cài đặt mạng từ PowerShell). Đảm bảo rằng Giao thức Internet Phiên bản 6 (TCP / IPv6) và Chia sẻ tệp và máy in cho Mạng Microsoft được bật trong cài đặt của bộ điều hợp mạng.
Một số ứng dụng mạng không hoạt động chính xác nếu giao thức TCP / IPv6 bị tắt và trả lại lỗi:
1722 The RPC server is unavailable
. Nếu lỗi RPC vẫn tiếp diễn sau khi bật IPv6, hãy thử tắt giao thức Teredo thông qua sổ đăng ký:Tạo tham số DWORD với tên DisabledComponents và giá trị 8 trong khóa reg HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters:
reg add hklm\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 8
Trong một số trường hợp, bạn sẽ phải lấy kết xuất lưu lượng từ máy chủ RPC của mình và phân tích nó bằng Microsoft Network Monitor 3.4 hoặc Message Analyzer.
Windows 10 1809 và Windows Server 2019 có trình kiểm tra lưu lượng tích hợp - Packet Monitor (PktMon.exe).