PowerShell を使用してサイト間 VPN 接続を持つ VNet を作成する

この記事では、PowerShell を使用して、オンプレミス ネットワークから VNet へのサイト間 VPN gateway 接続を作成する方法について説明します。 この記事の手順は、Resource Manager デプロイ モデルに適用されます。 また、この構成の作成には、次のリストから別のオプションを選択して、別のデプロイ ツールまたはデプロイ モデルを使用することもできます。

サイト間 VPN Gateway 接続は、IPsec/IKE (IKEv1 または IKEv2) VPN トンネルを介してオンプレミス ネットワークを Azure 仮想ネットワークに接続するために使用します。 この種類の接続では、外部接続用パブリック IP アドレスが割り当てられていてるオンプレミスの VPN デバイスが必要です。 VPN Gateway の詳細については、「VPN Gateway について」を参照してください。

Diagram of site-to-site VPN Gateway cross-premises connections.

準備

構成を開始する前に、以下の条件を満たしていることを確認します。

  • 互換性のある VPN デバイスがあり、デバイスを構成できる人員がいることを確認します。 互換性のある VPN デバイスとデバイスの構成の詳細については、VPN デバイスの概要に関する記事を参照してください。
  • VPN デバイスの外部接続用パブリック IPv4 アドレスがあることを確認します。
  • オンプレミス ネットワーク構成に含まれている IP アドレス範囲になじみがない場合は、それらの詳細を提供できる担当者と連携する必要があります。 この構成を作成する場合は、Azure がオンプレミスの場所にルーティングする IP アドレス範囲のプレフィックスを指定する必要があります。 オンプレミス ネットワークのサブネットと接続先の仮想ネットワーク サブネットが重複しないようにしなければなりません。

Azure PowerShell

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

Cloud Shell を開くには、コード ブロックの右上の隅にある [Cloudshell を開く] を選択するだけです。 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 モジュールのインストール)」を参照してください。

値の例

この記事の例では、次の値を使用します。 この値を使用して、テスト環境を作成できます。また、この値を参考にしながら、この記事の例を確認していくこともできます。

#Example values

VnetName                = VNet1
ResourceGroup           = TestRG1
Location                = East US 
AddressSpace            = 10.1.0.0/16 
SubnetName              = Frontend 
Subnet                  = 10.1.0.0/24 
GatewaySubnet           = 10.1.255.0/27
LocalNetworkGatewayName = Site1
LNG Public IP           = <On-premises VPN device IP address> 
Local Address Prefixes  = 10.0.0.0/24, 20.0.0.0/24
Gateway Name            = VNet1GW
PublicIP                = VNet1GWPIP
Gateway IP Config       = gwipconfig1 
VPNType                 = RouteBased 
GatewayType             = Vpn 
ConnectionName          = VNet1toSite1

1.仮想ネットワークとゲートウェイ サブネットを作成する

まだ仮想ネットワークがない場合は作成します。 仮想ネットワークを作成する際は、指定したアドレス空間がオンプレミス ネットワーク内に存在するあらゆるアドレス空間と重複していないことを確認します。

Note

この VNet をオンプレミスの場所に接続するには、オンプレミスのネットワーク管理者と調整を行って、この仮想ネットワーク専用に使用できる IP アドレスの範囲を見つけ出す必要があります。 VPN 接続の両側に重複するアドレス範囲が存在する場合、トラフィックが期待どおりにルーティングされない可能性があります。 また、この VNet を別の VNet に接続する場合、アドレス空間を他の VNet と重複させることはできません。 したがって、慎重にネットワーク構成を計画してください。

ゲートウェイ サブネットについて

仮想ネットワーク ゲートウェイは、"ゲートウェイ サブネット" と呼ばれる特定のサブネットを使用します。 ゲートウェイ サブネットは、仮想ネットワークの構成時に指定した仮想ネットワーク IP アドレス範囲に含まれます。 そこには、仮想ネットワーク ゲートウェイのリソースやサービスによって使用される IP アドレスが含まれます。 ゲートウェイのリソースを Azure でデプロイするためには、サブネットに "GatewaySubnet" という名前を付ける必要があります。 異なるサブネットを指定してゲートウェイのリソースをデプロイすることはできません。 "GatewaySubnet" という名前のサブネットが存在しない場合、VPN ゲートウェイを作成するときにエラーが発生します。

