ネイティブ Azure 証明書認証を使用した VNet へのポイント対サイト VPN 接続の構成:PowerShell

この記事では、Windows、Linux、または macOS が実行されている個々のクライアントを Azure VNet に対して安全に接続する方法を紹介します。 ポイント対サイト VPN 接続は、自宅や会議室でのテレワークなど、リモートの場所から VNet に接続する場合に便利です。 VNet への接続を必要とするクライアントがごく少ない場合は、サイト対サイト VPN の代わりに P2S を使用することもできます。 ポイント対サイト接続に、VPN デバイスや公開 IP アドレスは必要ありません。 P2S により、SSTP (Secure Socket トンネリング プロトコル) または IKEv2 経由の VPN 接続が作成されます。

コンピューターから Azure VNet に接続する - ポイント対サイト接続の図

ポイント対サイト VPN の詳細については、「ポイント対サイト VPN について」を参照してください。 Azure portal を使用してこの構成を作成するには、Azure portal を使用したポイント対サイト VPN の構成に関する記事を参照してください。

ポイント対サイトのネイティブ Azure 証明書認証接続には、以下のものが必要となります。これらの要素をこの演習で構成していきます。

  • RouteBased VPN ゲートウェイ。
  • Azure にアップロードされた、ルート証明書の公開キー (.cer ファイル)。 証明書をアップロードすると、その証明書は信頼された証明書と見なされ、認証に使用されます。
  • ルート証明書から生成されたクライアント証明書。 VNet に接続する予定の各クライアント コンピューターにインストールされるクライアント証明書です。 この証明書はクライアントの認証に使用されます。
  • VPN クライアント構成。 VPN クライアントは、VPN クライアント構成ファイルを使用して構成されます。 これらのファイルには、クライアントと VNet の接続に必要な情報が含まれています。 このファイルを使用すると、オペレーティング システムにネイティブな既存の VPN クライアントが構成されます。 接続する各クライアントは、構成ファイルの設定を使って構成する必要があります。

前提条件

Azure サブスクリプションを持っていることを確認します。 Azure サブスクリプションをまだお持ちでない場合は、MSDN サブスクライバーの特典を有効にするか、無料アカウントにサインアップしてください。

Azure PowerShell

重要

この記事の多くの手順では、Azure Cloud Shell を使用できます。 ただし、Cloud Shell を使用して証明書を生成することはできません。 また、ルート証明書の公開キーをアップロードするには、ローカルの Azure PowerShell または Azure portal を使用する必要があります。

この記事では、PowerShell コマンドレットを使用します。 コマンドレットを実行するには、Azure Cloud Shell を使用できます。 Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。

Cloud Shell を開くには、コード ブロックの右上隅にある [使ってみる] を選択します。 https://shell.azure.com/powershell に移動して、別のブラウザー タブで Cloud Shell を起動することもできます。 [コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けてから、Enter キーを押して実行します。

Azure PowerShell コマンドレットは、ローカルのコンピューターにインストールして実行することもできます。 PowerShell コマンドレットは、頻繁に更新されます。 最新バージョンをインストールしていないと、手順で指定されている値は失敗する場合があります。 コンピューターにインストールされている Azure PowerShell のバージョンを確認するには、Get-Module -ListAvailable Az コマンドレットを使用します。 インストールまたは更新するには、「Install the Azure PowerShell module (Azure PowerShell モジュールのインストール)」を参照してください。

1.サインイン

PowerShell をローカルで実行している場合は、昇格された特権で PowerShell コンソールを開き、Azure アカウントに接続します。 Connect-AzAccount コマンドレットでは、資格情報の入力を求められます。 認証後にアカウント設定がダウンロードされ、Azure PowerShell で使用できるようになります。

PowerShell をローカルで実行するのではなく Azure Cloud Shell を使用している場合は、Connect-AzAccount を実行する必要はありません。 [試してみる] を選択した後、Azure Cloud Shell によって、Azure アカウントに自動的に接続されます。

  1. PowerShell をローカルで実行している場合は、サインインします。

    Connect-AzAccount
    
  2. 複数のサブスクリプションがある場合は、Azure サブスクリプションの一覧を取得します。

    Get-AzSubscription
    
  3. 使用するサブスクリプションを指定します。

    Select-AzSubscription -SubscriptionName "Name of subscription"
    

2.変数の宣言

この記事では、サンプル自体を変更することなく、独自の環境に適用する値を簡単に変更できるように、変数を使用しています。 使用する変数を宣言します。 次のサンプルを使用し、必要に応じて独自の値で置き換えられます。 演習中の任意の時点で PowerShell/Cloud Shell セッションを閉じた場合は、値をもう一度コピーして貼り付けるだけで、変数を再宣言します。

