AzureCLI でルートテーブル(RouteTable)を作成してみました。
事前準備
ルートテーブルを作成するにあたって事前に作成が必要な以下のリソースを作成していきます。
- リソースグループ(ResourceGroup)
- 仮想ネットワーク(VirtualNetwork)
既に作成済みなどであればこれらのリソースの作成は不要です。
リソースグループ作成
以下のコマンドで作成します。
az group create --name <リソースグループ名> --location <リージョン>
・記載例
az group create --name RG-Test --location japaneast
今回は東日本リージョンに作成していきます。
仮想ネットワーク作成
以下のコマンドで作成します。
az network vnet create --name <仮想ネットワーク名> `
--resource-group <リソースグループ名> `
--location <リージョン名> `
--address-prefix <仮想ネットワークのIPアドレス帯> `
--subnet-name <サブネット名> `
--subnet-prefix <サブネットのIPアドレス帯>
・記載例
az network vnet create --name Vnet-Test `
--resource-group RG-Test `
--location japaneast `
--address-prefix 10.0.0.0/24 `
--subnet-name Subnet-Test `
--subnet-prefix 10.0.0.0/25
上記ではインターフェースとしてPowershellを利用しているので、改行する際には ` を利用していますが、コマンドプロンプトを利用する場合には、^ を利用する必要がありますのでその点は注意してください。
RouteTable を作成する
事前準備が完了したら RuoteTable を作成します。
以下のコマンドで作成可能です。
#RouteTableの作成
az network route-table create `
--resource-group <リソースグループ名> `
( --location <リージョン> `)
--name <ルートテーブル名>
・記載例
az network route-table create `
--resource-group RG-Test `
--name RouteTable-Test
リージョンは指定しなくても作成可能でした。
※リソースグループと同じリージョンとなっていました。
上記コマンド実行後にも作成されたリソースの詳細が表示されますが、
以下のコマンドでも作成されたAzureBastionの設定を確認することができます。
#作成されたRouteTableの確認
az network route-table list
ルートの作成
次に以下のコマンドでルートを作成します。
#ルートの作成
az network route-table route update `
--resource-group <リソースグループ名> `
--route-table-name <ルートテーブル名> `
--name <ルート名> `
--address-prefix <宛先のIPアドレス(レンジで記載)> `
--next-hop-type < Internet or None or VirtualAppliance or VirtualNetworkGateway or VnetLocal > `
--next-hop-ip-address <ネクストホップのアドレスを記載(必要であれば記載)>
・記載例
#ルートの作成:ネクストホップに仮想アプライアンスを指定
az network route-table route create `
--resource-group RG-Test `
--route-table-name RouteTable-Test `
--name Route-Test-01 `
--address-prefix 172.16.0.0/24 `
--next-hop-type VirtualAppliance `
--next-hop-ip-address 10.0.0.10
#ルートの作成:ネクストホップにインターネットを指定
az network route-table route create `
--resource-group RG-Test `
--route-table-name RouteTable-Test `
--name Route-Test-02 `
--address-prefix 1.1.1.1/32 `
--next-hop-type Internet
ルートの編集
既存で設定されているルートの内容を変更する場合には、以下のコマンドで変更可能です。
#ルートの編集
az network route-table route update `
--resource-group <リソースグループ名> `
--route-table-name <ルートテーブル名> `
--name <ルート名> `
--address-prefix <宛先のIPアドレス(レンジで記載)> `
--next-hop-type < Internet or None or VirtualAppliance or VirtualNetworkGateway or VnetLocal > `
--next-hop-ip-address <ネクストホップのアドレスを記載(必要であれば記載)>
・記載例
#ルートの編集:ネクストホップに仮想アプライアンスを指定
az network route-table route create `
--resource-group RG-Test `
--route-table-name RouteTable-Test `
--name Route-Test-01 `
--address-prefix 192.168.0.0/24 `
--next-hop-ip-address 10.0.0.10 `
--next-hop-type VirtualAppliance
#ルートの作成:ネクストホップにインターネットを指定
az network route-table route create `
--resource-group RG-Test `
--route-table-name RouteTable-Test `
--name Route-Test-02 `
--address-prefix 1.1.1.1/32 `
--next-hop-type None
サブネットの紐づけ
ルートテーブルをサブネットに適用させる場合には以下のコマンドを利用します。
ルートテーブルのコマンドではなくサブネット側のコマンドで設定します。
#サブネットの紐づけ
az network vnet subnet update `
--resource-group <リソースグループ名> `
--vnet-name <仮想ネットワーク名> `
--name <サブネット名> `
--route-table <ルートテーブル名>
・記載例
#サブネットの紐づけ
az network vnet subnet update `
--resource-group RG-Test `
--vnet-name Vnet-Test `
--name Subnet-Test `
--route-table RouteTable-Test
やってみて気づいたこと
ルート作成や更新は即時反映される
ルートの追加やルートの編集、サブネットとの紐づけなどルートテーブルというリソースに対する操作についてはコマンド実行後すぐに設定が反映されます。
CLIのコマンド実行がすぐに完了するのもそうですが、Azureポータルへの反映も早いです。
ただ、ルートテーブルの経路の影響を受ける仮想マシン等からの通信の経路が変わるのは少し時間がかかるのでその点は留意しましょう。
[参考] ルートの変更が仮想マシンに反映されるまでの時間を計測してみた
上記でも少し触れましたが、実際にルートの変更が仮想マシンに反映されるまでどのくらいの時間がかかるのか気になったので調べてみました。
測定方法
まず仮想マシン内で特定の宛先IPに対してpingを放ち続けます。
ルートテーブルではそのIP向けの通信を「None」として設定して、仮想マシンのサブネットに適用してping疎通できなくなるまでの時間を計測しました。
測定結果
手元のストップウォッチで計測したところルートテーブルの変更後、約1分25秒後に経路が切り替わりました。