ゲートウェイ サブネットを作成するときに、サブネットに含まれる IP アドレスの数を指定します。 必要な IP アドレスの数は、作成する VPN ゲートウェイの構成によって異なります。 一部の構成では、他の構成よりも多くの IP アドレスを割り当てる必要があります。 作成するゲートウェイ サブネットには /27 または /28 を使用することをお勧めします。

アドレス空間がサブネットと重複していることを示すエラーや、ご使用の仮想ネットワークのアドレス空間内にサブネットが存在しないことを示すエラーが表示された場合は、VNet のアドレス範囲をチェックしてください。 仮想ネットワーク用に作成したアドレス範囲から、十分な IP アドレスを確保できない場合があります。 たとえば、既定のサブネットがアドレス範囲全体にわたる場合、新たに別のサブネットを作成するだけの IP アドレスは残っていません。 既存のアドレス空間内のサブネットを調整して IP アドレスを解放するか、または新たに別のアドレス範囲を指定して、そこにゲートウェイ サブネットを作成してください。

重要

ゲートウェイ サブネットを使用する場合は、ゲートウェイ サブネットにネットワーク セキュリティ グループ (NSG) を関連付けないようにしてください。 ネットワーク セキュリティ グループをこのサブネットに関連付けると、仮想ネットワーク ゲートウェイ (VPN と ExpressRoute ゲートウェイ) が想定どおりに機能しなくなる可能性があります。 ネットワーク セキュリティ グループの詳細については、ネットワーク セキュリティ グループの概要に関するページを参照してください。

仮想ネットワークとゲートウェイ サブネットを作成する

次の例では、仮想ネットワークとゲートウェイ サブネットを作成します。 ゲートウェイ サブネットを追加する必要がある仮想ネットワークが既にある場合は、「作成済みの仮想ネットワークにゲートウェイ サブネットを追加するには」を参照してください。

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

New-AzResourceGroup -Name TestRG1 -Location 'East US'

仮想ネットワークを作成します。

  1. 変数を設定します。

    $subnet1 = New-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27
    $subnet2 = New-AzVirtualNetworkSubnetConfig -Name 'Frontend' -AddressPrefix 10.1.0.0/24
    
  2. VNet を作成します。

    New-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1 `
    -Location 'East US' -AddressPrefix 10.1.0.0/16 -Subnet $subnet1, $subnet2
    

作成済みの仮想ネットワークにゲートウェイ サブネットを追加するには

既に仮想ネットワークがあるものの、ゲートウェイ サブネットを追加する必要がある場合は、このセクションの手順を使用します。

  1. 変数を設定します。

    $vnet = Get-AzVirtualNetwork -ResourceGroupName TestRG1 -Name VNet1
    
  2. ゲートウェイ サブネットを作成します。

    Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.1.255.0/27 -VirtualNetwork $vnet
    
  3. 構成を設定します。

    Set-AzVirtualNetwork -VirtualNetwork $vnet
    

2.ローカル ネットワーク ゲートウェイを作成する

ローカル ネットワーク ゲートウェイ (LNG) は通常、オンプレミスの場所を指します。 これは仮想ネットワーク ゲートウェイと同じではありません。 サイトに Azure が参照できる名前を付け、接続を作成するオンプレミス VPN デバイスの IP アドレスを指定します。 また、VPN ゲートウェイを介して VPN デバイスにルーティングされる IP アドレスのプレフィックスも指定します。 指定するアドレスのプレフィックスは、オンプレミス ネットワークのプレフィックスです。 オンプレミス ネットワークが変わった場合は、プレフィックスを簡単に更新できます。

次のいずれかの例を選択します。 この例で使用される値は次のとおりです。

  • GatewayIPAddress は、オンプレミス VPN デバイスの IP アドレスです。
  • AddressPrefix は、オンプレミスのアドレス空間です。

単一のアドレス プレフィックスの例

New-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1 `
-Location 'East US' -GatewayIpAddress '23.99.221.164' -AddressPrefix '10.0.0.0/24'

複数のアドレス プレフィックスの例

