異なるデプロイ モデルの仮想ネットワークを PowerShell を使用して接続する

この記事は、クラシック VNet を Resource Manager VNet に接続し、異なるデプロイ モデルにあるリソースを相互に通信できるようにするのに役立ちます。 この記事の手順では、PowerShell を使用します。

この記事は、クラシック (レガシ) デプロイ モデルを使用して作成された VNet が既にあり、そのクラシック VNet を、最新のデプロイ モデルを使用して作成された別の VNet に接続する必要があるお客様を対象としています。 レガシ VNet がない場合は、代わりに、VNet 間接続の作成に関する記事を使用してください。

アーキテクチャ

クラシック VNet から Resource Manager VNet への接続は、VNet をオンプレミス サイトの場所に接続することと似ています。 どちらの接続タイプでも、VPN ゲートウェイを使用して、IPsec/IKE を使った安全なトンネルが確保されます。 別のサブスクリプション、別のリージョンに存在する VNet 間で接続を作成することができます。 オンプレミスのネットワークに既に接続されている VNet を接続することもできます。ただし、ゲートウェイは動的またはルート ベースである場合に限ります。 VNet 間接続の詳細については、「VNet 間接続に関してよく寄せられる質問」を参照してください。

この構成では、仮想ネットワーク間で IPsec/IKE VPN トンネルを介した VPN Gateway 接続を作成します。 VNet のアドレス範囲が、互いに重複していないこと、または接続先のすべてのローカル ネットワークと重複していないことを確認します。

次の表には、VNet の例とローカル サイトの定義方法の例を示します。

Virtual Network アドレス空間 リージョン ローカル ネットワーク サイトへの接続
ClassicVNet (10.1.0.0/16) 米国西部 RMVNetSite (192.168.0.0/16)
RMVNet (192.168.0.0/16) 米国東部 ClassicVNetSite (10.1.0.0/16)

前提条件

次の手順では、各 VNet 用に動的またはルート ベースのゲートウェイを構成してゲートウェイ間の VPN 接続を作成する際に必要な設定について説明します。 この構成では、静的またはポリシー ベースのゲートウェイはサポートされていません。

これらの手順は、レガシのクラシック VNet と Resource Manager VNet が既に作成済みであることを前提としています。

  • これらの VNet のアドレス範囲が互いに重複しておらず、ゲートウェイの接続先になる可能性のある他の接続の範囲と重複していないことを確認します。

  • この記事では、PowerShell を使用します。 Resource Manager と Service Management の両方の最新 PowerShell コマンドレットをコンピューターにインストールします。

    Azure Cloud Shell 環境を使用していくつかの PowerShell コマンドを実行することは可能ですが、接続を適切に作成するには、両方のバージョンのコマンドレットをインストールする必要があります。

    詳細については、「 Azure PowerShell のインストールと構成の方法」を参照してください。

設定例

例をより良く理解するために、次の値を使用できます。

クラシック VNet

VNet Name = ClassicVNet
Resource Group = ClassicRG Location = West US
Virtual Network Address Spaces = 10.1.0.0/16
Subnet1 = 10.1.0.0/24
GatewaySubnet = 10.1.255.0/27
Local Network Name = RMVNetSite
GatewayType = DynamicRouting

Resource Manager の VNet

VNet Name = RMVNet
リソース グループ = RMRG
Virtual Network IP Address Spaces = 192.168.0.0/16
Subnet1 = 192.168.1.0/24
GatewaySubnet = 192.168.255.0/27
Location = East US
Gateway public IP name = rmgwpip
Local Network Gateway = ClassicVNetSite
Virtual Network Gateway name = RMGateway
Gateway IP addressing configuration = gwipconfig

クラシック VNet を構成する

このセクションでは、既存のクラシック VNet を構成します。 VNet に既にゲートウェイがある場合は、ゲートウェイがルート ベースであることを確認してから、次のセクションに進みます。 ゲートウェイがルート ベースでない場合は、次の手順に進む前にゲートウェイを削除します。 後で新しいゲートウェイを作成する機会があります。

1.ネットワーク構成ファイルをダウンロードする

  1. 管理特権を使って PowerShell コンソールで Azure アカウントにサインインします。 次のコマンドレットでは、Azure アカウントのサインイン資格情報が求められます。 ログイン後にアカウント設定がダウンロードされ、Azure PowerShell で使用できるようになります。 このセクションでは、クラシック Service Management (SM) Azure PowerShell コマンドレットが使用されます。

    Add-AzureAccount
    

    Azure サブスクリプションを取得します。

    Get-AzureSubscription
    

    複数のサブスクリプションがある場合は、使用するサブスクリプションを選択します。

    Select-AzureSubscription -SubscriptionName "Name of subscription"
    
  2. コンピューター上にディレクトリを作成します。 この例では、AzureNet を作成しました。

  3. 次のコマンドを実行して、Azure のネットワーク構成ファイルをエクスポートします。 必要に応じて、ファイルの場所を変更して別の場所にエクスポートすることもできます。

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  4. ダウンロードした .xml ファイルを開き、編集します。 ネットワーク構成ファイルの例については、 ネットワークの構成スキーマに関するページを参照してください。

  5. VirtualNetworkSite name= の値を書き留めておきます。 ポータルを使用してクラシック VNet を作成した場合、名前は、ポータルの "ClassicVNet" ではなく、"Group ClassicRG ClassicVNet" に似た形式に従います。