$VNetName  = "VNet1"
$FESubName = "FrontEnd"
$GWSubName = "GatewaySubnet"
$VNetPrefix = "10.1.0.0/16"
$FESubPrefix = "10.1.0.0/24"
$GWSubPrefix = "10.1.255.0/27"
$VPNClientAddressPool = "172.16.201.0/24"
$RG = "TestRG1"
$Location = "EastUS"
$GWName = "VNet1GW"
$GWIPName = "VNet1GWpip"
$GWIPconfName = "gwipconf"
$DNS = "10.2.1.4"

3.VNet の構成

  1. リソース グループを作成します。

    New-AzResourceGroup -Name $RG -Location $Location
    
  2. 仮想ネットワークのサブネット構成を作成し、FrontEnd および GatewaySubnet という名前を付けます。 これらのプレフィックスは、宣言した VNet アドレス空間に含まれている必要があります。

    $fesub = New-AzVirtualNetworkSubnetConfig -Name $FESubName -AddressPrefix $FESubPrefix
    $gwsub = New-AzVirtualNetworkSubnetConfig -Name $GWSubName -AddressPrefix $GWSubPrefix
    
  3. 仮想ネットワークを作成します。

    この例では、-DnsServer サーバー パラメーターはオプションです。 値を指定しても新しい DNS サーバーは作成されません。 指定する DNS サーバーの IP アドレスは、VNet から接続するリソースの名前を解決できる DNS サーバーの IP アドレスである必要があります。 この例ではプライベート IP アドレスを使用していますが、これはおそらく実際の DNS サーバーの IP アドレスと一致しません。 実際には独自の値を使用してください。 指定された値は、P2S 接続や VPN のクライアントではなく、VNet にデプロイするリソースが使用します。

        New-AzVirtualNetwork `
       -ResourceGroupName $RG `
       -Location $Location `
       -Name $VNetName `
       -AddressPrefix $VNetPrefix `
       -Subnet $fesub, $gwsub `
       -DnsServer $DNS
    
  4. 作成した仮想ネットワークの変数を指定します。

    $vnet = Get-AzVirtualNetwork -Name $VNetName -ResourceGroupName $RG
    $subnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
    
  5. VPN ゲートウェイには、パブリック IP アドレスが必要です。 これにはまず IP アドレスのリソースを要求したうえで、仮想ネットワーク ゲートウェイの作成時にそのリソースを参照する必要があります。 IP アドレスは、VPN ゲートウェイの作成時にリソースに対して動的に割り当てられます。 VPN Gateway では現在、パブリック IP アドレスの "動的" 割り当てのみサポートしています。 静的パブリック IP アドレスの割り当てを要求することはできません。 もっとも、VPN ゲートウェイに割り当てられた IP アドレスが後から変わることは基本的にありません。 パブリック IP アドレスが変わるのは、ゲートウェイが削除され、再度作成されたときのみです。 VPN ゲートウェイのサイズ変更、リセット、その他の内部メンテナンス/アップグレードでは、IP アドレスは変わりません。

    動的に割り当てられたパブリック IP アドレスを要求します。

    $pip = New-AzPublicIpAddress -Name $GWIPName -ResourceGroupName $RG -Location $Location -AllocationMethod Dynamic
    $ipconf = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconfName -Subnet $subnet -PublicIpAddress $pip
    

4.VPN ゲートウェイを作成する

この手順では、VNet の仮想ネットワーク ゲートウェイを構成して作成します。

  • -GatewayType は Vpn、-VpnType は RouteBased にする必要があります。
  • -VpnClientProtocol は、有効にするトンネルの種類を指定する際に使用します。 トンネルのオプションには、OpenVPN、SSTPIKEv2 があります。 いずれか 1 つを有効にすることも、サポートされるすべての組み合わせを有効にすることもできます。 複数の種類を有効にする場合は、名前をコンマで区切って指定します。 OpenVPN と SSTP は一緒に有効にすることができません。 Android と Linux の strongSwan クライアントおよび iOS と OSX のネイティブ IKEv2 VPN クライアントでは、接続に IKEv2 トンネルのみを使用します。 Windows クライアントでは最初に IKEv2 を試し、接続できなかった場合に SSTP を使用します。 OpenVPN クライアントを使用して、OpenVPN トンネルの種類に接続することができます。
  • 仮想ネットワーク ゲートウェイ 'Basic' SKU では、IKEv2、OpenVPN、RADIUS 認証はサポートされません。 Mac クライアントを仮想ネットワークに接続する予定がある場合は、Basic SKU を使用しないでください。
  • 選択するゲートウェイ SKU によっては、VPN ゲートウェイで処理が完了するまでに最大で 45 分かかる場合があります。 この例では、IKEv2 を使用します。
  1. VNet の仮想ネットワーク ゲートウェイを構成、作成します。 ゲートウェイの作成には約 45 分かかります。

    New-AzVirtualNetworkGateway -Name $GWName -ResourceGroupName $RG `
    -Location $Location -IpConfigurations $ipconf -GatewayType Vpn `
    -VpnType RouteBased -EnableBgp $false -GatewaySku VpnGw1 -VpnClientProtocol "IKEv2"
    
  2. ゲートウェイを作成したら、次の例を使用してゲートウェイを表示できます。 PowerShell を閉じた場合やゲートウェイの作成中にタイムアウトになった場合は、再度変数を宣言できます。

    Get-AzVirtualNetworkGateway -Name $GWName -ResourceGroup $RG
    

