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

리눅스에 오픈소스 KMS 서버(vlmcsd) 구축하는 방법

리눅스에 오픈소스 KMS 서버(vlmcsd) 구축하는 방법

GitHub에는 마이크로소프트의 KMS(볼륨 정품 인증) 서버를 에뮬레이션할 수 있는 흥미로운 오픈소스 프로젝트 vlmcsd(https://github.com/Wind4/vlmcsd)가 있습니다. 이 도구를 활용하면 Windows Server가 아닌 플랫폼에도 자체 KMS 서버를 배포할 수 있어, Windows Server 라이선스 비용을 절약할 수 있습니다. 리눅스는 물론 Android, FreeBSD, macOS 등 다양한 환경에 설치가 가능합니다.

이 글에서는 리눅스 호스트에 vlmcsd 기반 KMS 서버를 설치하고, 로컬 네트워크의 데스크톱용 Windows, Windows Server, Microsoft Office를 인증하는 전체 과정을 단계별로 소개합니다.

시작하기 전에 알아두실 점

면책 조항: 본 문서는 교육 및 실험 목적으로만 작성되었으며, Windows나 Office를 불법적으로 인증하는 용도로 사용될 수 없습니다. WindowsOSHub 프로젝트는 어떠한 형태로든 불법 복제 소프트웨어 사용을 권장하지 않습니다.

작업을 시작하기 전에 Microsoft KMS 볼륨 정품 인증 기술에 대한 기본 개념을 먼저 익혀두시기 바랍니다. 필요한 대부분의 정보는 Microsoft KMS Volume Activation FAQ에서 확인할 수 있습니다.

이 예제에서는 Red Hat Enterprise Linux 8(RHEL)을 사용해 KMS 호스트를 배포하지만, Ubuntu, Debian, CentOS, Rocky Linux 등 다른 OS나 NAS 기기(Synology NAS에 설치한 사례도 있습니다)에서도 동일하게 적용할 수 있습니다.

1단계: 필수 패키지 설치 및 vlmcsd 빌드

리눅스 서버에 접속한 후 yum(dnf) 패키지 관리자로 git과 gcc를 설치합니다.

# dnf update
# dnf install git gcc

그다음 vlmcsd 저장소를 클론하고 컴파일합니다.

# git clone https://github.com/Wind4/vlmcsd

리눅스에 오픈소스 KMS 서버(vlmcsd) 구축하는 방법

# cd vlmcsd
# make

리눅스에 오픈소스 KMS 서버(vlmcsd) 구축하는 방법

bin 디렉터리로 이동해 KMS 서버를 실행합니다.

# cd bin
# ./vlmcsd

리눅스에 오픈소스 KMS 서버(vlmcsd) 구축하는 방법

정상적으로 실행되면 다음과 같은 메시지가 출력됩니다.

Connecting to 127.0.0.1:1688 ... successful
Sending activation request (KMS V6) 1 of 1 -> 55041-00206-559-475403-03-1076-6002.0000-1482020 (3A1C049600B60076)

이 메시지가 표시되면 리눅스에서 KMS 서버가 성공적으로 컴파일되고 실행된 것입니다.

2단계: 방화벽에서 KMS 포트 개방

vlmcsd는 기본적으로 KMS 표준 포트인 TCP/1688을 사용합니다. 클라이언트가 접속할 수 있도록 리눅스 방화벽에서 해당 포트를 열어야 합니다. firewalld 환경이라면 다음 명령어를 실행하세요.

# firewall-cmd --zone=public --permanent --add-port=1688/tcp
# firewall-cmd --reload

포트가 제대로 열렸는지 확인합니다.

# firewall-cmd --list-port
# netstat -ntlp | grep LISTEN

리눅스에 오픈소스 KMS 서버(vlmcsd) 구축하는 방법

3단계: systemd 서비스로 자동 실행 설정

서버 재부팅 후에도 vlmcsd가 자동으로 실행되도록 systemd 데몬으로 등록할 수 있습니다.

# cp vlmcs /usr/bin
# touch /etc/systemd/system/kms-script.service
# chmod 664 /etc/systemd/system/kms-script.service
# nano /etc/systemd/system/kms-script.service

서비스 파일에 다음 내용을 추가합니다.

[Unit]
Description=MSFT KMS Server Emulator
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/bin/vlmcsd
RemainAfterExit=yes
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

KMS 서비스를 시작하고 부팅 시 자동 실행되도록 등록합니다.

# systemctl daemon-reload
# systemctl start kms-script.service
# systemctl status kms-script.service
# systemctl enable kms-script.service

리눅스에 오픈소스 KMS 서버(vlmcsd) 구축하는 방법

고급 설정: vlmcsd.ini와 로그 파일

vlmcsd.ini 파일(../vlmcsd/etc/ 디렉터리에 샘플 파일이 포함되어 있음)을 통해 다양한 고급 옵션을 설정할 수 있습니다. 로그 파일(vlmcsd.log) 경로도 지정할 수 있으며, 시작 옵션에서 다음과 같이 경로를 설정합니다.

-i /etc/vlmcsd.ini
-l /var/log/vlmcsd.log

Docker 컨테이너로 실행하기

Docker가 설치된 환경이라면 KMS 서버를 컨테이너 형태로 더욱 간편하게 운영할 수 있습니다.

sudo docker pull mikolatero/vlmcsd
sudo docker run -d -p 1688:1688 --restart=always --name kms_server mikolatero/vlmcsd /vlmcsd -D -d -t 3 -e -v -R172800 -A10080

DNS SRV 레코드로 KMS 서버 자동 검색 설정

Microsoft DNS를 사용 중이라면 _VLMCS SRV 레코드를 생성하여 도메인 내 Windows 클라이언트가 KMS 서버를 자동으로 찾도록 구성할 수 있습니다. PowerShell에서 다음 명령어를 실행하세요.

Add-DnsServerResourceRecord -Srv -Name "_VLMCS._tcp" -ZoneName "woshub.com" -DomainName "192.168.14.147" -Priority 0 -Weight 0 -Port 1688

여기서 192.168.14.147은 KMS 서비스가 실행 중인 리눅스 호스트의 IP 주소입니다.

이렇게 설정하면 공개 GVLK(Generic Volume License Key)가 설치된 도메인 내 모든 Windows(및 Office) 호스트가 KMS 서버를 통해 자동으로 인증됩니다. 각 Windows 버전별 GVLK 전체 목록은 Microsoft 공식 문서(https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys)에서 확인할 수 있습니다.

예를 들어 Windows Server 2022 Standard의 GVLK는 VDYBN-27WPP-V4HQT-9VMD4-VMK7H, Windows 10 Pro는 W269N-WFGWX-YVC9B-4J6C9-T83GX입니다.

Windows 수동 정품 인증 방법

수동으로 인증하려면 해당 Windows 버전에 맞는 GVLK를 설정하고, KMS 호스트의 IP 주소를 지정한 후 인증 명령을 실행합니다. Windows Server 2022 Standard 기준 예시는 다음과 같습니다.

slmgr.vbs -ipk VDYBN-27WPP-V4HQT-9VMD4-VMK7H
slmgr.vbs -skms 192.168.14.147
slmgr.vbs -ato

마지막 명령 실행 후 Product activated successfully(제품이 성공적으로 인증되었습니다) 메시지가 표시되면 정상적으로 인증이 완료된 것입니다.

리눅스에 오픈소스 KMS 서버(vlmcsd) 구축하는 방법

Windows 인증 상태는 다음 명령으로 확인할 수 있습니다.

slmgr.vbs -dlv

문제 해결: 오류 0xC004F069

인증 과정에서 다음과 같은 오류가 발생할 수 있습니다.

Error: 0xC004F069 On a computer running Microsoft Windows non-core edition, run 'slui.exe 0x2a 0xC004F069' to display the error text.

이 오류는 평가판(Evaluation) 버전의 Windows Server가 설치되어 있을 때 발생합니다. 먼저 다음 명령으로 Standard 정식 버전으로 변환해야 합니다.

dism /online /set-edition:serverstandard /productkey:VDYBN-27WPP-V4HQT-9VMD4-VMK7H /accepteula

버전 변환을 마친 후에는 KMS 호스트에서 정상적으로 인증할 수 있습니다.

Microsoft Office 볼륨 라이선스 인증

같은 방식으로 Microsoft Office 2019/2016/2013의 볼륨 라이선스 버전도 KMS 호스트에서 인증할 수 있습니다.

cd C:\Program Files\Microsoft Office\Office16
cscript ospp.vbs /sethst:192.168.14.147
cscript ospp.vbs /act

Office 인증 상태는 다음 명령으로 확인합니다.

cscript ospp.vbs /dstatusall

Office KMS 인증에 대한 더 자세한 내용은 Microsoft 공식 문서를 참고하세요.

마무리

지금까지 리눅스에 KMS 서버를 구축하고, 최신 Windows Server 2022와 Windows 11을 포함한 모든 Windows 버전 및 Microsoft Office를 인증하는 과정을 살펴보았습니다. 이 가이드가 학습 및 테스트 환경 구축에 도움이 되기를 바랍니다.