Azure CLI を使用して仮想ネットワーク ピアリングで仮想ネットワークを接続する

仮想ネットワーク ピアリングを使用して、仮想ネットワークを相互に接続できます。 仮想ネットワークをピアリングすると、それぞれの仮想ネットワークに存在するリソースが、あたかも同じ仮想ネットワーク内に存在するかのような待ち時間と帯域幅で相互に通信できます。

この記事では、次のことについて説明します。

  • 2 つの仮想ネットワークを作成する

  • 仮想ネットワーク ピアリングを使用して 2 つの仮想ネットワークを接続する

  • 各仮想ネットワークに仮想マシン (VM) を展開する

  • VM 間の通信

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • この記事では、Azure CLI のバージョン 2.0.28 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

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

仮想ネットワークを作成する前に、仮想ネットワークのリソース グループと、この記事で作成された他のすべてのリソースを作成する必要があります。 az group create を使用して、リソース グループを作成します。 次の例では、test-rg という名前のリソース グループを場所 eastus に作成します。

az group create \
    --name test-rg \
    --location eastus

az network vnet create を使用して仮想ネットワークを作成します。 次の例では、アドレス プレフィックスが 10.0.0.0/16vnet-1 という名前の仮想ネットワークを作成します。

az network vnet create \
  --name vnet-1 \
  --resource-group test-rg \
  --address-prefixes 10.0.0.0/16 \
  --subnet-name subnet-1 \
  --subnet-prefix 10.0.0.0/24

次の例では、アドレス プレフィックスが 10.1.0.0/16vnet-2 という名前の仮想ネットワークを作成します。

az network vnet create \
  --name vnet-2 \
  --resource-group test-rg \
  --address-prefixes 10.1.0.0/16 \
  --subnet-name subnet-1 \
  --subnet-prefix 10.1.0.0/24

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

ピアリングは、仮想ネットワーク ID 間で確立されます。 az network vnet show を使用して各仮想ネットワークの ID を取得し、その ID を変数に格納します。

# Get the id for vnet-1.
vNet1Id=$(az network vnet show \
  --resource-group test-rg \
  --name vnet-1 \
  --query id --out tsv)

# Get the id for vnet-2.
vNet2Id=$(az network vnet show \
  --resource-group test-rg \
  --name vnet-2 \
  --query id \
  --out tsv)

az network vnet peering create を使用して vnet-1 から vnet-2 へのピアリングを作成します。 --allow-vnet-access パラメーターが指定されていない場合、ピアリングは確立されますが、通信は、それを介して行われません。

az network vnet peering create \
  --name vnet-1-to-vnet-2 \
  --resource-group test-rg \
  --vnet-name vnet-1 \
  --remote-vnet $vNet2Id \
  --allow-vnet-access

前のコマンドの実行後に返された出力では、peeringStateInitiated です。 このピアリングは、vnet-2 から vnet-1 へのピアリングを作成するまで Initiated 状態のままです。 vnet-2 から vnet-1 へのピアリングを作成します。

az network vnet peering create \
  --name vnet-2-to-vnet-1 \
  --resource-group test-rg \
  --vnet-name vnet-2 \
  --remote-vnet $vNet1Id \
  --allow-vnet-access

前のコマンドの実行後に返された出力では、peeringStateConnected です。 Azure によって、vnet-1-to-vnet-2 ピアリングのピアリング状態も Connected に変更されました。 az network vnet peering show を使用して、vnet-1-to-vnet-2 ピアリングのピアリング状態が Connected に変更されたことを確認します。

az network vnet peering show \
  --name vnet-1-to-vnet-2 \
  --resource-group test-rg \
  --vnet-name vnet-1 \
  --query peeringState

両方の仮想ネットワークのピアリングの peeringStateConnected になるまで、一方の仮想ネットワークのリソースともう一方の仮想ネットワークのリソースは通信できません。

仮想マシンを作成する

後で仮想ネットワーク間で通信できるように、各仮想ネットワーク内に VM を作成します。

最初の VM を作成する

az vm create を使用して VM を作成します。 次の例では、vnet-1 仮想ネットワークに vm-1 という名前の VM を作成します。 既定のキーの場所にまだ SSH キーが存在しない場合は、コマンドを使って SSH キーを作成します。 特定のキーのセットを使用するには、--ssh-key-value オプションを使用します。 --no-wait オプションを使用すると、VM はバックグラウンドで作成されるため、次の手順に進むことができます。

az vm create \
  --resource-group test-rg \
  --name vm-1 \
  --image Ubuntu2204 \
  --vnet-name vnet-1 \
  --subnet subnet-1 \
  --generate-ssh-keys \
  --no-wait

2 つ目の VM を作成する

vnet-2 仮想ネットワークに VM を作成します。

az vm create \
  --resource-group test-rg \
  --name vm-2 \
  --image Ubuntu2204 \
  --vnet-name vnet-2 \
  --subnet subnet-1 \
  --generate-ssh-keys

VM の作成には数分かかります。 VM が作成されると、Azure CLI によって次の例のような情報が表示されます。

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-2",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.1.0.4",
  "publicIpAddress": "13.90.242.231",
  "resourceGroup": "test-rg"
}

publicIpAddress を書き留めておきます。 このアドレスは、後の手順で、インターネットから VM にアクセスするときに使います。

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-2 との SSH セッションを作成します。 <publicIpAddress> を VM のパブリック IP アドレスに置き換えます。 前の例では、パブリック IP アドレスは 13.90.242.231 です。

ssh <publicIpAddress>

vnet-1 で VM に ping を実行します。

ping 10.0.0.4 -c 4

4 つの応答を受信します。

仮想マシン vm-2 への SSH セッションを閉じます。

リソースをクリーンアップする

不要になったら、az group delete を使用して、リソース グループとそのグループに含まれているすべてのリソースを削除します。

az group delete \
    --name test-rg \
    --yes

次のステップ

この記事では、仮想ネットワーク ピアリングで同じ Azure リージョン内の 2 つのネットワークを接続する方法を説明しました。 異なるサポートされるリージョン内および異なる Azure サブスクリプション内の仮想ネットワークをピアリングすることも、ピアリングを使ってハブとスポーク ネットワーク設計を作成することもできます。 仮想ネットワーク ピアリングについて詳しくは、仮想ネットワーク ピアリングの概要および仮想ネットワーク ピアリングの管理に関するページをご覧ください。

ユーザーのコンピューターを VPN 経由で仮想ネットワークに接続し、仮想ネットワーク、またはピアリングされた仮想ネットワークのリソースを操作できます。 仮想ネットワークの記事で説明する多くのタスクを完了するための再利用可能なスクリプトについては、スクリプト サンプルをご覧ください。