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

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

이 글에서는 Windows Server 2019 및 2016 환경에서 원격 데스크톱 라이선싱(Remote Desktop Licensing) 역할을 설치하고 구성하며 활성화하는 방법과, RDS 클라이언트 액세스 라이선스(RDS CAL)를 설치하는 전 과정을 단계별로 살펴봅니다.

RDS 라이선스 서버가 필요한 이유

원격 데스크톱 세션 호스트(Remote Desktop Session Host, RDSH) 역할을 설치하면 사용자는 120일의 평가 기간(체험 라이선스) 동안만 해당 서버를 사용할 수 있으며, 그 이후에는 더 이상 RDS 호스트에 접속할 수 없습니다. Microsoft의 라이선스 정책에 따르면 RDS 기능을 사용하는 모든 사용자 또는 장치에는 라이선스가 부여되어야 합니다. 이를 위해 원격 데스크톱 클라이언트 액세스 라이선스(RDS CAL)를 등록하고 발급하는 별도의 Windows 서비스인 원격 데스크톱 라이선스 서버(Remote Desktop License Server)가 RDS 역할 내에 존재합니다.

목차

  • Windows Server 2019/2016에 원격 데스크톱 라이선싱 역할 설치
  • Windows Server에서 RDS 라이선스 서버 활성화하기
  • RDS CAL의 종류: 원격 데스크톱 클라이언트 액세스 라이선스 유형
  • Windows Server 2019/2016에 RDS CAL 설치하기
  • RDS CAL 사용 현황 보고서 생성
  • RD 라이선스 서버에서 RDS CAL 제거하는 방법
  • RD 세션 호스트에서 RDS 라이선스 구성하기

Windows Server 2019/2016에 원격 데스크톱 라이선싱 역할 설치

원격 데스크톱 라이선스 서비스는 도메인에 속한 어떤 서버에든 배포할 수 있으며, 반드시 RDSH 팜을 구성하는 서버 중 하나에 설치할 필요는 없습니다.

설치를 시작하기 전에 새 서버를 Terminal Server License Servers 도메인 보안 그룹에 추가해야 합니다(또는 해당 그룹 멤버십을 변경할 권한이 있는지 확인하세요). 그렇지 않으면 서버가 도메인 사용자에게 RDS Per User CAL을 발급할 수 없습니다.

서버 관리자(Server Manager)를 통해 원격 데스크톱 라이선싱을 설치할 수 있습니다. 역할 및 기능 추가 마법사(Add Roles and Features Wizard)에서 Remote Desktop Services 역할을 선택합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

역할 서비스로 Remote Desktop Licensing을 선택합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

이후 역할 설치가 완료될 때까지 기다리면 됩니다.
Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

RDS-Licensing 서비스는 원격 데스크톱 라이선싱 관리자 콘솔(licmgr.exe)을 통해 관리합니다.

Windows Server에서는 PowerShell을 사용하면 역할과 기능을 더욱 간편하게 설치할 수 있습니다. 다음 명령어 하나로 RDS 라이선싱 서비스와 RD 라이선싱 진단 도구를 함께 설치할 수 있습니다:

Install-WindowsFeature RDS-Licensing –IncludeAllSubFeature -IncludeManagementTools

호스트에 설치된 RDS 서비스 목록을 확인하려면 아래 명령어를 사용하세요:

Get-WindowsFeature -Name RDS* | Where installed

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

Windows Server에서 RDS 라이선스 서버 활성화하기

RDP 클라이언트에 라이선스를 발급하려면 먼저 RDS 라이선스 서버를 활성화해야 합니다. 원격 데스크톱 라이선싱 관리자(Remote Desktop Licensing Manager)(licmgr.exe)를 연 후 서버 이름을 마우스 오른쪽 버튼으로 클릭하고 Activate Server를 선택합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