5.VPN クライアント アドレス プールの追加

VPN ゲートウェイの作成が完了したら、VPN クライアント アドレス プールを追加できます。 VPN クライアント アドレス プールは、VPN クライアントが接続時に受け取る IP アドレスの範囲です。 接続元であるオンプレミスの場所、または接続先とする VNet と重複しないプライベート IP アドレス範囲を使用してください。

この例での VPN クライアント アドレス プールは、前の手順で変数として宣言されています。

$Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway -VpnClientAddressPool $VPNClientAddressPool

6.証明書の生成

重要

Azure Cloud Shell を使用して証明書を生成することはできません。 このセクションで説明されているいずれかの方法を使用する必要があります。 PowerShell を使用する場合は、ローカルにインストールする必要があります。

証明書は、ポイント対サイト VPN の VPN クライアントを認証するために、Azure によって使用されます。 そのため、ルート証明書の公開キー情報を Azure にアップロードします。 その後、その公開キーは "信頼された" と見なされます。 信頼されたルート証明書からクライアント証明書を生成し、それを各クライアント コンピューターの [証明書 - 現在のユーザー] の [個人] 証明書ストアにインストールする必要があります。 この証明書は、クライアントで VNet への接続を開始するときに、そのクライアントを認証するために使用されます。

自己署名証明書を使用する場合は、特定のパラメーターを使って証明書を作成する必要があります。 自己署名証明書は、PowerShell と Windows 10 を使った手順で作成できるほか、Windows 10 をご利用でない場合は、MakeCert を使って作成することができます。 自己署名ルート証明書やクライアント証明書を生成するときは、これらの説明に記載されている手順に従うことが大切です。 そうしないと、生成される証明書が P2S 接続に適合せず、接続エラーが発生します。

ルート証明書

  1. ルート証明書の .cer ファイルを取得します。 エンタープライズ ソリューションを使って生成されたルート証明書を使用することも (推奨)、自己署名証明書を生成することもできます。 ルート証明書の作成後、秘密キーではなく公開証明書データを、Base64 でエンコードされた X.509 .cer ファイルとしてエクスポートします。 このファイルは、後で Azure にアップロードします。

    • エンタープライズ証明書: エンタープライズ ソリューションを使用している場合は、既存の証明書チェーンを使うことができます。 使用するルート証明書の .cer ファイルを取得します。

    • 自己署名ルート証明書: エンタープライズ証明書ソリューションを使用していない場合は、自己署名ルート証明書を作成します。 そうしないと、作成する証明書と P2S 接続との互換性がなくなり、クライアントが接続しようとすると接続エラー メッセージを受信するようになります。 Azure PowerShell、MakeCert、または OpenSSL を使用できます。 以下の記事の手順では、互換性のある自己署名ルート証明書を生成する方法が説明されています。

      • Windows 10 PowerShell の手順: これらの手順で証明書を生成するには、Windows 10 および PowerShell が必要です。 ルート証明書から生成されるクライアント証明書は、サポートされている任意の P2S クライアントにインストールすることができます。
      • MakeCert の手順: 証明書を生成するために使用する Windows 10 コンピューターにアクセスできない場合は、MakeCert を使用します。 MakeCert は非推奨になりましたが、まだ証明書の生成に使用することができます。 ルート証明書から生成されるクライアント証明書は、サポートされている任意の P2S クライアントにインストールすることができます。
      • Linux の手順
  2. ルート証明書の作成後、秘密キーではなく公開証明書データを、Base64 でエンコードされた X.509 .cer ファイルとしてエクスポートします。

