Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

การแก้ไขปัญหาข้อผิดพลาด “เซิร์ฟเวอร์ RPC ไม่พร้อมใช้งาน” บน Windows

The RPC server is unavailable ข้อผิดพลาด ” ปรากฏขึ้นบน Windows เมื่อเกิดข้อผิดพลาดในการสื่อสารระหว่างคอมพิวเตอร์สองเครื่องในเครือข่าย คอมพิวเตอร์ของคุณ (ไคลเอ็นต์ RPC) ไม่สามารถเชื่อมต่อกับคอมพิวเตอร์ระยะไกล (เซิร์ฟเวอร์ RPC) ดังนั้น โปรแกรมที่คุณกำลังเรียกใช้ไม่ทำงานและส่งคืนข้อผิดพลาด RPC เนื่องจากไม่สามารถเข้าถึงข้อมูลบนโฮสต์ระยะไกลได้ ในบทความนี้ เราจะวิเคราะห์ปัญหาทั่วไปที่อาจขัดขวางการสื่อสารตามปกติของคอมพิวเตอร์ผ่านเครือข่ายโดยใช้โปรโตคอล RPC

การแก้ไขปัญหาข้อผิดพลาด “เซิร์ฟเวอร์ RPC ไม่พร้อมใช้งาน” บน Windows

RPC (เรียกกระบวนการระยะไกล ) เป็นโปรโตคอลยอดนิยมสำหรับแอปไคลเอนต์-เซิร์ฟเวอร์ในการสื่อสารผ่านเครือข่ายท้องถิ่น โดยทั่วไปจะใช้เพื่อสื่อสารกับคอมพิวเตอร์ระยะไกล อย่างไรก็ตาม บางโปรแกรมใช้ RPC ในการโต้ตอบระหว่างแอปและบริการที่ทำงานในเครื่อง

ในเซสชันทั่วไป ไคลเอ็นต์ RPC จะเชื่อมต่อกับ RPC Endpoint Mapper บริการบนเซิร์ฟเวอร์ RPC ผ่าน พอร์ต TCP 135 และขอหมายเลขพอร์ตที่แอป RPC (บริการ) ที่ต้องการกำลังทำงานอยู่ RPC Endpoint Mapper ส่งคืนหมายเลขของพอร์ต RPC แบบไดนามิกที่กำหนดให้กับบริการที่ระบุเมื่อเริ่มต้น จากนั้นไคลเอ็นต์ RPC จะเชื่อมต่อกับบริการแอป RPC บนพอร์ต TCP ที่ระบุ

หากไคลเอ็นต์ RPC ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ RPC ได้ ข้อผิดพลาดต่อไปนี้จะปรากฏขึ้นในแอป:

The RPC server is unavailable
เวอร์ชัน Windows สมัยใหม่ (Windows Vista/2008 และใหม่กว่า) ใช้ ช่วงพอร์ต Dynamic RPC จาก 49152 ถึง 65535 . Windows Server 2003/XP/2000 ใช้ช่วงพอร์ต RPC ที่แตกต่างกัน – 1024 – 65535

ต่อไปนี้คือปัญหาทั่วไปที่ทำให้คอมพิวเตอร์ไม่สามารถสื่อสารผ่าน RPC:

  1. คอมพิวเตอร์ระยะไกลปิดอยู่
  2. บริการ RPC ไม่ทำงานบนรีโมตโฮสต์
  3. คุณกำลังพยายามเชื่อมต่อกับเซิร์ฟเวอร์ RPC โดยใช้ชื่อโฮสต์ที่ไม่ถูกต้อง (หรือที่อยู่ IP ไม่ถูกต้องตรงกับชื่อ DNS ของเซิร์ฟเวอร์)
  4. ใช้การตั้งค่าการเชื่อมต่อเครือข่ายที่ไม่ถูกต้องบนเซิร์ฟเวอร์หรือไคลเอนต์
  5. การรับส่งข้อมูล RPC ระหว่างไคลเอนต์และเซิร์ฟเวอร์ถูกบล็อกโดยไฟร์วอลล์