New-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1 `
-Location 'East US' -GatewayIpAddress '23.99.221.164' -AddressPrefix @('20.0.0.0/24','10.0.0.0/24')

3. パブリック IP アドレスの要求

VPN ゲートウェイには、パブリック IP アドレスが必要です。 これにはまず IP アドレスのリソースを要求したうえで、仮想ネットワーク ゲートウェイの作成時にそのリソースを参照する必要があります。 IP アドレスは、VPN ゲートウェイの作成時にリソースに対して動的に割り当てられます。 パブリック IP アドレスが変わるのは、ゲートウェイが削除され、再度作成されたときのみです。 VPN ゲートウェイのサイズ変更、リセット、その他の内部メンテナンス/アップグレードでは、IP アドレスは変わりません。

仮想ネットワークの VPN ゲートウェイ用のパブリック IP アドレスを要求します。

$gwpip= New-AzPublicIpAddress -Name VNet1GWPIP -ResourceGroupName TestRG1 -Location 'East US' -AllocationMethod Static -Sku Standard

4.ゲートウェイ IP アドレス指定の構成を作成する

ゲートウェイの構成で、使用するサブネット ('GatewaySubnet') とパブリック IP アドレスを定義します。 次の例を使用して、ゲートウェイの構成を作成します。

$vnet = Get-AzVirtualNetwork -Name VNet1 -ResourceGroupName TestRG1
$subnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet
$gwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $subnet.Id -PublicIpAddressId $gwpip.Id

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

仮想ネットワーク VPN ゲートウェイを作成します。 選択したゲートウェイ SKU によっては、ゲートウェイの作成に 45 分以上かかる場合も少なくありません。 この例では、次の値を使用します。

  • サイト間構成の -GatewayTypeVpn です。 ゲートウェイの種類は常に、実装する構成に対応するものとなります。 たとえば、他のゲートウェイ構成には -GatewayType ExpressRoute が必要な場合があります。
  • -VpnType には、RouteBased (ドキュメントによっては動的ゲートウェイと呼ばれます) または PolicyBased (ドキュメントによっては静的ゲートウェイと呼ばれます) を指定できます。 VPN ゲートウェイの種類については、「VPN Gateway について」を参照してください。
  • 使用するゲートウェイ SKU を選択します。 特定の SKU には構成の制限があります。 詳細については、「ゲートウェイの SKU」を参照してください。 VPN ゲートウェイを作成するときに -GatewaySku に関するエラーが発生した場合は、PowerShell コマンドレットの最新バージョンがインストールされていることを確認してください。
New-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1 `
-Location 'East US' -IpConfigurations $gwipconfig -GatewayType Vpn `
-VpnType RouteBased -GatewaySku VpnGw2

6.VPN デバイスの構成

オンプレミス ネットワークとのサイト間接続には VPN デバイスが必要です。 この手順では、VPN デバイスを構成します。 VPN デバイスを構成する場合は、次の項目が必要です。

  • 共有キー。 これは、サイト間 VPN 接続を作成するときに指定するのと同じ共有キーです。 ここで紹介している例では、基本的な共有キーを使用しています。 実際には、もっと複雑なキーを生成して使用することをお勧めします。

  • 仮想ネットワーク ゲートウェイのパブリック IP アドレス。 パブリック IP アドレスは、Azure Portal、PowerShell、または CLI を使用して確認できます。 PowerShell を使用して仮想ネットワーク ゲートウェイのパブリック IP アドレスを検索するには、次の例を使用します。 この例では、VNet1GWPIP は前の手順で作成したパブリック IP アドレス リソースの名前です。

    Get-AzPublicIpAddress -Name VNet1GWPIP -ResourceGroupName TestRG1
    

VPN デバイス構成スクリプトをダウンロードするには

ご利用の VPN デバイスによっては、VPN デバイス構成スクリプトをダウンロードできる場合があります。 詳細については、VPN デバイス構成スクリプトのダウンロードに関するページを参照してください。

その他の構成情報については、次のリンクを参照してください

7.VPN 接続を作成する

次に、仮想ネットワーク ゲートウェイと VPN デバイスの間にサイト間 VPN 接続を作成します。 サンプルの値は必ず実際の値に変更してください。 共有キーは、VPN デバイスの構成に使用したものと同じ値にする必要があります。 サイト間接続の '-ConnectionType' は IPsec です。

  1. 変数を設定します。

    $gateway1 = Get-AzVirtualNetworkGateway -Name VNet1GW -ResourceGroupName TestRG1
    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. 接続を作成します。

    New-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1 `
    -Location 'East US' -VirtualNetworkGateway1 $gateway1 -LocalNetworkGateway2 $local `
    -ConnectionType IPsec -SharedKey 'abc123'
    

しばらくすると、接続が確立されます。

8.VPN 接続の確認

VPN 接続を検証する方法はいくつかあります。

"Get-AzVirtualNetworkGatewayConnection" コマンドレットを使用して、接続が成功したことを確認できます。"-Debug" は指定しても指定しなくてもかまいません。

  1. 次のコマンドレットを使用します。値は実際の値に置き換えてください。 プロンプトが表示されたら、"A" を選択して "すべて" (All) を実行します。 この例では、テストする接続の名前が "-Name" で示されています。

    Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
    
  2. コマンドレットの実行後、値を確認します。 以下の例では、接続状態は "Connected" と表示され、受信バイトと送信バイトを確認できます。

    "connectionStatus": "Connected",
    "ingressBytesTransferred": 33509044,
    "egressBytesTransferred": 4142431
    

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

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

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

    • Azure portal: Azure portal で VM を見つけます。 VM のプロパティを表示すると、 プライベート IP アドレスが表示されます。

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

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where-Object 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. 仮想ネットワークに接続していることを確認します。

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

  4. リモート デスクトップ接続で、VM のプライベート IP アドレスを入力します。 [オプションの表示] を選んでその他の設定を調整してから、接続できます。

VPN 接続を使って VM に接続する際に問題が発生した場合には、次の点を確認してください。

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

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

ローカル ネットワーク ゲートウェイの IP アドレスのプレフィックスを変更するには

オンプレミスの場所にルーティングする IP アドレス プレフィックスが変更された場合には、ローカル ネットワーク ゲートウェイを変更できます。 このような例を使用するときは、実際の環境に合わせて値を変更してください。

アドレス プレフィックスを追加するには:

  1. LocalNetworkGateway の変数を設定します。

    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. プレフィックスを変更します。 指定する値で以前の値が上書きされます。

    Set-AzLocalNetworkGateway -LocalNetworkGateway $local `
    -AddressPrefix @('10.101.0.0/24','10.101.1.0/24','10.101.2.0/24')
    