クライアント証明書

  1. お客様がポイント対サイト接続を使用して VNet に接続する各クライアント コンピューターには、クライアント証明書がインストールされていなければなりません。 ルート証明書からそれを生成し、各クライアント コンピューターにインストールします。 有効なクライアント証明書をインストールしないと、クライアントが VNet への接続を試行したときに認証が失敗します。

    クライアントごとに一意の証明書を生成することも、複数のクライアントに同じ証明書を使用することもできます。 一意のクライアント証明書を生成する利点は、1 つの証明書を失効させることができる点です。 そうでなければ、複数のクライアントで同じクライアント証明書が認証に使用されていて、お客様がそれを失効させる場合に、その証明書が使用されているすべてのクライアントに対して新しい証明書を生成してインストールする必要があります。

    クライアント証明書は、次の方法を使用して生成できます。

    • エンタープライズ証明書:

      • エンタープライズ証明書ソリューションを使用している場合は、共通名の値の形式 name@yourdomain.com を使用してクライアント証明書を生成します。 domain name\username 形式の代わりに、この形式を使用します。

      • クライアント証明書が、ユーザー一覧の最初の項目が "クライアント認証" であるユーザー証明書テンプレートに基づいていることを確認します。 証明書を確認するには、それをダブルクリックし、 [詳細] タブの [拡張キー使用法] を表示します。

    • 自己署名ルート証明書: お客様が作成するクライアント証明書が P2S 接続との互換性を備えるよう、P2S 証明書に関する以下のいずれかの記事の手順に従ってください。

      自己署名ルート証明書からクライアント証明書を生成した場合、お客様が生成に使用したコンピューターにそれが自動的にインストールされます。 クライアント証明書を別のクライアント コンピューターにインストールしたい場合は、それを .pfx ファイルとして、証明書チェーン全体と共にエクスポートします。 そうすることで、クライアントの認証に必要なルート証明書情報が含まれている .pfx ファイルが作成されます。

      これらの記事の手順では、互換性のあるクライアント証明書が生成されます。この証明書をエクスポートして配布できます。

      • Windows 10 PowerShell の手順: これらの手順で証明書を生成するには、Windows 10 および PowerShell が必要です。 生成される証明書は、サポートされている任意の P2S クライアントにインストールできます。

      • MakeCert の手順: 証明書を生成する Windows 10 コンピューターにアクセスできない場合は、MakeCert を使用します。 MakeCert は非推奨になりましたが、まだ証明書の生成に使用することができます。 生成される証明書は、サポートされている任意の P2S クライアントにインストールできます。

      • Linux の手順

  2. クライアント証明書を作成したら、それをエクスポートします。 クライアント証明書は、接続するクライアント コンピューターに配布されます。

7.ルート証明書の公開キー情報のアップロード

VPN ゲートウェイの作成が完了していることを確認します。 この操作が完了した後は、信頼されたルート証明書の (公開キー情報を含む) .cer ファイルを Azure にアップロードできます。 .cer ファイルがアップロードされると、Azure ではそれを使用し、信頼されたルート証明書から生成されたクライアント証明書がインストールされているクライアントを認証できます。 その後は必要に応じて、最大で合計 20 個になるまで信頼されたルート証明書を追加でアップロードできます。

注意

Azure Cloud Shell を使用して .cer ファイルをアップロードすることはできません。 ローカル環境のコンピューターで PowerShell を使用するか、Azure portal の手順を使用できます。

  1. 証明書名のための変数を、独自の値に置き換えて宣言します。

    $P2SRootCertName = "P2SRootCert.cer"
    
  2. ファイルのパスを独自のパスに置換し、次のコマンドレットを実行します。

    $filePathForCert = "C:\cert\P2SRootCert.cer"
    $cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2($filePathForCert)
    $CertBase64 = [system.convert]::ToBase64String($cert.RawData)
    
  3. 公開キー情報を Azure にアップロードします。 証明書情報をアップロードすると、Azure ではそれが信頼されたルート証明書と見なされます。 アップロードする際は、ご利用のコンピューターのローカルから PowerShell を実行するか、Azure portal の手順を使用してください。 Azure Cloud Shell を使用してアップロードすることはできません。

    Add-AzVpnClientRootCertificate -VpnClientRootCertificateName $P2SRootCertName -VirtualNetworkGatewayname "VNet1GW" -ResourceGroupName "TestRG1" -PublicCertData $CertBase64
    

8.エクスポートしたクライアント証明書のインストール

次の手順に従い、Windows クライアントにインストールできます。 その他のクライアントと詳細については、クライアント証明書のインストールに関する記事を参照してください。

