
На GitHub есть интересный проект с открытым исходным кодом под названием vlmcsd (https://github.com/Wind4/vlmcsd) для эмуляции сервера активации KMS от Microsoft. С его помощью вы можете развернуть собственный KMS-сервер на платформах, отличных от Windows Server (таким образом, вы сможете сэкономить на лицензии Windows Server, если не будете ее использовать). Вы можете установить такой KMS-сервер на Linux, Android, FreeBSD, macOS и т. д. В этой статье мы покажем вам, как установить KMS на базе vlmcsd на Linux-хост и использовать его для активации компьютеров с настольными версиями Windows, Windows Server и Microsoft Office в локальной сети.
Перед началом работы мы рекомендуем вам ознакомиться с технологией Microsoft KMS Volume Activation. Почти всю необходимую информацию можно найти в FAQ по Microsoft KMS Volume Activation.
В этом примере мы используем Red Hat Enterprise Linux 8 (RHEL) для развертывания узла KMS, но вы можете использовать любые другие ОС, такие как Ubuntu, Debian, CentOS, Rocky Linux. или даже ваше устройство NAS (есть несколько примеров успешной установки на NAS-сервер Synology).
Подключитесь к серверу Linux и с помощью менеджера пакетов yum (dnf) установите пакеты git и gcc:
# dnf update
# dnf install git gcc
Затем клонируйте и установите пакет vlmcsd:
# git clone https://github.com/Wind4/vlmcsd
# cd vlmcsd
# make
Перейдите в каталог bin:
# cd bin
Запустите сервер 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 на Linux.
По умолчанию vlmcsd прослушивает KMS-порт по умолчанию TCP/1688. Поэтому вам нужно открыть порт в брандмауэре Linux, чтобы клиенты могли подключаться к нему. Для firewalld выполните следующие команды:
# firewall-cmd --zone=public --permanent --add-port=1688/tcp
# firewall-cmd –reload
Убедитесь, что порт 1688 открыт:
# firewall-cmd --list-port
# netstat -ntlp | grep LISTEN
Чтобы запускать 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.ini (пример файла находится в ../vlmcsd/etc/). Там же можно задать путь к файлу журнала сервера KMS (vlmcsd.log). Пути к файлам можно задать в параметрах запуска vlmcsd, используя следующие опции:
-i /etc/vlmcsd.ini
-l /var/log/vlmcsd.log
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
Если вы используете Microsoft DNS, вы можете создать _VLMCS запись, которая позволит клиентам Windows автоматически находить сервер KMS в домене. Чтобы создать запись DNS SRV, используйте следующую команду 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
это IP-адрес вашего Linux-хоста, на котором запущена служба KMS.
После этого все хосты Windows (и Office) в вашем домене будут автоматически активированы на вашем KMS-сервере, если на них установлен публичный GVLK. Полный список GVLK (Generic Volume License Keys) для активации всех доступных версий Windows опубликован на сайте Microsoft: https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys.
Например, найти GVLK для активации Windows Server 2022 Standard (VDYBN-27WPP-V4HQT-9VMD4-VMK7H) и Windows 10 Pro (W269N-WFGWX-YVC9B-4J6C9-T83GX) можно на этой странице.
Чтобы активировать Windows вручную, установите GVLK для вашей версии Windows, IP-адрес узла активации KMS и запустите команду активации. Используются следующие команды (например, для 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
. Это означает, что ваша копия Windows была успешно активирована.
Проверить статус активации Windows можно с помощью команды:
slmgr.vbs -dlv
Error: 0xC004F069 On a computer running Microsoft Windows non-core edition, run 'slui.exe 0x2a 0xC004F069' to display the error text.
Причина в том, что у меня установлена ознакомительная версия Windows Server 2022. Сначала вам нужно преобразовать ее в стандартную версию в соответствии с этой статьей:
dism /online /set-edition:serverstandard /productkey:VDYBN-27WPP-V4HQT-9VMD4-VMK7H /accepteula
Затем я могу активировать свой экземпляр Windows на узле KMS.
Таким же образом можно активировать тома версий 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
Итак, мы показали, как развернуть KMS-сервер на Linux и активировать все версии Windows, включая последние Windows Server 2022 и Windows 11.