2.ゲートウェイ サブネットを確認する

VirtualNetworkSites 要素で、ゲートウェイ サブネットが作成されていない場合は、VNet に追加します。 ゲートウェイ サブネットの名前は "GatewaySubnet" である必要があります。それ以外の場合、Azure ではそれを認識してゲートウェイ サブネットとして使用できません。

重要

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

例:

<VirtualNetworkSites>
  <VirtualNetworkSite name="ClassicVNet" Location="West US">
    <AddressSpace>
      <AddressPrefix>10.1.0.0/16</AddressPrefix>
    </AddressSpace>
    <Subnets>
      <Subnet name="Subnet1">
        <AddressPrefix>10.1.0.0/24</AddressPrefix>
      </Subnet>
      <Subnet name="GatewaySubnet">
        <AddressPrefix>10.1.255.0/27</AddressPrefix>
      </Subnet>
    </Subnets>
  </VirtualNetworkSite>
</VirtualNetworkSites>

3.ローカル ネットワーク サイトを追加する

追加するローカル ネットワーク サイトは、接続先の RM VNet を表します。 まだ存在していない場合は、LocalNetworkSites 要素をファイルに追加します。 構成のこの時点では、Resource Manager の VNet のゲートウェイをまだ作成していないため、VPNGatewayAddress は任意の有効なパブリック IP アドレスにすることができます。 RM ゲートウェイを作成したら、このプレースホルダー IP アドレスを、RM ゲートウェイに割り当てられている正しいパブリック IP アドレスに置き換えます。

<LocalNetworkSites>
  <LocalNetworkSite name="RMVNetSite">
    <AddressSpace>
      <AddressPrefix>192.168.0.0/16</AddressPrefix>
    </AddressSpace>
    <VPNGatewayAddress>5.4.3.2</VPNGatewayAddress>
  </LocalNetworkSite>
</LocalNetworkSites>

4.VNet をローカル ネットワーク サイトに関連付ける

このセクションでは、VNet の接続先のローカル ネットワーク サイトを指定します。 ここでは、先ほど参照した Resource Manager の VNet が該当します。 名前が一致することを確認します。 この手順では、ゲートウェイは作成しません。 ゲートウェイの接続先となるローカル ネットワークを指定します。

<Gateway>
  <ConnectionsToLocalNetwork>
    <LocalNetworkSiteRef name="RMVNetSite">
      <Connection type="IPsec" />
    </LocalNetworkSiteRef>
  </ConnectionsToLocalNetwork>
</Gateway>

5.ファイルを保存してアップロードする

ファイルを保存してから、次のコマンドを実行して Azure にインポートします。 必要に応じて、ファイル パスを環境に合わせて変更してください。

Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml

インポートが成功したことを示す同様の結果が表示されます。

OperationDescription        OperationId                      OperationStatus                                                
--------------------        -----------                      ---------------                                                
Set-AzureVNetConfig        e0ee6e66-9167-cfa7-a746-7casb9    Succeeded 

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

このサンプルを実行する前に、ダウンロードしたネットワーク構成ファイルで、Azure が期待する正確な名前を確認します。 ネットワーク構成ファイルには、クラシック仮想ネットワークの値が含まれています。 ポータルを使用してクラシック VNet を作成した場合、ネットワーク構成ファイル内の仮想ネットワーク名は異なります。 たとえば、Azure Portal を使って、"Classic VNet" という名前のクラシック VNet を、"ClassicRG" という名前のリソース グループに作成した場合、ネットワーク構成ファイルでは "Group ClassicRG Classic VNet" という名前に変換されます。 PowerShell を使用する場合は、ネットワーク構成ファイルに含まれる名前を常に使用します。スペースを含む VNet の名前を指定する場合は、値を引用符で囲みます。

次の例を使用して、動的ルーティング ゲートウェイを作成します。

New-AzureVNetGateway -VNetName ClassicVNet -GatewayType DynamicRouting

Get-AzureVNetGateway コマンドレットを使用すると、ゲートウェイの状態を確認できます。

RM VNet ゲートウェイを構成する

