ExpressRouteはオンプレミスのデータセンターやクラウドの接続サービスなどの専用線を利用した接続だけでなく、VPNGatewayとも接続することができるリソースであり、ExpressRouteとしてのルートテーブルを持っています。
今回はPrivatePeering を利用している ExpressRoute から学習している経路情報をAzureCLIで取得してみました。
ExpressRoute 経路情報を取得する
以下のコマンドで取得します。
$json = az network express-route list-route-tables `
-n <エクスプレスルート名> `
-g <リソースグループ名> `
--peering-name "AzurePrivatePeering" `
--path <primary or "secondary"> `
| ConvertFrom-Json
$json.value.network
・記載例
$json = az network express-route list-route-tables `
-n "TestER" `
-g "TestRG" `
--peering-name "AzurePrivatePeering" `
--path "primary" `
| ConvertFrom-Json
$json.value.network
コマンドとしては [az network express-route list-route-tables] を利用し、レスポンス結果をいったん変数 [$json] に格納、json形式で扱い、ルートの一覧情報だけを出力させます。
上記ではインターフェースとしてPowershellを利用しているので、改行する際には ` を利用していますが、コマンドプロンプトを利用する場合には、^ を利用する必要がありますのでその点は注意してください。
コマンドの実行結果
上記のコマンドを実行してみると、以下のような出力となりExpressRouteが学習している経路情報を取得できます。
PS C:\> $json = az network express-route list-route-tables `
>> -n "TestER" `
>> -g "TestRG" `
>> --peering-name "AzurePrivatePeering" `
>> --path "primary" `
>> | ConvertFrom-Json
WARNING: This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
PS C:\> $json.value.network
10.0.0.0/16
10.0.0.0/16
10.240.0.0/24
10.240.0.0/24
172.20.0.4/30
172.20.0.8/30
192.168.0.0/16
宛先アドレスとNextHopだけを出力する
[Select] を利用することで特定の項目だけを出力することが可能です。
上記の結果を利用して以下のコマンドを入力すると、宛先アドレスとNextHopだけを出力することが可能です。
$json.value | Select "network", "nextHop"
・実行結果
PS C:\> $json.value | Select "network", "nextHop"
network nextHop
------- -------
10.0.0.0/16 10.0.0.12
10.0.0.0/16 10.0.0.13
10.240.0.0/24 10.240.0.12
10.240.0.0/24 10.240.0.13
172.20.0.4/30 172.20.0.5
172.20.0.8/30 172.20.0.5
192.168.0.0/16 172.20.0.5
重複している経路情報をまとめる
[-Unique] を利用することで重複している経路情報を1行のみ表示することができます。
上記の結果を利用して以下のコマンドを入力すると、宛先アドレスとNextHopだけを出力することが可能です。
$json.value | Select "network" -Unique
・実行結果
PS C:\> $json.value | Select "network" -Unique
10.0.0.0/16
10.240.0.0/24
172.20.0.4/30
172.20.0.8/30
192.168.0.0/16
ExpressRouteが学習する経路について
VPNGatewayから広報される経路
VPNGatewayから広報される経路は、VirtualNetworkのアドレス帯です。
サブネットのアドレス帯ではないのでその点は留意してください。
また、VPNGatewayが持つGatewaySubnetの2つのアドレスがそれぞれNextHopとして学習されるので、ExpressRouteのルートテーブル上では基本的に同じ経路が2経路表示されます。
専用線から広報される経路
専用線から学習している経路は、対向機器の設定によって何が広報されるかが決まるため一概には言えません。
ExpressRouteの [primary] [secondary] で別々のルートが広報されているといったような構成など、ExpressRouteと対向機器の構成によっては1つの経路のみが表示されることもあれば2つの経路が表示されることもあるかと思います。
[参考] Azureポータル上で確認する方法
Azureポータル上では以下の部分からExpressRouteの学習している経路の確認が可能です。
・[ExpressRoute circuits]-[ExpressRouteの名前]-[ピアリング]-[Azureプライベート]
右側の3点リーダから選択できる「ルートテーブルを表示する」
さいごに
Azureポータルでも確認できることは知っていましたが、経路が200行以上ある場合だとポータル上ではすべて表示されないため、コマンドで出力できる方法はないのかと思い試してみました。
Azureポータルも直感的で利用しやすいですが、コマンドを利用すると簡単に情報が取得できるため「CLIって非常に楽だな」と改めて感じました。