RDS 라이선스 서버 활성화 마법사가 시작됩니다. 여기서 선호하는 활성화 방식을 선택해야 합니다. 서버가 인터넷에 연결되어 있다면 Microsoft 서버에 자동으로 접속하여 RDS 라이선스 서버를 활성화할 수 있습니다. 서버에서 직접 인터넷에 접근할 수 없다면 웹 브라우저 또는 전화를 통해 활성화할 수 있습니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

그다음 회사 정보를 일부 입력해야 합니다(일부 필드는 필수 입력 항목입니다).

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

마지막으로 Finish 버튼을 클릭하면 활성화가 완료됩니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

콘솔에서 서버 이름을 마우스 오른쪽 버튼으로 클릭하고 Review Configuration을 선택하면, RDS 라이선스 서버가 활성화되었으며 도메인 내 RDSH 클라이언트에 라이선스를 발급할 준비가 되었는지 확인할 수 있습니다.

  • This license server is a member of the Terminal Server License Servers group in Active Directory. This license server will be able to issue RDS Per User CALs to users in the domain, and you will be able to track the usage of RDS Per User CALs.
  • This license server is registered as a service connection point (SCP) in Active Directory Domain Services.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

RDS CAL의 종류: 원격 데스크톱 클라이언트 액세스 라이선스 유형

원격 데스크톱 세션 호스트에 접속하는 모든 사용자 또는 장치에는 클라이언트 액세스 라이선스(CAL)가 필요합니다. RDS CAL에는 두 가지 유형이 있습니다.

  • Per-Device CAL(장치 단위 CAL) – RDS 서버에 두 번 이상 접속하는 컴퓨터(장치)에 영구적으로 할당되는 라이선스입니다(장치가 처음 접속할 때는 임시 라이선스가 발급됩니다). 이 라이선스는 동시 사용(concurrent) 방식이 아니므로, Per Device 라이선스가 10개라면 최대 10대의 장치만 RDS 서버에 접속할 수 있습니다. 현재 Open Value 라이선스(OVL) RDS CAL의 명칭은 WinRmtDsktpSrvcsCAL 2019 SNGL OLV NL Each AP DvcCAL입니다.
  • Per-User CAL(사용자 단위 CAL) – 한 명의 사용자가 여러 대의 컴퓨터/장치에서 RDS 서버에 접속할 수 있도록 허용하는 라이선스입니다. 이 라이선스는 Active Directory 사용자와 연결되며 영구적이지 않고 특정 기간 동안만 발급됩니다. 발급 기간은 52~89일 사이의 무작위 값입니다. 현재 이 유형의 Open Value 라이선스 명칭은 WinRmtDsktpSrvcsCAL 2019 SNGL OLV NL Each AP UsrCAL입니다. 참고로 작업 그룹(workgroup) 환경(도메인 미가입)에서 RDS 2019 Per User CAL을 사용하려고 하면, RDSH 서버가 60분마다 사용자 세션을 강제 종료하며 "Remote Desktop License Issue: There is a problem with your Remote Desktop license, and your session will be disconnected in 60 minutes"라는 메시지를 표시합니다. 따라서 Windows 작업 그룹 환경의 RDS 서버에서는 Per Device RDS CAL만 사용해야 합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

참고: 2016 버전의 RDS CAL은 Windows Server 2016 또는 2019 라이선스 서버에 설치할 수 있습니다. 이전 버전의 Windows Server에 RDS CAL을 설치하는 것은 지원되지 않습니다. 즉, Windows Server 2012 R2 라이선스 호스트에는 2016 RDS CAL을 설치할 수 없습니다.

Windows Server 2016에서 2019 버전의 RDS CAL을 추가하려고 하면 다음 오류가 발생합니다:

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

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

Windows Server 2019/2016에 RDS CAL 설치하기

이제 구매한 원격 데스크톱 클라이언트 라이선스 팩(RDS CAL)을 라이선스 서버에 설치해야 합니다.

