最近、Windows Server 2022へのインプレースアップグレード後にKMSによるライセンス認証がうまく機能しないという声を耳にする機会が増えました。DNSに誤ったSRVレコードが残っていたり、複数のKMSサーバー情報が混在していたりと、意外に見落としがちなポイントが多く存在します。そこで本記事では、具体的なエラー事例や原因、そして解決策をわかりやすく解説します。
Windows Server 2022ライセンス認証問題の背景
Windows Serverは企業や組織で広く利用されており、特にVolume Licensing(ボリュームライセンス)の場合はKMS(Key Management Service)を使ったライセンス認証が一般的です。ところが、Windows Server 2019などの旧バージョンからWindows Server 2022へインプレースアップグレードした際、以下のような問題が起こるケースがあります。
- 「slmgr.vbs /ato」を実行すると「0xC004F074」というエラーが表示され、KMSサーバーに接続できないと警告される。
- 「slmgr.vbs /dlv」でライセンスステータスを確認すると「License Status: Licensed(ライセンス認証済み)」と表示され、一見問題ないように見える。
- KMSサーバー側のイベントログ(イベントID:12290)では、該当サーバーからのライセンス認証リクエストが正常に処理されたと出ているため、接続自体は行われているようにも見える。
- DNS関連の不具合を修正してもエラーが消えない、またはライセンス認証状態が安定しない。
こういった不思議な挙動から、一度は認証できているのに後からエラーが再発するといった状況に陥りやすいのです。最終的にMAKキーを適用して回避するケースもありますが、本来であればKMSサーバーを正しく運用すればエラーは起こらないはずです。以下では、その原因や対処法を順を追って解説していきます。
KMS認証の仕組みとDNSの役割
KMSを利用してWindows Serverをライセンス認証させる場合、クライアント(認証される側のWindows Server)はDNSを通じて自動検出する仕組みが標準で用意されています。具体的には、DNSに登録されたSRVレコード(サービスレコード)を参照し、KMSホストを探しに行きます。このSRVレコードが「_VLMCS._tcp」という名称で登録されており、ポート番号やホスト名が格納されています。
SRVレコードの重要性
SRVレコードが正しく登録されていなかったり、古いレコードが残っていたりすると、クライアント側(Windows Server 2022など)は誤ったKMSサーバーへアクセスしてしまいます。その結果、KMSサーバーが見つからない、あるいは認証に失敗するというエラーが発生します。特に環境内に以前のKMSサーバーが存在し、すでに運用停止しているにもかかわらずレコードだけが残存しているケースは要注意です。
例:KMS用SRVレコード
サービス: _VLMCS
プロトコル: _tcp
ポート: 1688
ホスト名: kms-server.domain.local
正しく登録されていれば、クライアントが自動的に「kms-server.domain.local:1688」を探しに行くため、通常は「slmgr.vbs /ato」を実行するだけでライセンス認証が完了します。しかし、ここが誤っている場合には手動でKMSサーバーを指定してあげる必要があります。
具体的なエラーの症状と原因
インプレースアップグレード後に多くの人が遭遇するエラーとしては、次のようなものがあります。下記に代表的なエラーコードや現象、原因、対処法をまとめました。
エラーコード | 現象 | 考えられる原因 | 対処法 |
---|---|---|---|
0xC004F074 | KMSサーバーに接続できない | ・DNSのSRVレコードが誤っている ・KMSサーバーがダウンしている ・ファイアウォールで1688番ポートがブロックされている | ・DNS設定を再確認 ・KMSサーバーの稼働状況を確認 ・必要に応じてポートを解放 |
0xC004F015 | プロダクトキーが無効 | ・KMSクライアントキーではなくMAKキーを誤入力 ・エディションに合わないキーを使用 | ・正しいKMSクライアントキーを使用 ・エディションの一致を確認 |
0xC004F042 | KMS応答が不正 | ・KMSホストのバージョンが古い ・サーバーのバージョンとクライアントのバージョンが合わない | ・最新のKMSホストキーと更新プログラムを適用 ・Windows Server 2022に対応したKMSを構築 |
slmgr.vbs /atoエラーの原因
通常、Windows Serverのライセンス認証を行う際には以下のコマンドを実行します。
slmgr.vbs /ipk <KMSクライアントキー>
slmgr.vbs /ato
/ipk <プロダクトキー>
でWindowsにキーを入力し、/ato
で実際に認証を行います。
しかし、エラー0xC004F074などが発生する場合は、「DNSで正しいKMSサーバーが見つからなかった」「そもそもKMSサーバーが応答しない(停止中)」といったネットワーク周りの問題が多くを占めます。特に、インプレースアップグレードでOSバージョンが変わった際にDNSキャッシュやSRVレコードが乱れ、誤ったサーバー情報が残ってしまうことが少なくありません。
ライセンス状態の確認方法
「slmgr.vbs /dlv」を実行すると、ライセンスの詳細情報が表示されます。ここで「License Status: Licensed(ライセンス認証済み)」と表示されていれば、一時的には認証されている状態です。しかし、KMSクライアントは定期的にKMSサーバーへ接続してライセンスを更新する必要があるため、次の更新サイクルで失敗すると再度エラーが出る可能性があります。
C:\> slmgr.vbs /dlv
...
License Status: Licensed
...
KMS machine name from DNS: <KMSホスト名または空欄>
KMS machine IP address: <IPアドレスまたは空欄>
...
もしKMSホスト名やIPアドレスが空欄になっている場合はDNSから取得できていないことを意味します。そういった場合には手動でKMSサーバーを指定することで解決できる可能性が高いです。
解決策・対処法
ここからは具体的な対処方法を順を追って紹介します。環境によって原因は異なりますが、以下のステップを押さえておけば多くの場合は問題を解決できるでしょう。
DNSの再確認・不要レコードの削除
まずはDNSに古いレコードが残っていないか確認しましょう。特に「_VLMCS._tcp」と名のつくSRVレコードをよくチェックします。もし過去に運用していたKMSサーバーがすでに存在しないのにレコードが残っている場合は削除してください。また、DNSサーバーが複数ある環境ではレプリケーションのタイミングによりレコードが完全に同期されていないケースもあります。DNSクリーンアップを行い、正しいレコードだけを残すようにしましょう。
KMSサーバーを手動で指定する
DNSの自動検出に問題がある場合は、手動でKMSサーバーを設定する方法があります。以下のコマンドを実行することで、クライアントに対して明示的に「このKMSサーバーを使え」と指示します。
slmgr.vbs /skms <KMSサーバー名またはIPアドレス>
slmgr.vbs /ato
これで「_VLMCS._tcp」のSRVレコードを参照せずとも、直接KMSサーバーへ接続してライセンス認証を試みるようになります。環境によっては、この手順だけで問題が解決することが多いです。ただし、将来的にサーバーを別のホストに切り替えたい場合などは、DNSの仕組みを整備しておくほうが運用上は望ましいです。
イベントログの確認
トラブルシューティングではイベントログのチェックが欠かせません。クライアント側の「アプリケーションとサービス ログ」や「システムログ」を調べると、ライセンス認証に関するイベントIDが出力されていることがあります。たとえばクライアント側ではイベントID:8198、サーバー側ではイベントID:12288や12290が典型的です。これらのログを確認することで、DNS解決に失敗しているのか、KMSサーバー自体が応答していないのかを切り分けられます。
MAKキーの利用
運用上どうしてもKMS認証が安定しない、あるいは環境的にすぐには原因が取り除けないといった場合は、MAK(Multiple Activation Key)キーを使用する手もあります。MAKキーはインターネットまたは電話認証でMicrosoftの認証サーバーに直接接続するため、KMSサーバーやDNSの設定に影響されません。ただし、MAKキーの再利用回数などの制限がある点や、KMSによる自動的なライセンス更新のメリットが失われる点には留意が必要です。
運用上のベストプラクティス
Windows Server環境でKMSを運用していくうえで、日頃から以下のようなベストプラクティスを意識することがトラブル防止につながります。
定期的な検証と更新プログラムの適用
KMSホスト側に対しては、最新の更新プログラムを適用しておくことが望ましいです。特にWindows Server 2022に対応したKMSホストキーが適用されているか、必要なホットフィックスが導入されているかは事前に確認しておきましょう。また、クライアント側も定期的にWindows Updateを実施し、KMSクライアントの更新を怠らないことが重要です。
不要なSRVレコードのクリーンナップ
DNSのSRVレコードは自動登録や自動削除がなされるケースもありますが、何らかの理由で削除されずに古い情報が残り続けることは珍しくありません。KMSサーバーの移行や廃止を行った場合には、手動でSRVレコードを削除するプロセスを運用に組み込むことで、後々のトラブルを予防できます。
ファイアウォールとネットワーク経路の確認
社内ネットワークのセキュリティ要件によっては、KMSサーバーへのアクセスに使用するポート1688がブロックされている場合もあります。ネットワークセグメントが複数に分かれている大規模環境では、KMSサーバーが配置されているセグメントへの通信が遮断されることがあります。試験的にファイアウォールを一時的にオフにしてみる、またはサーバーに直接PingやTelnetで接続できるか確認するなどの基本的なネットワーク診断を行いましょう。
KMSホストの冗長化
大規模環境では、KMSサーバーを1台だけに依存していると、もしその1台がダウンした場合、すべてのクライアントがライセンス更新に失敗するリスクがあります。DNSのSRVレコードを複数登録し、稼働中のKMSサーバーを冗長化しておくと、障害発生時の影響範囲を大幅に抑えられます。ただし、複数のKMSサーバーを運用する場合は、古いホストレコードが混在しないよう常にメンテナンスを行う必要があります。
まとめ
Windows Server 2022へのインプレースアップグレード後にKMS認証が不安定になる原因の多くは、DNSに古いSRVレコードが残っていたり、KMSサーバーが複数登録されていたりすることに起因します。今回取り上げたように、手動でKMSサーバーを指定してスムーズに認証できるケースもあれば、DNSのクリーンアップが必要なケースもあります。最終手段としてMAKキーを導入することも可能ですが、本来はKMS環境をしっかり整備すれば安定稼働を実現できます。
トラブルが発生したら、まずはエラーコードやイベントログをよく確認し、DNS設定を見直すことが第一歩です。必要に応じて手動でKMSサーバーを指定し、KMSホスト側の更新状況やネットワークの接続状態を丁寧にチェックしてみてください。適切な管理と運用によって、Windows Server 2022のKMS認証は問題なく動作するはずです。
コメント