Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

วิธีติดตั้งและเปิดใช้งานบทบาท RDS Licensing และ CALs บน Windows Server 2019/2016

ในบทความนี้ เราจะพิจารณาการติดตั้ง การกำหนดค่า และการเปิดใช้งานบทบาท Remote Desktop Licensing บน Windows Server 2019 และ 2016 รวมถึงการติดตั้งและเปิดใช้งานใบอนุญาตการเข้าถึงไคลเอนต์ RDS (CALs)

ฉันต้องการเตือนว่าหลังจากการติดตั้งบทบาท Remote Desktop Session Host ผู้ใช้สามารถใช้งานได้เพียง 120 วันของช่วงทดลอง (Evaluation License) และผู้ใช้จะไม่สามารถเชื่อมต่อกับโฮสต์ RDS ได้หลังจากนั้น ตามกฎการอนุญาตของ Microsoft ผู้ใช้หรืออุปกรณ์ทั้งหมดที่ใช้คุณสมบัติ RDS ต้องมีใบอนุญาต เพื่อลงทะเบียนและออก Remote Desktop Client Access Licenses (RDS CALs) มีบริการ Windows แยกต่างหากในบทบาท RDS ที่เรียกว่า Remote Desktop License Server

ติดตั้งบทบาท Remote Desktop Licensing บน Windows Server 2019/2016

คุณสามารถปรับใช้บริการ Remote Desktop License บนเซิร์ฟเวอร์โดเมนใดๆ ได้ ไม่จำเป็นต้องติดตั้งบนเซิร์ฟเวอร์ใดๆ ในฟาร์ม RDSH

ก่อนเริ่มการติดตั้ง ให้เพิ่มเซิร์ฟเวอร์ใหม่เข้าไปในกลุ่มความปลอดภัยโดเมน Terminal Server License Servers (หรือตรวจสอบว่าคุณมีสิทธิ์เปลี่ยนสมาชิกของกลุ่มนี้) มิฉะนั้น เซิร์ฟเวอร์จะไม่สามารถออก RDS Per User CAL ให้กับผู้ใช้โดเมนได้

คุณสามารถติดตั้ง Remote Desktop Licensing โดยใช้ Server Manager ในการทำเช่นนี้ ให้เลือกบทบาท Remote Desktop Services ใน Add Roles and Features Wizard

เลือก Remote Desktop Licensing เป็น Role Service

รอจนกว่าการติดตั้งบทบาทจะเสร็จสิ้น

บริการ RDS-Licensing จัดการโดยคอนโซล Remote Desktop Licensing Manager (licmgr.exe)

ใน Windows Server ง่ายกว่าที่จะติดตั้งบทบาทและฟีเจอร์โดยใช้ PowerShell เพื่อติดตั้ง RDS Licensing Service และ RD Licensing Diagnoser ให้รันคำสั่งเดียว:

Install-WindowsFeature RDS-Licensing –IncludeAllSubFeature -IncludeManagementTools

เพื่อแสดงรายการบริการ RDS ที่ติดตั้งบนโฮสต์ ใช้คำสั่ง:

Get-WindowsFeature -Name RDS* | Where installed

การเปิดใช้งาน RDS License Server บน Windows Server

เพื่อออกใบอนุญาตให้ไคลเอนต์ RDP เซิร์ฟเวอร์ RDS License Server ของคุณต้องถูกเปิดใช้งาน ในการทำเช่นนี้ ให้เปิด Remote Desktop Licensing Manager (licmgr.exe) คลิกขวาที่ชื่อเซิร์ฟเวอร์ของคุณ และเลือก Activate Server

Wizard การเปิดใช้งาน RDS Licensing Server จะเริ่มขึ้น ที่นี่คุณจะต้องเลือกวิธีการเปิดใช้งานที่คุณต้องการ หากเซิร์ฟเวอร์ของคุณเชื่อมต่ออินเทอร์เน็ต มันสามารถเชื่อมต่อกับเซิร์ฟเวอร์ Microsoft และเปิดใช้งาน RDS License Server โดยอัตโนมัติ หากไม่มีการเข้าถึงอินเทอร์เน็ตโดยตรงจากเซิร์ฟเวอร์ คุณสามารถเปิดใช้งานเซิร์ฟเวอร์โดยใช้เว็บเบราว์เซอร์หรือโทรศัพท์