원격 데스크톱 라이선싱 관리자에서 서버를 마우스 오른쪽 버튼으로 클릭하고 Install Licenses를 선택합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

활성화 방식(자동, 온라인, 전화)과 라이선스 프로그램(여기서는 Enterprise Agreement 기준)을 선택합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

마법사의 다음 단계는 선택한 라이선스 프로그램에 따라 달라집니다. Enterprise Agreement의 경우 계약 번호를 입력해야 하며, License Pack(소매 구매)을 선택했다면 Microsoft 또는 파트너로부터 받은 25자리 제품 키를 입력합니다.

제품 버전(Windows Server 2019/2016), 라이선스 유형(RDS Per User CAL), 서버에 설치할 라이선스 수를 지정합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

설치가 완료되면 서버가 클라이언트에 라이선스(RDS CAL)를 발급할 수 있습니다.

RD 라이선싱 관리자 콘솔의 Convert Licenses 메뉴를 사용하면 RDS User CAL을 Device CAL로 변환하거나 그 반대로 변환할 수 있습니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

사용 가능한 RDS 라이선스가 부족해진 경우, 다음 PowerShell 스크립트를 사용하여 비활성 상태의 컴퓨터에 발급된 RDS Device CAL을 회수할 수 있습니다:

$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 CAL은 최대 20%까지 회수할 수 있습니다. Per-User CAL은 회수할 수 없습니다.

RDS CAL 사용 현황 보고서 생성

RDS 라이선스 콘솔에서 라이선스 사용 현황 보고서를 생성할 수 있습니다. 서버의 상황에 맞는 메뉴에서 Create ReportCAL Usage를 선택하면 됩니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

하지만 PowerShell을 활용해 RDS CAL 사용 현황을 확인하는 것이 더 편리합니다. 다음 스크립트는 모든 RDS CAL 팩의 남은 라이선스 수를 보여줍니다:

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와 연동하여 실행하면, 남은 라이선스 수가 예를 들어 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

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

RD 라이선스 서버에서 RDS CAL 제거하는 방법

RDS CAL 라이선스 팩을 한 원격 데스크톱 라이선스 서버에서 다른 서버로 이전하려면, PowerShell을 사용하여 기존 라이선스 서버에서 설치된 RDS CAL 라이선스 팩을 제거할 수 있습니다.

다음 cmdlet을 사용하면 서버에 설치된 모든 RDS CAL 팩 목록을 확인할 수 있습니다:

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

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

제거하려는 RDS CAL 패키지의 KeyPackId 값을 찾은 후 다음 명령어를 실행합니다:

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

RDS 라이선스 데이터베이스를 재생성하여 모든 CAL을 완전히 제거할 수도 있습니다. 이를 위해서는 먼저 원격 데스크톱 라이선싱 서비스를 중지합니다:

Stop-Service TermServLicensing

파일 C:\Windows\System32\lserver\TLSLic.edb의 이름을 C:\Windows\System32\lserver\TLSLic.edb_bak으로 변경한 후 서비스를 다시 시작합니다:

Start-Service TermServLicensing

이후 모든 RDS CAL 라이선스가 제거되며, 라이선스를 다시 활성화해야 합니다.

RD 세션 호스트에서 RDS 라이선스 구성하기

RDS 라이선스 서버가 활성화되어 운영 중이라면, RD 세션 호스트가 해당 서버에서 CAL 라이선스를 받도록 재구성할 수 있습니다. 라이선스 유형 설정과 라이선스 서버 이름 지정은 서버 관리자 GUI, PowerShell 또는 그룹 정책을 통해 수행할 수 있습니다.

RDS 호스트에서 라이선스 서버의 이름/주소를 변경하려면 서버 관리자 → Remote Desktop Services → Collections로 이동합니다. 오른쪽 상단의 "Tasks" 메뉴에서 "Edit Deployment Properties"를 선택합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