アドレス プレフィックスを削除するには:

不要になったプレフィックスは削除します。 この例では、プレフィックス 10.101.2.0/24 (前の例に含まれる) が不要になったため、ローカル ネットワーク ゲートウェイを更新してそのプレフィックスを削除します。

  1. LocalNetworkGateway の変数を設定します。

    $local = Get-AzLocalNetworkGateway -Name Site1 -ResourceGroupName TestRG1
    
  2. 更新されたプレフィックスでゲートウェイを設定します。

    Set-AzLocalNetworkGateway -LocalNetworkGateway $local `
    -AddressPrefix @('10.101.0.0/24','10.101.1.0/24')
    

ローカル ネットワーク ゲートウェイの IP アドレスを変更するには

接続先の VPN デバイスのパブリック IP アドレスが変更された場合には、ローカル ネットワーク ゲートウェイを変更してアドレスの変更を反映する必要があります。 この値を変更するときには、同時にアドレス プレフィックスを変更することもできます。 現在の設定を上書きするときは、必ずローカル ネットワーク ゲートウェイの既存の名前を使用してください。 別の名前を使用した場合には、既存のゲートウェイが上書きされずに、新しいローカル ネットワーク ゲートウェイが作成されます。

New-AzLocalNetworkGateway -Name Site1 `
-Location "East US" -AddressPrefix @('10.101.0.0/24','10.101.1.0/24') `
-GatewayIpAddress "5.4.3.2" -ResourceGroupName TestRG1

ゲートウェイ接続を削除するには

接続の名前がわからない場合は、"Get-AzVirtualNetworkGatewayConnection" コマンドレットを使用して調べることができます。

Remove-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 `
-ResourceGroupName TestRG1

次のステップ