จากนั้นคุณต้องกรอกข้อมูลบางอย่างเกี่ยวกับบริษัทของคุณ (บางฟิลด์เป็นบังคับ)

เหลือเพียงคลิกปุ่ม Finish

หากคุณคลิกขวาที่ชื่อเซิร์ฟเวอร์ในคอนโซลและเลือก Review Configuration คุณสามารถตรวจสอบได้ว่า RDS License Server ถูกเปิดใช้งานแล้วและสามารถใช้เพื่อเปิดใช้งานไคลเอนต์ RDSH ในโดเมนของคุณได้

RDS CALs: ประเภทของใบอนุญาตการเข้าถึงไคลเอนต์ Remote Desktop

ผู้ใช้หรืออุปกรณ์แต่ละรายที่เชื่อมต่อกับ Remote Desktop Session Hosts ต้องมี Client Access License (CAL) มีสองประเภทของ RDS CALs:

  • Per-Device CAL – เป็นประเภทใบอนุญาตถาวรที่มอบหมายให้กับคอมพิวเตอร์ (อุปกรณ์) ที่เชื่อมต่อกับเซิร์ฟเวอร์ RDS มากกว่าหนึ่งครั้ง (เมื่ออุปกรณ์เชื่อมต่อครั้งแรก ใบอนุญาตชั่วคราวจะถูกออกให้) ใบอนุญาตเหล่านี้ไม่ใช่ Concurrent หมายถึง หากคุณมี 10 Per Device Licenses มีเพียง 10 โฮสต์เท่านั้นที่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ RDS ของคุณได้ ใบอนุญาต OVL RDS CAL ปัจจุบันเรียกว่า: WinRmtDsktpSrvcsCAL 2019 SNGL OLV NL Each AP DvcCAL;
  • Per-User CAL – เป็นประเภทใบอนุญาตที่อนุญาตให้ผู้ใช้เชื่อมต่อกับเซิร์ฟเวอร์ RDS จากคอมพิวเตอร์/อุปกรณ์จำนวนเท่าใดก็ได้ ประเภทใบอนุญาตนี้เชื่อมโยงกับผู้ใช้ Active Directory และออกไม่ได้เป็นถาวร แต่เป็นช่วงเวลาเฉพาะ ใบอนุญาตถูกออกให้เป็นระยะเวลา 52 ถึง 89 วัน (ตัวเลขสุ่ม) ใบอนุญาต Open Value ประเภทนี้ในปัจจุบันเรียกว่า WinRmtDsktpSrvcsCAL 2019 SNGL OLV NL Each AP UsrCAL หากคุณพยายามใช้ RDS 2019 Per User CAL ใน Workgroup (ไม่ได้อยู่ในโดเมน) เซิร์ฟเวอร์ RDSH จะบังคับยุติเซสชันผู้ใช้ทุก 60 นาทีพร้อมข้อความ: "Remote Desktop License Issue: There is a problem with your Remote Desktop license, and your session will be disconnected in 60 minutes" ดังนั้น สำหรับเซิร์ฟเวอร์ RDS ในสภาพแวดล้อม Windows Workgroup คุณต้องใช้การอนุญาตต่ออุปกรณ์อย่างเดียว (Per Device RDS CALs)
⚠ หมายเหตุ: เราควรสังเกตว่า 2016 RDS CAL อาจติดตั้งได้ เฉพาะ บน Licensing Server ที่รัน Windows Server 2016 หรือ 2019 การติดตั้ง RDS CALs บน Windows Server เวอร์ชันก่อนหน้าไม่ได้รับการรองรับ นั่นคือ คุณไม่สามารถติดตั้ง 2016 RDS CALs บนโฮสต์ Licensing Windows Server 2012 R2 ได้

เมื่อพยายามเพิ่ม RDS CALs 2019 ใหม่บน Windows Server 2016 จะปรากฏข้อผิดพลาด:

RD Licensing Manager The license code is not recognized. Ensure that you have entered the correct license code.

การติดตั้ง RDS CALs บน Windows Server 2019/2016

ตอนนี้คุณต้องติดตั้งชุดใบอนุญาตไคลเอนต์ Remote Desktop (RDS CAL) ที่คุณซื้อไว้บน License Server

