Có một dự án mã nguồn mở thú vị trên GitHub gọi là vlmcsd (https://github.com/Wind4/vlmcsd) để mô phỏng máy chủ kích hoạt KMS của Microsoft. Bạn có thể dùng nó để triển khai máy chủ KMS riêng trên các nền tảng khác ngoài Windows Server (do đó, bạn có thể tiết kiệm giấy phép Windows Server nếu không sử dụng nó). Bạn có thể cài đặt máy chủ KMS như vậy trên Linux, Android, FreeBSD, macOS, v.v. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách cài đặt KMS dựa trên vlmcsd trên máy chủ Linux và sử dụng nó để kích hoạt máy tính chạy các phiên bản Windows desktop, Windows Server và Microsoft Office trong mạng cục bộ của bạn.
Tuyên bố miễn trừ trách nhiệm. Bài viết này được cung cấp cho mục đích giáo dục/thử nghiệm phòng lab và không khuyến khích sử dụng sản phẩm để kích hoạt Windows hoặc Office bất hợp pháp. Dự án WindowsOSHub nhắc nhở bạn không sử dụng phần mềm không có giấy phép (phần mềm bị crack) dưới bất kỳ hình thức nào.
Trước khi bắt đầu, chúng tôi khuyên bạn nên làm quen với công nghệ Kích hoạt Volume KMS của Microsoft. Gần như tất cả thông tin cần thiết có thể tìm thấy trong FAQ Kích hoạt Volume KMS của Microsoft.
Trong ví dụ này, chúng ta đang sử dụng Red Hat Enterprise Linux 8 (RHEL) để triển khai máy chủ KMS, nhưng bạn có thể dùng bất kỳ hệ điều hành nào khác, như Ubuntu, Debian, CentOS, Rocky Linux. thậm chí thiết bị NAS của bạn (có một số ví dụ cài đặt thành công lên máy chủ NAS Synology).
Kết nối đến máy chủ Linux của bạn và dùng trình quản lý gói yum (dnf) để cài đặt gói git và gcc:
# dnf update
# dnf install git gcc
Sau đó clone và cài đặt gói vlmcsd:
# git clone https://github.com/Wind4/vlmcsd

# cd vlmcsd
# make

Chuyển đến thư mục bin:
# cd bin
Chạy máy chủ KMS:
# ./vlmcsd

Bạn sẽ thấy thông báo sau:
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)
Điều đó có nghĩa là bạn đã biên dịch và chạy thành công máy chủ KMS trên Linux.
Mặc định, vlmcsd lắng nghe trên cổng KMS mặc định TCP/1688. Vì vậy, bạn phải mở cổng trong tường lửa Linux để cho phép client kết nối đến nó. Đối với firewalld, hãy chạy các lệnh dưới đây:
# firewall-cmd --zone=public --permanent --add-port=1688/tcp
# firewall-cmd --reload
Đảm bảo cổng 1688 đang mở:
# firewall-cmd --list-port
# netstat -ntlp | grep LISTEN

Để chạy vlmcsd tự động, bạn có thể tạo daemon riêng và quản lý nó bằng 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
Thêm mô tả dịch vụ sau vào file:
[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
Sau đó chạy dịch vụ KMS và thêm nó vào khởi động:
# systemctl daemon-reload
# systemctl start kms-script.service
# systemctl status kms-script.service
# systemctl enable kms-script.service

Bạn có thể đặt các tùy chọn nâng cao của máy chủ KMS qua vlmcsd.ini (có file mẫu trong ../vlmcsd/etc/). Ở đó bạn cũng có thể đặt đường dẫn đến file log máy chủ KMS (vlmcsd.log). Bạn có thể đặt đường dẫn file trong tùy chọn khởi động vlmcsd bằng các tùy chọn sau:
-i /etc/vlmcsd.ini
-l /var/log/vlmcsd.log
Bạn cũng có thể chạy máy chủ KMS trong container docker:
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
Nếu bạn đang dùng Microsoft DNS, bạn có thể tạo bản ghi _VLMCS cho phép client Windows tự động tìm máy chủ KMS trong domain. Để tạo bản ghi DNS SRV, dùng lệnh PowerShell sau:
Add-DnsServerResourceRecord -Srv -Name "_VLMCS._tcp" -ZoneName "woshub.com" -DomainName "192.168.14.147" -Priority 0 -Weight 0 -Port 1688
trong đó 192.168.14.147 là địa chỉ IP của máy chủ Linux nơi dịch vụ KMS đang chạy.
Sau đó, tất cả máy chủ Windows (và Office) trong domain của bạn sẽ được kích hoạt tự động trên máy chủ KMS của bạn nếu chúng có GVLK công cộng được cài đặt. Danh sách hoàn chỉnh GVLK (Generic Volume License Keys) để kích hoạt tất cả phiên bản Windows có sẵn được công bố trên trang web Microsoft: https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys.
Ví dụ, tìm GVLK để kích hoạt Windows Server 2022 Standard (VDYBN-27WPP-V4HQT-9VMD4-VMK7H) và Windows 10 Pro (W269N-WFGWX-YVC9B-4J6C9-T83GX) trên trang này.
Để kích hoạt Windows thủ công, đặt GVLK cho phiên bản Windows của bạn, địa chỉ IP của máy chủ kích hoạt KMS, và chạy lệnh kích hoạt. Các lệnh sau được sử dụng (ví dụ, cho Windows Server 2022 Standard):
slmgr.vbs -ipk VDYBN-27WPP-V4HQT-9VMD4-VMK7H
slmgr.vbs -skms 192.168.14.147
slmgr.vbs -ato
Sau khi chạy lệnh cuối cùng, bạn sẽ thấy thông báo: Product activated successfully. Điều đó có nghĩa là bản sao Windows của bạn đã được kích hoạt thành công.

Bạn có thể kiểm tra trạng thái kích hoạt Windows bằng lệnh:
slmgr.vbs -dlv
Trong ví dụ của tôi, lỗi xảy ra khi kích hoạt Windows Server:
Error: 0xC004F069 On a computer running Microsoft Windows non-core edition, run 'slui.exe 0x2a 0xC004F069' to display the error text.
Lý do là tôi cài đặt phiên bản evaluation của Windows Server 2022. Trước tiên, bạn cần chuyển đổi nó sang phiên bản Standard theo bài viết này:
dism /online /set-edition:serverstandard /productkey:VDYBN-27WPP-V4HQT-9VMD4-VMK7H /accepteula
Sau đó tôi có thể kích hoạt instance Windows của mình trên máy chủ KMS.
Tương tự, bạn có thể kích hoạt phiên bản volume của Microsoft Office 2019/2016/2013 trên máy chủ KMS của bạn. Các lệnh sau được sử dụng:
cd C:\Program Files\Microsoft Office\Office16
cscript ospp.vbs /sethst: 192.168.14.147
cscript ospp.vbs /act
Để kiểm tra trạng thái kích hoạt Office:
cscript ospp.vbs /dstatusall
Tìm hiểu thêm về kích hoạt Microsoft Office KMS.
Vậy là chúng tôi đã chỉ cách triển khai máy chủ KMS trên Linux và kích hoạt tất cả phiên bản Windows bao gồm Windows Server 2022 mới nhất và Windows 11.