LinuxにオープンソースKMSサーバー「vlmcsd」を構築する方法|Windows・Officeのライセンス認証まで完全解説
GitHubで公開されているオープンソースプロジェクトvlmcsd(https://github.com/Wind4/vlmcsd)は、MicrosoftのKMS(キー管理サービス)認証サーバーをエミュレートできるツールです。これを利用すれば、Windows Server以外のプラットフォーム上に独自のKMSサーバーを構築でき、Windows Serverライセンスを持っていない場合にはそのコストを節約できます。対応OSはLinuxだけでなく、Android、FreeBSD、macOSなど多岐にわたります。本記事では、LinuxホストにvlmcsdベースのKMSサーバーをインストールし、ローカルネットワーク内のデスクトップ版Windows、Windows Server、Microsoft Officeのライセンス認証に活用する方法を解説します。
免責事項:本記事は教育・検証目的でのみ提供されており、WindowsやOfficeを不正に認証することを意図したものではありません。ライセンスされていない(海賊版)ソフトウェアの使用は、いかなる形であってもお控えください。
はじめに知っておきたいKMSボリュームライセンス認証の基礎
作業を始める前に、MicrosoftのKMSボリュームライセンス認証技術について理解しておくことをおすすめします。必要な情報のほとんどは、Microsoftが公開している「KMS Volume Activation FAQ」で確認できます。
本記事ではRed Hat Enterprise Linux 8(RHEL)を使用してKMSホストを構築しますが、Ubuntu、Debian、CentOS、Rocky Linuxなど、他のOSでも同様の手順で導入可能です。さらに、Synology NASなどのNASデバイスで動作させた成功例も報告されています。
vlmcsdのビルドと起動手順
1. 必要パッケージのインストール
Linuxサーバーに接続し、yum(dnf)パッケージマネージャーでgitとgccをインストールします。
# dnf update
# dnf install git gcc
2. ソースコードの取得とコンパイル
続いて、vlmcsdのリポジトリをクローンしてビルドします。
# git clone https://github.com/Wind4/vlmcsd
# cd vlmcsd
# make
3. KMSサーバーの起動
binディレクトリに移動し、KMSサーバーを実行します。
# cd bin
# ./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上で稼働していることを意味します。
ファイアウォールでTCP/1688ポートを開放する
デフォルトでは、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
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
詳細設定(vlmcsd.iniとログファイル)
vlmcsd.ini(サンプルファイルは../vlmcsd/etc/にあります)を使用すると、KMSサーバーの詳細なオプションを設定できます。ここでは、KMSサーバーのログファイル(vlmcsd.log)の出力先も指定可能です。起動オプションでファイルパスを指定する場合は、次のようにします。
-i /etc/vlmcsd.ini-l /var/log/vlmcsd.log
DockerコンテナでKMSサーバーを運用する
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レコードを作成すると、ドメイン内の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は、KMSサービスが稼働しているLinuxホストのIPアドレスです。
この設定により、公開GVLK(Generic Volume License Keys)がインストールされたドメイン内のすべてのWindows(およびOffice)ホストが、自動的にKMSサーバーで認証されるようになります。各WindowsバージョンのGVLK一覧は、Microsoftの公式サイトで公開されています。
https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys
たとえば、このページでWindows Server 2022 Standard(VDYBN-27WPP-V4HQT-9VMD4-VMK7H)やWindows 10 Pro(W269N-WFGWX-YVC9B-4J6C9-T83GX)用のGVLKを確認できます。
Windowsの手動ライセンス認証手順
手動でWindowsを認証するには、対象バージョンに対応したGVLKの設定、KMSホストのIPアドレス指定、そして認証コマンドの実行という3つのステップが必要です。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
エラー0xC004F069が発生した場合の対処法
筆者の検証環境では、Windows Serverの認証時に以下のエラーが発生しました。
Error: 0xC004F069 On a computer running Microsoft Windows non-core edition, run 'slui.exe 0x2a 0xC004F069' to display the error text.
原因は、評価版のWindows Server 2022がインストールされていたことです。まずStandard版へ変換する必要があります。変換は次のコマンドで行えます。
dism /online /set-edition:serverstandard /productkey:VDYBN-27WPP-V4HQT-9VMD4-VMK7H /accepteula
その後、改めてKMSホストに対してWindowsのライセンス認証を実行すれば完了です。
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
Microsoft OfficeのKMS認証について詳しくは、関連記事をご参照ください。
まとめ
本記事では、Linux上にKMSサーバーを構築し、最新のWindows Server 2022やWindows 11を含む各種Windowsバージョン、さらにMicrosoft Officeのライセンス認証を行う方法を解説しました。vlmcsdを活用すれば、Windows Serverライセンスを追加購入することなく、社内ネットワーク向けのKMS環境を低コストで整備できます。ファイアウォール設定やsystemdによる自動起動、DNSのSRVレコード登録まで行えば、クライアント側はほぼ自動で認証されるため、運用負荷も大幅に軽減されます。
-
Linuxにおすすめのオープンソースメディアプレーヤー5選
メディアプレーヤーは、パソコンに欠かせない重要なツールの一つです。無料で使える選択肢は数多くありますが、Linuxユーザーの間では特にオープンソースのメディアプレーヤーが好まれています。Linuxはユーザー数こそ多くありませんが、熱心なファンの多くは、他の選択肢よりもオープンソースツールを優先する傾向があります。今回は、実際に使う価値のある優れたオープンソースLinuxメディアプレーヤーを5つご紹介します。 1. VLC VLCは改めて紹介する必要がないほど有名で、世界中のさまざまなプラットフォームで最も広く使われているメディアプレーヤーの一つです。オープンソースであるという特徴から、Lin
-
Linux向けおすすめオープンソース ディスククローンソフト7選
Linuxオペレーティングシステムを使っていても、データ損失のリスクから完全に免れるわけではありません。 データ損失は誰にでも起こり得るもので、事前の予告なく発生し、組織の存続に深刻な影響を及ぼしかねません。そのため、ディスク全体のコピーを作成しておくことは常に有効な対策です。この目的のために、高品質なオープンソースのクローン(ディスクイメージング)ソフトウェアを活用しましょう。 もちろん、コピーやペーストのコマンドでもファイルの複製は可能です。しかし、これらのコマンドでは使用中のファイルや隠しファイルを扱うことができません。だからこそ、専用のオープンソースクローンソフトウェアが必要になるので