クライアント証明書の生成に使用したクライアント コンピューター以外から P2S 接続を作成する場合は、クライアント証明書をインストールする必要があります。 クライアント証明書をインストールするときに、クライアント証明書のエクスポート時に作成されたパスワードが必要になります。

  1. .pfx ファイルを見つけ、クライアント コンピューターにコピーします。 クライアント コンピューターで、 .pfx ファイルをダブルクリックしてインストールします。 [ストアの場所][現在のユーザー] のままにしておき、 [次へ] を選択します。
  2. [インポートするファイル] ページでは、何も変更しないでください。 [次へ] を選択します。
  3. [秘密キーの保護] ページで、証明書のパスワードを入力するか、セキュリティ プリンシパルが正しいことを確認し、 [次へ] を選択します。
  4. [証明書ストア] ページで、既定の場所をそのまま使用し、 [次へ] を選択します。
  5. [完了] を選択します。 証明書のインストールの [セキュリティ警告][はい] を選択します。 証明書を生成したため、このセキュリティ警告では安心して [はい] を選択できます。
  6. これで証明書がインポートされます。

クライアント証明書が証明書チェーン全体と一緒に .pfx としてエクスポートされている (既定値) ことを確認します。 そうでないと、ルート証明書情報がクライアント コンピューターに存在せず、クライアントは正しく認証されません。

9.VPN クライアントを構成する

このセクションでは、仮想ネットワーク ゲートウェイに接続するようにコンピューターのネイティブ クライアントを構成します。 たとえば、Windows コンピューターの VPN 設定に移動すると、VPN 接続を追加できます。 ポイント対サイト接続には、特定の構成設定が必要です。 この手順では、ネイティブ VPN クライアントがポイント対サイト接続を介して仮想ネットワークに接続できるようにするために必要な特定の設定を使用して、パッケージを作成できます。

次の簡単な例を使用して、クライアント構成パッケージを生成してインストールできます。 パッケージの内容に関する詳細と、VPN クライアント構成ファイルの生成とインストールに関する追加の手順については、「VPN クライアント構成ファイルの作成とインストール」を参照してください。

変数を再宣言する必要がある場合は、こちらを参照してください。

構成ファイルを生成するには

$profile=New-AzVpnClientConfiguration -ResourceGroupName $RG -Name $GWName -AuthenticationMethod "EapTls"

$profile.VPNProfileSASUrl

クライアント構成パッケージをインストールするには

バージョンがクライアントのアーキテクチャと一致する限り、各 Windows クライアント コンピューターで同じ VPN クライアント構成パッケージを使用できます。 サポートされているクライアント オペレーティング システムの一覧については、「VPN Gateway に関する FAQ」のポイント対サイトに関するセクションを参照してください。

注意

接続元の Windows クライアント コンピューターの管理者権限が必要です。

証明書認証用にネイティブ Windows VPN クライアントを構成するには、次の手順を実行してください。

  1. Windows コンピューターのアーキテクチャに対応する VPN クライアント構成ファイルを選択します。 64 ビットのプロセッサ アーキテクチャの場合は、"VpnClientSetupAmd64" インストーラー パッケージを選択します。 32 ビットのプロセッサ アーキテクチャの場合は、"VpnClientSetupX86" インストーラー パッケージを選択します。
  2. パッケージをダブルクリックしてインストールします。 SmartScreen ポップアップが表示された場合は、 [詳細][実行] の順にクリックしてください。
  3. クライアント コンピューターで [ネットワークの設定] に移動し、 [VPN] をクリックします。 VPN 接続により、その接続先の仮想ネットワークの名前が表示されます。
  4. 接続を試行する前に、クライアント コンピューターにクライアント証明書をインストール済みであることを確認します。 ネイティブ Azure 証明書の認証タイプを使用する場合、認証にはクライアント証明書が必要です。

10.Azure に接続する

Windows VPN クライアント

注意

接続元の Windows クライアント コンピューターの管理者権限が必要です。

  1. VNet に接続するには、クライアント コンピューターで VPN 設定に移動し、作成した VPN 接続を見つけます。 仮想ネットワークと同じ名前が付いています。 [接続] を選択します。 証明書を使用することを示すポップアップ メッセージが表示される場合があります。 [続行] を選択して、昇格された特権を使用します。

  2. [接続] 状態ページで、 [接続] を選択して接続を開始します。 [証明書の選択] 画面が表示された場合は、表示されているクライアント証明書が接続に使用する証明書であることを確認します。 そうでない場合は、ドロップダウン矢印を使用して適切な証明書を選び、 [OK] を選択します。

    Windows コンピューターから接続する

  3. 接続が確立されました。

    コンピューターから Azure VNet への接続 - ポイント対サイト接続の図

