Вопрос “соблюдения лицензионных соглашений” данного варианта в текущих реалиях оставим на потом, следует понимать, что данный материал публикуется исключительно в образовательных целях. Этот материал опирается на публично открытые программные продукты и не преследует цели нарушения норм действующего законодательства и правил лицензирования ПО.
Итак, имеем уже настроенный сервер с операционной системой Debian 12. Произведём сборку deb-пакета из исходных кодов проекта vlmcsd. Устанавливаем служебные пакеты
apt install git build-essential debhelper -y
Создаём каталог для сборки пакета
mkdir ~/vlmcsd-build cd ~/vlmcsd-build
Клонируем с GitHub исходный код проекта
git clone https://github.com/Wind4/vlmcsd cd ~/vlmcsd-build/vlmcsd
Дополнительно подкачиваем в каталог с клонированными исходниками
git submodule update --init debian
Выполняем сборку deb-пакета
dpkg-buildpackage -rfakeroot -D -us -uc
Дожидаемся окончания сборки пакета, проверяем наличие пакета
cd ~/vlmcsd-build ls -la ~/vlmcsd-build total 276 drwxr-xr-x 3 root root 4096 Dec 1 20:17 . drwx------ 7 root root 4096 Dec 1 20:48 .. drwxr-xr-x 11 root root 4096 Dec 1 20:17 vlmcsd -rw-r--r-- 1 root root 4765 Dec 1 20:17 vlmcsd_1113_amd64.buildinfo -rw-r--r-- 1 root root 1340 Dec 1 20:17 vlmcsd_1113_amd64.changes -rw-r--r-- 1 root root 81668 Dec 1 20:17 vlmcsd_1113_amd64.deb -rw-r--r-- 1 root root 534 Dec 1 20:17 vlmcsd_1113.dsc -rw-r--r-- 1 root root 168808 Dec 1 20:17 vlmcsd_1113.tar.xz
Устанавливаем готовый deb-пакет в систему
dpkg -i ./vlmcsd_1113_amd64.deb
В процессе установки будет запущена служба vlmcsd.service
systemctl status vlmcsd.service vlmcsd.service - Vlmcsd (KMS Emulator in C) Loaded: loaded (/lib/systemd/system/vlmcsd.service; enabled; preset: enabled) Drop-In: /etc/systemd/system/vlmcsd.service.d └─override.conf Active: active (running) since Fri 2023-12-01 20:30:35 MSK; 2 days ago Main PID: 3004 (vlmcsd) Tasks: 1 (limit: 2140) Memory: 204.0K CPU: 20ms CGroup: /system.slice/vlmcsd.service └─3004 /usr/bin/vlmcsd -i /etc/vlmcsd/vlmcsd.ini -D
Служба запущена с использованием конфигурационного файла /etc/vlmcsd/vlmcsd.ini.
В этом файле можно изменить параметры работы службы. Отключим TCP прослушиватель для IPv6, убрав комментарий в строке указывающей на использование IPv4
... Listen = 0.0.0.0:1688 ...
Также включим логирование службы (изменим путь к лог-файлу по умолчанию, добавив в /var/log/ отдельный подкаталог vlmcsd)
... LogFile = /var/log/vlmcsd/vlmcsd.log ...
После правок файла конфигурации создаём каталог под логи и перезапускаем службу
mkdir /var/log/vlmcsd systemctl restart vlmcsd.service
Проверим, что в системе поднялся TCP-прослушиватель службы на порту 1688
ss -lnptu | grep 1688
tcp LISTEN 0 4096 0.0.0.0:1688 0.0.0.0:* users:(("vlmcsd",pid=3004,fd=4))
Если попытаемся проверить лог-файл, обозначенный в конфигурации vlmcsd.ini, то обнаружим его отсутствие. Смотрим в свойства службы, как юнита systemd
systemctl cat vlmcsd # /lib/systemd/system/vlmcsd.service [Unit] Description=Vlmcsd (KMS Emulator in C) After=network.target [Service] Type=simple User=nobody Group=nogroup ExecStart=/usr/bin/vlmcsd -i /etc/vlmcsd/vlmcsd.ini -D
Запуск службы настроен в контексте пользователя “nobody”. Создаём нового системного пользователя
useradd -s /usr/sbin/nologin -r -M vlmcsd
Назначаем на каталог с логами права для созданного пользователя и его группы
chown -R vlmcsd:vlmcsd /var/log/vlmcsd
Теперь создадим override для службы vlmcsd.service таким образом, чтобы служба запускалась в контексте пользователя “vlmcsd” с одноимённой группой
systemctl edit vlmcsd.service
Добавляем в override-файл
[Service] User=vlmcsd Group=vlmcsd
Сохраняем override-файл, закрываем его и перезапускаем конфигурацию служб
systemctl daemon-reload systemctl restart vlmcsd.service systemctl cat vlmcsd.service
Проверяем: состояние службы; наличие TCP прослушивателя; пользователя, от которого запущена служба; успешность записи в лог файл
systemctl status vlmcsd.service ss -lnptu | grep 1688 ps -aux | grep vlmcsd cat /var/log/vlmcsd/vlmcsd.log
vlmcsd.service - Vlmcsd (KMS Emulator in C) Loaded: loaded (/lib/systemd/system/vlmcsd.service; enabled; preset: enabled) Drop-In: /etc/systemd/system/vlmcsd.service.d └─override.conf Active: active (running) since Fri 2023-12-01 20:30:35 MSK; 2 days ago Main PID: 3004 (vlmcsd) Tasks: 1 (limit: 2140) Memory: 204.0K CPU: 20ms CGroup: /system.slice/vlmcsd.service └─3004 /usr/bin/vlmcsd -i /etc/vlmcsd/vlmcsd.ini -D Dec 01 20:30:35 KMS systemd[1]: Started vlmcsd.service - Vlmcsd (KMS Emulator in C). tcp LISTEN 0 4096 0.0.0.0:1688 0.0.0.0:* users:(("vlmcsd",pid=3004,fd=4)) vlmcsd 3004 0.0 0.0 2504 1664 ? Ss Dec01 0:00 /usr/bin/vlmcsd -i /etc/vlmcsd/vlmcsd.ini -D root 4687 0.0 0.1 6344 2304 pts/0 S+ 13:02 0:00 grep vlmcsd 2023-12-01 20:29:34: Read ini file /etc/vlmcsd/vlmcsd.ini 2023-12-01 20:29:34: Listening on 0.0.0.0:1688
Служба запущена от имени выделенного пользователя “vlmcsd”, в системе доступен TCP-прослушиватель на порту 1688, логи службы успешно записываются в указанный файл. На этом настройку KMS сервера можно считать законченной.
Для возможности активации с развёрнутого KMS сервера, ОС Windows должна быть настроена в качестве KMS клиента путём предварительной установки в систему публично доступного ключа Generic Volume License Key (GVLK)
slmgr.vbs -ipk KMS-GVLK-KEY slmgr.vbs -skms <IP или FQDN хоста KMS> slmgr.vbs -ato
Проверить текущий статус активации
slmgr.vbs -dlv
Для активации 32-битной версии Office 2016 на Windows 10 можно выполнить команды
cd /d "C:\Program Files (x86)\Microsoft Office\Office16" cscript ospp.vbs /sethst:<IP или FQDN хоста KMS> cscript ospp.vbs /act
Проверить текущий статус активации Office
cscript ospp.vbs /dstatusall
Чтобы продукты Microsoft могли в автоматическом режиме находить KMS-сервер в сети, в DNS записи необходимо добавить SRV-запись и A-запись, указывающую на ip сервера активации
_vlmcs._tcp.company.local SRV service location: priority = 0 weight = 0 port = 1688 svr hostname = kms.company.local kms.company.local internet address = XXX.XXX.XXX.XXX
в DNS сервер от Microsoft, необходимо сделать следующее:
Открыть оснастку DNS Перейти: <имя сервера> -> Зоны прямого просмотра -> company.local Нажать ПКМ на названии вашего домена и выбрать “Другие новые записи” В списке “Выбор типа записи ресурса” найти: “Расположение службы (SRV)” и нажать “Добавить” В поля вписать: Служба: _vlmcs Протокол: _tcp Приоритет: 0 Вес: 0 Порт: 1688 Узел этой службы: kms.company.local