Azure では、既定で仮想ネットワーク内のすべてのサブネット間でトラフィックがルーティングされます。 Azure の既定のルーティングは、独自のルートを作成してオーバーライドすることができます。 カスタム ルートは、たとえば、サブネット間でネットワーク仮想アプライアンス (NVA) を越えてトラフィックをルーティングしたい場合に便利です。
このチュートリアルでは、以下の内容を学習します。
- 仮想ネットワークとサブネットの作成
- トラフィックをルーティングする NVA を作成する
- 仮想マシン (VM) を異なるサブネットにデプロイする
- ルート テーブルの作成
- ルートの作成
- サブネットへのルート テーブルの関連付け
- NVA を介して、あるサブネットから別のサブネットにトラフィックをルーティングする
前提条件
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 との接続を作成することも必要です。
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- この記事では、Azure CLI のバージョン 2.0.28 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。
サブネットを作成する
このチュートリアルでは、DMZ とプライベート サブネットが必要です。
DMZ サブネットは NVA をデプロイする場所であり、プライベート サブネットはトラフィックをルーティングするプライベート仮想マシンをデプロイする場所です。 この図では、 subnet-1 は パブリック 仮想マシンに使用されるパブリック サブネットです。
仮想ネットワークと Azure Bastion ホストを作成する
次の手順では、リソース サブネット、Azure Bastion サブネット、Bastion ホストを含む仮想ネットワークを作成します。
ポータルで、[仮想ネットワーク] を検索して選択します。
[仮想ネットワーク] ページで、[+ 作成] を選択します。
[仮想ネットワークの作成] の [基本] タブで、以下の情報を入力するか選択します。
| 設定 |
値 |
|
プロジェクトの詳細 |
|
| サブスクリプション |
サブスクリプションを選択します。 |
| リソースグループ |
[新規作成] を選択します。
名前に「test-rg」と入力します。
[OK] を選択します。 |
|
インスタンスの詳細 |
|
| 名前 |
「vnet-1」と入力します。 |
| リージョン |
[米国東部 2] を選択します。 |
[次へ] を選択して、[セキュリティ] タブに進みます。
[Azure Bastion] セクションで、[Azure Bastion の有効化] を選択します。
Bastion では、ユーザーのブラウザーとプライベート IP アドレスを使って、Secure Shell (SSH) またはリモート デスクトップ プロトコル (RDP) 経由で仮想ネットワーク内の VM に接続します。 VM には、パブリック IP アドレス、クライアント ソフトウェア、または特別な構成は必要ありません。 詳細については、Azure Bastion に関するページを参照してください。
注
時間単位の料金は、送信データの使用量に関係なく、Bastion がデプロイされた時点から発生します。 詳しくは、「価格」および「SKU」を参照してください。 チュートリアルまたはテストの一環として Bastion をデプロイしている場合は、使用終了後にこのリソースを削除することをお勧めします。
[Azure Bastion] で、次の情報を入力するか選びます。
| 設定 |
値 |
| Azure Bastion ホスト名 |
「bastion」と入力します。 |
| Azure Bastion のパブリック IP アドレス |
[パブリック IP アドレスを作成する] を選択します。
[名前] に「public-ip-bastion」と入力します。
[OK] を選択します。 |
[次へ] を選択して、[IP アドレス] タブに進みます。
[サブネット] のアドレス空間ボックスで、既定のサブネットを選択します。
[サブネットの編集] で次の情報を入力または選択します。
| 設定 |
値 |
| サブネットの目的 |
既定値の [既定値] のままにします。 |
| 名前 |
「subnet-1」と入力します。 |
|
IPv4 |
|
| IPv4 アドレス範囲 |
既定値である 10.0.0.0/16 のままにします。 |
| 開始アドレス |
既定値の 10.0.0.0 のままにします。 |
| サイズ |
既定値の [/24 (256 アドレス)] のままにします。 |
[保存] を選択します。
ウィンドウの下部にある [確認と作成] を選びます。 検証に合格したら、[作成] を選択します。
ポータルの上部にある検索ボックスに、「仮想ネットワーク」と入力します。 検索結果で、[仮想ネットワーク] を選択します。
[仮想ネットワーク] で、[vnet-1] を選択します。
vnet-1 で、[設定] セクションから [サブネット] を選択します。
仮想ネットワークのサブネットの一覧で、[+ サブネット] を選択します。
[サブネットの追加] で、次の情報を入力または選択します。
| 設定 |
値 |
| サブネットの目的 |
既定値の [既定値] のままにします。 |
| 名前 |
「subnet-private」と入力します。 |
|
IPv4 |
|
| IPv4 アドレス範囲 |
既定値である 10.0.0.0/16 のままにします。 |
| 開始アドレス |
「10.0.2.0」と入力します |
| サイズ |
既定値の [/24 (256 アドレス)] のままにします。 |
[追加]を選択します。
[+ サブネット] を選択します。
[サブネットの追加] で、次の情報を入力または選択します。
| 設定 |
値 |
| サブネットの目的 |
既定値の [既定値] のままにします。 |
| 名前 |
「subnet-dmz」と入力します。 |
|
IPv4 |
|
| IPv4 アドレス範囲 |
既定値である 10.0.0.0/16 のままにします。 |
| 開始アドレス |
「10.0.3.0」と入力します。 |
| サイズ |
既定値の [/24 (256 アドレス)] のままにします。 |
[追加]を選択します。
New-AzResourceGroup を使用して Azure リソース グループを作成します。 次の例では、この記事で作成するすべてのリソースに対して、test-rg という名前のリソース グループを作成します。
$rg = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
}
New-AzResourceGroup @rg
New-AzVirtualNetwork を使用して仮想ネットワークを作成します。 次の例では、アドレス プレフィックスが 10.0.0.0/16 の vnet-1 という名前の仮想ネットワークを作成します。
$vnet = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
New-AzVirtualNetworkSubnetConfig を使用して 4 つのサブネット構成を作成することで、4 つのサブネットを作成します。 次の例では、"パブリック"、"プライベート"、DMZ、および Azure Bastion サブネット用に 4 つのサブネット構成を作成します。
$subnetConfigPublicParams = @{
Name = "subnet-1"
AddressPrefix = "10.0.0.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigBastionParams = @{
Name = "AzureBastionSubnet"
AddressPrefix = "10.0.1.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigPrivateParams = @{
Name = "subnet-private"
AddressPrefix = "10.0.2.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigDmzParams = @{
Name = "subnet-dmz"
AddressPrefix = "10.0.3.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig @subnetConfigPublicParams
$subnetConfigBastion = Add-AzVirtualNetworkSubnetConfig @subnetConfigBastionParams
$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig @subnetConfigPrivateParams
$subnetConfigDmz = Add-AzVirtualNetworkSubnetConfig @subnetConfigDmzParams
Set-AzureRmVirtualNetwork を使用して、仮想ネットワークにサブネット構成を書き込みます。これにより、仮想ネットワークにサブネットが作成されます。
$virtualNetwork | Set-AzVirtualNetwork
Azure Bastion を作成する
New-AzPublicIpAddress を使用して、Azure Bastion ホストのパブリック IP アドレスを作成します。 次の例では、vnet-1 仮想ネットワーク内に public-ip-bastion という名前のパブリック IP アドレスを作成します。
$publicIpParams = @{
ResourceGroupName = "test-rg"
Name = "public-ip-bastion"
Location = "EastUS2"
AllocationMethod = "Static"
Sku = "Standard"
}
New-AzPublicIpAddress @publicIpParams
New-AzBastion を使用して Azure Bastion ホストを作成します。 次の例では、vnet-1 仮想ネットワークの AzureBastionSubnet サブネット内に bastion という名前の Azure Bastion ホストを作成します。 パブリック インターネットに公開することなく Azure 仮想マシンを安全に接続するために、Azure Bastion は使用されます。
$bastionParams = @{
ResourceGroupName = "test-rg"
Name = "bastion"
VirtualNetworkName = "vnet-1"
PublicIpAddressName = "public-ip-bastion"
PublicIpAddressRgName = "test-rg"
VirtualNetworkRgName = "test-rg"
}
New-AzBastion @bastionParams -AsJob
この記事で作成するすべてのリソースに対して、az group create を使用してリソース グループを作成します。
# Create a resource group.
az group create \
--name test-rg \
--location eastus2
az network vnet create で、1 つのサブネットを含む仮想ネットワークを作成します。
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
az network vnet subnet create でさらに 2 つのサブネットを作成します。
# Create a bastion subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name AzureBastionSubnet \
--address-prefix 10.0.1.0/24
# Create a private subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-private \
--address-prefix 10.0.2.0/24
# Create a DMZ subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-dmz \
--address-prefix 10.0.3.0/24
Azure Bastion を作成する
az network public-ip create を使用して、Azure Bastion ホストのパブリック IP アドレスを作成します。 次の例では、vnet-1 仮想ネットワーク内に public-ip-bastion という名前のパブリック IP アドレスを作成します。
az network public-ip create \
--resource-group test-rg \
--name public-ip-bastion \
--location eastus2 \
--allocation-method Static \
--sku Standard
az network bastion create を使用して、Azure Bastion ホストを作成します。 次の例では、vnet-1 仮想ネットワークの AzureBastionSubnet サブネット内に bastion という名前の Azure Bastion ホストを作成します。 パブリック インターネットに公開することなく Azure 仮想マシンを安全に接続するために、Azure Bastion は使用されます。
az network bastion create \
--resource-group test-rg \
--name bastion \
--vnet-name vnet-1 \
--public-ip-address public-ip-bastion \
--location eastus2
--no-wait
NVA 仮想マシンを作成する
ネットワーク仮想アプライアンス (NVA) は、ルーティングやファイアウォールの最適化などのネットワーク機能に役立つ仮想マシンです。 このセクションでは、Ubuntu 24.04 仮想マシンを使用して NVA を作成します。
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
[+ 作成] を選択し、[Azure 仮想マシン] を選択します。
[仮想マシンの作成] の [基本] タブで、次の情報を入力または選択します。
| 設定 |
値 |
|
プロジェクトの詳細 |
|
| サブスクリプション |
サブスクリプションを選択します。 |
| リソースグループ |
test-rg を選択します。 |
|
インスタンスの詳細 |
|
| 仮想マシン名 |
「vm-nva」と入力します。 |
| リージョン |
[(米国) 米国東部 2] を選択します。 |
| 可用性のオプション |
[インフラストラクチャ冗長は必要ありません] を選択します。 |
| セキュリティの種類 |
[Standard] を選択します。 |
| Image |
[Ubuntu Server 24.04 LTS - x64 Gen2] を選びます。 |
| VM アーキテクチャ |
既定値の [x64] のままにします。 |
| サイズ |
サイズを選択します。 |
|
管理者アカウント |
|
| 認証の種類 |
[パスワード] を選択します。 |
| ユーザー名 |
ユーザー名を入力します。 |
| パスワード |
パスワードを入力します。 |
| [パスワードの確認入力] |
パスワードを再入力します。 |
|
受信ポートの規則 |
|
| パブリック受信ポート |
[なし] を選択します。 |
[次へ: ディスク]、[次へ: ネットワーク] の順に選択します。
[ネットワーク] タブで、次の情報を入力または選択します。
| 設定 |
値 |
|
ネットワーク インターフェイス |
|
| 仮想ネットワーク |
vnet-1 を選択します。 |
| サブネット |
[subnet-dmz (10.0.3.0/24)] を選択します。 |
| パブリック IP |
[なし] を選択します。 |
| NIC ネットワーク セキュリティ グループ |
[Advanced] \(詳細設定) を選択します。 |
| ネットワーク セキュリティ グループを構成する |
[新規作成] を選択します。
[名前] に「nsg-nva」と入力します。
[OK] を選択します。 |
残りのオプションは既定値のままにし、[確認と作成] を選択します。
[作成]を選択します
New-AzVM を使用して仮想マシンを作成します。 次の例では、 vm-nva という名前の仮想マシンを作成します。
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vm-nva"
ImageName = "Canonical:ubuntu-24_04-lts:server-gen1:latest"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-dmz"
PublicIpAddressName = $null # No public IP address
}
# Create the virtual machine
New-AzVM @vmParams
az vm create を使用して、subnet-dmz サブネットに NVA として使用する仮想マシンを作成します。
az vm create \
--resource-group test-rg \
--name vm-nva \
--image Ubuntu2204 \
--public-ip-address "" \
--subnet subnet-dmz \
--vnet-name vnet-1 \
--admin-username azureuser \
--authentication-type password
仮想マシンの作成には数分かかります。 Azure が仮想マシンの作成を完了し、仮想マシンの出力を返すまで、次の手順に進む必要はありません。
パブリックおよびプライベートの仮想マシンを作成する
vnet-1 仮想ネットワーク内に 2 つの仮想マシンを作成します。 1 つの仮想マシンが サブネット 1 サブネット内にあり、もう 1 つの仮想マシンが サブネットプライベート サブネット内にあります。 両方の仮想マシンに同じ仮想マシン イメージを使用します。
パブリック仮想マシンを作成する
パブリック仮想マシンは、パブリック インターネット内のマシンをシミュレートするために使用されます。 パブリック仮想マシンとプライベート仮想マシンは、NVA 仮想マシンを介したネットワーク トラフィックのルーティングをテストするために使用されます。
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
[+ 作成] を選択し、[Azure 仮想マシン] を選択します。
[仮想マシンの作成] の [基本] タブで、次の情報を入力または選択します。
| 設定 |
値 |
|
プロジェクトの詳細 |
|
| サブスクリプション |
サブスクリプションを選択します。 |
| リソースグループ |
test-rg を選択します。 |
|
インスタンスの詳細 |
|
| 仮想マシン名 |
「vm-public」と入力します。 |
| リージョン |
[(米国) 米国東部 2] を選択します。 |
| 可用性のオプション |
[インフラストラクチャ冗長は必要ありません] を選択します。 |
| セキュリティの種類 |
[Standard] を選択します。 |
| Image |
[Ubuntu Server 24.04 LTS - x64 Gen2] を選びます。 |
| VM アーキテクチャ |
既定値の [x64] のままにします。 |
| サイズ |
サイズを選択します。 |
|
管理者アカウント |
|
| 認証の種類 |
[パスワード] を選択します。 |
| ユーザー名 |
ユーザー名を入力します。 |
| パスワード |
パスワードを入力します。 |
| [パスワードの確認入力] |
パスワードを再入力します。 |
|
受信ポートの規則 |
|
| パブリック受信ポート |
[なし] を選択します。 |
[次へ: ディスク]、[次へ: ネットワーク] の順に選択します。
[ネットワーク] タブで、次の情報を入力または選択します。
| 設定 |
値 |
|
ネットワーク インターフェイス |
|
| 仮想ネットワーク |
vnet-1 を選択します。 |
| サブネット |
[subnet-1 (10.0.0.0/24)] を選択します。 |
| パブリック IP |
[なし] を選択します。 |
| NIC ネットワーク セキュリティ グループ |
[なし] を選択します。 |
残りのオプションは既定値のままにし、[確認と作成] を選択します。
[作成]を選択します
プライベート仮想マシンを作成する
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
[+ 作成] を選択し、[Azure 仮想マシン] を選択します。
[仮想マシンの作成] の [基本] タブで、次の情報を入力または選択します。
| 設定 |
値 |
|
プロジェクトの詳細 |
|
| サブスクリプション |
サブスクリプションを選択します。 |
| リソースグループ |
test-rg を選択します。 |
|
インスタンスの詳細 |
|
| 仮想マシン名 |
「vm-private」と入力します。 |
| リージョン |
[(米国) 米国東部 2] を選択します。 |
| 可用性のオプション |
[インフラストラクチャ冗長は必要ありません] を選択します。 |
| セキュリティの種類 |
[Standard] を選択します。 |
| Image |
[Ubuntu Server 24.04 LTS - x64 Gen2] を選びます。 |
| VM アーキテクチャ |
既定値の [x64] のままにします。 |
| サイズ |
サイズを選択します。 |
|
管理者アカウント |
|
| 認証の種類 |
[パスワード] を選択します。 |
| ユーザー名 |
ユーザー名を入力します。 |
| パスワード |
パスワードを入力します。 |
| [パスワードの確認入力] |
パスワードを再入力します。 |
|
受信ポートの規則 |
|
| パブリック受信ポート |
[なし] を選択します。 |
[次へ: ディスク]、[次へ: ネットワーク] の順に選択します。
[ネットワーク] タブで、次の情報を入力または選択します。
| 設定 |
値 |
|
ネットワーク インターフェイス |
|
| 仮想ネットワーク |
vnet-1 を選択します。 |
| サブネット |
[subnet-private (10.2.0.0/24)] を選択します。 |
| パブリック IP |
[なし] を選択します。 |
| NIC ネットワーク セキュリティ グループ |
[なし] を選択します。 |
残りのオプションは既定値のままにし、[確認と作成] を選択します。
[作成]を選択します
New-AzVM を使用して、subnet-1 サブネットに仮想マシンを作成します。 次の例では、 vnet-1 仮想ネットワークの サブネット パブリック サブネット に vm-public という名前の仮想マシンを作成します。
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vm-public"
ImageName = "Canonical:ubuntu-24_04-lts:server-gen1:latest"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
PublicIpAddressName = $null # No public IP address
}
# Create the virtual machine
New-AzVM @vmParams
サブネットプライベート サブネットに仮想マシンを作成します。
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vm-private"
ImageName = "Canonical:ubuntu-24_04-lts:server-gen1:latest"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-private"
PublicIpAddressName = $null # No public IP address
}
# Create the virtual machine
New-AzVM @vmParams
仮想マシンの作成には数分かかります。 仮想マシンが作成され、Azure から PowerShell に出力が返されるまで、次の手順を続行しないでください。
az vm create を使用して、subnet-1 サブネットに仮想マシンを作成します。
--no-wait パラメーターを使用すると、Azure はバックグラウンドでコマンドを実行できるので、次のコマンドに進むことができます。
az vm create \
--resource-group test-rg \
--name vm-public \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--public-ip-address "" \
--admin-username azureuser \
--authentication-type password \
--no-wait
サブネットプライベート サブネットに仮想マシンを作成します。
az vm create \
--resource-group test-rg \
--name vm-private \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-private \
--public-ip-address "" \
--admin-username azureuser \
--authentication-type password
IP 転送を有効にする
NVA を介してトラフィックをルーティングするために、Azure と vm-nva のオペレーティング システムで IP 転送を有効にします。 IP 転送が有効になっている場合、 vm-nva が受信した別の IP アドレス宛てのトラフィックは削除されず、正しい宛先に転送されます。
Azure で IP 転送を有効にする
このセクションでは、vm-nva 仮想マシンのネットワーク インターフェイスの IP 転送を有効にします。
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
[仮想マシン] で、[vm-nva] を選択します。
vm-nva で、[ネットワーク] を展開し、[ネットワーク設定] を選択します。
[ネットワーク インターフェイス:] の横にあるインターフェイスの名前を選びます。 名前は vm-nva で始まり、インターフェイスにランダムな数値が割り当てられます。 この例のインターフェイスの名前は vm-nva313 です。
ネットワーク インターフェイスの概要ページの [設定] セクションで、[IP 構成] を選択します。
[IP 構成] で、[IP 転送を有効にする] の横にあるボックスを選択します。
[ 適用] を選択します。
Set-AzNetworkInterface を使用して、vm-nva 仮想マシンのネットワーク インターフェイスの IP 転送を有効にします。 次の例では、vm-nva313 という名前のネットワーク インターフェイスの IP 転送を有効にします。
$nicParams = @{
Name = "vm-nva"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @nicParams
$nic.EnableIPForwarding = $true
Set-AzNetworkInterface -NetworkInterface $nic
az network nic update を使用して、vm-nva 仮想マシンのネットワーク インターフェイスの IP 転送を有効にします。 次の例では、vm-nvaVMNic という名前のネットワーク インターフェイスの IP 転送を有効にします。
az network nic update \
--name vm-nvaVMNic \
--resource-group test-rg \
--ip-forwarding true
オペレーティング システムで IP 転送を有効にする
このセクションでは、ネットワーク トラフィックを転送するために、vm-nva 仮想マシンのオペレーティング システムで IP 転送を有効にします。 Azure Bastion サービスを使用して vm-nva 仮想マシンに接続します。
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
[仮想マシン] で、[vm-nva] を選択します。
[接続] を選択し、その次に [概要] セクションで、[Connect via Bastion] (Bastion 経由で接続) を選択します。
仮想マシンの作成時に入力したユーザー名とパスワードを入力します。
[接続]を選択します。
仮想マシンのプロンプトに次の情報を入力して、IP 転送を有効にします:
sudo vim /etc/sysctl.conf
Vim エディターで、# の行から net.ipv4.ip_forward=1 を削除します:
Insert キーを押します。
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
Esc キーを押します。
「:wq」と入力して、Enter キーを押します。
Bastion セッションを閉じます。
仮想マシンを再起動します。
ルート テーブルの作成
このセクションでは、NVA 仮想マシンを経由するトラフィックのルートを定義するルート テーブルを作成します。 ルート テーブルは、vm-public 仮想マシンがデプロイされている subnet-1 サブネットに関連付けられます。
ポータルの上部にある検索ボックスに、「ルート テーブル」と入力します。 検索結果で [ルート テーブル] を選択します。
[+ 作成] を選択します。
[ルート テーブルの作成] で、次の情報を入力または選択します。
| 設定 |
値 |
|
プロジェクトの詳細 |
|
| サブスクリプション |
サブスクリプションを選択します。 |
| リソースグループ |
test-rg を選択します。 |
|
インスタンスの詳細 |
|
| リージョン |
[米国東部 2] を選択します。 |
| 名前 |
「route-table-public」と入力します。 |
| ゲートウェイのルートを伝達する |
既定値の [はい] のままにします。 |
[Review + create]\(レビュー + 作成\) を選択します。
[作成]を選択します
ルートの作成
このセクションでは、前の手順で作成したルート テーブルにルートを作成します。
ポータルの上部にある検索ボックスに、「ルート テーブル」と入力します。 検索結果で [ルート テーブル] を選択します。
[route-table-public] を選択します。
[設定] を展開し、[ルート] を選択します。
[ルート] で [+ 追加] を選択します。
[ルートの追加] で、次の情報を入力または選択します。
| 設定 |
値 |
| ルート名 |
「to-private-subnet」と入力します。 |
| 変換先の型 |
[IP アドレス] を選択します。 |
| 宛先 IP アドレス/CIDR 範囲 |
「10.0.2.0/24」と入力します。 |
| ネクストホップの種類 |
[仮想アプライアンス] を選択します。 |
| 次ホップ アドレス |
「10.0.3.4」と入力します。
これは、前の手順で作成した vm-nva の IP アドレスです。 |
[追加]を選択します。
[設定] の [サブネット] を選択します。
[+ 関連付け] を選択します。
[サブネットの関連付け] で、次の情報を入力または選択します。
| 設定 |
値 |
| 仮想ネットワーク |
vnet-1 (test-rg) を選択します。 |
| サブネット |
subnet-1 を選択します。 |
[OK]を選択します。
New-AzRouteTable を使用してルート テーブルを作成します。 次の例では、route-table-public という名前のルート テーブルを作成します。
$routeTableParams = @{
Name = 'route-table-public'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
}
$routeTablePublic = New-AzRouteTable @routeTableParams
Get-AzRouteTable を使用してルート テーブル オブジェクトを取得し、Add-AzRouteConfig によってルートを作成します。その後、Set-AzRouteTable を使ってルート構成をルート テーブルに書き込みます。
$routeTableParams = @{
ResourceGroupName = "test-rg"
Name = "route-table-public"
}
$routeConfigParams = @{
Name = "to-private-subnet"
AddressPrefix = "10.0.2.0/24"
NextHopType = "VirtualAppliance"
NextHopIpAddress = "10.0.3.4"
}
$routeTable = Get-AzRouteTable @routeTableParams
$routeTable | Add-AzRouteConfig @routeConfigParams | Set-AzRouteTable
AzVirtualNetworkSubnetConfig を使用して、ルート テーブルを subnet-1 サブネットに関連付けます。 次の例では、route-table-public ルート テーブルを subnet-1 サブネットに関連付けます。
$vnetParams = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
}
$virtualNetwork = Get-AzVirtualNetwork @vnetParams
$subnetParams = @{
VirtualNetwork = $virtualNetwork
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
RouteTable = $routeTablePublic
}
Set-AzVirtualNetworkSubnetConfig @subnetParams | Set-AzVirtualNetwork
az network route-table create でルート テーブルを作成します。 次の例では、route-table-public という名前のルート テーブルを作成します。
# Create a route table
az network route-table create \
--resource-group test-rg \
--name route-table-public
az network route-table route create でルート テーブル内にルートを作成します。
az network route-table route create \
--name to-private-subnet \
--resource-group test-rg \
--route-table-name route-table-public \
--address-prefix 10.0.2.0/24 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address 10.0.3.4
az network vnet subnet update を使用して、route-table-subnet-public ルート テーブルを subnet-1 サブネットに関連付けます。
az network vnet subnet update \
--vnet-name vnet-1 \
--name subnet-1 \
--resource-group test-rg \
--route-table route-table-public
ネットワーク トラフィックのルーティングをテストする
vm-public から vm-private へのネットワーク トラフィックのルーティングをテストします。
vm-private から vm-public へのネットワーク トラフィックのルーティングをテストします。
vm-public から vm-private へのネットワーク トラフィックをテストする
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
[仮想マシン] で、[vm-public] を選択します。
[接続] を選択し、[概要] セクションで [Connect via Bastion] (Bastion 経由で接続) を選択します。
仮想マシンの作成時に入力したユーザー名とパスワードを入力します。
[接続]を選択します。
プロンプトで、次のコマンドを入力して、vm-public から vm-private へのネットワーク トラフィックのルーティングをトレースします。
tracepath vm-private
応答は次の例のようになります。
azureuser@vm-public:~$ tracepath vm-private
1?: [LOCALHOST] pmtu 1500
1: vm-nva.internal.cloudapp.net 1.766ms
1: vm-nva.internal.cloudapp.net 1.259ms
2: vm-private.internal.cloudapp.net 2.202ms reached
Resume: pmtu 1500 hops 2 back 1
この応答には、tracepath から vm-private への ICMP トラフィック 2 つのホップがあることがわかります。 最初のホップは vm-nva です。 2 番目のホップは、宛先の vm-private です。
Azure は、subnet-1 からのトラフィックを NVA 経由で送信しており、subnet-private に直接送信してはいません。これは、先ほど to-private-subnet ルートを route-table-public に追加し、それを subnet-1 に関連付けたためです。
Bastion セッションを閉じます。
vm-private から vm-public へのネットワーク トラフィックをテストする
ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。
[仮想マシン] で、[vm-private] を選択します。
[接続] を選択し、[概要] セクションで [Connect via Bastion] (Bastion 経由で接続) を選択します。
仮想マシンの作成時に入力したユーザー名とパスワードを入力します。
[接続]を選択します。
プロンプトで、次のコマンドを入力して、vm-private から vm-public へのネットワーク トラフィックのルーティングをトレースします。
tracepath vm-public
応答は次の例のようになります。
azureuser@vm-private:~$ tracepath vm-public
1?: [LOCALHOST] pmtu 1500
1: vm-public.internal.cloudapp.net 2.584ms reached
1: vm-public.internal.cloudapp.net 2.147ms reached
Resume: pmtu 1500 hops 1 back 2
この応答には、宛先 vm-public である 1 つのホップがあることがわかります。
Azure は、subnet-private から subnet-1 にトラフィックを直接送信しました。 既定では、サブネット間でトラフィックが直接ルーティングされます。
Bastion セッションを閉じます。
作成したリソースの使用が終了したら、リソース グループとそのすべてのリソースを削除して構いません。
Azure portal で、「リソース グループ」を検索して選択します。
[リソース グループ] ページで、test-rg リソース グループを選択します。
[test-rg] ページで、[リソース グループの削除] を選択します。
[削除を確認するために、リソース グループ名を入力してください] に「test-rg」と入力し、[削除] を選びます。
必要なくなったら、Remove-AzResourcegroup を使用して、リソース グループとその中のすべてのリソースを削除します。
$rgParams = @{
Name = "test-rg"
}
Remove-AzResourceGroup @rgParams -Force
不要になったら、az group delete を使用して、リソース グループとそのグループに含まれているすべてのリソースを削除します。
az group delete \
--name test-rg \
--yes \
--no-wait
次のステップ
このチュートリアルでは、次のことを行いました。
Azure Marketplace から、便利なネットワーク機能を多く備えた別の構成済み NVA をデプロイすることができます。
ルーティングの詳細については、ルーティングの概要とルート テーブルの管理に関する記事をご覧ください。 ルーティングは、 Azure Virtual Network Manager のユーザー定義ルート (UDR) 管理機能 を使用して自動的に構成することもできます。
仮想ネットワーク サービス エンドポイントを使用して PaaS リソースへのネットワーク アクセスを制限する方法を学習するために、次のチュートリアルに進んでください。