前提条件では、既に RM VNet を作成済みであると仮定しています。 この手順では、RM VNet の VPN ゲートウェイを作成します。 クラシック VNet のゲートウェイのパブリック IP アドレスを取得するまで、手順を開始しないでください。

  1. PowerShell コンソールでお使いの Azure アカウントにサインインします。 次のコマンドレットでは、Azure アカウントのサインイン資格情報が求められます。 サインイン後にアカウント設定がダウンロードされ、Azure PowerShell で使用できるようになります。 必要に応じて、"試してみる" 機能を使用して、ブラウザーで Azure Cloud Shell を起動できます。

    Azure Cloud Shell を使用している場合は、次のコマンドレットをスキップします。

    Connect-AzAccount
    

    適切なサブスクリプションを使用していることを確認するには、次のコマンドレットを実行します。

    Get-AzSubscription
    

    複数のサブスクリプションがある場合は、使用するサブスクリプションを指定します。

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. ローカル ネットワーク ゲートウェイを作成します。 仮想ネットワークでは、ローカル ネットワーク ゲートウェイは通常、オンプレミスの場所を指します。 ここでは、ローカル ネットワーク ゲートウェイはクラシック VNet を意味します。 Azure で参照できる名前を付けて、アドレス空間のプレフィックスも指定します。 指定した IP アドレス プレフィックスは、Azure がオンプレミスの場所に送信するトラフィックを特定するときに使用されます。 ここの情報を後で調整する必要がある場合は、ゲートウェイを作成する前に、値を変更してサンプルをもう一度実行することができます。

    -Name は、ローカル ネットワーク ゲートウェイを参照するために割り当てる名前です。
    -AddressPrefix は、クラシック VNet のアドレス空間です。
    -GatewayIpAddress は、クラシック VNet のゲートウェイのパブリック IP アドレスです。 適切な IP アドレスを反映するように、必ず次のサンプル テキストの "n.n.n.n" を変更してください。

    New-AzLocalNetworkGateway -Name ClassicVNetSite `
    -Location "West US" -AddressPrefix "10.1.0.0/16" `
    -GatewayIpAddress "n.n.n.n" -ResourceGroupName RMRG
    
  3. Resource Manager VNet の仮想ネットワーク ゲートウェイに割り当てるパブリック IP アドレスを要求します。 使用する IP アドレスを指定することはできません。 IP アドレスは仮想ネットワーク ゲートウェイに動的に割り当てられます。 ただし、これは IP アドレスが変更されるという意味ではありません。 仮想ネットワーク ゲートウェイの IP アドレスが変更されるのは、ゲートウェイが削除され、再度作成されたときのみです。 ゲートウェイのサイズ変更、リセット、その他の内部メンテナンス/アップグレードの際には変更されません。

    この手順では、後の手順で使用する変数も設定します。

    $ipaddress = New-AzPublicIpAddress -Name rmgwpip `
    -ResourceGroupName RMRG -Location 'EastUS' `
    -AllocationMethod Dynamic
    
  4. 仮想ネットワークにゲートウェイ サブネットがあることを確認します。 ゲートウェイ サブネットが存在しない場合は追加します。 ゲートウェイ サブネットには、必ず GatewaySubnetという名前を付けてください。

    $vnet = Get-AzVirtualNetwork -ResourceGroupName RMRG -Name RMVNet
    Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 192.168.255.0/27 -VirtualNetwork $vnet
    Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  5. 次のコマンドを実行して、ゲートウェイに使用されているサブネットを取得します。 この手順では、次の手順で使用する変数も設定します。

    -Name は、Resource Manager の VNet の名前です。
    -ResourceGroupName は、VNet が関連付けられているリソース グループです。 ゲートウェイ サブネットが正常に動作するには、ゲートウェイ サブネットがこの VNet に対して既に存在し、 GatewaySubnet という名前が付けられている必要があります。

    $subnet = Get-AzVirtualNetworkSubnetConfig -Name GatewaySubnet `
    -VirtualNetwork (Get-AzVirtualNetwork -Name RMVNet -ResourceGroupName RMRG)
    
  6. ゲートウェイ IP アドレス指定の構成を作成します。 ゲートウェイの構成で、使用するサブネットとパブリック IP アドレスを定義します。 次のサンプルを使用して、ゲートウェイの構成を作成します。

    この手順では、-SubnetId-PublicIpAddressId パラメーターに、それぞれサブネットと IP アドレス オブジェクトから ID プロパティを渡す必要があります。 単純な文字列を使用することはできません。 これらの変数は、パブリック IP を要求する手順とサブネットを取得する手順で設定されます。

    $gwipconfig = New-AzVirtualNetworkGatewayIpConfig `
    -Name gwipconfig -SubnetId $subnet.id `
    -PublicIpAddressId $ipaddress.id
    
  7. Resource Manager の仮想ネットワーク ゲートウェイを作成します。 -VpnType は、 RouteBasedである必要があります。 ゲートウェイの作成には 45 分以上かかる場合があります。

    New-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG `
    -Location "EastUS" -GatewaySKU Standard -GatewayType Vpn `
    -IpConfigurations $gwipconfig `
    -EnableBgp $false -VpnType RouteBased
    
  8. VPN ゲートウェイを作成したら、パブリック IP アドレスをコピーします。 このアドレスは、クラシック VNet のローカル ネットワーク設定を構成するときに使用します。 次のコマンドレットを使用して、パブリック IP アドレスを取得できます。 パブリック IP アドレスは、 IpAddressとして戻り値に表示されます。

    Get-AzPublicIpAddress -Name rmgwpip -ResourceGroupName RMRG
    