배포 속성에서 RD Licensing 탭으로 이동하여 원격 데스크톱 라이선싱 모드를 선택하고 RDS 라이선스 서버를 지정합니다. Add → Ok를 클릭합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

참고: RDSH 서버에 라이선싱 유형이 설정되어 있지 않으면 "Licensing mode for the Remote Desktop Session Host is not configured" 오류가 발생합니다.

PowerShell을 사용해서도 RDS 라이선스 서버 주소와 CAL 유형을 변경할 수 있습니다:

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting

필요한 라이선스 유형을 지정합니다:

$obj.ChangeMode(4)

참고: Per User 라이선싱 유형을 사용하려면 4, Per Device를 사용하려면 2를 입력합니다.

그다음 RDS 라이선스 서버 이름을 지정합니다:

$obj.SetSpecifiedLicenseServerList("rdslic2016.woshub.com")

현재 설정을 확인합니다:

$obj.GetSpecifiedLicenseServerList()

그룹 정책을 통해 RDS 라이선싱 서버 매개변수를 할당하려면 새 GPO를 만들어 RDS 서버가 있는 OU에 연결합니다(또는 로컬 그룹 정책 편집기 – gpedit.msc를 사용하여 RDS 라이선싱 서버 이름을 지정할 수도 있습니다). RD 라이선싱 설정은 다음 GPO 경로에 위치합니다: Computer Configuration → Policies → Admin Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Licensing.

구성해야 하는 원격 데스크톱 설정은 두 가지입니다:

  • Use the specified Remote Desktop license servers – 라이선스 서버의 주소를 설정합니다;
  • Set the Remote Desktop licensing mode – RDS CAL 라이선스 유형을 선택합니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

RDSH 호스트는 RDS 라이선싱 서버에서 RDS 라이선스를 받을 때 다음 네트워크 포트를 사용합니다. 방화벽(또는 Windows Defender 방화벽)에 의해 차단되지 않았는지 확인하세요:

  • 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 동적 주소 범위

PortQry 도구나 Test-NetConnection cmdlet을 사용하여 포트 개방 여부를 확인할 수 있습니다.

원격 데스크톱 라이선싱 진단 도구(RD Licensing Diagnoser)(lsdiag.msc 또는 관리 도구 → Remote Desktop Services → RD Licensing Diagnoser)를 사용하여 RD 라이선스 서버 상태와 발급된 라이선스 수를 점검해 보세요. RD 라이선싱 진단 도구는 서버 관리자를 통해 RDSH 서버에 설치할 수 있습니다(Features → Remote Server Administration Tools → Role Administration Tools → Remote Desktop Services Tools → Remote Desktop Licensing Diagnoser Tools).

RDSH 서버가 RDS 라이선스 서버를 사용하도록 구성되어 있지 않으면 라이선싱 진단 콘솔에 다음과 같은 경고가 표시됩니다:

  • 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.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

참고: Windows Server Evaluation(평가판) 에디션에 RDSH를 설치한 경우, 가이드에 따라 정식 버전으로 변환하는 것을 잊지 마세요. 변환하지 않으면 활성화된 RDS 라이선스 서버를 지정했더라도 해당 호스트의 RDSH 서비스는 120일 동안만 작동합니다.

경고가 없고 "RD Licensing Diagnoser did not identify any licensing problems for the Remote Desktop Session Host server"라는 메시지가 표시된다면, RDSH 서버가 원격 사용자 및/또는 장치에 대해 RDS CAL을 성공적으로 수신할 수 있는 상태입니다.

Windows Server 2019/2016 RDS 라이선스 서버 구축 및 CAL 설치·활성화 완벽 가이드

참고: 실제 사례에서 새 라이선스 서버 주소를 지정한 후 RDP 클라이언트에서 "The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license" 오류가 발생하기 시작했습니다. 이 문제는 RDSH 서버의 레지스트리에서 L$RTMTIMEBOMB 키를 삭제하면 해결할 수 있습니다.