На GitHub есть интересный open source проект vlmcsd (https://github.com/Wind4/vlmcsd) для эмуляции сервера KMS активации Microsoft. Вы можете использовать его для развертывания собственного KMS сервера на платформах, отличных от Windows Server (тем самым можно сэкономить на лицензии Windows Server, если вы его не используете). Такой KMS сервер можно установить на Linux, Android, FreeBSD, Mac OS. В этой статье мы покажем, как установить KMS сервер на базе vlmcsd в CentOS Linux и использовать его для сетевой активации компьютеров с десктопными версиями Windows, Windows Server и Microsoft Office.
Прежде чем начать, рекомендуем познакомится с технологией корпоративной KMS активации Microsoft. Почти вся необходимая информация есть в статье FAQ по KMS активации в Windows.
В данном примере мы используем CentOS 8 для установки KMS сервера, но вы можете использовать и другие ОС, например, Ubuntu, Debian, RHEL или даже ваш 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 vlmcsd /usr/bin
# 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=Microsoft KMS Server 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 запись для автоматического поиска KMS сервера клиентами в домене. Для создания записи в DNS используйте такую команду PowerShell:
Add-DnsServerResourceRecord -Srv -Name "_VLMCS._tcp" -ZoneName "winitpro.ri" -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, адрес сервера KMS активации и выполнить команду активации. Используются следующие команды (например, для Windows Server 2022 Std):
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.
Причина в том, что у меня установлена ознакомительная (Evaluation) версия Windows Server 2022. Сначала нужно конвертировать ее в полноценную Standard согласностатье:
dism /online /set-edition:serverstandard /productkey:VDYBN-27WPP-V4HQT-9VMD4-VMK7H /accepteula
И только после этого можно активировать Windows.
Аналогичным образом вы можете активировать на KMS сервере корпоративные версии Microsoft Office 2019/2016/2013. Для этого используются такие команды:
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