Japan East 10.0.0.0/16 Subnet① 10.0.1.0/24 Network Interface(NIC) Virtual Machine と Virtual Network を接続する Subnet② 10.0.2.0/24 Subnet③ 10.0.3.0/24 NIC 1.4/24 Virtual Machine Virtual Machine 2.4/24 3.4/24 3.5/24 NIC NIC • NIC は 個別のリソースとして扱われる • VM ではなく NIC に IP アドレスを設定する。設 定した IP が DHCP で VM に配られる • 1つの NIC に最大256個の IP アドレスを設定でき る • 1つの VM に複数の NIC を接続できる • インスタンスのサイズによって接続できる NIC の 上限が決まっている。複数 NIC = 大きいインス タンスサイズ = 料金が高い Internet
Public IP address(PIP) Microsoft 所有のグローバル IP アドレスを借りる Japan East 10.0.0.0/16 Subnet① 10.0.1.0/24 Subnet② 10.0.2.0/24 Subnet③ 10.0.3.0/24 • PIP を NIC の IP と関連付けると、インターネッ トから PIP 宛の通信が VM に到達する。また、 NIC の IP からインターネットへの通信が PIP で 送信元 NAT される • PIP を NIC の IP と関連付けたとしても、VNet が DHCP で VM に払い出す IP アドレスはプライ ベート IP アドレスのみ • PIP 経由で届くパケットの宛先は NAT 後のプライ ベート IP アドレス • 「動的割り当て」と「静的割り当て」が存在する Public IP address Internet 2.4/24
Route table VNet のルーティングテーブルにスタティックルートを設定する Japan East 10.0.0.0/16 Subnet① 10.0.1.0/24 • VNet 内のルーティング動作(後述)を変えたい 場合に利用する • Route table を適用する対象はサブネット • ユーザが Route table に追加したルーティングを User Defined Route: UDR と呼ぶ Internet Source Address Next Hop Default 10.0.0.0/16 Virtual Network Default 0.0.0.0/0 Internet User 0.0.0.0/0 NVA Subnet①のルーティングテーブル
NVA の OS 側のルーティング 「どの NIC からパケットを出すか」だけを考える • NVA は複数の NIC を持っている。受信したパケットを通信経路的に正し い NIC から送出するためにルーティングを設定する • VNet 内のパケット転送は VNet に任せる。NVA に設定するルーティン グの Next hop は VNet(サブネットのデフォルトゲートウェイ)にする
Azure 側のルーティング VNet だけの場合のルーティング Japan East 10.0.0.0/16 Subnet① 10.0.1.0/24 Subnet② 10.0.2.0/24 Internet Source Address Next Hop Default 10.0.0.0/16 Virtual Network Default 0.0.0.0/0 Internet Subnet①のルーティングテーブル • デフォルトのルーティング=システムルート • ネクストホップが Virtual Network の場合、VNet は VM から受信したパケットを宛先 IP の VM に 直接転送する • ネクストホップが Internet の場合、VNet は NIC から受信したパケットを Azure のインターネット 出口に転送する • PIP が紐づくプライベート IP アドレスは、PIP で 送信元 NAT。PIP が紐づかないプライベート IP アドレスは、Azure 都合の適当な IP で送信元 NAT
実践その1:インターネット向け通信 超大事:IP forwarding Japan East 10.0.0.0/16 Internet Source Dest 10.0.1.4 8.8.8.8 • VNet は NIC に割り当てた IPアドレス宛のパケッ トのみを NIC に転送する。そのため、10.0.2.4 な NIC 宛てに宛先が8.8.8.8を発信すると、VNet は このパケットを破棄する • 破棄されないための設定が IP forwarding。有効 化すると、パケットの宛先が NIC に割り当てた IP アドレス以外であっても、そのパケットを NIC に転送する • マーケットプレイスやテンプレートからデプロイ した NVA の場合、構築直後から IP forwarding が有効になっている場合もある Subnet① 10.0.1.0/24 Subnet② 10.0.2.0/24 Subnet③ 10.0.3.0/24 VM-a が NVA(10.0.2.4) に発信したパケット 1.4/24 2.4/24 3.4/24 VM-a NVA
実践その1:インターネット向け通信 OS のルーティングを整える Japan East 10.0.0.0/16 Internet Address Next Hop 0.0.0.0/0 10.0.3.1 10.0.2.0/24 Connected 10.0.3.0/24 Connected • 複数 NIC な VM の場合、DHCP でデフォルトゲー トウェイが設定されるのは 1つ目の NIC のみ • 1本目の NIC が 3.4 だったので、初期状態で OS のデフォルトゲートウェイは 3.1 を向いている。 が、パケットは VM-a に戻ってこない・・・ Subnet① 10.0.1.0/24 Subnet② 10.0.2.0/24 Subnet③ 10.0.3.0/24 NVA のルーティングテーブル 1.4/24 2.4/24 3.4/24 VM-a NVA Source Address Next Hop Default 10.0.0.0/16 Virtual Network Default 0.0.0.0/0 Internet Subnet③のルーティングテーブル 行き 戻り
冗長化を理解するための前提 NVA 用の Azure AD アカウント(Service Principle)が必要 • NVA はクラウドのネットワークの設定を変更するために API を叩く • API を叩くためには AAD の認証を受けなければならない。この時に利用 するアカウントが Service Principle • Service Principle にはパスワードの有効期限が存在する。期限が切れると AAD の認証が失敗するので、クラウドのネットワークの設定を変更でき なくなる・・・無期限にする or 定期更新を忘れない
冗長化方式1: PIP 付け替え & UDR 書き換え サンプル:FortiOS の設定 Service Principle 設定を変更する Azure リソース config system sdn-connector edit "AZConnector" set type azure set tenant-id "" set subscription-id "" set resource-group "" set client-id "" set client-secret config system sdn-connector config nic edit "FortiGate-A-NIC1" config ip edit "ipconfig1" set public-ip "FGTAPClusterPublicIP" next (snip) config route-table edit "FortiGateDefaultAPRouteTable" config route edit "toDefault" set next-hop "10.0.2.4" next