คลิกขวาที่เซิร์ฟเวอร์ของคุณใน Remote Desktop Licensing Manager และเลือก Install Licenses

เลือกวิธีการเปิดใช้งาน (อัตโนมัติ, ออนไลน์, หรือโทรศัพท์) และโปรแกรมใบอนุญาต (ในกรณีของเราคือ Enterprise Agreement)

⚠ หมายเหตุ: หมายเลข Enterprise Agreement หลายตัวสำหรับ RDS ได้รั่วไหลบนอินเทอร์เน็ตแล้ว ฉันคิดว่าจะไม่มีปัญหาในการหาหมายเลขเหล่านั้น (4965437) คุณไม่จำเป็นต้องมองหา RDS Cracks หรือ Activators

ขั้นตอนต่อไปของ Wizard ขึ้นอยู่กับโปรแกรมใบอนุญาตที่คุณเลือก ในกรณีของ Enterprise Agreement คุณต้องระบุหมายเลขของมัน หากคุณเลือก License Pack (Retail Purchase) ให้ป้อน Product Key 25 ตัวอักษรที่คุณได้รับจาก Microsoft หรือพาร์ทเนอร์

ระบุเวอร์ชันผลิตภัณฑ์ (Windows Server 2019/2016), ประเภทใบอนุญาต (RDS Per User CAL), และจำนวนใบอนุญาตที่จะติดตั้งบนเซิร์ฟเวอร์

หลังจากนั้น เซิร์ฟเวอร์สามารถออกใบอนุญาต (RDS CAL) ให้ไคลเอนต์ได้

คุณสามารถแปลง RDS User CALs เป็น Device CALs (และในทางกลับกัน) โดยใช้รายการเมนู Convert Licenses ในคอนโซล RD Licensing Manager

หากคุณหมด RDS Licenses ฟรี คุณสามารถเพิกถอน RDS Device CALs ที่ออกให้ก่อนหน้านี้สำหรับคอมพิวเตอร์ที่ไม่ได้ใช้งานโดยใช้สคริปต์ PowerShell ต่อไปนี้:

$RevokedPCName="lon-bc1-123"
$licensepacks = Get-WmiObject win32_tslicensekeypack | where {($_.keypacktype -ne 0) -and ($_.keypacktype -ne 4) -and ($_.keypacktype -ne 6)}
$licensepacks.TotalLicenses
$TSLicensesAssigned = gwmi win32_tsissuedlicense | where {$_.licensestatus -eq 2}
$RevokePC = $TSLicensesAssigned | ? sIssuedToComputer -EQ $RevokedPCName
$RevokePC.Revoke()
⚠ ข้อจำกัด: สามารถเพิกถอน Per-Device RDS CALs ได้สูงสุด 20% Per-User CALs ไม่สามารถเพิกถอนได้

รายงานการใช้งาน RDS CAL

ในคอนโซล RDS License คุณสามารถสร้างรายงานการใช้งานใบอนุญาตได้ โดยการเลือก Create Report -> CAL Usage จากเมนูบริบทของเซิร์ฟเวอร์

อย่างไรก็ตาม ฉันชอบใช้ PowerShell เพื่อรายงานการใช้งาน RDS CAL สคริปต์ต่อไปนี้จะแสดงจำนวนใบอนุญาตที่เหลือใน RDS CAL Packs ทั้งหมด:

Import-Module RemoteDesktopServices -ErrorAction Stop
Set-Location -Path 'rds:' -ErrorAction Stop
$licenses = (Get-Item -Path RDS:\LicenseServer\LicenseKeyPacks\* | Where-Object Name -Like "-Per User-*").Name
$total=0;
$issued=0;
foreach ($license in $licenses) {
 $count=(Get-Item -Path RDS:\LicenseServer\LicenseKeyPacks\$license\TotalLicenses).CurrentValue
 $total= $total + $count
 $count2=(Get-Item -Path RDS:\LicenseServer\LicenseKeyPacks\$license\IssuedLicensesCount).CurrentValue
 $issued= $issued + $count2
}
$available = $total - $issued
Write-Host "Total Licenses available: $available"

คุณสามารถรันสคริปต์ PowerShell นี้ผ่าน Zabbix และตั้งค่า Alert หากจำนวนใบอนุญาตที่เหลือน้อยกว่า 5 ตัวอย่างเช่น

