強制トンネリングを使用したライセンス認証の問題

この記事では、サイト間 VPN 接続または ExpressRoute シナリオで強制トンネリングを有効にしている場合に発生する可能性がある KMS ライセンス認証の問題を解決する方法について説明します。

症状

Azure 仮想ネットワーク サブネットで強制トンネリングを有効にし、インターネットへのすべてのトラフィックをオンプレミス ネットワークに戻すようにします。 このシナリオでは、Windows を実行する Azure 仮想マシン (VM) が Windows のライセンス認証に失敗します。

原因

Azure Windows VM は、Windows のライセンス認証のために Azure KMS サーバーに接続する必要があります。 このライセンス認証では、ライセンス認証要求が Azure のパブリック IP アドレスから送られる必要があります。 強制トンネリング シナリオでは、ライセンス認証要求が Azure のパブリック IP アドレスではなく、オンプレミス ネットワークから送信されるため、ライセンス認証は失敗します。

ソリューション

この問題を解決するには、Azure カスタム ルートを使用して、Azure KMS サーバー に ライセンス認証のトラフィックをルーティングします。

Azure Global クラウドの KMS サーバーの IP アドレスは、23.102.135.246 です。 その DNS 名は、kms.core.windows.net です。 Azure Germany などの他の Azure プラットフォームを使用する場合は、対応する KMS サーバーの IP アドレスを使用する必要があります。 詳細については、後の表を参照してください。

プラットフォーム KMS DNS KMS IP
Azure Global kms.core.windows.net 23.102.135.246
Azure Germany kms.core.cloudapi.de 51.4.143.248
Azure US Government kms.core.usgovcloudapi.net 23.97.0.13
Azure China 21Vianet kms.core.chinacloudapi.cn 42.159.7.249

カスタム ルートを追加するには、次の手順を実行します。

Resource Manager VM の場合

注意

アクティブ化ではパブリック IP アドレスが使用され、Standard SKU の Load Balancer の構成による影響を受けます。 要件については、「Azure の送信接続」を慎重に確認してください。

  1. Azure PowerShell を開き、Azure サブスクリプションにサインインします。

  2. 次のコマンドを実行します。

    # First, get the virtual network that hosts the VMs that have activation problems. In this case, we get virtual network ArmVNet-DM in Resource Group ArmVNet-DM:
    
    $vnet = Get-AzVirtualNetwork -ResourceGroupName "ArmVNet-DM" -Name "ArmVNet-DM"
    
    # Next, create a route table and specify that traffic bound to the KMS IP (23.102.135.246) will go directly out:
    
    $RouteTable = New-AzRouteTable -Name "ArmVNet-DM-KmsDirectRoute" -ResourceGroupName "ArmVNet-DM" -Location "centralus"
    
    Add-AzRouteConfig -Name "DirectRouteToKMS" -AddressPrefix 23.102.135.246/32 -NextHopType Internet -RouteTable $RouteTable
    
    Set-AzRouteTable -RouteTable $RouteTable
    
    # Next, attach the route table to the subnet that hosts the VMs
    
    Set-AzVirtualNetworkSubnetConfig -Name "Subnet01" -VirtualNetwork $vnet -AddressPrefix "10.0.0.0/24" -RouteTable $RouteTable
    
    Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  3. ライセンス認証の問題がある VM に移動します。 PsPing を使用して、KMS サーバーにアクセスできるかどうかをテストします。

    psping kms.core.windows.net:1688
    
  4. Windows のライセンス認証を試してみて、問題が解決されるかどうかを確認します。

クラシック VM の場合

重要

クラシック VM は 2023 年 3 月 1 日に廃止されます。

ASM の IaaS リソースを使用する場合は、2023 年 3 月 1 日までに移行を完了してください。 Azure Resource Manager の多くの機能拡張を利用するには、切り替えを早めに行うことをお勧めします。

詳細については、「2023 年 3 月 1 日までに IaaS リソースを Azure Resource Manager に移行する」を参照してください。

  1. Azure PowerShell を開き、Azure サブスクリプションにサインインします。

  2. 次のコマンドを実行します。

    # First, create a new route table:
    New-AzureRouteTable -Name "VNet-DM-KmsRouteGroup" -Label "Route table for KMS" -Location "Central US"
    
    # Next, get the route table that was created:
    $rt = Get-AzureRouteTable -Name "VNet-DM-KmsRouteTable"
    
    # Next, create a route:
    Set-AzureRoute -RouteTable $rt -RouteName "AzureKMS" -AddressPrefix "23.102.135.246/32" -NextHopType Internet
    
    # Apply the KMS route table to the subnet that hosts the problem VMs (in this case, we apply it to the subnet that's named Subnet-1):
    Set-AzureSubnetRouteTable -VirtualNetworkName "VNet-DM" -SubnetName "Subnet-1" 
    -RouteTableName "VNet-DM-KmsRouteTable"
    
  3. ライセンス認証の問題がある VM に移動します。 PsPing を使用して、KMS サーバーにアクセスできるかどうかをテストします。

    psping kms.core.windows.net:1688
    
  4. Windows のライセンス認証を試してみて、問題が解決されるかどうかを確認します。

次の手順