การตรวจสอบความพร้อมใช้งานของคอมพิวเตอร์ระยะไกล

ตรวจสอบให้แน่ใจว่าคอมพิวเตอร์ระยะไกลเปิดอยู่ โดยส่ง Ping โดยใช้ชื่อและที่อยู่ IP หากชื่อโฮสต์ไม่พร้อมใช้งานเซิร์ฟเวอร์ RPC ให้ตรวจสอบว่าระเบียน DNS ถูกต้องหรือไม่ และลองล้างแคช DNS บนไคลเอ็นต์:ipconfig /flushdns .

หากชื่อคอมพิวเตอร์ที่เซิร์ฟเวอร์ RPC ของคุณใช้งานอยู่มีการเปลี่ยนแปลงเมื่อเร็วๆ นี้ ให้ลองลงทะเบียนใหม่ใน Active Directory DNS:ipconfig /registerdns .

ตรวจสอบสถานะของบริการ DCE/RPC

ตรวจสอบให้แน่ใจว่าบริการที่ประมวลผลการเชื่อมต่อ RPC ขาเข้ากำลังทำงานบนเซิร์ฟเวอร์:

  1. เปิดคอนโซลการจัดการบริการ (services.msc );
  2. ตรวจสอบให้แน่ใจว่าบริการต่อไปนี้กำลังทำงานและกำหนดค่าให้เริ่มทำงานโดยอัตโนมัติ:การเรียกขั้นตอนระยะไกล (RPC) , ตัวแมปจุดสิ้นสุด RPC และ ตัวเรียกใช้กระบวนการเซิร์ฟเวอร์ DCOM . การแก้ไขปัญหาข้อผิดพลาด “เซิร์ฟเวอร์ RPC ไม่พร้อมใช้งาน” บน Windows
คุณสามารถตรวจสอบสถานะของบริการผ่าน PowerShell:

Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartType

การแก้ไขปัญหาข้อผิดพลาด “เซิร์ฟเวอร์ RPC ไม่พร้อมใช้งาน” บน Windows

หากบริการ RPC หยุดทำงาน และคุณไม่สามารถเริ่มต้นได้ ให้ลองเปิดใช้งานผ่านรีจิสทรี ค้นหาคีย์รีจิสทรีของบริการและเปลี่ยนค่าของ เริ่ม พารามิเตอร์เป็น 2 (เริ่มบริการอัตโนมัติ):

  • เรียกขั้นตอนระยะไกล (RPC) — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RpcSs
  • ตัวแมปปลายทาง RPC — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RpcEptMapper
  • ตัวเรียกกระบวนการเซิร์ฟเวอร์ DCOM — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DcomLaunch

การแก้ไขปัญหาข้อผิดพลาด “เซิร์ฟเวอร์ RPC ไม่พร้อมใช้งาน” บน Windows

ไฟร์วอลล์กำลังบล็อกการเชื่อมต่อ RPC

ตรวจสอบให้แน่ใจว่าการรับส่งข้อมูล RPC ระหว่างคอมพิวเตอร์ไม่ถูกบล็อกโดยไฟร์วอลล์ของคุณ หากคุณกำลังใช้ไฟร์วอลล์ Windows Defender ที่มีความปลอดภัยขั้นสูง คุณต้องสร้างกฎที่อนุญาตการรับส่งข้อมูล RPC หรือตรวจสอบให้แน่ใจว่ามีกฎเหล่านี้อยู่ กฎข้อหนึ่งคืออนุญาตให้เข้าถึงบริการ RPC Endpoint Mapper ผ่านพอร์ต TCP 135 อีกกฎหนึ่งคืออนุญาตให้เข้าถึงบริการ RPC ที่คุณต้องการใช้ผ่านพอร์ตไดนามิก RPC สร้างกฎสำหรับโปรไฟล์เครือข่ายทั้งหมด:โดเมน , ส่วนตัว และสาธารณะ