接続に問題がある場合は、次の点を確認してください。

  • 証明書のエクスポート ウィザード を使用してクライアント証明書をエクスポートした場合は、[証明のパスにある証明書を可能であればすべて含む] を選択してクライアント証明書を .pfx ファイルとしてエクスポートしたことを確認してください。 この値を使用してクライアント証明書をエクスポートすると、ルート証明書情報もエクスポートされます。 クライアント コンピューターに証明書をインストールした後、.pfx ファイルのルート証明書もインストールされます。 ルート証明書がインストールされていることを確認するには、[ユーザー証明書の管理] を開いて [Trusted Root Certification Authorities\Certificates] を選択します。 ルート証明書が一覧にあることを確認します。認証が正しく機能するためには、ルート証明書が必要です。

  • エンタープライズ CA ソリューションによって発行された証明書を使用し、認証できない場合は、クライアント証明書の認証の順序を確認します。 認証の一覧の順序を確認するには、クライアント証明書をダブルクリックし、[詳細] タブ、[拡張キー使用法] の順に選択します。 一覧の最初の項目が "クライアント認証" であることを確認します。 そうでない場合は、一覧の最初の項目が "クライアント認証" であるユーザー テンプレートに基づいたクライアント証明書を発行します。

  • P2S のトラブルシューティングの補足情報については、P2S 接続のトラブルシューティングに関するページを参照してください。

Mac VPN クライアント

[ネットワーク] ダイアログ ボックスで使用するクライアント プロファイルを探し、 [接続] をクリックします。 手順の詳細については、Mac (OS X) のインストールに関するセクションを参照してください。 接続に問題がある場合は、仮想ネットワーク ゲートウェイが Basic SKU を使用していないことを確認します。 Basic SKU は Mac クライアントではサポートされていません。

Mac の接続

接続を確認するには

ここで紹介する手順は、Windows クライアントに適用されます。

  1. VPN 接続がアクティブであることを確認するには、管理者特権でのコマンド プロンプトを開いて、 ipconfig/all を実行します。

  2. 結果を表示します。 受信した IP アドレスが、構成で指定したポイント対サイト VPN クライアント アドレス プール内のアドレスのいずれかであることに注意してください。 結果は次の例のようになります。

    PPP adapter VNet1:
       Connection-specific DNS Suffix .:
       Description.....................: VNet1
       Physical Address................:
       DHCP Enabled....................: No
       Autoconfiguration Enabled.......: Yes
       IPv4 Address....................: 172.16.201.13(Preferred)
       Subnet Mask.....................: 255.255.255.255
       Default Gateway.................:
       NetBIOS over Tcpip..............: Enabled
    

仮想マシンに接続するには

ここで紹介する手順は、Windows クライアントに適用されます。

リモート デスクトップ接続を作成すると、VNet にデプロイされている VM に接続できます。 VM に接続できるかどうかを初めて確認する際に最も良い方法は、その VM のコンピューター名ではなく、プライベート IP アドレスを使って接続してみることです。 この方法であれば、名前の解決が適切に構成されているかではなく、VM に接続できるかどうかをテストすることができます。

  1. プライベート IP アドレスを特定します。 VM のプライベート IP アドレスは、Azure Portal で VM のプロパティを表示するか、PowerShell を使うと確認できます。

    • Azure Portal を使用する場合: Azure Portal で仮想マシンを探します。 VM のプロパティを表示すると、 プライベート IP アドレスが表示されます。

    • PowerShell を使用する場合: 以下の例に示したコマンドを使用すると、リソース グループに含まれる VM とプライベート IP アドレスの一覧が表示されます。 このコマンドは、使用前に変更を加える必要はありません。

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where VirtualMachine -ne $null
      
      foreach($Nic in $Nics)
      {
      $VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
      $Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
      $Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
      Write-Output "$($VM.Name): $Prv,$Alloc"
      }
      
  2. ポイント対サイト VPN 接続を使って VNet に接続していることを確認します。

  3. タスク バーの検索ボックスに「RDP」または「リモート デスクトップ接続」と入力してリモート デスクトップ接続を開き、リモート デスクトップ接続 を選択します。 このほか、PowerShell で "mstsc" コマンドを使ってリモート デスクトップ接続を開くこともできます。

  4. リモート デスクトップ接続で、VM のプライベート IP アドレスを入力します。 必要に応じて [オプションの表示] をクリックして追加の設定を済ませたら、接続します。

接続のトラブルシューティング

