背景
以下の公開文章には、AppGWのUDRについてこんな記載があります。
https://learn.microsoft.com/ja-jp/azure/application-gateway/configuration-infrastructure
v2 でサポートされるシナリオ
- 警告
ルート テーブルの構成が正しくないと Application Gateway v2 で非対称ルーティングが発生する可能性があります。 すべての管理/コントロール プレーン トラフィックが、仮想アプライアンス経由ではなく、インターネットに直接送信されるようにしてください。 ログ記録、メトリック、CRL チェックも影響を受ける可能性があります。
シナリオ 1: UDR で Application Gateway サブネットへの Border Gateway Protocol (BGP) ルート伝達を無効にする
既定のゲートウェイ ルート (0.0.0.0/0) は、Application Gateway 仮想ネットワークに関連付けられている ExpressRoute または VPN ゲートウェイ経由でアドバタイズされる場合があります。 これにより、インターネットへの直接パスを必要とする管理プレーン トラフィックが中断されます。 このようなシナリオでは、UDR を使用して BGP ルートの伝達を無効にすることができます。
BGP ルートの伝達を無効にするには以下の手順を行います。
Azure でルート テーブル リソースを作成します。
仮想ネットワーク ゲートウェイのルート伝達パラメーターを無効にします。
ルート テーブルを適切なサブネットに関連付けます。
このシナリオで UDR を有効にすると、既存のセットアップが中断されないはずです。
理解は難しいので、わかりやすくするため、以下に具体的な例を挙げて説明します。この例では、非対称ルーティングを防ぎ、管理/コントロール プレーン トラフィックがインターネットに直接送信されるようなシナリオを想定します。
シナリオ
ある企業が Azure 上に以下の環境を構築しているとします:
-
仮想ネットワーク (VNet):
VNet-AppGW
(アドレス空間:10.0.0.0/16
) -
サブネット:
- Application Gateway 用サブネット:
AppGW-Subnet
(10.0.1.0/24
) - その他のサブネット(例: VM 用):
VM-Subnet
(10.0.2.0/24
)
- Application Gateway 用サブネット:
- 接続: ExpressRoute を介してオンプレミス ネットワークと接続。
-
問題: ExpressRoute 経由でデフォルトルート (
0.0.0.0/0
) がアドバタイズされており、Application Gateway の管理トラフィック(ログ、メトリック、CRL チェックなど)がインターネットに直接送信されず、ExpressRoute を経由してオンプレミスに転送される。これにより、非対称ルーティングが発生し、AppGW の動作が不安定になる。
この問題を解決するため、UDR を使用して BGP ルート伝達を制御し、AppGW のトラフィックがインターネットに直接送信されるようにします。
UDR の構成例
1. ルート テーブル リソースの作成
Azure ポータル、CLI、または PowerShell を使用してルート テーブルを作成します。以下は Azure CLI を使った例です:
az network route-table create \
--resource-group myResourceGroup \
--name AppGW-RouteTable \
--location eastus
2. 仮想ネットワーク ゲートウェイのルート伝達を無効化
AppGW サブネットに関連付けるルート テーブルで、BGP ルート伝達を無効にします。これにより、ExpressRoute や VPN ゲートウェイから伝達されるデフォルトルート (0.0.0.0/0
) が AppGW サブネットに適用されなくなります。
az network route-table update \
--resource-group myResourceGroup \
--name AppGW-RouteTable \
--disable-bgp-route-propagation true
3. ルートの追加
AppGW の管理トラフィックがインターネットに直接送信されるように、UDR に以下のようなルートを追加します:
-
宛先:
0.0.0.0/0
(すべてのトラフィック) -
次ホップ:
Internet
(インターネットに直接送信)
以下は Azure CLI でのルート追加の例です:
az network route-table route create \
--resource-group myResourceGroup \
--route-table-name AppGW-RouteTable \
--name DefaultToInternet \
--address-prefix 0.0.0.0/0 \
--next-hop-type Internet
必要に応じて、特定の Azure サービス(例: Azure Monitor、CRL エンドポイント)へのトラフィックを明示的にインターネットにルーティングするためのルートを追加することもできます。たとえば、Azure Monitor の IP アドレス範囲(例: 13.107.0.0/16
)を指定して、次ホップを Internet
に設定します。
4. ルート テーブルをサブネットに関連付け
作成したルート テーブルを AppGW-Subnet
に関連付けます:
az network vnet subnet update \
--resource-group myResourceGroup \
--vnet-name VNet-AppGW \
--name AppGW-Subnet \
--route-table AppGW-RouteTable
期待される結果
-
BGP ルート伝達の無効化: ExpressRoute から伝達される
0.0.0.0/0
ルートが AppGW サブネットに適用されなくなる。 - インターネットへの直接ルーティング: AppGW の管理トラフィック(メトリック、ログ、CRL チェックなど)が ExpressRoute を経由せず、直接インターネットに送信される。
- 非対称ルーティングの防止: トラフィックのパスが一貫し、AppGW の動作が安定する。
- 既存セットアップへの影響: VM-Subnet など他のサブネットには影響を与えず、既存の ExpressRoute ルーティングはそのまま維持される。