สคริปต์ PowerShell ต่อไปนี้จะช่วยให้คุณสร้างรายงาน Per User CAL:

Import-Module RemoteDesktopServices -ErrorAction Stop
Set-Location -Path 'rds:' -ErrorAction Stop
$path = "C:\Reports\RDS_CAL_Usage.csv"
$fileName = (Invoke-WmiMethod Win32_TSLicenseReport -Name GenerateReportEx).FileName
$fileEntries = (Get-WmiObject Win32_TSLicenseReport | Where-Object FileName -eq $fileName).FetchReportEntries(0,0).ReportEntries
$objArray = @()
foreach($entry in $fileEntries){
 $objArray += $entry | select User, ProductVersion, CALType, ExpirationDate
 $objArray[-1].User = $objArray[-1].User.Split('\') | select -Last 1
 $time = $objArray[-1].ExpirationDate.Split('.') | select -first 1
 $objArray[-1].ExpirationDate = [datetime]::ParseExact($time, "yyyyMMddHHmmss", $null)
}
$objArray | Export-Csv -Path $path -Delimiter ',' -NoTypeInformation

วิธีลบ RDS CALs จาก RD License Server

หากคุณต้องการย้าย RDS CAL License Packs จาก Remote Desktop Licensing Server หนึ่งไปยังอีกตัวหนึ่ง คุณสามารถลบ RDS CAL License Pack ที่ติดตั้งไว้ออกจาก Licensing Server โดยใช้ PowerShell

โดยใช้ Cmdlet ต่อไปนี้ คุณสามารถแสดงรายการ RDS CAL Packs ที่ติดตั้งทั้งหมดบนเซิร์ฟเวอร์ได้:

Get-WmiObject Win32_TSLicenseKeyPack | select-object KeyPackId,ProductVersion,TypeAndModel,AvailableLicenses,IssuedLicenses | ft

ค้นหาค่า KeyPackId สำหรับแพ็กเกจ RDS CAL ที่คุณต้องการลบ และรันคำสั่ง:

wmic /namespace:\\root\CIMV2 PATH Win32_TSLicenseKeyPack CALL UninstallLicenseKeyPackWithId yourKeyPackId

คุณยังสามารถลบ CALs ทั้งหมดได้โดยการสร้างฐานข้อมูล RDS License ใหม่ ในการทำเช่นนี้ ให้หยุดบริการ Remote Desktop Licensing:

Stop-Service TermServLicensing

เปลี่ยนชื่อไฟล์ C:\Windows\System32\lserver\TLSLic.edb เป็น C:\Windows\System32\lserver\TLSLic.edb_bak และเริ่มบริการ:

Start-Service TermServLicensing

หลังจากนั้น RDS CAL Licenses ทั้งหมดจะถูกลบ และคุณต้องเปิดใช้งานใหม่

การกำหนดค่า RDS Licenses บน RD Session Hosts

หลังจาก RDS License Server ถูกเปิดใช้งานและกำลังทำงาน คุณสามารถกำหนดค่า RD Session Host ใหม่เพื่อรับใบอนุญาต CAL จากเซิร์ฟเวอร์นี้ คุณสามารถตั้งค่าประเภทใบอนุญาตและระบุชื่อ License Server จาก Server Manager GUI, โดยใช้ PowerShell หรือ Group Policy

เพื่อเปลี่ยนที่อยู่/ชื่อของ Licensing Server บนโฮสต์ RDS ให้เปิด Server Manager -> Remote Desktop Services -> Collections ในเมนูขวาบน "Tasks" เลือก "Edit Deployment Properties"

ในคุณสมบัติการปรับใช้ ไปที่แท็บ RD Licensing เลือกโหมดการอนุญาต Remote Desktop และตั้งค่า RDS License Server คลิก Add -> Ok

⚠ หมายเหตุ: หากประเภทการอนุญาตไม่ได้ตั้งค่าบนเซิร์ฟเวอร์ RDSH คุณจะได้รับข้อผิดพลาด "Licensing mode for the Remote Desktop Session Host is not configured"

คุณสามารถเปลี่ยนที่อยู่ RDS License Server และประเภท CAL โดยใช้ PowerShell:

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.ChangeMode(4)
$obj.SetSpecifiedLicenseServerList("rdslic2016.woshub.com")
$obj.GetSpecifiedLicenseServerList()
💡 หมายเหตุ: ป้อน 4 หากเซิร์ฟเวอร์ต้องใช้ประเภทการอนุญาต Per User และ 2 หากเป็น Per Device

หากคุณต้องการกำหนดพารามิเตอร์ RDS Licensing Server ผ่าน Group Policy คุณต้องสร้าง GPO ใหม่และเชื่อมโยงกับ OU ที่มีเซิร์ฟเวอร์ RDS (หรือคุณสามารถระบุชื่อ RDS Licensing Server โดยใช้ Local Group Policy Editor – gpedit.msc) การตั้งค่า RD Licensing อยู่ภายใต้ส่วน GPO ต่อไปนี้: Computer Configuration -> Policies -> Admin Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing

มีสองการตั้งค่า Remote Desktop ที่เราต้องกำหนดค่า:

  • Use the specified Remote Desktop license servers – ตั้งค่าที่อยู่ License Server;
  • Set the Remote Desktop licensing mode – เลือกประเภทใบอนุญาต RDS CAL

RDSH Hosts ใช้พอร์ตเครือข่ายต่อไปนี้เพื่อรับใบอนุญาต RDS จากเซิร์ฟเวอร์ RDS Licensing ตรวจสอบให้แน่ใจว่าพวกมันไม่ถูกบล็อกโดย Firewall (หรือ Windows Defender Firewall):

  • TCP/135 – Microsoft RPC;
  • UDP/137 – NetBIOS Datagram Service;
  • UDP/138 – NetBIOS Name Resolution;
  • TCP/139 – NetBIOS Session Service;
  • TCP/445 – SMB;
  • TCP/49152–65535 – RPC Dynamic Address Range

คุณสามารถตรวจสอบพอร์ตที่เปิดอยู่โดยใช้เครื่องมือ PortQry หรือ Cmdlet Test-NetConnection

ลองตรวจสอบสถานะ RD License Server และจำนวนใบอนุญาตที่ออกแล้วโดยใช้เครื่องมือ Remote Desktop Licensing Diagnoser (lsdiag.msc หรือ Administrative Tools -> Remote Desktop Services -> RD Licensing Diagnoser) RD Licensing Diagnoser สามารถติดตั้งบนเซิร์ฟเวอร์ RDSH โดยใช้ Server Manager (Features -> Remote Server Administration Tools -> Role Administration Tools -> Remote Desktop Services Tools -> Remote Desktop Licensing Diagnoser Tools)

หากเซิร์ฟเวอร์ RDSH ไม่ได้ถูกกำหนดค่าให้ใช้ RDS License Server คำเตือนต่อไปนี้จะปรากฏในคอนโซล Licensing Diagnoser:

  • Licenses are not available for this Remoter Desktop Session Host server, and RD Licensing Diagnose has identified licensing problems for the RDSH.
  • Number of licenses available for clients: 0
  • The licensing mode for the Remote Desktop Session Host server is not configured.
  • Remote Desktop Session Host server is within its grace period, but the RD Session Host server has not been configured with any license server.

หากคุณติดตั้ง RDSH บน Windows Server Evaluation Edition อย่าลืมแปลงเป็นเวอร์ชันเต็มตามคู่มือ โดยไม่มีการแปลง บริการ RDSH บนโฮสต์ดังกล่าวจะทำงานได้เพียง 120 วัน แม้คุณจะกำหนดเป้าหมายไปยัง RDS License Server ที่เปิดใช้งานแล้ว

หากไม่มีคำเตือน และคุณเห็นข้อความ "RD Licensing Diagnoser did not identify any licensing problems for the Remote Desktop Session Host server" แล้ว เซิร์ฟเวอร์ RDSH สามารถรับ RDS CALs สำหรับผู้ใช้ระยะไกลและ/หรืออุปกรณ์ได้สำเร็จ

⚠ หมายเหตุ: ในกรณีของเรา หลังจากที่เราระบุที่อยู่ License Server ใหม่ ข้อผิดพลาดต่อไปนี้เริ่มปรากฏบนไคลเอนต์ RDP: "The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license" ปัญหานี้สามารถแก้ไขได้โดยการลบคีย์ L$RTMTIMEBOMB จาก Registry บนเซิร์ฟเวอร์ RDSH