【Azure VNet入門④】ルーティング入門|システムルートとUDR(0.0.0.0/0をFirewallへ)

Azure

NSGで「誰と通信してよいか」を決めたら、次のテーマは「通信がどの経路(ルート)を通るか」です。これを扱うのがルーティング。Azureは何も設定しなくても通信が流れる仕組み(システムルート)を持っていますが、実務では「全通信を一度ファイアウォールに通して検査したい」といった要件のために、この経路を意図的に上書きします。それを可能にするのがUDR(ユーザー定義ルート)です。

NSGは分かってきたけど、「ルートテーブル」とか「0.0.0.0/0をFirewallに向ける」って何をしてるの?

この記事では、ルーティングについて次の3つを順番に整理します。読み終えたときに、これらを自分の言葉で説明できるようになることをゴールにしています。

  • システムルート(既定経路)の動きを理解している
  • ユーザー定義ルート(UDR / ルートテーブル)で経路を制御できる
  • 0.0.0.0/0 を Azure Firewall / NVA に向ける設計を理解している

システムルート(既定経路)の動き

まず大前提として、Azureは何も設定しなくても、VNet内の通信が正しく流れるように「システムルート」を自動で用意しています。だからVMを2台作れば、ルーティングを一切触らなくても互いに通信できるのです。

システムルートとは、Azureが各サブネットに自動で適用する既定の経路表です。「VNet内はVNet内で」「それ以外はインターネットへ」といった基本の道順が、最初から用意されています。

主なシステムルートを、宛先ごとの「次の行き先(ネクストホップ)」で整理すると次のようになります。

宛先アドレス           ネクストホップ(次の行き先)
──────────────────────────────────────────
自分のVNetの範囲        → Virtual network(VNet内で直接届ける)
ピアリング先のVNet      → VNet Peering(ピア接続経由)
0.0.0.0/0(上記以外全部)→ Internet(インターネットへ出す)

ポイントは、0.0.0.0/0(=「他のどれにも当てはまらない宛先すべて」を表す記法)は、既定でインターネットに向かうという点です。つまり何もしなければ、VNet内リソースはインターネットへ直接出ていける状態になっています。この既定の道順を理解しておくことが、次のUDRを考える出発点になります。

【ここが説明できればOK①】
「Azureはシステムルートを自動適用しており、VNet内は直接・ピア先はピアリング経由・それ以外(0.0.0.0/0)は既定でインターネットへ流れる」——これを言えれば、1つ目のチェックはクリアです。

ユーザー定義ルート(UDR / ルートテーブル)で経路を制御する

システムルートは便利ですが、実務では「既定の道順では困る」場面が出てきます。たとえば「インターネットへ直接出さず、必ずファイアウォールを通してから出したい」。この既定の経路を上書きするのが、UDR(User-Defined Route/ユーザー定義ルート)です。

UDRとは、ルートテーブルに自分で書く経路ルールです。「この宛先の通信は、次にここへ送れ」とネクストホップを指定してサブネットに関連付けると、システムルートより優先して適用されます。

使い方の流れは、NSGとよく似ています。①ルートテーブルを作る → ②ルート(宛先+ネクストホップ)を書く → ③サブネットに関連付ける。関連付けて初めて効く点もNSGと同じです。ネクストホップには次のような種類を指定できます。

  • Virtual appliance:Azure FirewallやNVA(後述)のIPへ送る
  • Virtual network gateway:VPN/ExpressRouteゲートウェイ経由(オンプレ方向)
  • Internet / None:インターネットへ出す/通信を破棄する(あえて塞ぐ)
# ルートテーブルを作成
az network route-table create -g rg-network -n rt-app

# ルートを追加:0.0.0.0/0 を Firewall(10.0.5.4) に向ける
az network route-table route create \
  -g rg-network --route-table-name rt-app \
  -n to-firewall \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address 10.0.5.4

# サブネットに関連付け(これで有効化)
az network vnet subnet update \
  -g rg-network --vnet-name myVnet -n subnet-app \
  --route-table rt-app

UDRは「Azureが用意した道順を、自分の都合で書き換える上書きルール」。作って→サブネットに当てて有効、という流れはNSGと同じだよ!

【ここが説明できればOK②】
「UDRはルートテーブルに書く経路ルールで、システムルートより優先される。作ってサブネットに関連付けると経路を制御できる」——これを説明できれば、2つ目のチェックはクリアです。

0.0.0.0/0 を Azure Firewall / NVA に向ける設計

UDRの最も代表的な使い道が、この「強制トンネリング」とも呼ばれる設計です。目的は明確で、「VNetから外へ出ていく全通信を、必ずファイアウォールに通して検査・記録する」こと。セキュリティ要件の厳しい企業ではほぼ必須の構成です。

やることは1つ。0.0.0.0/0(=すべての外向き通信)のネクストホップを、既定のInternetから Azure Firewall(またはNVA)に向け直すだけです。図で見ると、通信の流れがこう変わります。

【既定(システムルート)】直接インターネットへ
  VM ──→ 0.0.0.0/0 ──→ Internet

【UDR適用後】必ずFirewallを経由
  VM ──→ 0.0.0.0/0 ──→ Azure Firewall ──検査──→ Internet
                          (ログ・許可/拒否・検査)

ここで出てくる用語を整理しておきます。

  • Azure Firewall:Azureのマネージドなファイアウォールサービス。通信の検査・許可/拒否・ログ記録を担う。
  • NVA(Network Virtual Appliance):サードパーティ製のファイアウォール等を仮想マシンとして持ち込んだもの。既存のセキュリティ製品を使いたい場合に選ぶ。

この「0.0.0.0/0 → Firewall」の設計は、後続の記事で扱うハブ&スポーク構成と組み合わさります。ファイアウォールを「ハブVNet」に1つ置き、各業務VNet(スポーク)からの全通信をそこへ集約して検査する——というのが、企業ネットワークの王道パターンです。UDRは、その「集約」を実現する要の部品というわけです。

【ここが説明できればOK③】
「UDRで 0.0.0.0/0 のネクストホップをAzure Firewall / NVA に向けると、VNetからの全送信を検査させられる(強制トンネリング)。ハブ&スポークの検査集約の要になる」——これを説明できれば、3つ目のチェックはクリアです。

まとめ

  • システムルート:Azureが自動適用する既定経路。VNet内は直接、それ以外(0.0.0.0/0)は既定でインターネットへ
  • UDR(ルートテーブル):既定経路を上書きする自分のルール。作ってサブネットに関連付けて有効化
  • 0.0.0.0/0 → Firewall / NVA:全送信を検査に通す定番設計。ハブ&スポークの検査集約の要

1つのVNetの中の制御(サブネット・NSG・ルーティング)が固まったら、次は視点を上げて「VNet同士・オンプレとどう繋ぐか」です。VNetピアリング、ハブ&スポーク、VPN Gateway / ExpressRouteを次の記事で整理します。今回学んだUDRが、そこでどう効いてくるかも見えてきます。

あわせて読みたい

タイトルとURLをコピーしました