PowerShell を使用して仮想ネットワーク ピアリングで仮想ネットワークを接続する
仮想ネットワーク ピアリングを使用して、仮想ネットワークを相互に接続できます。 仮想ネットワークをピアリングすると、それぞれの仮想ネットワークに存在するリソースが、あたかも同じ仮想ネットワーク内に存在するかのような待ち時間と帯域幅で相互に通信できます。
この記事では、次のことについて説明します。
2 つの仮想ネットワークを作成する
仮想ネットワーク ピアリングを使用して 2 つの仮想ネットワークを接続する
各仮想ネットワークに仮想マシン (VM) を展開する
VM 間の通信
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
Azure Cloud Shell
Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。
Azure Cloud Shell を開始するには、以下のようにします。
オプション | 例とリンク |
---|---|
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 | |
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 | |
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 |
Azure Cloud Shell を使用するには、以下のようにします。
Cloud Shell を開始します。
コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。
Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。
Enter キーを選択して、コードまたはコマンドを実行します。
PowerShell をローカルにインストールして使用する場合、この記事では Azure PowerShell モジュール バージョン 1.0.0 以降が必要になります。 インストールされているバージョンを確認するには、Get-Module -ListAvailable Az
を実行します。 アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。 PowerShell をローカルで実行している場合、Connect-AzAccount
を実行して Azure との接続を作成することも必要です。
仮想ネットワークを作成する
仮想ネットワークを作成する前に、仮想ネットワークのリソース グループと、この記事で作成された他のすべてのリソースを作成する必要があります。 New-AzResourceGroup を使用して Azure リソース グループを作成します。 次の例では、test-rg という名前のリソース グループを場所 eastus に作成します。
$resourceGroup = @{
Name = "test-rg"
Location = "EastUS"
}
New-AzResourceGroup @resourceGroup
New-AzVirtualNetwork を使用して仮想ネットワークを作成します。 次の例では、アドレス プレフィックスが 10.0.0.0/16 の vnet-1 という名前の仮想ネットワークを作成します。
$vnet1 = @{
ResourceGroupName = "test-rg"
Location = "EastUS"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork1 = New-AzVirtualNetwork @vnet1
Add-AzVirtualNetworkSubnetConfig を使用してサブネット構成を作成します。 次の例では、アドレス プレフィックスが 10.0.0.0/24 のサブネット構成を作成します。
$subConfig = @{
Name = "subnet-1"
AddressPrefix = "10.0.0.0/24"
VirtualNetwork = $virtualNetwork1
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subConfig
Set-AzVirtualNetwork を使用して、仮想ネットワークにサブネット構成を書き込みます。これにより、サブネットが作成されます。
$virtualNetwork1 | Set-AzVirtualNetwork
アドレス プレフィックスが 10.1.0.0/16 で 1 つのサブネットを持つ仮想ネットワークを作成します。
# Create the virtual network.
$vnet2 = @{
ResourceGroupName = "test-rg"
Location = "EastUS"
Name = "vnet-2"
AddressPrefix = "10.1.0.0/16"
}
$virtualNetwork2 = New-AzVirtualNetwork @vnet2
# Create the subnet configuration.
$subConfig = @{
Name = "subnet-1"
AddressPrefix = "10.1.0.0/24"
VirtualNetwork = $virtualNetwork2
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subConfig
# Write the subnet configuration to the virtual network.
$virtualNetwork2 | Set-AzVirtualNetwork
仮想ネットワークをピアリングする
Add-AzVirtualNetworkPeering を使用してピアリングを作成します。 次の例では、vnet-1 を vnet-2 にピアリングします。
$peerConfig1 = @{
Name = "vnet-1-to-vnet-2"
VirtualNetwork = $virtualNetwork1
RemoteVirtualNetworkId = $virtualNetwork2.Id
}
Add-AzVirtualNetworkPeering @peerConfig1
前のコマンドの実行後に返された出力では、PeeringState が Initiated です。 このピアリングは、vnet-2 から vnet-1 へのピアリングを作成するまで Initiated 状態のままです。 vnet-2 から vnet-1 へのピアリングを作成します。
$peerConfig2 = @{
Name = "vnet-2-to-vnet-1"
VirtualNetwork = $virtualNetwork2
RemoteVirtualNetworkId = $virtualNetwork1.Id
}
Add-AzVirtualNetworkPeering @peerConfig2
前のコマンドの実行後に返された出力では、PeeringState が Connected です。 Azure によって、vnet-1-to-vnet-2 ピアリングのピアリング状態も Connected に変更されました。 Get-AzVirtualNetworkPeering を使用して、vnet-1-to-vnet-2 ピアリングのピアリング状態が Connected に変更されたことを確認します。
$peeringState = @{
ResourceGroupName = "test-rg"
VirtualNetworkName = "vnet-1"
}
Get-AzVirtualNetworkPeering @peeringState | Select PeeringState
両方の仮想ネットワークのピアリングの PeeringState が Connected になるまで、一方の仮想ネットワークのリソースともう一方の仮想ネットワークのリソースは通信できません。
仮想マシンを作成する
後で仮想ネットワーク間で通信できるように、各仮想ネットワーク内に VM を作成します。
最初の VM を作成する
New-AzVM を使用して VM を作成します。 次の例では、vnet-1 仮想ネットワークに vm-1 という名前の VM を作成します。 -AsJob
オプションを使用すると、VM はバックグラウンドで作成されるため、次の手順に進むことができます。 プロンプトが表示されたら、仮想マシンのユーザー名とパスワードを入力します。
$vm1 = @{
ResourceGroupName = "test-rg"
Location = "EastUS"
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
ImageName = "Win2019Datacenter"
Name = "vm-1"
}
New-AzVm @vm1 -AsJob
2 つ目の VM を作成する
$vm2 = @{
ResourceGroupName = "test-rg"
Location = "EastUS"
VirtualNetworkName = "vnet-2"
SubnetName = "subnet-1"
ImageName = "Win2019Datacenter"
Name = "vm-2"
}
New-AzVm @vm2
VM の作成には数分かかります。 Azure で vm-2 が作成され、PowerShell に出力が返されるまで、以降の手順に進まないでください。
Note
パブリック IP が割り当てられていない VM、または内部の Basic Azure Load Balancer のバックエンド プール内にある VM に対しては、Azure によって既定のアウトバウンド アクセス IP が提供されます。 デフォルト送信アクセス IP メカニズムは、構成できないアウトバウンド IP アドレスを提供します。
次のいずれかのイベントが発生すると、既定のアウトバウンド アクセス IP は無効になります。
- パブリック IP アドレスが VM に割り当てられます。
- アウトバウンド規則の有無にかかわらず、VM は標準ロード バランサーのバックエンド プール内に配置されます。
- Azure NAT Gateway リソースが VM のサブネットに割り当てられている。
フレキシブル オーケストレーション モードの仮想マシン スケール セットによって作成された VM には、既定のアウトバウンド アクセスがありません。
Azure のアウトバウンド接続の詳細については、「Azure での既定の送信アクセス」および「送信接続での送信元ネットワーク アドレス変換 (SNAT)を使用する」を参照してください。
VM 間の通信
インターネットから VM のパブリック IP アドレスに接続できます。 Get-AzPublicIpAddress を使用して、VM のパブリック IP アドレスを返します。 次の例では、vm-1 VM のパブリック IP アドレスを返しています。
$ipAddress = @{
ResourceGroupName = "test-rg"
Name = "vm-1"
}
Get-AzPublicIpAddress @ipAddress | Select IpAddress
次のコマンドを使用して、ローカル コンピューターから、vm-1 VM とのリモート デスクトップ セッションを作成します。 <publicIpAddress>
を前のコマンドで返された IP アドレスに置き換えます。
mstsc /v:<publicIpAddress>
リモート デスクトップ プロトコル (.rdp) ファイルが作成され、開かれます。 ユーザー名とパスワードを入力し (VM の作成時に入力した資格情報を指定するために、必要に応じて [その他] 、 [別のアカウントを使う] を選択することもあります)、 [OK] をクリックします。 サインイン処理中に証明書の警告が表示される場合があります。 [はい] または [続行] をクリックして接続処理を続行します。
vm-1 では、Windows ファイアウォールを介してインターネット制御メッセージ プロトコル (ICMP) を有効にして、後の手順で PowerShell を使用してvm-2 からこの VM に ping を実行できるようにします。
New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4
この記事では、VM 間の通信に ping を使用していますが、運用環境のデプロイでは Windows ファイアウォールで ICMP を許可することは推奨されません。
vm-2 に接続するには、vm-1 でコマンド プロンプトから次のコマンドを入力します。
mstsc /v:10.1.0.4
vm-1 で ping を有効にしました。 vm-2 でコマンド プロンプトから IP アドレスで、vm-1 を ping を実行できるようになりました。
ping 10.0.0.4
4 つの応答を受信します。 vm-1 と vm-2 の両方への RDP セッションを切断します。
リソースをクリーンアップする
必要なくなったら、Remove-AzResourcegroup を使用して、リソース グループとその中のすべてのリソースを削除します。
Remove-AzResourceGroup -Name test-rg -Force
次のステップ
この記事では、仮想ネットワーク ピアリングで同じ Azure リージョン内の 2 つのネットワークを接続する方法を説明しました。 異なるサポートされるリージョン内および異なる Azure サブスクリプション内の仮想ネットワークをピアリングすることも、ピアリングを使ってハブとスポーク ネットワーク設計を作成することもできます。 仮想ネットワーク ピアリングについて詳しくは、仮想ネットワーク ピアリングの概要および仮想ネットワーク ピアリングの管理に関するページをご覧ください。
ユーザーのコンピューターを VPN 経由で仮想ネットワークに接続し、仮想ネットワーク、またはピアリングされた仮想ネットワークのリソースを操作できます。 仮想ネットワークの記事で説明する多くのタスクを完了するための再利用可能なスクリプトについては、スクリプト サンプルをご覧ください。