ExpressRoute Gateway のルートテーブルを確認する方法
はじめに
ExpressRoute Circuit は、Azure Portal からルートテーブルを確認することができます。
ですが、ExpressRoute Gateway は、Azure Portal からルートテーブルを確認することができません。
Azure PowerShell または Azure CLI を利用すれば ExpressRoute Gateway のルートテーブルを確認することができますので、実際にやってみて、結果をメモとして残しておきます。
実行結果のキャプチャをペタペタ張っておくだけの記事です。
最初に、まとめ
ルートテーブルを確認する方法を表形式でまとめておきます。
リソース | Azure Portal | Azure Powershell | Azure CLI |
---|---|---|---|
ExpressRoute Gateway | × | get-azVirtualNetworkGatewaylearnedRoute | az network vnet-gateway list-learned-routes |
Azure Route Server | × | get-azRouteServerPeerlearnedRoute または get-azRouteServerAdvertisedRoute | az network routeserver peering list-learned-routes または az network routeserver peering list-advertised-routes |
ExpressRoute Circuit | 確認できる | Get-AzExpressRouteCircuitRouteTable または Get-AzExpressRouteCircuitRouteTableSummary | az network express-route peering list-route-tables または az network express-route peering list-route-tables-summary |
検証環境の構成
今回の検証環境は、2つの VNet 間を ExpressRouteCircuit で繋ぎ、右側、DEMO-ER という VNet には、Azure Route Server と NVA (quaaga) も配置しています。
一応、右側 ExpressRoute Gateway のルートテーブルを確認してみようというのが今回の趣旨ですが、せっかくなので、ExpressRoute Circuit と Azure Route Server のルートテーブルも確認してみます。
1.ExpressRoute Gateway のルートテーブル を確認する
Azure PowerShell、Azure CLI で若干書式が違いますが、どちらも、テーブル形式で見やすく表示することができます。
今回、NVA として Quagga をたて、192.168.0.0/24 のセグメントを Route Server (10.1.2.4 及び 10.1.2.5) へ eBGP で広報しています。ExpressRoute Gateway は、iBGPで Route Server と接続しており、NVA からの経路がしっかり学習されていることがわかります。ちなみに、nexthop 属性などを付けていないため、nexthop は Quagga 自身(10.1.1.4) となっています。
また、ExpressRoute Circuit 経由で、模擬オンプレミス 10.100.0.0/16 のセグメントへの経路も学習されていることがわかります。
1-1.Azure PowerShell で確認する方法
get-azVirtualNetworkGatewaylearnedRoute -ResourceGroupName "ExpressRouteGatewayRG" -VirtualNetworkGatewayName "ExpressRouteGateway"
PS /> get-azVirtualNetworkGatewaylearnedRoute -ResourceGroupName "DEMO-ER" -VirtualNetworkGatewayName "demo-ergateway"
LocalAddress Network NextHop SourcePeer Origin AsPath Weight
------------ ------- ------- ---------- ------ ------ ------
10.1.0.13 10.1.0.0/16 10.1.0.13 Network 32768
10.1.0.13 192.168.0.0/24 10.1.1.4 10.1.2.4 IBgp 65001 32768
10.1.0.13 192.168.0.0/24 10.1.1.4 10.1.2.5 IBgp 65001 32768
10.1.0.13 10.100.0.0/16 10.1.0.5 10.1.0.5 EBgp 12076-12076 32769
10.1.0.13 10.100.0.0/16 10.1.0.4 10.1.0.4 EBgp 12076-12076 32769
10.1.0.13 10.100.0.0/16 10.1.0.5 10.1.2.4 IBgp 12076-12076 32768
10.1.0.13 10.100.0.0/16 10.1.0.5 10.1.2.5 IBgp 12076-12076 32768
●参考画面キャプチャ
1-2.Azure CLI で確認する方法
az network vnet-gateway list-learned-routes -g MyResourceGroup -n MyVnetGateway
masato [ / ]$ az network vnet-gateway list-learned-routes -g "DEMO-ER" -n "demo-ergateway" --output table
Network NextHop Origin SourcePeer AsPath Weight
-------------- --------- -------- ------------ ----------- --------
10.1.0.0/16 Network 10.1.0.13 32768
192.168.0.0/24 10.1.1.4 IBgp 10.1.2.4 65001 32768
192.168.0.0/24 10.1.1.4 IBgp 10.1.2.5 65001 32768
10.100.0.0/16 10.1.0.5 EBgp 10.1.0.5 12076-12076 32769
10.100.0.0/16 10.1.0.4 EBgp 10.1.0.4 12076-12076 32769
10.100.0.0/16 10.1.0.5 IBgp 10.1.2.4 12076-12076 32768
10.100.0.0/16 10.1.0.5 IBgp 10.1.2.5 12076-12076 32768
masato [ / ]$
●参考画面キャプチャ
2.Azure Route Server のルートテーブルを確認する
Azure PowerShell、Azure CLI で確認できます。
ただし、Azure CLI は、 --output table オプションを利用してもテーブル形式での出力ができず、Azure PowerShell のほうが使いやすく感じました。
Azure Route Server は、NVA と ピア を張って利用します。ルートテーブルを確認する際には、ピア名を指定する必要があります。また、ピアから学習したルートと、ピアにアドバタイズしているルートを確認するコマンドが分かれています。
ピア名を指定する。上記キャプチャの例だと "quagga"
2-1.Azure PowerShell で確認する方法
- get-azRouteServerPeerlearnedRoute : 特定のルート サーバー ピアから学習したルートを一覧表示する
- Get-AzRouteServerPeerAdvertisedRoute : 特定のルート サーバー ピアによってアドバタイズされているルートを一覧表示する
get-azRouteServerPeerlearnedRoute コマンド例と参考実行結果
get-azRouteServerPeerlearnedRoute -ResourceGroupName "RouteServerRG" -RouteServerName "RouteServer" -PeerName "PeerName"
PS /> get-azRouteServerPeerlearnedRoute -ResourceGroupName "DEMO-ER" -RouteServerName "demo-ARS" -PeerName "quagga"
LocalAddress Network NextHop SourcePeer Origin AsPath Weight
------------ ------- ------- ---------- ------ ------ ------
10.1.2.5 192.168.0.0/24 10.1.1.4 10.1.1.4 EBgp 65001 32768
10.1.2.4 192.168.0.0/24 10.1.1.4 10.1.1.4 EBgp 65001 32768
PS />
Get-AzRouteServerPeerAdvertisedRoute コマンド例と参考実行結果
Get-AzRouteServerPeerAdvertisedRoute -ResourceGroupName "RouteServerRG" -RouteServerName "demo-ARS" -PeerName "quagga"
PS /> Get-AzRouteServerPeerAdvertisedRoute -ResourceGroupName "DEMO-ER" -RouteServerName "demo-ARS" -PeerName "quagga"
LocalAddress Network NextHop SourcePeer Origin AsPath Weight
------------ ------- ------- ---------- ------ ------ ------
10.1.2.5 10.1.0.0/16 10.1.2.5 Igp 65515 0
10.1.2.5 10.100.0.0/16 10.1.2.5 Igp 65515-12076-12076 0
10.1.2.4 10.1.0.0/16 10.1.2.4 Igp 65515 0
10.1.2.4 10.100.0.0/16 10.1.2.4 Igp 65515-12076-12076 0
PS />
●参考画面キャプチャ
2-2.Azure CLI で確認する方法
- az network routeserver peering list-learned-routes : 特定のルート サーバー ピアから学習したルートを一覧表示する
- az network routeserver peering list-advertised-routes : 特定のルート サーバー ピアによってアドバタイズされているルートを一覧表示する
az network routeserver peering list-learned-routes コマンド例と参考実行結果
az network routeserver peering list-learned-routes -g MyResourceGroup --routeserver MyRouteServer -n MyRouteServerPeer
masato [ / ]$ az network routeserver peering list-learned-routes -g "DEMO-ER" --routeserver "demo-ARS" -n "quagga"
{
"RouteServiceRole_IN_0": [
{
"asPath": "65001",
"localAddress": "10.1.2.5",
"network": "192.168.0.0/24",
"nextHop": "10.1.1.4",
"origin": "EBgp",
"sourcePeer": "10.1.1.4",
"weight": 32768
}
],
"RouteServiceRole_IN_1": [
{
"asPath": "65001",
"localAddress": "10.1.2.4",
"network": "192.168.0.0/24",
"nextHop": "10.1.1.4",
"origin": "EBgp",
"sourcePeer": "10.1.1.4",
"weight": 32768
}
]
}
masato [ / ]$
az network routeserver peering list-advertised-routes コマンド例と参考実行結果
az network routeserver peering list-advertised-routes -g MyResourceGroup --routeserver MyRouteServer -n MyRouteServerPeer
masato [ / ]$ az network routeserver peering list-advertised-routes -g "DEMO-ER" --routeserver "demo-ARS" -n "quagga"
{
"RouteServiceRole_IN_0": [
{
"asPath": "65515",
"localAddress": "10.1.2.5",
"network": "10.1.0.0/16",
"nextHop": "10.1.2.5",
"origin": "Igp",
"weight": 0
},
{
"asPath": "65515-12076-12076",
"localAddress": "10.1.2.5",
"network": "10.100.0.0/16",
"nextHop": "10.1.2.5",
"origin": "Igp",
"weight": 0
}
],
"RouteServiceRole_IN_1": [
{
"asPath": "65515",
"localAddress": "10.1.2.4",
"network": "10.1.0.0/16",
"nextHop": "10.1.2.4",
"origin": "Igp",
"weight": 0
},
{
"asPath": "65515-12076-12076",
"localAddress": "10.1.2.4",
"network": "10.100.0.0/16",
"nextHop": "10.1.2.4",
"origin": "Igp",
"weight": 0
}
]
}
masato [ / ]$
●参考画面キャプチャ
3.Express Route Circuit のルートテーブルを確認する方法
ExpressRoute Circuit は、Azure Portal からルートテーブルを確認することができます。
Azure PowerShell または Azure CLI を利用しても確認可能ですが、やはり --output table オプションを利用しても Azure CLI はテーブルを表示できませんでした。
Azure Portal か Azure PowerShell で確認するのが良いかと思います。
3-1.Azure Portal で確認する方法
Azure Portal -> ExpressRoute Circuit -> ピアリング -> Azure プライベートピアリング を選択し、上部 [ルート テーブルを表示する] 選択します。
ルートテーブルが表示されます
3-2.Azure PowerShell で確認する方法
- Get-AzExpressRouteCircuitRouteTable : ExpressRoute 回線からルート テーブルを取得します。
- Get-AzExpressRouteCircuitRouteTableSummary : ExpressRoute 回線のルート テーブルの概要を取得する
Get-AzExpressRouteCircuitRouteTable コマンド例と参考実行結果
Get-AzExpressRouteCircuitRouteTable -ResourceGroupName "RG-ERCircuit" -ExpressRouteCircuitName "ERCircuits" -PeeringType "AzurePrivatePeering" -DevicePath "Primary"
PS /> Get-AzExpressRouteCircuitRouteTable -ResourceGroupName "RG-ERCircuit" -ExpressRouteCircuitName "ERCircuits" -PeeringType "AzurePrivatePeering" -DevicePath "Primary"
Network NextHop LocPrf Weight Path
------- ------- ------ ------ ----
10.1.0.0/16 10.1.0.13* 100 0 65515 I…
10.1.0.0/16 10.1.0.12 100 0 65515 I…
10.100.0.0/16 10.100.1.12* 100 0 65515 I…
10.100.0.0/16 10.100.1.13 100 0 65515 I…
192.168.0.0/24 10.1.0.12* 100 0 65515 65001 I…
192.168.0.0/24 10.1.0.13 100 0 65515 65001 I…
PS />
Get-AzExpressRouteCircuitRouteTableSummary コマンド例と参考実行結果
Get-AzExpressRouteCircuitRouteTableSummary -ResourceGroupName $RG -ExpressRouteCircuitName $CircuitName -PeeringType "AzurePrivatePeering" -DevicePath "Primary"
PS /> Get-AzExpressRouteCircuitRouteTableSummary -ResourceGroupName "RG-ERCircuit" -ExpressRouteCircuitName "ERCircuits" -PeeringType "AzurePrivatePeering" -DevicePath "Primary"
Neighbor V AsProperty UpDown StatePfxRcd
-------- - ---------- ------ -----------
10.1.0.12+59440 4 65515 0 2
10.1.0.13+179 4 65515 0 2
10.100.1.12+63323 4 65515 0 1
10.100.1.13+49497 4 65515 0 1
172.16.0.9+179 4 65151 0 Connect
PS />
●参考画面キャプチャ
3-3.Azure CLI で確認する方法
--output table を付けても、表形式での表示ができませんでした。
- az network express-route list-route-tables : ExpressRoute 回線ピアリングの現在のルーティング テーブルを表示します。
- az network express-route list-route-tables-summary : ExpressRoute 回線ピアリングの現在のルーティング テーブルの概要を表示します。
az network express-route list-route-tables コマンド例と参考実行結果
az network express-route list-route-tables -g MyResourceGroup -n MyCircuit --path primary --peering-name AzurePrivatePeering
masato [ ~ ]$ az network express-route list-route-tables -g "RG-ERCircuit" -n "ERCircuits" --path primary --peering-name AzurePrivatePeering
This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
"value": [
{
"locPrf": "100",
"network": "10.1.0.0/16",
"nextHop": "10.1.0.13*",
"path": "65515 I\n ",
"weight": 0
},
{
"locPrf": "100",
"network": "10.1.0.0/16",
"nextHop": "10.1.0.12",
"path": "65515 I\n ",
"weight": 0
},
{
"locPrf": "100",
"network": "10.100.0.0/16",
"nextHop": "10.100.1.12*",
"path": "65515 I\n ",
"weight": 0
},
{
"locPrf": "100",
"network": "10.100.0.0/16",
"nextHop": "10.100.1.13",
"path": "65515 I\n ",
"weight": 0
},
{
"locPrf": "100",
"network": "192.168.0.0/24",
"nextHop": "10.1.0.12*",
"path": "65515 65001 I\n ",
"weight": 0
},
{
"locPrf": "100",
"network": "192.168.0.0/24",
"nextHop": "10.1.0.13",
"path": "65515 65001 I\n ",
"weight": 0
}
]
}
masato [ ~ ]$
az network express-route list-route-tables-summary コマンド例と参考実行結果
az network express-route list-route-tables-summary -g MyResourceGroup -n MyCircuit --path primary --peering-name AzurePrivatePeering
masato [ / ]$ az network express-route list-route-tables-summary -g "RG-ERCircuit" -n "ERCircuits" --path primary --peering-name AzurePrivatePeering
This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
"value": [
{
"as": 65515,
"neighbor": "10.1.0.12+59440",
"statePfxRcd": "2",
"upDown": "0",
"v": 4
},
{
"as": 65515,
"neighbor": "10.1.0.13+179",
"statePfxRcd": "2",
"upDown": "0",
"v": 4
},
{
"as": 65515,
"neighbor": "10.100.1.12+63323",
"statePfxRcd": "1",
"upDown": "0",
"v": 4
},
{
"as": 65515,
"neighbor": "10.100.1.13+49497",
"statePfxRcd": "1",
"upDown": "0",
"v": 4
},
{
"as": 65151,
"neighbor": "172.16.0.9+179",
"statePfxRcd": "Connect",
"upDown": "0",
"v": 4
}
]
}
●参考画面キャプチャ
参考URL
-
ExpressRoute Gateway / Azure PowerShell
- get-azVirtualNetworkGatewaylearnedRoute : Azure 仮想ネットワーク ゲートウェイによって学習されたルートを一覧表示します
-
ExpressRoute Gateway / AZCLI
- az network vnet-gateway list-learned-routes : この操作により、BGP ピアから学習されたルートを含め、仮想ネットワーク ゲートウェイが学習したルートの一覧が取得されます。
-
Azure Route Server / Azure PowerShell
- get-azRouteServerPeerlearnedRoute : 特定のルート サーバー ピアから学習したルートを一覧表示する
- Get-AzRouteServerPeerAdvertisedRoute : 特定のルート サーバー ピアによってアドバタイズされているルートを一覧表示する
-
Azure Route Server / AZCLI
- az network routeserver peering list-learned-routes : 特定のルート サーバー ピアから学習したルートを一覧表示する
- az network routeserver peering list-advertised-routes : 特定のルート サーバー ピアによってアドバタイズされているルートを一覧表示する
-
ExpressRoute Circuit / Azure PowerShell
- Get-AzExpressRouteCircuitRouteTable : ExpressRoute 回線からルート テーブルを取得します。
- Get-AzExpressRouteCircuitRouteTableSummary : ExpressRoute 回線のルート テーブルの概要を取得する
-
ExpressRoute Circuit / AZCLI
- az network express-route list-route-tables : ExpressRoute 回線ピアリングの現在のルーティング テーブルを表示します。
- az network express-route list-route-tables-summary : ExpressRoute 回線ピアリングの現在のルーティング テーブルの概要を表示します。
参考 - Azure Route Server / Quagga の構築
参考 - 他リソースのルーティングを確認
Azure Firewall, Application Gateway のルーティングを確認する方法はこちら
Discussion