VPN 接続を使って仮想マシンに接続する際に問題が発生した場合には、次のことを確認してください。

  • VPN 接続が成功したことを確認します。

  • VM のプライベート IP アドレスに接続できていることを確認します。

  • プライベート IP アドレスを使って VM に接続できるものの、コンピューター名では接続できない場合には、DNS が正しく構成されているかどうかを確認します。 VM の名前解決の動作について詳しくは、VM の名前解決に関するページを参照してください。

  • 詳細については、VM に対するリモート デスクトップ接続のトラブルシューティングに関するページを参照してください。

  • VNet に対して DNS サーバーの IP アドレスが指定された後に VPN クライアント構成パッケージが生成されたことを確認します。 DNS サーバーの IP アドレスを更新した場合は、新しい VPN クライアント構成パッケージを生成してインストールしてください。

  • 接続元のコンピューターのイーサネット アダプターに割り当てられている IPv4 アドレスを "ipconfig" でチェックします。 その IP アドレスが、接続先の VNet のアドレス範囲内または VPNClientAddressPool のアドレス範囲内にある場合、これを "アドレス空間の重複" といいます。 アドレス空間がこのように重複していると、ネットワーク トラフィックが Azure に到達せずローカル ネットワーク上に留まることになります。

ルート証明書を追加または削除するには

信頼されたルート証明書を Azure に追加したり、Azure から削除したりできます。 ルート証明書を削除すると、そのルート証明書から生成された証明書を持つクライアントは認証できなくなり、接続できなくなります。 クライアントの認証と接続を正常に実行できるようにするには、Azure に信頼されている (Azure にアップロードされている) ルート証明書から生成した新しいクライアント証明書をインストールする必要があります。 この手順では、(Azure Cloud Shell ではなく) お使いのコンピューターに Azure PowerShell コマンドレットがローカルにインストールされている必要があります。 また、Azure portal を使用してルート証明書を追加することもできます。

追加するには:

Azure には、最大 20 個のルート証明書 .cer ファイルを追加できます。 ルート証明書は次の手順で追加できます。

  1. アップロードする .cer ファイルを準備します。

    $filePathForCert = "C:\cert\P2SRootCert3.cer"
    $cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2($filePathForCert)
    $CertBase64_3 = [system.convert]::ToBase64String($cert.RawData)
    
  2. ファイルをアップロードします。 ファイルは一度に 1 つしかアップロードできません。

    Add-AzVpnClientRootCertificate -VpnClientRootCertificateName $P2SRootCertName -VirtualNetworkGatewayname "VNet1GW" -ResourceGroupName "TestRG1" -PublicCertData $CertBase64_3
    
  3. 証明書ファイルがアップロードされたことを確認するには:

    Get-AzVpnClientRootCertificate -ResourceGroupName "TestRG1" `
    -VirtualNetworkGatewayName "VNet1GW"
    

削除するには:

  1. 変数を宣言します。 削除する証明書と一致するように、例の変数を変更します。

    $GWName = "Name_of_virtual_network_gateway"
    $RG = "Name_of_resource_group"
    $P2SRootCertName2 = "ARMP2SRootCert2.cer"
    $MyP2SCertPubKeyBase64_2 = "MIIC/zCCAeugAwIBAgIQKazxzFjMkp9JRiX+tkTfSzAJBgUrDgMCHQUAMBgxFjAUBgNVBAMTDU15UDJTUm9vdENlcnQwHhcNMTUxMjE5MDI1MTIxWhcNMzkxMjMxMjM1OTU5WjAYMRYwFAYDVQQDEw1NeVAyU1Jvb3RDZXJ0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjIXoWy8xE/GF1OSIvUaA0bxBjZ1PJfcXkMWsHPzvhWc2esOKrVQtgFgDz4ggAnOUFEkFaszjiHdnXv3mjzE2SpmAVIZPf2/yPWqkoHwkmrp6BpOvNVOpKxaGPOuK8+dql1xcL0eCkt69g4lxy0FGRFkBcSIgVTViS9wjuuS7LPo5+OXgyFkAY3pSDiMzQCkRGNFgw5WGMHRDAiruDQF1ciLNojAQCsDdLnI3pDYsvRW73HZEhmOqRRnJQe6VekvBYKLvnKaxUTKhFIYwuymHBB96nMFdRUKCZIiWRIy8Hc8+sQEsAML2EItAjQv4+fqgYiFdSWqnQCPf/7IZbotgQIDAQABo00wSzBJBgNVHQEEQjBAgBAkuVrWvFsCJAdK5pb/eoCNoRowGDEWMBQGA1UEAxMNTXlQMlNSb290Q2VydIIQKazxzFjMkp9JRiX+tkTfSzAJBgUrDgMCHQUAA4IBAQA223veAZEIar9N12ubNH2+HwZASNzDVNqspkPKD97TXfKHlPlIcS43TaYkTz38eVrwI6E0yDk4jAuPaKnPuPYFRj9w540SvY6PdOUwDoEqpIcAVp+b4VYwxPL6oyEQ8wnOYuoAK1hhh20lCbo8h9mMy9ofU+RP6HJ7lTqupLfXdID/XevI8tW6Dm+C/wCeV3EmIlO9KUoblD/e24zlo3YzOtbyXwTIh34T0fO/zQvUuBqZMcIPfM1cDvqcqiEFLWvWKoAnxbzckye2uk1gHO52d8AVL3mGiX8wBJkjc/pMdxrEvvCzJkltBmqxTM6XjDJALuVh16qFlqgTWCIcb7ju"
    
  2. 証明書を削除します。

    Remove-AzVpnClientRootCertificate -VpnClientRootCertificateName $P2SRootCertName2 -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG -PublicCertData $MyP2SCertPubKeyBase64_2
    
  3. 次の例を使用して、証明書が正常に削除されたことを確認します。

    Get-AzVpnClientRootCertificate -ResourceGroupName "TestRG1" `
    -VirtualNetworkGatewayName "VNet1GW"
    