クラシック VNet ローカル サイトの設定を変更する

このセクションでは、クラシック VNet を使います。 Resource Manager VNet ゲートウェイに接続するために使われるローカル サイトの設定を指定するときに使ったプレースホルダー IP アドレスを置き換えます。 クラシック VNet を操作しているので、Azure Cloud Shell の試用機能ではなく、お使いのコンピューターにローカルにインストールされている PowerShell を使用してください。

  1. ネットワーク構成ファイルをエクスポートします。

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  2. テキスト エディターを使って、VPNGatewayAddress の値を変更します。 プレースホルダー IP アドレスを Resource Manager ゲートウェイのパブリック IP アドレスに置き換えた後、変更を保存します。

    <VPNGatewayAddress>13.68.210.16</VPNGatewayAddress>
    
  3. 変更したネットワーク構成ファイルを Azure にインポートします。

    Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml
    

ゲートウェイ間の接続を作成する

ゲートウェイ間の接続を作成するには PowerShell が必要です。 従来のバージョンの PowerShell コマンドレットを使って、Azure アカウントを追加する必要が生じる場合もあります。 それには、Add-azureaccount を使用します。

  1. PowerShell コンソールで、共有キーを設定します。 コマンドレットを実行する前に、ダウンロードしたネットワーク構成ファイルで、Azure が期待する正確な名前を確認します。 スペースを含む VNet の名前を指定するときは、単一引用符を使って値を囲みます。

    次の例では、-VNetName はクラシック VNet の名前で、-LocalNetworkSiteName はローカル ネットワーク サイトに対して指定した名前です。 前にダウンロードしたネットワーク構成ファイル内で両方の名前を確認します。

    -SharedKey は、生成および指定する値です。 この例では "abc123" を使いましたが、さらに複雑な値を生成して使うことができます。 重要なのは、ここで指定する値は、次の手順で接続を作成するときに指定するものと同じ値でなければならないということです。 戻り値が Status: Successful を示している必要があります。

    Set-AzureVNetGatewayKey -VNetName ClassicVNet `
    -LocalNetworkSiteName RMVNetSite -SharedKey abc123
    
  2. 次のコマンドを実行して、VPN 接続を作成します。

    変数を設定します。

    $vnet01gateway = Get-AzLocalNetworkGateway -Name ClassicVNetSite -ResourceGroupName RMRG
    $vnet02gateway = Get-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG
    

    接続を作成します。 -ConnectionType が IPsec であり、Vnet2Vnet ではないことに注意してください。

    New-AzVirtualNetworkGatewayConnection -Name RM-Classic -ResourceGroupName RMRG `
    -Location "East US" -VirtualNetworkGateway1 `
    $vnet02gateway -LocalNetworkGateway2 `
    $vnet01gateway -ConnectionType IPsec -RoutingWeight 10 -SharedKey 'abc123'
    

接続の確認

クラシック VNet から RM VNet

接続が成功したことを確認するには、"Get-AzureVNetConnection" コマンドレットを使用します。 このコマンドレットは、コンピューター上でローカルに実行する必要があります。

  1. 次のコマンドレットを使用します。値は実際の値に置き換えてください。 仮想ネットワークの名前にスペースが含まれる場合は、名前を引用符で囲む必要があります。 ネットワーク構成ファイル内にある仮想ネットワークの名前を使用します。

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

    ConnectivityState         : Connected
    EgressBytesTransferred    : 0
    IngressBytesTransferred   : 0
    LastConnectionEstablished : 4/25/2022 4:24:34 PM
    LastEventID               : 24401
    LastEventMessage          : The connectivity state for the local network site 'RMVNetSite' changed from Not Connected to Connected.
    LastEventTimeStamp        : 4/25/2022 4:24:34 PM
    LocalNetworkSiteName      : RMVNetSite
    OperationDescription      :
    OperationId               :
    OperationStatus           :
    

RM VNet からクラシック VNet

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

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

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

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

次のステップ

VNet 間接続の詳細については、「VPN Gateway に関する FAQ」を参照してください。