Hyper-V VMM サービスが失敗し、dynamicportrange が変更されたときにイベント ID 14050 がログに記録される

この記事では、Hyper-V VMM サービスが失敗し、動的ポート範囲の設定が変更されたときにイベント ID 14050 がログに記録される問題の解決策について説明します。

適用対象: Windows Server 2012 R2
元の KB 番号: 2761899

現象

Hyper-V がインストールされているWindows Server 2012を実行しているコンピューターがあるとします。 System Center Virtual Machine Manager 2012 Service Pack 1 (SP1) を使用するか、Hyper-V マネージャーを使用してリモートで Hyper-V ホストを管理しようとすると、試行は失敗します。 さらに、次のようなイベント ログにイベントが記録される場合があります。

ログ名: Microsoft-Windows-Hyper-V-VMMS-管理
ソース: Microsoft-Windows-Hyper-V-VMMS
日付: <日付><時刻>
イベント ID: 14050
レベル: エラー
説明: サービス プリンシパル名の登録に失敗しました。
Event Xml: ...
<Parameter0>Hyper-V レプリカ サービス</Parameter0>

原因

この問題は、TCP ダイナミック ポートの範囲が既定の範囲外である場合に発生する可能性があります。 Hyper-V の Virtual Management Service (Vmms.exe) では、Windows サービスのセキュリティ強化が使用され、動的ポート範囲に制限されます。

TCP ダイナミック ポート範囲を確認するには、管理者特権のコマンド プロンプトで次のコマンドを実行します。

C:\>netsh int ipv4 show dynamicportrange tcp Protocol tcp Dynamic Port Range --------------------------------- Start Port : 49152 Number of Ports : 16384

この問題は、NTDS ポートがドメイン コントローラー上の特定のポートに制限されている場合にも発生する可能性があります。 この選択した NTDS ポートが既定の範囲内にない場合は、すべての Hyper-V ホストの [解決] セクションでスクリプトを実行して、このポートを追加する必要があります。

詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事に移動してください。

224196 Active Directory レプリケーション トラフィックとクライアント RPC トラフィックを特定のポートに制限する

解決方法

この問題を解決するには、影響を受ける各 Hyper-V ホストで次のスクリプトを 1 回実行します。 このスクリプトでは、カスタム ポート範囲を追加して、Vmms.exe が 9000 から 9999 の追加のポート範囲で通信できるようにします。 スクリプトは必要に応じて変更できます。

カスタム ポート範囲を追加するようにスクリプトを構成するには、次の手順に従います。

  1. メモ帳などのテキスト エディターを起動します。

  2. 次のコードをコピーし、テキスト ファイルにコードを貼り付けます。

    
    'This VBScript adds a port range from 9000 to 9999 for outgoing traffic  
    'run as cscript addportrange.vbs on the hyper-v host
    
    option explicit
    
    'IP protocols
    const NET_FW_IP_PROTOCOL_TCP = 6
    const NET_FW_IP_PROTOCOL_UDP = 17
    
    'Action
    const NET_FW_ACTION_BLOCK = 0
    const NET_FW_ACTION_ALLOW = 1
    
    'Direction
    const NET_FW_RULE_DIR_IN = 1
    const NET_FW_RULE_DIR_OUT = 2
    
    'Create the FwPolicy2 object.
    Dim fwPolicy2
    Set fwPolicy2 = CreateObject("HNetCfg.FwPolicy2")'Get the Service Restriction object for the local firewall policy.
    Dim ServiceRestriction
    Set ServiceRestriction = fwPolicy2.ServiceRestriction
    
    'If the service requires sending/receiving certain type of traffic, then add "allow" WSH rules as follows
    'Get the collection of Windows Service Hardening networking rules
    
    Dim wshRules
    Set wshRules = ServiceRestriction.Rules
    
    'Add outbound WSH allow rules
    Dim NewOutboundRule
    Set NewOutboundRule = CreateObject("HNetCfg.FWRule")
    NewOutboundRule.Name = "Allow outbound traffic from service to TCP 9000 to 9999"
    NewOutboundRule.ApplicationName = "%systemDrive%\WINDOWS\system32\vmms.exe"
    NewOutboundRule.ServiceName = "vmms"
    NewOutboundRule.Protocol = NET_FW_IP_PROTOCOL_TCP
    NewOutboundRule.RemotePorts = "9000-9999"
    NewOutboundRule.Action = NET_FW_ACTION_ALLOW
    NewOutboundRule.Direction = NET_FW_RULE_DIR_OUT
    NewOutboundRule.Enabled = true
    wshRules.Add NewOutboundRule
    
    'end of script
    
  3. ファイルを "Addportrange.vbs" (引用符を含む) として保存します。 これにより、.vbs 拡張子を持つファイルが正しく作成されます。 ファイル アイコンがメモ帳アイコンからスクリプト アイコンに変わります。

  4. スクリプトを cscript として実行します。

関連情報

970923 SCVMM 2008 および SCVMM 2012、エラー 2927 (0x8033809d) でマネージド ホストを追加できません

929851 TCP/IP の既定のダイナミック ポート範囲が Windows Vista および Windows Server 2008 で変更されました