クライアント証明書を失効または回復するには

クライアント証明書は失効させることができます。 証明書失効リストを使用すると、個々のクライアント証明書に基づくポイント対サイト接続を選択して拒否することができます。 これは、信頼されたルート証明書を削除することとは異なります。 信頼されたルート証明書 .cer を Azure から削除すると、失効したルート証明書によって生成または署名されたすべてのクライアント証明書のアクセス権が取り消されます。 ルート証明書ではなくクライアント証明書を失効させることで、ルート証明書から生成されたその他の証明書は、その後も認証に使用できます。

一般的な方法としては、ルート証明書を使用してチームまたは組織レベルでアクセスを管理し、失効したクライアント証明書を使用して、個々のユーザーの細かいアクセス制御を構成します。

取り消するには、次を実行します。

  1. クライアント証明書の拇印を取得します。 詳細については、「方法: 証明書のサムプリントを取得する」を参照してください。

  2. 情報をテキスト エディターにコピーし、文字列が 1 つにつながるようにスペースをすべて削除します。 この文字列を次の手順で変数として宣言します。

  3. 変数を宣言します。 必ず前の手順で取得した拇印を宣言してください。

    $RevokedClientCert1 = "NameofCertificate"
    $RevokedThumbprint1 = "‎51ab1edd8da4cfed77e20061c5eb6d2ef2f778c7"
    $GWName = "Name_of_virtual_network_gateway"
    $RG = "Name_of_resource_group"
    
  4. 失効した証明書のリストに拇印を追加します。 拇印が追加されると、"Succeeded" と表示されます。

    Add-AzVpnClientRevokedCertificate -VpnClientRevokedCertificateName $RevokedClientCert1 `
    -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG `
    -Thumbprint $RevokedThumbprint1
    
  5. 証明書失効リストに拇印が追加されたことを確認します。

    Get-AzVpnClientRevokedCertificate -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG
    
  6. 拇印が追加された後は、証明書を接続に使用することができなくなります。 この証明書を使用して接続を試みたクライアントには、証明書が無効になっていることを示すメッセージが表示されます。

回復するには:

失効したクライアント証明書のリストから拇印を削除することで、クライアント証明書を回復できます。

  1. 変数を宣言します。 回復する証明書用の適切な拇印を宣言していることを確認してください。

    $RevokedClientCert1 = "NameofCertificate"
    $RevokedThumbprint1 = "‎51ab1edd8da4cfed77e20061c5eb6d2ef2f778c7"
    $GWName = "Name_of_virtual_network_gateway"
    $RG = "Name_of_resource_group"
    
  2. 証明書の失効リストから証明書の拇印を削除します。

    Remove-AzVpnClientRevokedCertificate -VpnClientRevokedCertificateName $RevokedClientCert1 `
    -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG -Thumbprint $RevokedThumbprint1
    
  3. 失効リストから拇印が削除されているかどうかを確認します。

    Get-AzVpnClientRevokedCertificate -VirtualNetworkGatewayName $GWName -ResourceGroupName $RG
    

ポイント対サイトに関する FAQ

ポイント対サイトの追加情報については、VPN Gateway のポイント対サイトに関する FAQに関するページを参照してください

次のステップ

接続が完成したら、仮想ネットワークに仮想マシンを追加することができます。 詳細については、Virtual Machines に関するページを参照してください。 ネットワークと仮想マシンの詳細については、「Azure と Linux の VM ネットワークの概要」を参照してください。

P2S のトラブルシューティング情報については、Azure ポイント対サイト接続の問題のトラブルシューティングに関するページを参照してください。