คุณสามารถสร้างกฎได้ด้วยตนเองโดยทำตามคำแนะนำในบทความ สร้างกฎขาเข้าเพื่อรองรับ RPC https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-firewall/create-inbound-rules-to-support-rpc) ในสภาพแวดล้อมโดเมน AD คุณสามารถปรับใช้กฎไฟร์วอลล์โดยใช้ GPO หรือใช้สคริปต์ PowerShell

ตรวจสอบให้แน่ใจว่าพอร์ต TCP/135 พร้อมใช้งานบนเซิร์ฟเวอร์ RPC ของคุณจากไคลเอนต์ (ตัวแมปปลายทาง RPC ต้องฟังบนนั้น) คุณสามารถตรวจสอบความพร้อมใช้งานของพอร์ตผ่าน PowerShell:

Test-NetConnection 192.168.1.201 -port 135

การแก้ไขปัญหาข้อผิดพลาด “เซิร์ฟเวอร์ RPC ไม่พร้อมใช้งาน” บน Windows

หากพอร์ต RPC พร้อมใช้งาน คุณจะเห็นข้อความ:TcpTestSucceeded:True .

คุณสามารถรับรายการตำแหน่งข้อมูล RPC (บริการและแอปพลิเคชัน) ที่ลงทะเบียนบนคอมพิวเตอร์ระยะไกลและโฆษณาโดยบริการ RPC Endpoint Mapper โดยใช้เครื่องมือ PortQry:

portqry -n 192.168.1.201 -p tcp -e 135

ในเอาต์พุต PortQry คุณสามารถดูหมายเลขพอร์ตที่กำหนดให้กับบริการ RPC ที่คุณต้องการใช้ (กำลังทำงานอยู่หรือไม่) และตรวจสอบให้แน่ใจว่าพอร์ตไม่ถูกบล็อกจากไคลเอนต์

หากคุณกำลังใช้ซอฟต์แวร์ไฟร์วอลล์/โปรแกรมป้องกันไวรัสของบริษัทอื่น ตรวจสอบให้แน่ใจว่าไม่ได้บล็อกการรับส่งข้อมูล RPC และสามารถประมวลผลการรับส่งข้อมูล RPC Dynamic Ports ได้อย่างถูกต้อง

ตรวจสอบโปรโตคอลเครือข่ายและการตั้งค่า

ตรวจสอบให้แน่ใจว่าการตั้งค่าเครือข่ายบนคอมพิวเตอร์ของคุณถูกต้อง:ที่อยู่ IP, เกตเวย์เริ่มต้น, ซับเน็ตมาสก์, การตั้งค่าเซิร์ฟเวอร์ DNS (คุณสามารถตรวจสอบการตั้งค่าเครือข่ายได้จาก PowerShell) ตรวจสอบให้แน่ใจว่า Internet Protocol รุ่น 6 (TCP/IPv6) และ การแชร์ไฟล์และเครื่องพิมพ์สำหรับเครือข่าย Microsoft เปิดใช้งานในการตั้งค่าของอะแดปเตอร์เครือข่าย

การแก้ไขปัญหาข้อผิดพลาด “เซิร์ฟเวอร์ RPC ไม่พร้อมใช้งาน” บน Windows

แอปเครือข่ายบางแอปทำงานไม่ถูกต้องหากโปรโตคอล TCP/IPv6 ถูกปิดใช้งานและส่งคืนข้อผิดพลาด:1722 The RPC server is unavailable . หากข้อผิดพลาด RPC ยังคงอยู่หลังจากเปิดใช้งาน IPv6 ให้ลองปิดใช้งานโปรโตคอล Teredo ผ่านรีจิสทรี:
สร้างพารามิเตอร์ DWORD ด้วยชื่อ DisabledComponents and value 8 ในคีย์ reg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters:
reg add hklm\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 8

ในบางกรณี คุณจะต้องรับการถ่ายโอนข้อมูลการรับส่งข้อมูลจากเซิร์ฟเวอร์ RPC ของคุณและวิเคราะห์โดยใช้ Microsoft Network Monitor 3.4 หรือตัววิเคราะห์ข้อความ

Windows 10 1809 และ Windows Server 2019 มีการดมกลิ่นการรับส่งข้อมูลในตัว – Packet Monitor (PktMon.exe)