PowerShell を使用して仮想ネットワーク ピアリングで仮想ネットワークを接続するConnect virtual networks with virtual network peering using PowerShell

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

仮想ネットワーク ピアリングを使用して、仮想ネットワークを相互に接続できます。You can connect virtual networks to each other with virtual network peering. 仮想ネットワークをピアリングすると、それぞれの仮想ネットワークに存在するリソースが、あたかも同じ仮想ネットワーク内に存在するかのような待ち時間と帯域幅で相互に通信できます。Once virtual networks are peered, resources in both virtual networks are able to communicate with each other, with the same latency and bandwidth as if the resources were in the same virtual network. この記事では、次のことについて説明します。In this article, you learn how to:

  • 2 つの仮想ネットワークを作成するCreate two virtual networks
  • 仮想ネットワーク ピアリングを使用して 2 つの仮想ネットワークを接続するConnect two virtual networks with a virtual network peering
  • 各仮想ネットワークに仮想マシン (VM) を展開するDeploy a virtual machine (VM) into each virtual network
  • VM 間の通信Communicate between VMs

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell では、bashPowerShell のいずれかを使用して Azure サービスを操作できます。Cloud Shell lets you use either bash or PowerShell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を起動するには:To launch Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [試してみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. 新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を開きます。Open Cloud Shell.
  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.
  3. Windows と Linux では Ctrl + Shift + V キー、macOS では Cmd + Shift + V キーを使用して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Enter キーを押して、コードを実行します。Press Enter to run the code.

PowerShell をローカルにインストールして使用する場合、この記事では Azure PowerShell モジュール バージョン 1.0.0 以降が必要になります。If you choose to install and use PowerShell locally, this article requires the Azure PowerShell module version 1.0.0 or later. インストールされているバージョンを確認するには、Get-Module -ListAvailable Az を実行します。Run Get-Module -ListAvailable Az to find the installed version. アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。If you need to upgrade, see Install Azure PowerShell module. PowerShell をローカルで実行している場合、Connect-AzAccount を実行して Azure との接続を作成することも必要です。If you are running PowerShell locally, you also need to run Connect-AzAccount to create a connection with Azure.

仮想ネットワークを作成するCreate virtual networks

仮想ネットワークを作成する前に、仮想ネットワークのリソース グループと、この記事で作成された他のすべてのリソースを作成する必要があります。Before creating a virtual network, you have to create a resource group for the virtual network, and all other resources created in this article. New-AzResourceGroup を使用して Azure リソース グループを作成します。Create a resource group with New-AzResourceGroup. 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。The following example creates a resource group named myResourceGroup in the eastus location.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

New-AzVirtualNetwork を使用して仮想ネットワークを作成します。Create a virtual network with New-AzVirtualNetwork. 次の例では、アドレス プレフィックスが 10.0.0.0/16 の、myVirtualNetwork1 という名前の仮想ネットワークを作成します。The following example creates a virtual network named myVirtualNetwork1 with the address prefix 10.0.0.0/16.

$virtualNetwork1 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork1 `
  -AddressPrefix 10.0.0.0/16

New-AzVirtualNetworkSubnetConfig を使用してサブネット構成を作成します。Create a subnet configuration with New-AzVirtualNetworkSubnetConfig. 次の例では、アドレス プレフィックスが 10.0.0.0/24 のサブネット構成を作成します。The following example creates a subnet configuration with a 10.0.0.0/24 address prefix:

$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork1

Set-AzVirtualNetwork を使用して、仮想ネットワークにサブネット構成を書き込みます。これにより、サブネットが作成されます。Write the subnet configuration to the virtual network with Set-AzVirtualNetwork, which creates the subnet:

$virtualNetwork1 | Set-AzVirtualNetwork

アドレス プレフィックスが 10.1.0.0/16 で 1 つのサブネットを持つ仮想ネットワークを作成します。Create a virtual network with a 10.1.0.0/16 address prefix and one subnet:

# Create the virtual network.
$virtualNetwork2 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork2 `
  -AddressPrefix 10.1.0.0/16

# Create the subnet configuration.
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.1.0.0/24 `
  -VirtualNetwork $virtualNetwork2

# Write the subnet configuration to the virtual network.
$virtualNetwork2 | Set-AzVirtualNetwork

仮想ネットワークをピアリングするPeer virtual networks

Add-AzVirtualNetworkPeering を使用してピアリングを作成します。Create a peering with Add-AzVirtualNetworkPeering. 次の例では、myVirtualNetwork1myVirtualNetwork2 にピアリングします。The following example peers myVirtualNetwork1 to myVirtualNetwork2.

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork1-myVirtualNetwork2 `
  -VirtualNetwork $virtualNetwork1 `
  -RemoteVirtualNetworkId $virtualNetwork2.Id

前のコマンドの実行後に返された出力では、PeeringStateInitiated です。In the output returned after the previous command executes, you see that the PeeringState is Initiated. このピアリングは、myVirtualNetwork2 から myVirtualNetwork1 へのピアリングを作成するまで Initiated 状態のままです。The peering remains in the Initiated state until you create the peering from myVirtualNetwork2 to myVirtualNetwork1. myVirtualNetwork2 から myVirtualNetwork1 へのピアリングを作成します。Create a peering from myVirtualNetwork2 to myVirtualNetwork1.

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork2-myVirtualNetwork1 `
  -VirtualNetwork $virtualNetwork2 `
  -RemoteVirtualNetworkId $virtualNetwork1.Id

前のコマンドの実行後に返された出力では、PeeringStateConnected です。In the output returned after the previous command executes, you see that the PeeringState is Connected. Azure によって、myVirtualNetwork1-myVirtualNetwork2 ピアリングのピアリング状態も Connected に変更されました。Azure also changed the peering state of the myVirtualNetwork1-myVirtualNetwork2 peering to Connected. Get-AzVirtualNetworkPeering を使用して、myVirtualNetwork1-myVirtualNetwork2 ピアリングのピアリング状態が Connected に変更されたことを確認します。Confirm that the peering state for the myVirtualNetwork1-myVirtualNetwork2 peering changed to Connected with Get-AzVirtualNetworkPeering.

Get-AzVirtualNetworkPeering `
  -ResourceGroupName myResourceGroup `
  -VirtualNetworkName myVirtualNetwork1 `
  | Select PeeringState

両方の仮想ネットワークのピアリングの PeeringStateConnected になるまで、一方の仮想ネットワークのリソースともう一方の仮想ネットワークのリソースは通信できません。Resources in one virtual network cannot communicate with resources in the other virtual network until the PeeringState for the peerings in both virtual networks is Connected.

仮想マシンを作成するCreate virtual machines

後で仮想ネットワーク間で通信できるように、各仮想ネットワーク内に VM を作成します。Create a VM in each virtual network so that you can communicate between them in a later step.

最初の VM を作成するCreate the first VM

New-AzVM を使用して VM を作成します。Create a VM with New-AzVM. 次の例では、myVirtualNetwork1 仮想ネットワークで myVm1 という名前の VM を作成します。The following example creates a VM named myVm1 in the myVirtualNetwork1 virtual network. -AsJob オプションを使用すると、VM はバックグラウンドで作成されるため、次の手順に進むことができます。The -AsJob option creates the VM in the background, so you can continue to the next step. メッセージが表示されたら、VM へのログインに使用するユーザー名とパスワードを入力します。When prompted, enter the user name and password you want to log in to the VM with.

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork1" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm1" `
  -AsJob

2 つ目の VM を作成するCreate the second VM

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "East US" `
  -VirtualNetworkName "myVirtualNetwork2" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm2"

VM の作成には数分かかります。The VM takes a few minutes to create. Azure で VM が作成され、PowerShell に出力が返されるまで、以降の手順に進まないでください。Do not continue with later steps until Azure creates the VM and returns output to PowerShell.

VM 間の通信Communicate between VMs

インターネットから VM のパブリック IP アドレスに接続できます。You can connect to a VM's public IP address from the internet. Get-AzPublicIpAddress を使用して、VM のパブリック IP アドレスを返します。Use Get-AzPublicIpAddress to return the public IP address of a VM. 次の例では、myVm1 VM のパブリック IP アドレスを返しています。The following example returns the public IP address of the myVm1 VM:

Get-AzPublicIpAddress `
  -Name myVm1 `
  -ResourceGroupName myResourceGroup | Select IpAddress

次のコマンドを使用して、お使いのローカル コンピューターから、myVm1 VM でリモート デスクトップ セッションを作成します。Use the following command to create a remote desktop session with the myVm1 VM from your local computer. <publicIpAddress> を前のコマンドで返された IP アドレスに置き換えます。Replace <publicIpAddress> with the IP address returned from the previous command.

mstsc /v:<publicIpAddress>

リモート デスクトップ プロトコル (.rdp) ファイルが作成され、お使いのコンピューターにダウンロードされて開かれます。A Remote Desktop Protocol (.rdp) file is created, downloaded to your computer, and opened. ユーザー名とパスワードを入力し (VM の作成時に入力した資格情報を指定するために、必要に応じて [その他][別のアカウントを使う] を選択することもあります)、 [OK] をクリックします。Enter the user name and password (you may need to select More choices, then Use a different account, to specify the credentials you entered when you created the VM), and then click OK. サインイン処理中に証明書の警告が表示される場合があります。You may receive a certificate warning during the sign-in process. [はい] または [続行] をクリックして接続処理を続行します。Click Yes or Continue to proceed with the connection.

myVm1 VM では、Windows ファイアウォールを介してインターネット制御メッセージ プロトコル (ICMP) を有効にして、後で PowerShell を使用してmyVm2 からこの VM に ping を実行できるようにします。On the myVm1 VM, enable the Internet Control Message Protocol (ICMP) through the Windows firewall so you can ping this VM from myVm2 in a later step, using PowerShell:

New-NetFirewallRule –DisplayName “Allow ICMPv4-In” –Protocol ICMPv4

この記事では、VM 間の通信に ping を使用していますが、運用環境のデプロイでは Windows ファイアウォールで ICMP を許可することは推奨されません。Though ping is used to communicate between VMs in this article, allowing ICMP through the Windows Firewall for production deployments is not recommended.

myVm2 VM に接続するには、myVm1 VM 上でコマンド プロンプトから以下のコマンドを入力します。To connect to the myVm2 VM, enter the following command from a command prompt on the myVm1 VM:

mstsc /v:10.1.0.4

myVm1 で ping を有効にしたため、myVm2 VM 上でコマンド プロンプトから IP アドレスで ping できるようになりました。Since you enabled ping on myVm1, you can now ping it by IP address from a command prompt on the myVm2 VM:

ping 10.0.0.4

4 つの応答を受信します。You receive four replies. myVm1myVm2 の両方への RDP セッションを切断します。Disconnect your RDP sessions to both myVm1 and myVm2.

リソースのクリーンアップClean up resources

必要なくなったら、Remove-AzResourcegroup を使用して、リソース グループとその中のすべてのリソースを削除します。When no longer needed, use Remove-AzResourcegroup to remove the resource group and all of the resources it contains.

Remove-AzResourceGroup -Name myResourceGroup -Force

次の手順Next steps

この記事では、仮想ネットワーク ピアリングで同じ Azure リージョン内の 2 つのネットワークを接続する方法を説明しました。In this article, you learned how to connect two networks in the same Azure region, with virtual network peering. 異なるサポートされるリージョン内および異なる Azure サブスクリプション内の仮想ネットワークをピアリングすることも、ピアリングを使ってハブとスポーク ネットワーク設計を作成することもできます。You can also peer virtual networks in different supported regions and in different Azure subscriptions, as well as create hub and spoke network designs with peering. 仮想ネットワーク ピアリングについて詳しくは、仮想ネットワーク ピアリングの概要および仮想ネットワーク ピアリングの管理に関するページをご覧ください。To learn more about virtual network peering, see Virtual network peering overview and Manage virtual network peerings.

ユーザーのコンピューターを VPN 経由で仮想ネットワークに接続し、仮想ネットワーク、またはピアリングされた仮想ネットワークのリソースを操作できます。You can connect your own computer to a virtual network through a VPN, and interact with resources in a virtual network, or in peered virtual networks. 仮想ネットワークの記事で説明する多くのタスクを完了するための再利用可能なスクリプトについては、スクリプト サンプルをご覧ください。For reusable scripts to complete many of the tasks covered in the virtual network articles, see script samples.